{"version":3,"sources":["part-boot-bundle-1.js","../../qx_packages/ITISFoundation_qx-iconfont-fontawesome5_v0_2_2/source/class/iconfont/fontawesome5/Load.js","../../qx_packages/ITISFoundation_qx-iconfont-material_v0_1_7/source/class/iconfont/material/Load.js","part-boot-bundle-2.js","../../source/class/osparc/Application.js","part-boot-bundle-3.js","../../../home/node/node_modules/@qooxdoo/compiler/node_modules/@qooxdoo/framework/source/class/qxWeb.js","part-boot-bundle-4.js","../../source/class/osparc/utils/Utils.js","../../source/class/osparc/auth/BlurredLoginPageS4LEngineering.js","../../source/class/osparc/wrapper/IntlTelInput.js","../../source/class/osparc/announcement/Tracker.js","../../source/class/osparc/WindowSizeTracker.js","../../source/class/osparc/ConsoleErrorTracker.js","../../source/class/osparc/wrapper/WebSocket.js","../../source/class/osparc/WatchDog.js","part-boot-bundle-5.js","../../source/class/osparc/DownloadLinkTracker.js","../../source/class/osparc/store/Store.js","../../source/class/osparc/auth/Manager.js","../../source/class/osparc/ErrorPage.js","part-boot-bundle-6.js","../../source/class/osparc/desktop/FormSandboxPage.js","../../source/class/osparc/product/Utils.js","part-boot-bundle-7.js","../../source/class/osparc/store/StaticInfo.js","../../source/class/osparc/NewRelease.js","part-boot-bundle-8.js","../../source/class/osparc/ui/window/Window.js","../../source/class/osparc/CookiePolicy.js","../../source/class/osparc/auth/core/BaseAuthPage.js","part-boot-bundle-9.js","../../source/class/osparc/auth/LoginPageSplit.js","part-boot-bundle-10.js","../../source/class/osparc/auth/LoginWithDecorators.js","../../source/class/osparc/auth/LoginPageS4L.js","../../source/class/osparc/auth/LoginPageTI.js","../../source/class/osparc/auth/LoginPageOsparc.js","../../source/class/osparc/data/Resources.js","part-boot-bundle-11.js","../../source/class/osparc/io/rest/Resource.js","../../source/class/osparc/metadata/Quality.js","../../source/class/osparc/auth/Data.js","../../source/class/osparc/FlashMessenger.js","part-boot-bundle-12.js","../../source/class/osparc/Preferences.js","../../source/class/osparc/desktop/MainPageDesktop.js","../../source/class/osparc/desktop/MainPage.js","../../source/class/osparc/viewer/MainPage.js","../../source/class/osparc/data/PollTasks.js","../../source/class/osparc/MaintenanceTracker.js","../../source/class/osparc/CookieExpirationTracker.js","../../source/class/osparc/NewUITracker.js","../../source/class/osparc/ui/switch/ThemeSwitcher.js","part-boot-bundle-13.js","../../source/class/osparc/filter/IFilterable.js","part-boot-bundle-14.js","../../source/class/osparc/filter/MFilterable.js","../../source/class/osparc/dashboard/CardBase.js","part-boot-bundle-15.js","../../source/class/osparc/utils/LibVersions.js","part-boot-bundle-16.js","../../source/class/osparc/ui/basic/LinkLabel.js","../../source/class/osparc/store/VendorInfo.js","../../source/class/osparc/store/Support.js","part-boot-bundle-17.js","../../source/class/osparc/store/Data.js","part-boot-bundle-18.js","../../source/class/osparc/announcement/AnnouncementUIFactory.js","../../source/class/osparc/notification/RibbonNotification.js","../../source/class/osparc/notification/RibbonNotifications.js","part-boot-bundle-19.js","../../source/class/osparc/ui/window/SingletonWindow.js","../../source/class/osparc/TooSmallDialog.js","part-boot-bundle-20.js","../../source/class/osparc/navigation/LogoOnOff.js","../../source/class/osparc/desktop/credits/Utils.js","../../source/class/osparc/share/Collaborators.js","../../source/class/osparc/data/model/Wallet.js","../../source/class/osparc/store/Groups.js","../../source/class/osparc/auth/core/Utils.js","../../source/class/osparc/data/Permissions.js","part-boot-bundle-21.js","../../source/class/osparc/ui/basic/Logo.js","../../source/class/osparc/ui/window/Dialog.js","part-boot-bundle-22.js","../../source/class/osparc/form/json/JsonSchemaForm.js","part-boot-bundle-23.js","../../source/class/osparc/store/Products.js","../../source/class/osparc/utils/DisabledPlugins.js","../../source/class/osparc/store/AppSummary.js","part-boot-bundle-24.js","../../source/class/osparc/ui/basic/LogoWPlatform.js","../../source/class/osparc/auth/ui/LoginView.js","../../source/class/osparc/auth/ui/RegistrationView.js","../../source/class/osparc/auth/ui/RequestAccount.js","../../source/class/osparc/auth/ui/VerifyPhoneNumberView.js","../../source/class/osparc/auth/ui/ResetPassRequestView.js","../../source/class/osparc/auth/ui/ResetPassView.js","../../source/class/osparc/auth/ui/Login2FAValidationCodeView.js","part-boot-bundle-25.js","../../source/class/osparc/io/request/authentication/Token.js","../../source/class/osparc/ui/message/FlashMessage.js","../../source/class/osparc/navigation/NavigationBar.js","../../source/class/osparc/store/Tags.js","../../source/class/osparc/ui/window/TabbedView.js","../../source/class/osparc/desktop/credits/BillingCenter.js","../../source/class/osparc/desktop/credits/DesktopCenter.js","../../source/class/osparc/ui/window/Confirmation.js","../../source/class/osparc/desktop/MainPageHandler.js","../../source/class/osparc/ui/message/Loading.js","part-boot-bundle-26.js","../../source/class/osparc/dashboard/Dashboard.js","../../source/class/osparc/store/Study.js","../../source/class/osparc/ui/basic/LoadingPageHandler.js","../../source/class/osparc/desktop/StudyEditor.js","../../source/class/osparc/viewer/NavigationBar.js","../../source/class/osparc/viewer/NodeViewer.js","../../source/class/osparc/data/PollTask.js","part-boot-bundle-27.js","../../source/class/osparc/ui/layout/CenteredGrid.js","../../source/class/osparc/ui/basic/Thumbnail.js","../../source/class/osparc/ui/basic/StarsRating.js","../../source/class/osparc/data/model/Study.js","../../source/class/osparc/ui/basic/FloatingHelper.js","part-boot-bundle-28.js","../../source/class/osparc/ui/hint/Hint.js","../../source/class/osparc/store/Users.js","../../source/class/osparc/study/Utils.js","../../source/class/osparc/service/StatusUI.js","../../source/class/osparc/task/TaskUI.js","../../source/class/osparc/task/Export.js","../../source/class/osparc/dashboard/ResourceDetails.js","../../source/class/osparc/dashboard/ResourceBrowserBase.js","../../source/class/osparc/widget/StudyDataManager.js","part-boot-bundle-29.js","../../source/class/osparc/product/quickStart/Utils.js","part-boot-bundle-30.js","../../source/class/osparc/product/tours/Tours.js","../../source/class/osparc/tours/Manager.js","part-boot-bundle-31.js","../../source/class/osparc/announcement/Announcement.js","part-boot-bundle-32.js","../../source/class/osparc/widget/SlideBar.js","part-boot-bundle-33.js","../../source/class/osparc/desktop/credits/BuyCreditsStepper.js","part-boot-bundle-34.js","../../source/class/osparc/service/Utils.js","../../source/class/osparc/share/CollaboratorsWorkspace.js","../../source/class/osparc/share/CollaboratorsTag.js","../../source/class/osparc/data/Roles.js","../../source/class/osparc/share/AddCollaborators.js","part-boot-bundle-35.js","../../source/class/osparc/ui/list/ListItem.js","../../source/class/osparc/ui/list/CollaboratorListItem.js","../../source/class/osparc/share/CollaboratorsStudy.js","part-boot-bundle-36.js","../../source/class/osparc/utils/Avatar.js","../../source/class/osparc/data/model/Group.js","../../source/class/osparc/data/model/User.js","../../source/class/osparc/data/model/UserMember.js","part-boot-bundle-37.js","../../source/class/osparc/ui/mixin/FetchButton.js","../../source/class/osparc/ui/form/FetchButton.js","../../source/class/osparc/form/json/JsonSchemaFormItem.js","../../source/class/osparc/form/json/JsonSchemaFormArray.js","part-boot-bundle-38.js","../../source/class/osparc/ui/form/FileInput.js","part-boot-bundle-39.js","../../source/class/osparc/ui/form/PasswordField.js","part-boot-bundle-40.js","../../source/class/osparc/ui/form/LinkButton.js","../../source/class/osparc/ui/form/renderer/DoubleV.js","../../source/class/osparc/widget/IntlTelInput.js","part-boot-bundle-41.js","../../source/class/osparc/ui/basic/IconButton.js","../../source/class/osparc/product/TIPTeaser.js","../../source/class/osparc/ui/basic/PoweredByOsparc.js","../../source/class/osparc/navigation/StudyTitleWOptions.js","../../source/class/osparc/ui/basic/SVGImage.js","../../source/class/osparc/desktop/credits/CreditsImage.js","../../source/class/osparc/desktop/credits/CreditsIndicatorButton.js","../../source/class/osparc/task/TasksButton.js","../../source/class/osparc/notification/NotificationsButton.js","../../source/class/osparc/ui/window/TabbedWindow.js","../../source/class/osparc/desktop/account/MyAccountWindow.js","part-boot-bundle-42.js","../../source/class/osparc/navigation/UserMenuButton.js","part-boot-bundle-43.js","../../source/class/osparc/data/model/Tag.js","part-boot-bundle-44.js","../../source/class/osparc/desktop/preferences/pages/BasePage.js","../../source/class/osparc/desktop/credits/CreditsIndicator.js","../../source/class/osparc/desktop/wallets/WalletsView.js","../../source/class/osparc/desktop/paymentMethods/PaymentMethods.js","../../source/class/osparc/desktop/credits/Transactions.js","../../source/class/osparc/desktop/credits/ResourceInTableViewer.js","../../source/class/osparc/desktop/credits/Usage.js","../../source/class/osparc/desktop/credits/Purchases.js","../../source/class/osparc/desktop/credits/Checkouts.js","../../source/class/osparc/desktop/account/ProfilePage.js","part-boot-bundle-45.js","../../source/class/osparc/widget/PersistentIframe.js","../../source/class/osparc/wrapper/Svg.js","../../source/class/osparc/wrapper/JsonDiffPatch.js","../../source/class/osparc/wrapper/JsonTreeViewer.js","../../source/class/osparc/wrapper/DOMPurify.js","../../source/class/osparc/wrapper/RadialMenu.js","../../source/class/osparc/store/Services.js","../../source/class/osparc/dashboard/GridButtonBase.js","../../source/class/osparc/dashboard/StudyBrowser.js","../../source/class/osparc/dashboard/TemplateBrowser.js","../../source/class/osparc/dashboard/ServiceBrowser.js","../../source/class/osparc/dashboard/DataBrowser.js","part-boot-bundle-46.js","../../source/class/osparc/desktop/WorkbenchView.js","../../source/class/osparc/desktop/SlideshowView.js","../../source/class/osparc/widget/logger/LoggerView.js","../../source/class/osparc/data/TTLMap.js","../../source/class/osparc/form/renderer/PropFormBase.js","../../source/class/osparc/form/renderer/PropForm.js","../../source/class/osparc/widget/NodesSlidesTree.js","../../source/class/osparc/io/request/ApiRequest.js","../../source/class/osparc/snapshots/EditSnapshotView.js","../../source/class/osparc/snapshots/SnapshotsView.js","../../source/class/osparc/snapshots/IterationsView.js","../../source/class/osparc/desktop/StudyEditorIdlingTracker.js","part-boot-bundle-47.js","../../source/class/osparc/data/model/Workbench.js","../../source/class/osparc/data/model/StudyUI.js","../../source/class/osparc/data/model/Node.js","../../source/class/osparc/store/Folders.js","../../source/class/osparc/store/Workspaces.js","../../source/class/osparc/widget/ProgressSequence.js","../../source/class/osparc/file/FilePicker.js","../../source/class/osparc/ui/basic/Chip.js","../../source/class/osparc/task/Tasks.js","../../source/class/osparc/data/model/Service.js","../../source/class/osparc/dashboard/resources/pages/BasePage.js","../../source/class/osparc/utils/Resources.js","../../source/class/osparc/metadata/ServicesInStudy.js","../../source/class/osparc/metadata/ServicesInStudyUpdate.js","../../source/class/osparc/dashboard/ResourceUpgradeHelper.js","../../source/class/osparc/ui/toolbar/SelectBox.js","../../source/class/osparc/info/CardLarge.js","../../source/class/osparc/info/ServiceLarge.js","../../source/class/osparc/info/StudyLarge.js","../../source/class/osparc/study/BillingSettings.js","../../source/class/osparc/service/PricingUnitsList.js","../../source/class/osparc/study/StudyPreview.js","../../source/class/osparc/info/CommentsList.js","../../source/class/osparc/info/CommentAdd.js","../../source/class/osparc/share/CollaboratorsService.js","../../source/class/osparc/metadata/ClassifiersEditor.js","../../source/class/osparc/metadata/ClassifiersViewer.js","../../source/class/osparc/metadata/QualityEditor.js","../../source/class/osparc/form/tag/TagManager.js","../../source/class/osparc/metadata/ServicesInStudyBootOpts.js","../../source/class/osparc/info/StudyUtils.js","../../source/class/osparc/study/SaveAsTemplate.js","../../source/class/osparc/study/StudyOptions.js","../../source/class/osparc/dashboard/GridButtonNew.js","../../source/class/osparc/dashboard/ListButtonBase.js","../../source/class/osparc/dashboard/ListButtonNew.js","../../source/class/osparc/dashboard/GridButtonItem.js","../../source/class/osparc/dashboard/ListButtonItem.js","part-boot-bundle-48.js","../../source/class/osparc/filter/IFilter.js","../../source/class/osparc/filter/UIFilter.js","../../source/class/osparc/filter/UIFilterController.js","../../source/class/osparc/dashboard/SearchBarFilter.js","part-boot-bundle-49.js","../../source/class/osparc/dashboard/ResourceContainerManager.js","part-boot-bundle-50.js","../../source/class/osparc/dashboard/ResourceFilter.js","../../source/class/osparc/file/TreeFolderView.js","../../source/class/osparc/product/quickStart/SlidesBase.js","../../source/class/osparc/product/quickStart/tis/Slides.js","../../source/class/osparc/product/quickStart/s4llite/Slides.js","../../source/class/osparc/product/quickStart/s4l/Welcome.js","../../source/class/osparc/product/quickStart/s4lacad/Welcome.js","part-boot-bundle-51.js","../../source/class/osparc/tours/List.js","../../source/class/osparc/tours/Step.js","part-boot-bundle-52.js","../../source/class/osparc/desktop/credits/BuyCreditsForm.js","part-boot-bundle-53.js","../../source/class/osparc/ui/hint/InfoHint.js","../../source/class/osparc/share/NewCollaboratorsManager.js","../../source/class/osparc/desktop/organizations/OrganizationsWindow.js","../../source/class/osparc/ui/markdown/Markdown.js","../../source/class/osparc/notification/Notifications.js","../../source/class/osparc/share/ShareePermissions.js","part-boot-bundle-54.js","../../source/class/osparc/form/json/JsonSchemaFormHeader.js","../../source/class/osparc/ui/form/ListItemSelectBox.js","../../source/class/osparc/utils/Validators.js","part-boot-bundle-55.js","../../source/class/osparc/About.js","../../source/class/osparc/info/MergedLarge.js","../../qx_packages/ITISFoundation_qx-osparc-theme_v0_5_6/source/class/osparc/theme/common/Image.js","../../source/class/osparc/ui/form/EditLabel.js","../../source/class/osparc/desktop/credits/CreditsSummary.js","../../source/class/osparc/notification/NotificationsContainer.js","../../source/class/osparc/desktop/account/MyAccount.js","part-boot-bundle-56.js","../../source/class/osparc/navigation/UserMenu.js","part-boot-bundle-57.js","../../source/class/osparc/desktop/wallets/WalletsList.js","../../source/class/osparc/desktop/wallets/WalletDetails.js","../../source/class/osparc/desktop/credits/PaymentGatewayWindow.js","../../source/class/osparc/desktop/paymentMethods/PaymentMethodListItem.js","../../source/class/osparc/desktop/paymentMethods/PaymentMethodDetails.js","part-boot-bundle-58.js","../../source/class/osparc/desktop/credits/TransactionsTable.js","../../source/class/osparc/desktop/credits/DateFilters.js","../../source/class/osparc/desktop/credits/UsageTable.js","../../source/class/osparc/desktop/credits/PurchasesTable.js","../../source/class/osparc/desktop/credits/CheckoutsTable.js","part-boot-bundle-59.js","../../source/class/osparc/desktop/account/DeleteAccount.js","../../source/class/osparc/workbench/DiskUsageIndicator.js","../../source/class/osparc/vipMarket/MarketWindow.js","../../source/class/osparc/desktop/credits/BillingCenterWindow.js","../../source/class/osparc/dashboard/WorkspaceButtonBase.js","../../source/class/osparc/dashboard/WorkspaceButtonNew.js","../../source/class/osparc/dashboard/FolderButtonBase.js","../../source/class/osparc/dashboard/FolderButtonNew.js","../../source/class/osparc/dashboard/MoveResourceTo.js","../../source/class/osparc/dashboard/DragDropHelpers.js","../../source/class/osparc/dashboard/NewPlusButton.js","../../source/class/osparc/dashboard/NewStudies.js","../../source/class/osparc/dashboard/StudyBrowserHeader.js","../../source/class/osparc/dashboard/SortedByMenuButton.js","../../source/class/osparc/dashboard/GridButtonLoadMore.js","../../source/class/osparc/dashboard/ListButtonLoadMore.js","../../source/class/osparc/study/Import.js","../../source/class/osparc/widget/Renamer.js","../../source/class/osparc/editor/ThumbnailSuggestions.js","../../source/class/osparc/editor/ThumbnailEditor.js","../../source/class/osparc/dashboard/GridButtonPlaceholder.js","../../source/class/osparc/dashboard/ListButtonPlaceholder.js","../../source/class/osparc/task/Duplicate.js","../../source/class/osparc/task/Import.js","../../source/class/osparc/ui/basic/DateAndBy.js","../../source/class/osparc/study/StudyPricingUnits.js","../../source/class/osparc/study/NodePricingUnits.js","../../source/class/osparc/task/ToTemplate.js","../../source/class/osparc/service/SortServicesButtons.js","part-boot-bundle-60.js","../../source/class/osparc/desktop/WorkbenchPanel.js","../../source/class/osparc/widget/CollapsibleViewLight.js","part-boot-bundle-61.js","../../source/class/osparc/widget/NodesTree.js","../../source/class/osparc/widget/StudyTitleOnlyTree.js","../../source/class/osparc/file/FilesTree.js","../../source/class/osparc/desktop/CollapseWithUserMenu.js","../../source/class/osparc/info/StudyMedium.js","../../source/class/osparc/node/ParameterEditor.js","../../source/class/osparc/widget/CollapsibleView.js","../../source/class/osparc/desktop/PanelView.js","../../source/class/osparc/widget/NodeOptions.js","../../source/class/osparc/desktop/Toolbar.js","../../source/class/osparc/desktop/SlideshowToolbar.js","../../source/class/osparc/navigation/PrevNextButtons.js","../../source/class/osparc/data/model/NodeStatus.js","../../source/class/osparc/node/slideshow/BaseNodeView.js","../../source/class/osparc/node/slideshow/FilePickerView.js","../../source/class/osparc/node/slideshow/NodeView.js","../../source/class/osparc/workbench/ServiceCatalog.js","part-boot-bundle-62.js","../../source/class/osparc/widget/logger/LoggerModel.js","part-boot-bundle-63.js","../../source/class/osparc/ui/table/cellrenderer/Html.js","../../source/class/osparc/ui/table/rowrenderer/ExpandSelection.js","../../source/class/osparc/utils/Units.js","../../source/class/osparc/form/PortInfoHint.js","../../source/class/osparc/utils/Ports.js","part-boot-bundle-64.js","../../source/class/osparc/widget/NodeSlideTreeItem.js","../../source/class/osparc/io/rest/AbstractResource.js","../../source/class/osparc/workbench/WorkbenchUI.js","../../source/class/osparc/workbench/WorkbenchUIPreview.js","../../source/class/osparc/wrapper/GitGraph.js","../../source/class/osparc/ui/table/Table.js","../../source/class/osparc/snapshots/Loading.js","../../source/class/osparc/snapshots/Iterations.js","../../source/class/osparc/utils/WebWorkerScheduler.js","part-boot-bundle-65.js","../../source/class/osparc/data/model/Edge.js","../../source/class/osparc/workbench/BaseNodeUI.js","../../source/class/osparc/workbench/NodeUI.js","../../source/class/osparc/data/model/Slideshow.js","../../source/class/osparc/data/model/IframeHandler.js","../../source/class/osparc/form/Auto.js","../../source/class/osparc/widget/NodeOutputs.js","../../source/class/osparc/data/model/Folder.js","../../source/class/osparc/data/model/Workspace.js","part-boot-bundle-66.js","../../source/class/osparc/file/FileDownloadLink.js","../../source/class/osparc/file/FileDrop.js","../../source/class/osparc/file/FileUploader.js","../../source/class/osparc/desktop/RadioCollapsibleViews.js","../../source/class/osparc/file/FolderViewer.js","part-boot-bundle-67.js","../../source/class/osparc/info/ServiceUtils.js","../../source/class/osparc/info/Utils.js","../../source/class/osparc/ui/basic/JsonTreeWidget.js","../../source/class/osparc/editor/TextEditor.js","../../source/class/osparc/editor/MarkdownEditor.js","../../source/class/osparc/store/Pricing.js","../../source/class/osparc/study/PricingUnitTiers.js","../../source/class/osparc/info/CommentUI.js","../../source/class/osparc/filter/ClassifiersFilter.js","../../source/class/osparc/utils/Classifiers.js","../../source/class/osparc/ui/tree/ClassifiersTree.js","../../source/class/osparc/form/FieldWHint.js","../../source/class/osparc/filter/TextFilter.js","../../source/class/osparc/form/tag/TagItem.js","../../source/class/osparc/form/tag/TagToggleButton.js","../../source/class/osparc/ui/basic/Tag.js","../../source/class/osparc/share/PublishTemplate.js","part-boot-bundle-68.js","../../source/class/osparc/dashboard/CardContainer.js","../../source/class/osparc/dashboard/GroupedCardContainer.js","../../source/class/osparc/dashboard/WorkspaceButtonItem.js","../../source/class/osparc/dashboard/FolderButtonItem.js","../../source/class/osparc/dashboard/WorkspacesAndFoldersTree.js","../../source/class/osparc/product/quickStart/SlideBase.js","../../source/class/osparc/product/quickStart/tis/Welcome.js","../../source/class/osparc/product/quickStart/tis/Dashboard.js","../../source/class/osparc/product/quickStart/tis/ElectrodeSelector.js","../../source/class/osparc/product/quickStart/tis/PostPro.js","../../source/class/osparc/product/quickStart/tis/S4LPostPro.js","../../source/class/osparc/product/quickStart/tis/MoreInformation.js","../../source/class/osparc/product/quickStart/s4llite/Welcome.js","../../source/class/osparc/product/quickStart/s4llite/Dashboard.js","../../source/class/osparc/product/quickStart/s4llite/S4LLiteSpecs.js","../../source/class/osparc/product/quickStart/s4llite/S4LLiteUI.js","../../source/class/osparc/tours/ListItem.js","part-boot-bundle-69.js","../../source/class/osparc/desktop/credits/BuyCreditsInput.js","../../source/class/osparc/form/AppMotionSelect.js","part-boot-bundle-70.js","../../source/class/osparc/filter/SearchingCollaborators.js","../../source/class/osparc/filter/CollaboratorToggleButton.js","../../source/class/osparc/desktop/organizations/OrganizationsList.js","../../source/class/osparc/desktop/organizations/OrganizationDetails.js","../../source/class/osparc/notification/Notification.js","../../source/class/osparc/desktop/credits/CreditsPerService.js","../../source/class/osparc/notification/NotificationUI.js","../../source/class/osparc/desktop/preferences/pages/GeneralPage.js","../../source/class/osparc/desktop/preferences/pages/ConfirmationsPage.js","../../source/class/osparc/desktop/preferences/pages/TokensPage.js","../../source/class/osparc/desktop/preferences/pages/TagsPage.js","../../source/class/osparc/navigation/MiniProfileMenuButton.js","../../source/class/osparc/ui/switch/ThemeSwitcherMenuBtn.js","../../source/class/osparc/admin/AdminCenterWindow.js","../../source/class/osparc/po/POCenterWindow.js","../../source/class/osparc/tester/TesterCenterWindow.js","../../source/class/osparc/product/AboutProduct.js","part-boot-bundle-71.js","../../source/class/osparc/ui/list/ListItemWithMenu.js","../../source/class/osparc/desktop/wallets/WalletListItem.js","../../source/class/osparc/desktop/wallets/WalletEditor.js","../../source/class/osparc/desktop/wallets/MembersList.js","part-boot-bundle-72.js","../../source/class/osparc/desktop/credits/TransactionsTableModel.js","part-boot-bundle-73.js","../../source/class/osparc/ui/table/cellrenderer/StringWithTooltip.js","part-boot-bundle-74.js","../../source/class/osparc/desktop/credits/UsageTableModel.js","../../source/class/osparc/desktop/credits/PurchasesTableModel.js","../../source/class/osparc/desktop/credits/CheckoutsTableModel.js","../../source/class/osparc/workbench/DiskUsageController.js","../../source/class/osparc/vipMarket/Market.js","../../source/class/osparc/editor/WorkspaceEditor.js","../../source/class/osparc/editor/FolderEditor.js","../../source/class/osparc/dashboard/DragWidget.js","../../source/class/osparc/dashboard/NewPlusMenu.js","../../source/class/osparc/dashboard/ContextBreadcrumbs.js","../../source/class/osparc/desktop/WorkbenchToolbar.js","part-boot-bundle-75.js","../../source/class/osparc/widget/NodeTreeItem.js","../../source/class/osparc/data/Converters.js","../../source/class/osparc/file/FileTreeItem.js","../../source/class/osparc/ui/form/ContentSchemaArray.js","part-boot-bundle-76.js","../../source/class/osparc/node/ServiceOptionsView.js","../../source/class/osparc/node/TierSelectionView.js","../../source/class/osparc/node/LifeCycleView.js","../../source/class/osparc/node/BootOptionsView.js","../../source/class/osparc/node/UpdateResourceLimitsView.js","../../source/class/osparc/node/StartStopButton.js","../../source/class/osparc/navigation/BreadcrumbNavigation.js","../../source/class/osparc/navigation/BreadcrumbsSlideshow.js","../../source/class/osparc/navigation/BreadcrumbsSlideshowEdit.js","../../source/class/osparc/data/model/NodeProgressSequence.js","../../source/class/osparc/ui/basic/NodeStatusUI.js","../../source/class/osparc/widget/PreparingInputs.js","../../source/class/osparc/filter/group/ServiceFilterGroup.js","../../source/class/osparc/service/ServiceList.js","part-boot-bundle-77.js","../../source/class/osparc/workbench/SvgWidget.js","../../source/class/osparc/editor/AnnotationEditor.js","../../source/class/osparc/workbench/EdgeUI.js","../../source/class/osparc/workbench/Annotation.js","../../source/class/osparc/editor/AnnotationNoteCreator.js","part-boot-bundle-78.js","../../qx_packages/ITISFoundation_qx-osparc-theme_v0_5_6/source/class/osparc/theme/common/Appearance.js","../../source/class/osparc/theme/Appearance.js","part-boot-bundle-79.js","../../source/class/osparc/ui/form/ContentSchemaHelper.js","../../source/class/osparc/file/FolderContent.js","../../source/class/osparc/file/FileLabelWithActions.js","../../source/class/osparc/data/model/PricingPlan.js","../../source/class/osparc/data/model/PricingUnit.js","../../source/class/osparc/study/PricingUnit.js","../../source/class/osparc/study/PricingUnitTier.js","../../source/class/osparc/ui/tree/CheckboxTree.js","../../source/class/osparc/ui/tree/MHintInTree.js","../../source/class/osparc/ui/tree/ClassifiersTreeItem.js","../../source/class/osparc/dashboard/FolderWithSharedIcon.js","../../source/class/osparc/dashboard/WorkspacesAndFoldersTreeItem.js","../../source/class/osparc/editor/OrganizationEditor.js","../../source/class/osparc/ui/list/OrganizationListItem.js","../../source/class/osparc/desktop/organizations/MembersList.js","../../source/class/osparc/desktop/organizations/TemplatesList.js","../../source/class/osparc/desktop/organizations/ServicesList.js","../../source/class/osparc/desktop/credits/CreditsServiceListItem.js","../../source/class/osparc/desktop/preferences/window/APIKeyBase.js","../../source/class/osparc/desktop/preferences/window/CreateAPIKey.js","../../source/class/osparc/desktop/preferences/window/ShowAPIKey.js","../../source/class/osparc/admin/AdminCenter.js","../../source/class/osparc/po/POCenter.js","../../source/class/osparc/tester/TesterCenter.js","../../source/class/osparc/desktop/credits/AutoRecharge.js","../../source/class/osparc/desktop/wallets/MemberListItem.js","part-boot-bundle-80.js","../../source/class/osparc/store/LicensedItems.js","../../source/class/osparc/data/model/LicensedItem.js","../../source/class/osparc/vipMarket/VipMarket.js","../../source/class/osparc/desktop/StartStopButtons.js","../../source/class/osparc/desktop/ZoomButtons.js","part-boot-bundle-81.js","../../source/class/osparc/navigation/BreadcrumbSplitter.js","part-boot-bundle-82.js","../../source/class/osparc/filter/TagsFilter.js","../../source/class/osparc/filter/NodeTypeFilter.js","../../source/class/osparc/service/ServiceListItem.js","../../source/class/osparc/form/ColorPicker.js","../../source/class/osparc/ui/tree/CheckboxTreeItem.js","../../source/class/osparc/utils/Icons.js","../../source/class/osparc/ui/list/MemberListItem.js","../../source/class/osparc/desktop/organizations/SharedResourceListItem.js","../../source/class/osparc/po/BaseView.js","../../source/class/osparc/pricing/PlanManager.js","../../source/class/osparc/admin/Maintenance.js","../../source/class/osparc/admin/Announcements.js","../../source/class/osparc/po/Users.js","../../source/class/osparc/po/PreRegistration.js","../../source/class/osparc/po/Invitations.js","../../source/class/osparc/po/ProductInfo.js","../../source/class/osparc/po/MessageTemplates.js","../../source/class/osparc/tester/WebSocketMessages.js","../../source/class/osparc/tester/ConsoleErrors.js","../../source/class/osparc/tester/Statics.js","../../source/class/osparc/data/model/LicensedItemResource.js","../../source/class/osparc/vipMarket/SortModelsButtons.js","../../source/class/osparc/vipMarket/LicensedItemDetails.js","../../source/class/osparc/vipMarket/LicensedItemListItem.js","../../source/class/osparc/ui/toolbar/FetchButton.js","../../source/class/osparc/ui/menu/FetchButton.js","part-boot-bundle-83.js","../../source/class/osparc/ui/toolbar/FetchSplitButton.js","part-boot-bundle-84.js","../../source/class/osparc/pricing/Plans.js","../../source/class/osparc/pricing/PlanDetails.js","../../source/class/osparc/editor/HtmlEditor.js","part-boot-bundle-85.js","../../source/class/osparc/ui/markdown/MarkdownWindow.js","../../source/class/osparc/study/PricingUnitLicense.js","../../source/class/osparc/pricing/PlanListItem.js","../../source/class/osparc/pricing/PlanEditor.js","../../source/class/osparc/pricing/UnitsList.js","../../source/class/osparc/pricing/ServicesList.js","../../source/class/osparc/pricing/UnitEditor.js","../../source/class/osparc/theme/mixin/Color.js","../../source/class/osparc/theme/colorProvider/ColorProvider.js","../../source/class/osparc/theme/ColorLight.js","../../source/class/osparc/theme/products/s4l/ColorLight.js","../../qx_packages/ITISFoundation_qx-osparc-theme_v0_5_6/source/class/osparc/theme/common/Decoration.js","../../source/class/osparc/theme/Decoration.js","../../qx_packages/ITISFoundation_qx-osparc-theme_v0_5_6/source/class/osparc/theme/common/Font.js","../../source/class/osparc/theme/Font.js","part-boot-bundle-86.js","../../source/class/osparc/theme/products/s4l/ThemeLight.js","../../source/class/osparc/theme/ColorDark.js","../../source/class/osparc/theme/products/s4l/ColorDark.js","../../source/class/osparc/theme/products/s4l/ThemeDark.js"],"names":["window","qx","Bootstrap","genericToString","this","classname","createNamespace","name","object","splits","split","part","parent","$$namespaceRoot","i","len","length","setDisplayName","fcn","displayName","setDisplayNames","functionMap","value","Function","base","args","varargs","DEBUG","isFunction","callee","Error","arguments","call","apply","Array","prototype","slice","define","config","clazz","statics","proto","members","extend","construct","extendClass","basename","l","keys","key","member","$$registry","formerClass","defer","curProp","$$type","hasOwnProperty","toString","isStrictMode","ex","$$events","events","addPendingDefer","isQxCoreObject","constructor","clz","superclass","LOADSTART","$$start","Date","debug","$$environment","getEnvironmentSetting","setEnvironmentSetting","undefined","setRoot","root","superClass","superproto","helper","self","__pendingDefers","cb","$$loader","delayDefer","push","$$pendingDefer","executePendingDefers","dbClassInfo","executeForDbClassInfo","environment","required","info","load","className","executeForClassName","dependsOn","depInfo","require","usage","getByName","$$deferComplete","$$dbClassInfo","execute","tmp","pendingDefers","forEach","objectGetLength","map","objectMergeWith","target","source","overwrite","__shadowedKeys","ES5","Object","BROKEN_IE","_typeof","TypeError","arr","a","default","__classToTypeMap","[object String]","[object Array]","[object Object]","[object RegExp]","[object Number]","[object Boolean]","[object Date]","[object Function]","[object AsyncFunction]","[object Error]","[object Blob]","[object ArrayBuffer]","[object FormData]","bind","func","fixedArgs","concat","firstUp","str","charAt","toUpperCase","substr","firstLow","toLowerCase","getClass","classString","isString","String","$$isString","isArray","data","IListData","util","OOUtil","hasInterface","$$isArray","isObject","isFunctionOrAsyncFunction","$$logs","message","warn","error","trace","inShutDown","__registry","__nextHash","__postId","__stackTraces","register","obj","registry","hash","core","ObjectRegistry","toHashCode","dispose","unregister","$$hash","clearHashCode","createHashCode","$$discardedHashCode","removeAttribute","fromHashCode","suppressWarnings","log","Logger","hasHashCode","shutdown","hashes","sort","b","parseInt","getRegistry","getNextHash","getPostId","getStackTraces","top","frames","_checks","_asyncChecks","__cache","_checksMap","_defaults","true","qx.allowUrlSettings","qx.allowUrlVariants","qx.debug.property.level","qx.debug","qx.debug.ui.queue","qx.debug.touchpad.detection","qx.aspects","qx.dynlocale","qx.dyntheme","qx.blankpage","qx.debug.databinding","qx.debug.dispose","qx.optimization.basecalls","qx.optimization.comments","qx.optimization.privates","qx.optimization.strings","qx.optimization.variables","qx.optimization.variants","module.databinding","module.logger","module.property","module.events","module.objectid","qx.nativeScrollBars","qx.automaticMemoryManagement","qx.promise","qx.promise.warnings","qx.promise.longStackTraces","qx.command.bindEnabled","get","check","classAndMethod","_getClassNameFromEnvKey","envmappings","implementation","lastdot","lastIndexOf","methodname","getAsync","callback","env","result","setTimeout","select","values","__pickFromValues","selectAsync","id","indexOf","ids","filter","returnArray","invalidateCacheKey","add","__createCheck","addAsync","getChecks","getAsyncChecks","_initDefaultQxValues","createFuncReturning","val","prop","__importFromGenerator","__importFromUrl","document","location","urlChecks","search","decodeURIComponent","test","parseFloat","Environment","searchElement","fromIndex","Math","max","res","some","every","find","Assert","assertFunction","findIndex","reduce","init","ret","reduceRight","includes","o","x","y","n","k","abs","isNaN","install","defineProperty","enumerable","lang","normalize","getStackTrace","e","stack","stacktrace","getMutationObserver","MutationObserver","getArrayIndexOf","getArrayLastIndexOf","getArrayForEach","getArrayFilter","getArrayMap","getArraySome","getArrayFind","getArrayFindIndex","getArrayEvery","getArrayReduce","getArrayReduceRight","getArrayIncludes","getErrorToString","getFunctionBind","getAsyncFunction","f","eval","getObjectKeys","getObjectValues","getObjectIs","is","getDateNow","now","getDateParse","parse","getStringStartsWith","startsWith","getStringEndsWith","endsWith","getStringTrim","trim","getBigInt","BigInt","getBigIntToLocaleString","toLocaleString","getPromiseNative","Promise","getEpsilon","Number","EPSILON","bom","client","EcmaScript","__validateConfig","iface","$$extends","properties","$$properties","$$members","Interface","isDefined","getTotalNumber","flatten","ifaces","list","__checkMembers","wrap","shouldThrow","isPropertyMethod","__isPropertyMethod","__wrapInterfaceMember","methodName","match","propertyName","getPropertyDefinition","__checkProperties","__checkEvents","supportsEvent","assertObject","assert","objectImplements","classImplements","has","origFunction","functionName","preCondition","wrappedFunction","wrapper","__allowedKeys","allowed","maps","include","mixin","$$mixin","$$constructor","$$includes","destruct","$$destructor","checkCompatibility","mixins","isCompatible","getMixins","Mixin","dateString","captureGroups","exec","time","originalParse","setTime","NaN","noTime","getTime","minutesOffset","UTC","that","bound","F","replace","searchString","position","subjectString","isFinite","floor","lastIndex","assertMap","__gatherDependency","event","type","Data","dispatch","Direct","__checks","Boolean","Integer","PositiveNumber","PositiveInteger","RegExp","Map","Node","Element","Document","Window","Event","Class","Theme","Color","Decorator","Font","__dereference","$$inherit","$$store","runtime","user","theme","inherit","useinit","$$method","set","setImpl","setAsync","reset","refresh","setRuntime","resetRuntime","setThemed","resetThemed","$$allowedKeys","@","dereference","inheritable","nullable","themeable","refine","transform","async","deferredInit","validate","isEqual","$$allowedGroupKeys","group","mode","$$inheritable","__executeOptimizedRefresh","inheritables","__getInheritablesOfClass","refresher","__createRefresher","$$refreshInheritables","code","join","attachRefreshInheritables","Property","attachMethods","__attachGroupMethods","__attachPropertyMethods","upname","setter","resetter","styler","unstyler","argHandler","shorthand","__shouldBeDereferenced","allNames","conflictingClass","method","store","getName","$$install","__installOptimizedGetter","setName","__installOptimizedSetter","executeOptimizedSetter","$$propertyMethod","__errors","0","1","2","3","4","5","property","variant","msg","__unwrapFunctionFromCode","instance","fn","__installFunctionFromCode","executeOptimizedGetter","__compileGetter","__compileSetter","incomingValue","hasCallback","__getStore","__emitIsEqualFunction","__emitSetterPreConditions","__emitOldValue","__emitIncomingValueTransformation","__emitOldNewComparison","__emitIncomingValueValidation","__emitStoreComputedValue","__emitStoreValue","__emitStoreInheritedPropertyValue","__emitNormalizeUndefinedValues","__emitCallCallback","_getChildren","unshift","resetValue","classIsDefined","hasProperty","getEventType","getByInterface","$$implements","$$flatImplements","$$flatIncludes","__Property","implement","implicitType","__createClass","__attachAnno","__addProperties","__addMembers","__addEvents","__addMixin","__addInterface","__validateAbstractInterfaces","undefine","ns","objects","last","patch","isClass","isSubClassOf","getProperties","getByProperty","hasOwnMixin","getByMixin","hasMixin","hasOwnInterface","getInterfaces","implementsInterface","getInstance","$$instance","$$allowconstruct","getSubclasses","subclasses","@construct","@destruct","__staticAllowedKeys","settings","variants","$$classtype","interfaces","anno","$$annotations","Type","__createDefaultConstructor","__wrapConstructor","staticValue","substring","__validateProperty","existingProperty","annoKey","__mixinMemberWrapper","oldBase","retval","entry","defaultConstructor","_wrapper","$$original","$$initialized","sourcePropertyChain","targetObject","targetProperty","options","SingleValueBinding","bindAsync","initialPromise","then","resolve","removeBinding","removeBindingFromObject","removeRelatedBindings","relatedObject","removeAllBindings","removeAllBindingsForObject","getBindings","getAllBindingsForObject","MBinding","FILENAME_TO_CLASSNAME","FORMAT_STACKTRACE","dev","StackTrace","hasEnvironmentCheck","errorTrace","getStackTraceFromError","callerTrace","getStackTraceFromCaller","removeAt","min","callerCall","callerArr","mO","pop","columnNumber","callerClassName","errorArr","errorClassName","lineNumber","line","getCaller","knownFunction","fcnName","caller","lineRe","hit","fileName","url","traceProp","__fileNameToClassName","__formatStackTrace","fileReParens","fileRe","fileMatch","lines","reResult","sourceURL","convertedName","__fileNameToClassNameDefault","jsPos","paramPos","maxEntries","setMaxEntries","__nextIndexToStoreTo","__entriesStored","__isMarkActive","__entriesStoredSinceMark","__entries","__maxEntries","clear","getMaxEntries","addEntry","__addToIndex","getNumEntriesStored","mark","clearMark","getAllEntries","getEntries","count","startingFromMark","indexOfYoungestElementInHistory","startIndex","idx","addMe","RingBuffer","maxMessages","setMaxMessages","getMaxMessages","process","getAllLogEvents","retrieveLogEvents","clearHistory","appender","__level","setLevel","getLevel","setTreshold","__buffer","getTreshold","__appenders","__appendersByName","__filters","__id","$$id","appenderName","entries","__getAppenders","loggerName","level","addFilter","logger","loggerMatch","resetFilters","__log","isLoggerEnabled","fromArguments","deprecatedMethodWarning","deprecatedClassWarning","deprecatedEventWarning","deprecatedMixinWarning","mixinName","deprecatedConstantWarning","constant","__defineGetter__","constantValue","deprecateMethodOverriding","baseclass","__levels","__appendersCache","__getLoggerName","appenders","items","__serialize","offset","win","levels","cacheId","__detect","nodeType","deep","text","nodeValue","nodeName","temp","sorted","number","logs","__Logger","__logMessage","argumentsArray","MLogging","addNativeListener","listener","useCapture","passive","addEventListener","capture","attachEvent","removeNativeListener","removeEventListener","detachEvent","getTarget","srcElement","getRelatedTarget","relatedTarget","fromElement","toElement","preventDefault","keyCode","returnValue","stopPropagation","cancelBubble","fire","createEvent","evt","initEvent","dispatchEvent","createEventObject","fireEvent","browserName","engineName","transitionSupport","eventName","setAttribute","getEventName","pref","Style","VENDOR_PREFIXES","prefix","IDisposable","registration","__window","__windowId","__registration","GlobalError","observeMethod","__listeners","__handlers","__dispatchers","__handlerCache","__clearBlackList","DeferredCall","__blacklist","$$blackListCleaner","__lastUnique","getNextUniqueId","__globalEventMonitor","getGlobalEventMonitor","setGlobalEventMonitor","__disposeWrapper","getWindow","getWindowId","getHandler","handler","getDispatcher","dispatcher","getListeners","targetKey","targetMap","entryList","getAllListeners","serializeListeners","entryKey","context","toggleAttachedEvents","enable","charCodeAt","__registerAtHandler","__unregisterAtHandler","hasListener","importListeners","Manager","listKey","item","unique","addListener","assertString","assertFunctionOrAsyncFunction","assertBoolean","findHandler","isDomNode","isWindow","isDocument","tagName","cache","supportedTypes","targetCheck","classes","getHandlers","IEventHandler","SUPPORTED_TYPES","TARGET_CHECK","found","TARGET_DOMNODE","TARGET_WINDOW","TARGET_OBJECT","TARGET_DOCUMENT","IGNORE_CAN_HANDLE","canHandleEvent","registerEvent","removeListener","__addToBlacklist","removeListenerById","removeAllListeners","deleteAllListeners","unregisterEvent","assertNotUndefined","assertNotNull","assertInstance","getDefaultPrevented","getType","getBubbles","Pool","poolObject","setTarget","getDispatchers","dispatched","tracker","canDispatchEvent","Utils","track","removeManager","DisposeUtil","disposeMap","uid","schedule","isBlacklisted","ELEMENT","ATTRIBUTE","TEXT","CDATA_SECTION","ENTITY_REFERENCE","ENTITY","PROCESSING_INSTRUCTION","COMMENT","DOCUMENT","DOCUMENT_TYPE","DOCUMENT_FRAGMENT","NOTATION","getDocument","node","ownerDocument","defaultView","parentWindow","getDocumentElement","documentElement","getBodyElement","body","isNode","isElement","isDocumentFragment","isText","history","isNodeName","dom","getText","nodes","childNodes","isBlockNode","cast","toArray","fromCollection","coll","fromShortHand","input","clone","insertAt","splice","insertBefore","obj2","insertAfter","removeAll","append","arr1","arr2","assertArray","exclude","index","remove","contains","equals","toNativeArray","sum","doneStrings","doneNumbers","doneObjects","hasNull","hasFalse","hasTrue","ex1","range","start","stop","step","ceil","dest","src","fcnReResult","globalEval","execScript","create","delay","periodical","attempt","isDisposed","fail","returns","setInterval","curry","optargs","_delay","interval","__managers","getManager","manager","mgr","getObject","setType","__fireEvent","fireEventAsync","__fireNonBubblingEvent","fireNonBubblingEvent","fireNonBubblingEventAsync","promise","PRIORITY_FIRST","PRIORITY_NORMAL","PRIORITY_LAST","addHandler","assertInterface","PRIORITY","addDispatcher","priority","IEventDispatcher","Registration","__Registration","$$disposed","addListenerOnce","$$wrapped_callback","fireDataEvent","oldData","cancelable","MEvent","getter","isPropertyInitialized","MProperty","qxOwner","qxObjectId","__ownedQxObjects","__changingQxOwner","_applyQxOwner","oldValue","_applyQxObjectId","owner","getQxOwner","__onOwnedObjectIdChange","_cascadeQxObjectIdChanges","newId","oldId","getContentElement","contentElement","updateObjectId","getQxObject","controlId","pos","seg","_createQxObject","getChildControl","_createQxObjectImpl","addOwnedQxObject","thatOwner","__removeOwnedQxObjectImpl","getQxObjectId","setQxOwner","setQxObjectId","removeOwnedQxObject","getOwnedQxObjects","MObjectId","isRegExp","isNumber","isBoolean","isDate","isError","isPromise","__logError","__fail","comment","msgvarargs","__toString","errorMsg","err","AssertionError","stringValue","Json","stringify","condition","compact","assertTrue","assertFalse","assertEquals","expected","assertNotEquals","assertEqualsFloat","assertNumber","assertNotEqualsFloat","assertIdentical","assertNotIdentical","assertUndefined","assertNull","assertJsonEquals","assertMatch","re","assertArgumentsCount","minCount","maxCount","argCount","assertEventFired","invokeFunc","listenerFunc","called","assertEventNotFired","assertException","exception","assertInArray","array","assertNotInArray","format","assertArrayEquals","assertKeyInMap","assertPositiveNumber","assertInteger","assertPositiveInteger","assertInRange","assertRegExp","assertType","assertCssColor","ColorUtil","expectedRgb","stringToRgb","valueRgb","assertElement","assertQxObject","__isQxInstance","assertQxWidget","MAssert","toUuid","$$uuid","Uuid","createUuidV4","setExplicitUuid","uuid","props","__userData","setUserData","getUserData","resetUserData","isDisposing","$$disposing","_disposeObjects","disposeObjects","_disposeSingletonObjects","_disposeArray","field","disposeArray","_disposeMap","qx.debug.dispose.level","storeUser","storeTheme","storeInherit","storeUseinit","storeInit","change","changeLength","getItem","setItem","amount","getLength","CAPTURING_PHASE","AT_TARGET","BUBBLING_PHASE","_promises","canBubble","_type","_target","_currentTarget","_relatedTarget","_originalTarget","_stopPropagation","_preventDefault","_bubbles","_cancelable","_timeStamp","_eventPhase","embryo","getPropagationStopped","addPromise","getPromises","reject","all","getEventPhase","setEventPhase","eventPhase","getTimeStamp","getCurrentTarget","setCurrentTarget","currentTarget","setRelatedTarget","getOriginalTarget","setOriginalTarget","originalTarget","setBubbles","bubbles","isCancelable","setCancelable","__data","__old","old","getData","getOldData","_manager","expectedEventClassName","expectedEventClass","listeners","__initialize","Bluebird","__p","origFn","reason","shift","__DEFAULT_ERROR","JSON","$$createdAt","__externalPromise","$$qxPromise","__external","onFulfilled","onRejected","_callMethod","catch","__wrap","spread","fulfilledHandler","finally","cancel","_callIterableMethod","race","iterable","any","iterator","mapSeries","reducer","initialValue","complete","__getPendingExternal","__bindArgs","newP","toPromise","Native","__callStaticMethod","allOf","action","names","wrappedCb","promisify","__attachBluebird","warnings","longStackTraces","cancellation","__initialized","__onUnhandledRejection","detail","handleError","minArgs","__mapArgs","arg","module","exports","t","r","s","u","_dereq_","SomePromiseArray","_SomePromiseArray","promises","setHowMany","setUnwrap","firstLineError","Queue","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","setScheduler","prev","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","stderr","write","exit","throwLater","AsyncInvokeLater","receiver","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","invokeLater","invoke","settlePromises","_settlePromises","invokeFirst","_drainQueue","queue","_reset","./queue","./schedule","./util","INTERNAL","tryConvertToPromise","calledBind","rejectThis","_","_reject","targetRejected","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_setBoundTo","_setOnCancel","_boundTo","_isBound","bluebird","noConflict","./promise","cr","callerCache","getterCache","canEvaluate","isIdentifier","ensureMethod","namedGetter","indexedGetter","isIndex","maybeGetter","getGetter","6","PromiseArray","apiRejection","tryCatch","errorObj","_async","_warn","child","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","getKeys","instances","boundTo","predicateLoop","matchesPredicate","j","./es5","8","contextStack","_promiseCreated","_pushContext","_popContext","_peekContext","Context","_trace","CapturedTrace","peekContext","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","ctx","9","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","getDomain","_getDomain","Warning","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","wForgottenReturn","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","onPossiblyUnhandledRejection","domain","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","hasLongStackTraces","fireDomEvent","CustomEvent","global","domEvent","initCustomEvent","fireGlobalEvent","emit","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","_warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","opts","warningsOption","_clearCancellationData","cancellationClearCancellationData","cancellationPropagateFrom","cancellationOnCancel","cancellationSetOnCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","_execute","cancellationExecute","_propagateFromFunction","monitoring","_fireEvent","defaultFireEvent","executor","onCancel","flags","previousOnCancel","branchesRemainingToCancel","_boundValueFunction","isFulfilled","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parsed","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","isTraceLine","isInternalFrame","shouldIgnore","stackFramesAsArray","title","isSoft","console","localHandler","localEventFired","formatNonError","newStr","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","matches","_promisesCreated","uncycle","inherits","stackToIndex","currentStack","cycleEdgeNode","currentChildLength","stacks","current","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","color","checkForgottenReturns","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","deprecated","replacement","./errors","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","caught","catchReturn","_value","11","PromiseReduce","PromiseAll","promiseAllThis","each","12","_TypeError","_RangeError","es5","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","RangeError","methods","configurable","writable","indent","OperationalError","cause","errorTypes","RejectionError","13","isES5","getDescriptor","getOwnPropertyDescriptor","getOwnPropertyNames","getPrototypeOf","propertyIsWritable","descriptor","ObjectKeys","desc","14","PromiseMap","15","PassThroughHandlerContext","cancelPromise","isFinallyHandler","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","reasonOrValue","isRejected","_passThrough","success","lastly","tap","16","Proxyable","errors","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","implementsReturn","coroutine","returnSentinel","_continue","_promiseFulfilled","next","_promiseRejected","_run","_rejectCallback","done","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","17","18","MappingPromiseArray","limit","_filter","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_init$","_init","_values","preservedValues","totalResolved","_totalResolved","_resolve","booleans","concurrency","19","_resolveFromSyncValue","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","APPLY","createContext","catchFilter","nodebackForPromise","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","catchInstances","reflect","didFulfill","didReject","_setIsFinal","toJSON","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","_settlePromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","deferResolve","v","deferReject","pending","version","toFastProperties","fillTypes","p","c","./any.js","./async","./bind","./call_get.js","./cancel","./catch_filter","./context","./debuggability","./direct_resolve","./each.js","./filter.js","./finally","./generators.js","./join","./map.js","./method","./nodeback","./nodeify.js","./promise_array","./promisify.js","./props.js","./race.js","./reduce.js","./settle.js","./some.js","./synchronous_inspection","./thenables","./timers.js","./using.js","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","escapeIdentRegex","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","copyDescriptors","25","Es6Map","mapToEntries","size","extractEntry","PropertiesPromiseArray","isMap","_isMap","entriesToMap","keyOffset","castValue","26","capacity","_capacity","_front","_willBeOverCapacity","_checkCapacity","_unshiftOne","front","wrapMask","_resizeTo","oldCapacity","moveItemsCount","srcIndex","dst","dstIndex","arrayMove","27","raceLater","28","ReductionPromiseArray","_each","_fn","_initialValue","_currentCancellable","_eachValues","_gotAccum","accum","_eachComplete","sender","_resultCancelled$","gotAccum","completed","valueOrReason","gotValue","29","NativePromise","getNativePromise","GlobalSetImmediate","setImmediate","ProcessNextTick","nextTick","isRecentNode","nativePromise","navigator","standalone","cordova","div","createElement","attributes","toggleScheduled","div2","o2","classList","toggle","observe","disconnect","scheduleToggle","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","31","CANCELLATION","_howMany","_unwrap","_initialized","isArrayResolved","_canPossiblyFulfill","_getRangeError","howMany","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","handle","clearTimeout","afterValue","ms","successClear","failureClear","timeout","handleWrapper","afterTimeout","35","NULL","resources","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_data","_context","resource","doDispose","_unsetDisposable","isDisposer","d","FunctionDisposer","maybeUnwrapDisposer","ResourceList","using","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Child","Parent","T","isPrimitive","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","rident","filledRange","ignore","from","to","Symbol","ArrayFrom","itResult","it","def","chrome","loadTimes","versions","__unicodeLetters","__unicodeFirstLetterInWordRegexp","__stringsMap","camelCase","chr","hyphenate","capitalize","clean","trimLeft","trimRight","fullstr","repeat","times","pad","ch","padLength","pattern","escapeRegexpChars","stripTags","stripScripts","scripts","quote","__bindings","__bindingsByTarget","sourceObject","targetPropertyChain","targetListenerMap","__setUpTargetBinding","propertyNames","arrayIndexValues","__checkForArrayInPropertyChain","sources","listenerIds","eventNames","__getEventNameForProperty","__setInitialValue","itemIndex","currentValue","__bindEventToProperty","__chainListener","targets","targetIds","targetListenerIds","__storeBinding","onUpdate","converter","ignoreConverter","__resetTargetValue","__setTargetValue","firstUpPropName","currentIndex","updateTarget","resolvePropertyChain","__convertValue","propertyChain","__getPropertyChainArray","__getTargetFromChain","__getEventForProperty","lastProperty","__getArrayIndex","arrayMatch","targetProperties","arrIndex","ValidationError","onSetFail","arrayIndex","sourceEvent","eventType","bindListener","end","binding","model","getModel","propertieDefinition","__defaultConversion","sourceProperty","dataType","bindings","sourceBindings","targetBindings","getAllBindings","showBindingInLog","showAllBindingsInLog","getVersion","agent","userAgent","Engine","__isMshtml","isTrident","$1","__isOpera","$2","$3","__isWebkit","invalidCharacter","__isGecko","failFunction","qxFail","FULLVERSION","NAME","opera","mozApps","buildID","product","cpuClass","__isWindowsPhone","reg","Browser","__agents","engine","OperatingSystem","getDocumentMode","documentMode","getQuirksMode","DOCUMENT_MODE","compatMode","webkit","gecko","mshtml","getTransitionName","getPropertyName","getSupport","CssTransition","end-event","__cssName","__supports","style","prefixedProp","getCssName","cssName","getAppliedStyle","element","prefixed","cssProperty","vendorPrefixes","supported","prefixedVal","cssText","CSS","supports","supportsCSS","__callback","__originalOnError","__context","__isGlobaErrorHandlingEnabled","setErrorHandler","onerror","wrappedHandler","__onErrorWindow","uri","WindowError","__calls","__timeoutWrapper","__timeout","__hasCalls","__timeoutId","__currentQueue","deferredCall","callKey","refreshTimeout","isEmpty","DeferredCallManager","__manager","__pool","setSize","Infinity","pool","$$pooled","getSize","destroy","ObjectPool","ABORT","__push","newPromise","__addCatcher","__thenPromise","__catcher","catchers","catch1","catch2","callListener","series","ignoreAbort","disposeSingletons","disposeTriggeredBy","disposeMe","trigger","triggerDispose","destroyContainer","container","ui","mobile","Widget","__isChildrenContainer","_collectContainerChildren","children","getChildren","Composite","Scroll","SlideBar","Stack","changeBubble","_applyEventPropagation","_registerEventChaining","marshal","MEventBubbling","__changePropertyListener","dotIndex","bracketIndex","newName","rest","param","__array","__updateLength","autoDisposeItems","newArray","connector","removed","added","reverse","oldArray","__updateEventPropagation","oldLength","addedItems","endIndex","eventData","oldItem","copy","before","after","initValue","isAutoDisposeItems","failMessage","inst","__comment","BaseError","DEFAULTMESSAGE","__sTrace","getComment","__trace","_isProperty","undef","JSON3","isExtended","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","charIndexBuggy","Months","getDay","year","month","__proto__","original","PrimitiveTypes","boolean","string","Properties","valueOf","isConstructor","isHostType","Escapes","92","toPaddedString","width","symbols","isLarge","charCode","whitespace","serialize","indentation","date","hours","minutes","seconds","milliseconds","results","hasMembers","Index","Source","fromCharCode","Unescapes","47","98","116","110","102","114","abort","SyntaxError","lex","begin","isSigned","update","walk","serialized","isAll","stringifySupported","parseSupported","isInRange","nr","vmin","vmax","isBetweenRange","buf","crypt0","bufIdx","hexBytes","BUFFER_SIZE","bin","uuidBin","clearBuffer","crypto","msCrypto","randomBytes","getRandomValues","bytes","Uint8Array","random","randomBytesBuffered","platform","__ids","Windows NT 10.0","Windows NT 6.3","Windows NT 6.2","Windows NT 6.1","Windows NT 6.0","Windows NT 5.2","Windows NT 5.1","Windows NT 5.0","Windows 2000","Windows NT 4.0","Win 9x 4.90","Windows CE","Windows 98","Win98","Windows 95","Win95","Mac OS X 10_13","Mac OS X 10.13","Mac OS X 10_12","Mac OS X 10.12","Mac OS X 10_11","Mac OS X 10.11","Mac OS X 10_10","Mac OS X 10.10","Mac OS X 10_9","Mac OS X 10.9","Mac OS X 10_8","Mac OS X 10.8","Mac OS X 10_7","Mac OS X 10.7","Mac OS X 10_6","Mac OS X 10.6","Mac OS X 10_5","Mac OS X 10.5","Mac OS X 10_4","Mac OS X 10.4","Mac OS X 10_3","Mac OS X 10.3","Mac OS X 10_2","Mac OS X 10.2","Mac OS X 10_1","Mac OS X 10.1","Mac OS X 10_0","Mac OS X 10.0","__getVersionForDesktopOs","__getVersionForMobileOs","windows","android","iOs","windowsMatch","androidMatch","iOsMatch","sourceException","__failMessage","__uri","__lineNumber","__columnNumber","__sourceException","getUri","getLineNumber","getColumnNumber","getSourceException","exc","__arguments","__exc","getArguments","empty","getValues","mergeWith","object1","object2","__equals","aStack","bStack","multiline","ignoreCase","aCtor","bCtor","invert","getKeyFromValue","fromArray","Packages","Titanium","Runtime","iconfont","fontawesome5","Load","material","_window","__domReady","__loaded","__isReady","__isInitialized","__isUnloaded","_initObserver","Application","ready","onScriptLoaded","__fireReady","onAppInstanceInitialized","__fireAppInstanceInitialized","scriptLoaded","isApplicationReady","isApplicationInitialized","$$domReady","readyState","_onNativeLoadWrapped","_onNativeLoad","timer","doScroll","_onNativeUnloadWrapped","_onNativeUnload","_stopObserver","__onNativeLoadHandler","false","__onNativeUnloadHandler","nativeEvent","timeStamp","_native","_returnValue","_cloneNativeEvent","getNativeEvent","setReturnValue","getReturnValue","_initWindowObserver","beforeunload","unload","resize","scroll","beforeshutdown","_onNativeWrapper","_onNative","types","_stopWindowObserver","__onNativeHandler","doc","html","__application","getApplication","app","main","finalize","__close","close","__shutdown","terminate","BaseInit","Init","application","IApplication","tr","messageId","nlsManager","locale","trn","singularMessageId","pluralMessageId","trc","hint","trnc","marktr","MTranslation","__root","_createRootWidget","getRoot","Meta","initialize","tooltip","rule","Stylesheet","addRule","scrollTo","render","flush","AbstractGui","Standalone","__current","__mainPage","_main","_asyncToGenerator","regeneratorRuntime","_callee","view","webSocket","_this","osparc","__preloadCalls","__preventAutofillBrowserStyles","__loadCommonCss","__updateTabName","utils","isDevelopmentPlatform","__updateMetaTags","__setDeviceSpecificIcons","auth","BlurredLoginPageS4LEngineering","__loadView","abrupt","IntlTelInput","announcement","Tracker","startTracker","WindowSizeTracker","ConsoleErrorTracker","WebSocket","WatchDog","setOnline","logout","DownloadLinkTracker","isDownloading","isConnected","Store","getCurrentStudy","__closeAllAndToLoginPage","__initRouting","__startupChecks","_preloadCalls","_callee2","_context2","preloadCalls","urlFragment","parseURLFragment","nav","__rerouteNav","params","registered","cookie","deleteCookie","__restart","_this2","validateToken","studyId","__loadMainPage","__loadLoginPage","project_id","viewer_node_id","viewerNodeId","role","__loadNodeViewerPage","invitation","errorPage","ErrorPage","status_code","messages","desktop","FormSandboxPage","composeTabName","updateTabName","isIOS","MSStream","isAndroid","__setDefaultIcons","__setIOSpIcons","__setGoogleIcons","__getProductMetaData","productName","getProductName","isS4LProduct","isProduct","productColor","themeColorMeta","querySelector","tileColorMeta","tileImageMeta","maskIconMeta","shortIconMeta","manifestLink","msApplicationLink","_this$__getProductMet","maskIcon","maskIconPath","_maskIconPath","manifestPath","msApplicationPath","resourcePath","iconSizes","link","head","appendChild","appleIconSizes","__checkNewRelease","StaticInfo","getPlatformName","__checkCookiesAccepted","NewRelease","firstTimeISeeThisFrontend","newRelease","closeBtn","popUpInWindow","clickAwayClose","resizable","showClose","setIdToWidget","CookiePolicy","areCookiesAccepted","cookiePolicy","height","showLicenseExtra","acceptCookies","declineCookies","_this3","isLoggedIn","_this4","__disconnectWebSocket","LoginPageS4L","LoginPageTI","LoginPageOsparc","_this5","evaluateTooSmallDialog","Resources","getOne","profile","__connectWebSocket","isGuest","createAccountMessage","FlashMessenger","logAs","today","toISOString","expirationDay","daysToExpiration","daysBetween","_msg","expirationMessage","bePreferences","fePreferences","PropertyUtil","Preferences","preferencesSettings","_ref","_ref2","_slicedToArray","setThemeName","setPreferredWalletId","setCurrentStudyId","mainPage","MainPageDesktop","MainPage","_loadNodeViewerPage","_callee3","_context3","viewer","_x","_x2","clearUrl","_objectSpread","bottom","left","right","hasChildren","replaceState","forcedReason","_this6","__loggedOut","PollTasks","removeTasks","MaintenanceTracker","stopTracker","CookieExpirationTracker","NewUITracker","closeEditor","closeHangingWindows","invalidateEntireCache","themeFound","ThemeSwitcher","getValidThemes","setTheme","connect","stylesheet","commonCssUri","ResourceManager","toUri","Css","includeStylesheet","changeTheme","_applyTheme","colorChanged","decorationChanged","fontChanged","iconChanged","appearanceChanged","meta","decoration","font","icon","appearance","colorMgr","decorationMgr","Decoration","fontMgr","iconMgr","Icon","appearanceMgr","Appearance","_suspendEvents","dec","getTheme","_activateEvents","__timer","qx.theme","__onPointerOverRoot","__showTimer","Timer","__onShowInterval","__hideTimer","__onHideInterval","__pointerPosition","showInvalidToolTips","showToolTips","__sharedToolTip","__sharedErrorToolTip","getSharedTooltip","ToolTip","rich","getSharedErrorTooltip","setLabel","syncAppearance","_applyCurrent","el","startWith","getShowTimeout","__onPointerOutRoot","__onFocusOutRoot","__onPointerMoveRoot","getCurrent","getHideTimeout","getPlaceMethod","placeToWidget","getOpener","placeToPoint","show","getAutoHide","resetCurrent","round","getDocumentLeft","getDocumentTop","getWidgetByElement","showToolTip","tooltipText","tooltipIcon","invalidMessage","getToolTip","getToolTipText","getToolTipIcon","form","IForm","isValid","getInvalidMessage","getLayoutParent","getEnabled","isShowToolTipWhenDisabled","isBlockToolTip","getShowToolTips","getShowInvalidToolTips","label","setCurrent","setOpener","related","getPointerType","__sheet","__rules","selector","css","hasRule","removeRule","useraction","UserAction","getTouch","getMsPointer","pointerEnabled","msPointerEnabled","getHelp","getHashChange","hashchange","getDispatchEvent","getCustomEvent","getMouseEvent","MouseEvent","getMouseCreateEvent","orig","pageX","initMouseEvent","getMouseWheel","getAuxclickEvent","hasAuxclick","getPassive","passiveSupported","defineProperties","__scheduled","__canceled","__jobs","__retries","MAX_RETRIES","scheduleFlush","job","AnimationFrame","request","__inFlush","jobs","__executeAndRescheduleOnError","visibility","widget","layout","Visibility","Layout","Dispose","finallyCode","__onUserAction","_scheduleFlush","_getHeight","force","elem","elementHeight","__swap","display","Dimension","getHeight","Viewport","_getWidth","elementWidth","getWidth","_getContentHeight","contentHeight","getContentHeight","_getContentWidth","contentWidth","getContentWidth","__displayDefaults","__getDisplayDefault","defaults","docu","tempEl","qxWeb","appendTo","getStyle","styles","currentValues","styleProperty","includeFile","_forEachElementWrapped","newVal","currentVal","prevVal","$$qPrevDisp","setStyle","hide","prevStyle","getPosition","Location","getOffset","_forEachElement","setStyles","getStyles","addClass","addClasses","removeClass","removeClasses","hasClass","toggleClass","bCls","toggleClasses","replaceClass","oldName","$attachAll","$attach","length_or_items","PseudoArray","BaseArray","createStackConstructor","__init","$$qx","$init","$widget","getAttribute","col","override","$attachStatic","staticsNamespace","destination","$attachInit","Selector","query","thisarg","logThis","elements","groupEnd","q","support","Expr","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","expando","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","sortOrder","hasOwn","push_native","identifier","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escaped","escapedWhitespace","high","rcssescape","fcssescape","asCodePoint","unloadHandler","disabledAncestor","addCombinator","disabled","dir","els","Sizzle","seed","m","nid","groups","newSelector","newContext","getElementById","getElementsByTagName","getElementsByClassName","qsa","toSelector","testContext","parentNode","querySelectorAll","qsaError","cacheLength","markFunction","removeChild","addHandle","attrs","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","hasCompare","subWindow","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","attr","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","selectors","createPseudo","relative",">","first"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","operator","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","matched","not","matcher","unmatched","innerText","elemLang","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","header","button","eq","even","odd","lt","gt","radio","checkbox","file","password","image","submit","filters","parseOnly","tokens","soFar","preFilters","cached","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","preMap","postMap","preexisting","elems","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","Polyfill","Windows Phone","iPod","iPad","iPhone","PSP","PLAYSTATION 3","Nintendo Wii","Nintendo DS","XBOX","Xbox","Device","detectDeviceType","userAgentString","detectTabletDevice","detectMobileDevice","isIE10Tablet","isCommonTablet","getDevicePixelRatio","devicePixelRatio","maxTouchPoints","msMaxTouchPoints","__normalizations","__hooks","on","off","onWindowLoad","wrappedCallback","$registerEventNormalization","normalizer","$unregisterEventNormalization","$getEventNormalizationRegistry","$registerEventHook","registerHook","unregisterHook","onHooks","offHooks","$unregisterEventHook","$getEventHookRegistry","hooks","typeHooks","normalizations","$$emitter","Emitter","$$lastlistenerId","getEntryById","__listener","__ctx","listenerType","storedListener","storedContext","hasStoredContext","allOff","offById","once","wrappedListener","attachedListeners","copyEventsTo","targetCopy","descendants","storage","hover","callbackIn","callbackOut","onMatchTarget","eventTarget","targetToMatch","isChildOf","matchTarget","$$matchTargetInfo","offMatchTarget","infos","TYPES","$$pointerHandler","PointerCore","PointerHandler","animationStart","animationIteration","animationEnd","_fadeOut","duration","timing","keep","keyFrames","opacity","100","_fadeIn","_animate","$$animation","Animation","animateReverse","animate","getAnimationHandles","animationHandles","play","pause","isPlaying","isEnded","fadeIn","fadeOut","__nodeName","__styleValues","__attribValues","_modified","_visibility","_scroll","_actions","__selection","__focusHandler","__mouseCapture","__deferredCall","focusHandler","__getFocusHandler","focusedDomElement","getFocus","__willBecomeInvisible","blur","activeDomElement","getActive","deactivate","captureDomElement","__getCaptureElement","releaseCapture","later","modified","hc","__willBeSeeable","__element","Hierarchy","isRendered","__flush","__visible","offsetWidth","__lazyScrollX","scrollLeft","__lazyScrollY","scrollTop","intoViewX","__lazyScrollIntoViewX","getDomElement","align","intoViewY","__lazyScrollIntoViewY","activityEndActions","selection","Selection","Appear","eventManager","Focus","MouseCapture","getCaptureElement","domElement","fromDomElement","$$element","$$elementObject","__widget","__included","__styleJobs","__attribJobs","__propertyJobs","__propertyValues","__eventValues","__children","__modifiedChildren","__parent","_scheduleChildrenUpdate","_createDomElement","connectWidget","$$widget","$$widgetObject","disconnectWidget","__connectDomElement","_syncData","_syncChildren","_copyData","_insertChildren","createDocumentFragment","dataChild","dataEl","domEl","dataChildren","dataLength","domParent","domChildren","domPos","domOperations","Id","getAbsoluteIdOf","fromMarkup","Attribute","setCss","_applyProperty","pa","__addChildHelper","__removeChildHelper","__moveChildHelper","getChild","hasChild","addAt","childs","getParent","insertInto","rel","moveTo","oldIndex","moveBefore","moveAfter","free","getNodeName","setNodeName","useMarkup","getHelperElement","useElement","isFocusable","focusable","FOCUSABLE_ELEMENTS","setSelectable","userSelect","isNativelyFocusable","isIncluded","isVisible","scrollChildIntoViewX","direct","thisEl","childEl","scrollChildIntoViewY","scrollToX","lazy","getScrollX","scrollToY","getScrollY","disableScrolling","enableScrolling","__onScroll","__inScroll","getTextSelection","getTextSelectionLength","getTextSelectionStart","getStart","getTextSelectionEnd","getEnd","setTextSelection","clearTextSelection","__performAction","activate","containerCapture","removeStyle","getAllStyles","setAttributes","currentClass","_setProperty","_removeProperty","_getProperty","db","listenerData","_onChangeTheme","minWidth","maxWidth","minHeight","maxHeight","allowGrowX","allowShrinkX","allowGrowY","allowShrinkY","allowStretchX","allowStretchY","marginTop","marginRight","marginBottom","marginLeft","margin","alignX","alignY","getAllProperties","getUserValue","__computedHeightForWidth","__computedLayout","__hasInvalidLayout","__sizeHint","__updateMargin","__userBounds","__layoutProperties","getBounds","clearSeparators","renderSeparator","separator","bounds","renderLayout","flowHeight","_hasHeightForWidth","_getHeightForWidth","computed","changes","local","isExcluded","hasValidLayout","scheduleLayoutUpdate","invalidateLayoutCache","getSizeHint","compute","_computeSizeHint","getAllowGrowX","getAllowShrinkX","getAllowGrowY","getAllowShrinkY","getMinWidth","getMinHeight","getMaxWidth","getMaxHeight","_getLayout","hasHeightForWidth","getHeightForWidth","_applyMargin","$$parent","updateLayoutProperties","_applyAlign","_applyDimension","_applyStretching","hasUserBounds","setUserBounds","resetUserBounds","__emptyProperties","setLayoutProperties","getLayoutProperties","clearLayoutProperties","verifyLayoutProperty","invalidateChildrenCache","getApplicationRoot","setLayoutParent","isRootWidget","_getRoot","LayoutItem","$$subparent","__contentElement","__createContentElement","initFocusable","initSelectable","initNativeContextMenu","appear","disappear","createChildControl","move","mousemove","mouseover","mouseout","mousedown","mouseup","click","auxclick","dblclick","contextmenu","beforeContextmenuOpen","mousewheel","touchstart","touchend","touchmove","touchcancel","longtap","dbltap","swipe","rotate","pinch","roll","pointermove","pointerover","pointerout","pointerdown","pointerup","pointercancel","keyup","keydown","keypress","keyinput","focusin","focusout","losecapture","drop","dragleave","dragover","drag","dragstart","dragend","dragchange","droprequest","paddingTop","paddingRight","paddingBottom","paddingLeft","padding","zIndex","decorator","backgroundColor","textColor","cursor","toolTip","toolTipText","toolTipIcon","blockToolTip","showToolTipWhenDisabled","anonymous","keepFocus","keepActive","draggable","droppable","selectable","contextMenu","nativeContextMenu","UNFOCUSABLE_WIDGET_FOCUS_BLUR_ERROR","considerAnonymousState","getAnonymous","__separatorPool","__initialAppearanceApplied","__toolTipTextListenerId","__layoutManager","_setLayout","Abstract","connectToWidget","content","_updateInsets","inner","contentStyles","hasLayoutChildren","inset","getInsets","innerWidth","innerHeight","getDecorator","decoratorPadding","getPadding","getPaddingTop","getPaddingRight","getPaddingBottom","getPaddingLeft","_findTopControl","__separators","contentHint","_getContentHint","insets","insetX","insetY","_getContentHeightForWidth","getInnerSize","_applyAnonymous","setVisibility","getVisibility","isHidden","isSeeable","_createContentElement","touch-action","-ms-touch-action","boxSizing","Inline","overflowX","overflowY","__widgetChildren","getLayoutChildren","layoutChildren","__emptyChildren","invalidateLayoutChildren","getChildrenContainer","_indexOf","_hasChildren","addChildrenToQueue","_add","__addHelper","_addAt","ref","_addBefore","_addAfter","_remove","__removeHelper","_removeAt","_removeAll","_afterAddChild","_afterRemoveChild","_capture","isCapturing","_applyPadding","__updateContentPadding","direction","_applyDecorator","getCssClassName","addCssClass","_applyToolTipText","translate","setToolTipText","_applyTextColor","_applyZIndex","_applyVisibility","_applyOpacity","_applyCursor","isSelectable","_applyBackgroundColor","getBackgroundColor","resolved","_applyFont","updateAppearance","getFont","getTextColor","__states","$$stateChanges","_forwardStates","hasState","state","states","addState","controls","__childControls","removeState","control","__appearanceSelector","__updateSelector","styleFrom","getAppearance","$$subcontrol","newData","_applyAppearance","checkAppearanceNeeds","syncWidget","getEventTarget","getFocusTarget","getFocusable","getFocusElement","isTabable","_applyFocusable","getTabIndex","_applyKeepFocus","_applyKeepActive","_applyTabIndex","_applySelectable","getCursor","_applyEnabled","isDraggable","_applyDraggable","isDroppable","_applyDroppable","_applyNativeContextMenu","_applyContextMenu","resetOpener","_onContextMenuOpen","_onBeforeContextMenuOpen","getContextMenu","openAtPointer","_onStopEvent","_getDragDropCursor","DragDropCursor","isEnabled","_onDragStart","_onDrag","_onDragEnd","_onDragChange","placeToPointer","setGlobalCursor","resetGlobalCursor","getCurrentAction","setAction","resetAction","visualizeFocus","visualizeBlur","scrollChildIntoView","isScheduled","sibling","tabFocus","hasChildControl","_getCreatedChildControls","notcreate","_createChildControl","_showChildControl","_excludeChildControl","_isChildControlVisible","_releaseChildControl","_createChildControlImpl","$$resyncNeeded","_disposeChildControls","getSubcontrolId","getContentLocation","setDomLeft","setDomTop","setDomPosition","contentEl","setContextMenu","addBefore","addAfter","remap","MChildrenHandling","blockerColor","blockerOpacity","__blocker","_createBlocker","Blocker","_applyBlockerColor","getBlocker","setColor","_applyBlockerOpacity","setOpacity","block","isBlocked","unblock","forceUnblock","blockContent","MBlocker","activeWindow","windowAdded","windowRemoved","__windows","getWindowManager","setWindowManager","DEFAULT_MANAGER_CLASS","supportsMaximize","setDesktop","_onChangeActive","setActiveWindow","getActiveWindow","_applyActiveWindow","changeActiveWindow","updateStack","_onChangeModal","_onChangeVisibility","_addWindow","getWindows","_removeWindow","MDesktop","FocusHandler","addRoot","initNativeHelp","__preventScrollWhenFocused","globalCursor","nativeHelp","__globalCursorStyleSheet","getLayout","_applyGlobalCursor","sheet","removeAllRules","Cursor","_onNativeContextMenu","getNativeContextMenu","getKeyIdentifier","isFocused","contentEditable","_applyNativeHelp","__roots","__activeChild","__focusedChild","__currentRoot","connectTo","__onKeyPress","_onFocusIn","_onFocusOut","_onActivate","_onDeactivate","removeRoot","getActiveWidget","isActive","getFocusedWidget","isFocusRoot","__findFocusRoot","isShiftPressed","__getWidgetBefore","__getLastWidget","__getWidgetAfter","__getFirstWidget","roots","__compareTabOrder","widget1","widget2","tab1","tab2","el1","el2","loc1","loc2","z1","getZIndex","z2","__getFirst","__getLast","__collectAllAfter","__collectAllBefore","firstWidget","lastWidget","__queue","__lookup","__computeVisible","visible","__doc","_onResize","Canvas","__stopScrolling","alert","hstyle","bstyle","overflow","Root","popup","hideAll","menu","touchAction","webkitOverflowScrolling","formatTimeAs","formatOffset","formatEntryTime","getFormatTimeAs","Formatter","__DATETIME_FORMAT","DateFormat","normalizeEntryClass","formatEntryObjectAndClass","breakdown","formatEntryItems","output","il","jl","toText","toTextArray","toHtml","sub","escapeHTML","__defaultFormatter","getFormatter","setFormatter","__escapeHTMLReplace","<","&","'","\"","getWebWorker","Worker","getFileReader","FileReader","getGeoLocation","getAudio","canPlayType","getAudioOgg","Html","getAudioMp3","getAudioWav","getAudioAu","getAudioAif","getVideo","getVideoOgg","getVideoH264","getVideoWebm","getLocalStorage","localStorage","removeItem","getSessionStorage","sessionStorage","getUserDataStorage","addBehavior","getClassList","getXPath","evaluate","getXul","createElementNS","getSvg","hasFeature","getVml","behavior","hasVml","adj","getCanvas","CanvasRenderingContext2D","getDataUrl","Image","onload","getDataset","dataset","getContains","getCompareDocumentPosition","getTextContent","getFullScreen","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","getConsole","getNaturalDimensions","img","naturalHeight","naturalWidth","getHistoryState","onpopstate","pushState","getSelection","getIsEqualNode","isEqualNode","localCache","setLocalStorageItem","getLocalStorageItem","getLastCommitVcsRefUI","setLastCommitVcsRefUI","vcsRef","getDontShowAnnouncements","setDontShowAnnouncement","announcementId","oldDontShowAnnouncements","isDontShowAnnouncement","serviceToFavs","serviceKey","serviceFavs","hits","getFavServices","getSortedFavServices","FLOATING_Z_INDEX","addWhiteSpaces","integer","Intl","NumberFormat","getDisplayName","platformName","isInZ43","getIconFromResource","resourceMetadata","dashboard","CardBase","PRODUCT_ICON","isEmail","replaceTokens","regex","forceRatioAfterLoad","maxDimension","scale","getSource","srcWidth","io","ImageLoader","srcHeight","aspectRatio","newHeight","newWidth","recheckSize","openImageOnTap","open","getDefaultFont","defaultFont","family","defFont","getFamily","getColor","animateUsage","70","getGridsFirstColumnWidth","grid","firstColumnWidth","firstElement","getCellWidget","secondElement","firstCellBounds","secondCellBounds","left1","makeButtonBlink","nTimes","oldBgColor","blinkIt","btn","setBackgroundColor","intervalId","clearInterval","hardRefresh","reloadNoCacheButton","reloadButton","Button","gap","center","noCacheUrl","getUniqueName","preferredName","existingNames","cont","isElementOnScreen","rect","getBoundingClientRect","clientHeight","clientWidth","isWidgetOnScreen","domElem","growSelectBox","selectBox","largest","getSelectables","listItem","toTwoDecimals","computeServiceUrl","resp","srvUrl","isDynamicV2","protocol","host","servicePath","entryPointD","_srvUrl","computeServiceRetrieveUrl","computeServiceV2RetrieveUrl","nodeId","setZoom","zoom","transformOrigin","oString","isMouseOnElement","boundRect","sleep","isValidHttpUrl","URL","resourceTypeToAlias","resourceType","getStudyAlias","firstUpperCase","getTemplateAlias","getEditButton","getLinkButton","getCopyButton","formatDate","dateFormat","getDateFormat","yesterday","setDate","getDate","tomorrow","toDateString","formatDateYyyyMmDd","getTimezoneOffset","formatTime","_long","getTimeFormat","formatDateAndTime","formatMsToHHMMSS","absMs","nHours","remaining1","nMinutes","remaining2","nSeconds","padStart","formatSeconds","sec","minutesStr","secondsStr","day1","day2","differenceMs","getReleaseTag","rData","getReleaseData","platformVersion","LibVersions","getPlatformVersion","getReleaseLink","getVcsRefUrl","createReleaseNotesLink","versionLink","basic","LinkLabel","VendorInfo","getSupportEmail","manuals","Support","getManuals","manualLink","supportEmail","mailto","mailToLink","createHTMLLink","getNameFromEmail","email","uuidV4","hostname","addBorder","updateBorderColor","addBackground","removeBackground","removeBorder","hideBorder","addBorderLeftRadius","border-top-left-radius","border-bottom-left-radius","addBorderRightRadius","border-top-right-radius","border-bottom-right-radius","__setStyleToIFrame","contentDocument","iframeDocument","colorManager","bgColor","spinnerColor","setProperty","compareVersionNumbers","v1","v2","regExStrip0","segmentsA","segmentsB","deepCloneObject","prettifyJson","json","getRandomColor","getColorLuminance","rgb","isRgbString","isRgbaString","hexStringToRgb","getContrastedTextColor","getContrastedBinaryColor","getRoundedBinaryColor","namedColorToHex","namedColor","ExtendedColor","isExtendedColor","toRgb","rgbToHexString","bytesToSize","decimals","isDecimalCollapsed","dm","pow","toFixed","metrics","metric","bytesToGB","bytesToGiB","gBToBytes","gBytes","giBToBytes","giBytes","retrieveURLAndDownload","locationId","fileId","getPresignedLink","presignedLinkData","fileNameFromLink","fileNameFromPresignedLink","downloadLink","progressCb","loadedCb","xhr","XMLHttpRequest","responseType","HEADERS_RECEIVED","status","LOADING","loaded","total","blob","Blob","response","filenameFromContentDisposition","downloadBlobContent","send","filename","downloadAnchorNode","createObjectURL","disposition","getResponseHeader","fileNames","pathname","capitalized","_capitalized","__txt","copyTextToClipboard","textArea","border","outline","boxShadow","background","copied","execCommand","setCookie","cname","cvalue","expDays","toUTCString","getCookie","ca","urlHash","parsedFragment","fragmentPart","getParamFromURL","urlStr","URLSearchParams","hasParamFromURL","isUrl","snakeToCamel","qWidget","getIdFromWidget","removeIdAttribute","setKeyToWidget","setAltToImage","altText","getClientSessionID","getUniqueSessionId","getSocket","clientSessionId","uniqueSessionId","getFreeDistanceToWindowEdges","layoutItem","fetchJSON","fetch","firstsUp","labels","_len","_key","onlyFirstsUp","word","centerTabIcon","tabpage","getButton","btnLayout","setColumnFlex","setColumnAlign","removeAllChildren","Grow","__loadHtml","htmlEmbed","embed","req","Xhr","getResponse","setHtml","VERSION","libReady","intlTelInputCssUri","dynLoader","DynamicScriptLoader","intlTelInputPath","setLibReady","script","CHECK_INTERVAL","__checkInterval","checkAnnouncements","_checkAnnouncements","announcements","AnnouncementUIFactory","setAnnouncementsData","windowWidth","windowHeight","compactVersion","tooSmall","WIDTH_LOGOUT_BREAKPOINT","WIDTH_COMPACT_BREAKPOINT","WIDTH_BREAKPOINT","HEIGHT_BREAKPOINT","__tooSmallDialog","__lastRibbonMessage","__resized","setCompactVersion","setTooSmall","__applyTooSmall","__removeRibbonMessage","notification","RibbonNotification","__getLongText","RibbonNotifications","addNotification","removeNotification","getTooSmall","TooSmallDialog","openWindow","originalConsoleError","getErrors","connecting","connect_failed","reconnect","reconnecting","reconnect_failed","port","namespace","socket","connectTimeout","reconnectionDelay","maxReconnectionAttempts","setNamespace","__name","socketIOPath","getUrl","getPort","mySocket","reconnection","getReconnect","getConnectTimeout","getReconnectionDelay","reconnectionAttempts","getMaxReconnectionAttempts","forceNew","transports","setSocket","ev","connected","jsonObject","slotExists","removeSlot","getCachedMessages","__clientHeartbeatWWPinger","onmessage","__pingServer","newInterval","setHeartbeatInterval","online","heartbeatInterval","__applyOnline","logo","navigation","LogoOnOff","postMessage","getHeartbeatInterval","_applyHeartbeatInterval","txt","toLocaleLowerCase","toLocaleUpperCase","varags","mappedFunctions","BaseString","translation","localized","__messageId","__localized","__args","localize","getMessageId","LocalizedString","getLocale","Locale","__getNavigatorLocale","getVariant","userLanguage","language","__translations","$$translations","__locales","$$locales","initLocale","__clientLocale","__defaultLocale","__locale","__language","getLanguage","getTerritory","getAvailableLocales","includeNonloaded","locales","__extractLanguage","_applyLocale","addTranslation","languageCode","translationMap","catalog","addLocale","localeCode","localeMap","__lookupAndExpand","translatedArgs","downloading","downloadLinkUnattended","setDownloading","maintenance","currentStudy","currentStudyId","studyBrowserContext","studies","folders","workspaces","studyComments","resourceUsage","nodesInStudyResources","serviceResources","snapshots","iterations","templates","wallets","activeWallet","preferredWallet","contextWallet","creditPrice","productMetadata","permissions","apiKeys","services","pricingPlans","pricingUnits","billableServices","portsCompatibility","dags","storageLocations","tags","classifiers","tasks","licensedItems","studyStateChanged","studyDebtChanged","idField","stored","idFields","newStored","_toConsumableArray","invalidate","propertyKeys","propName","initVal","getInitValue","__applyCurrentStudy","study","__applyWallets","preferenceSettings","preferenceWalletId","getPreferredWalletId","credits","getWallet","walletFound","wallet","getWalletId","setPreferredWallet","requestChangePreferredWalletId","__applyActiveWallet","setContextWallet","getPreferredWallet","__applyPreferredWallet","getActiveWallet","favouriteWallet","getWallets","isPreferredWallet","getStudyState","setStudyState","studiesWStateCache","getStudies","studyWStateCache","getUuid","setState","setStudyDebt","debt","setTemplateState","templateId","templatesWStateCache","getTemplates","templateWStateCache","trashStudy","untrashStudy","getTemplate","template","deleteStudy","reloadCreditPrice","setCreditPrice","getMinimumAmount","sortWallets","aAccessRights","getAccessRights","bAccessRights","myGid","getGroupId","ar","aAr","bAr","share","Collaborators","sortByAccessRights","localeCompare","reloadWallets","walletsData","walletReducedData","Wallet","setWallets","accessRightPromises","reloadWalletAccessRights","autoRechargePromises","getMyAccessRights","reloadWalletAutoRecharge","walletId","accessRights","setAccessRights","autoRecharge","setAutoRecharge","__getOrgClassifiers","orgId","gid","getAllClassifiers","_this7","reload","oldClassifiers","getClassifiers","groupsStore","Groups","orgs","getOrganizations","classifierPromises","org","orgsClassifiersMD","allClassifiers","orgClassifiersMD","classifier","setClassifiers","loggedOut","userData","checkInvitation","verifyPhoneNumber","phoneNumber","phone","validateCodeRegister","loginCbk","failCbk","__loginUser","validateCodeLogin","resendCodeViaSMS","via","resendCodeViaEmail","isLogout","login","endpoints","responseText","extractMessage","retryAfter","extractRetryAfter","nextStep","_resp","_resp2","setRequestHeader","client_session_id","timeoutRetries","__logoutUser","resetPasswordRequest","successCbk","resetPassword","newPassword","confirmation","confirm","updateProfile","username","firstName","lastName","expirationDate","userId","groupId","Permissions","setRole","resetEmail","resetToken","Grid","setColumnMinWidth","setRowFlex","POS","MESSAGES","Spacer","column","row","LOGO","PANDA","ACTIONS","Logo","VBox","HBox","__copyMessagesToClipboard","__supportEmail","flex","__logIn","__createMessage","Label","__applyMessages","messagesLayout","actionsLayout","logIn","copyToClipboard","getMessages","giveEmailFeedbackWindow","Dialog","getMailToLabel","setTextAlign","addWidget","setLayout","MLayoutHandling","addChildWidget","removeChildWidget","__buildLayout","__attachEventHandlers","schema","stringData","__schema","setValue","__form","setSchema","__jsonData","setPadding","schemaAndData","TextArea","JsonSchemaForm","scrollContainer","jsonSchema","setData","jsonData","alias","plural","allUpperCase","getServiceAlias","getLogoPath","longLogo","logosPath","lightLogo","forceNullCreditsColor","getCreditsAvailable","getCreateAccountAction","getVendor","hasConvertToPipelineEnabled","hasExportCMisEnabled","hasIdlingTrackerEnabled","showStudyPreview","showAboutProduct","showPreferencesTokens","showPreferencesExperimental","showDisableServiceAutoStart","showQuality","showClassifiers","showS4LStore","licensesEnabled","areLicensesEnabled","getIconUrl","asset","getThumbnailUrl","getBackgroundUrl","hasNewPlusButton","Products","getPlusButtonUiConfig","_dynamic","resolveDynamic","isDynamic","_setDynamic","_getDynamic","ValueManager","colors","__parseColor","isCssString","rgbToRgbString","getValue","stackName","getMaxNumberDyNodes","wsStaticData","DisabledPlugins","isLicensesDisabled","getTrashRetentionDays","getAccountDeletionRetentionDays","is2FARequired","getCountries","metadata","getCookieMaxAge","isIt","lastUICommit","thisUICommit","getVcsRefUI","isMyFrontendOld","AppSummary","getLatestUIFromBE","introText","introLabel","releaseTag","releaseLink","linkLabel","__forward","a1","a2","a3","MRemoteChildrenHandling","MRemoteLayoutHandling","__onResizePointerDown","__onResizePointerUp","__onResizePointerMove","__onResizePointerOut","__onResizeLoseCapture","__dragDropHandler","DragDrop","resizableTop","resizableRight","resizableBottom","resizableLeft","resizeSensitivity","useResizeFrame","__resizeFrame","__resizeActive","__resizeLeft","__resizeTop","__resizeStart","__resizeRange","RESIZE_TOP","RESIZE_BOTTOM","RESIZE_LEFT","RESIZE_RIGHT","_getResizeFrame","frame","setAppearance","__showResizeFrame","setZIndex","__computeResizeResult","resizeActive","viewportLeft","viewportTop","parentLeft","parentTop","__resizeCursors","__computeResizeMode","pointerTolerance","getResizeSensitivity","pointerLeft","pointerTop","__computeResizeActive","getResizableTop","getResizableBottom","getResizableLeft","getResizableRight","parentLocation","parentBounds","getUseResizeFrame","setWidth","setHeight","resetCursor","isSessionActive","setCursor","MResizable","movable","useMoveFrame","__moveHandle","__moveFrame","__dragRange","__dragLeft","__dragTop","__parentLeft","__parentTop","__blockerAdded","__oldBlockerColor","__oldBlockerOpacity","_activateMoveHandle","_onMovePointerDown","_onMovePointerUp","_onMovePointerMove","__onMoveLoseCapture","__getMoveFrame","__showMoveFrame","__computeMoveCoordinates","_onMoveRoll","getMovable","IDesktop","getBlockerColor","getBlockerOpacity","setBlockerColor","setBlockerOpacity","widgetLocation","getUseMoveFrame","coords","MMovable","contentPaddingTop","contentPaddingRight","contentPaddingBottom","contentPaddingLeft","contentPadding","__contentPaddingSetter","__contentPaddingThemedSetter","__contentPaddingResetter","_applyContentPadding","_getContentPaddingTarget","MContentPadding","active","oldActive","bringToFront","sendToBack","IWindowManager","__desktop","getDesktop","setActive","resetActive","_minZIndex","zIndexOnTop","zIndexModal","isModal","isAlwaysOnTop","_getParent","captureListeners","bubbleListeners","targetList","bubbleList","bubbleTargets","captureList","captureTargets","serial","__TRACE","localList","listenerIndex","AbstractBubbling","DomBubbling","SHIFT_MASK","CTRL_MASK","ALT_MASK","META_MASK","CAPSLOCK_MASK","NUMLOCK_MASK","SCROLLLOCK_MASK","Dom","shiftKey","ctrlKey","altKey","metaKey","getModifierState","numLock","capsLock","scrollLock","getModifiers","mask","getKeyLockState","isCtrlPressed","isAltPressed","isMetaPressed","isCapsLocked","isNumLocked","isScrollLocked","isCtrlOrCommandPressed","Mouse","buttons","clientX","clientY","pageY","screenX","screenY","wheelDelta","wheelDeltaX","wheelDeltaY","delta","deltaX","deltaY","deltaZ","axis","wheelX","wheelY","HORIZONTAL_AXIS","__buttonsDom2EventModel","__buttonsDom3EventModel","__buttonsMshtmlEventModel","isLeftPressed","isMiddlePressed","isRightPressed","getViewportLeft","getViewportTop","getScrollLeft","getScrollTop","getScreenLeft","getScreenTop","Pointer","pointerId","pressure","tiltX","tiltY","pointerType","isPrimary","_original","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_PEN","MSPOINTER_TYPE_TOUCH","changedTouches","getPointerId","getPressure","getTiltX","getTiltY","elementFromPoint","PROPERTIES","customProps","_event","_createEvent","_initEvent","_nativeStopPropagation","_stopped","Custom","MOUSE_PROPERTIES","POINTER_PROPERTIES","READONLY_PROPERTIES","BIND_METHODS","bindMethods","which","initUIEvent","MOUSE_TO_POINTER_MAPPING","TOUCH_TO_POINTER_MAPPING","MSPOINTER_TO_POINTER_MAPPING","MSPointerDown","MSPointerMove","MSPointerUp","MSPointerCancel","MSPointerLeave","MSPointerEnter","MSPointerOver","MSPointerOut","POINTER_TO_GESTURE_MAPPING","LEFT_BUTTON","SIM_MOUSE_DISTANCE","SIM_MOUSE_DELAY","__lastTouch","emitter","__defaultTarget","__emitter","__eventNames","__buttonStates","__activeTouches","_processedFlag","docMode","_initPointerObserver","__nativePointerEvents","_onTouchEvent","_onMouseEvent","__wrappedListener","__lastButtonState","__primaryIdentifier","_onPointerEvent","useEmitter","_determineActiveTouches","touches","cancelEvent","touch","touchTarget","touchProps","overEvt","outEvt","_isSimulatedMouseEvent","buttonsPressed","mouseProps","moveEvt","updatedActiveTouches","timeSinceTouch","dist","distX","distY","gestureEvent","gesturebegin","gesturemove","gesturefinish","gesturecancel","__callBase","GESTURE_EVENTS","TAP_MAX_DISTANCE","mouse","pen","DOUBLETAP_MAX_DISTANCE","SWIPE_DIRECTION","LONGTAP_TIME","DOUBLETAP_TIME","ROLL_FACTOR","TOUCHPAD_ROLL_FACTOR","TOUCHPAD_WHEEL_EVENTS_THRESHOLD","TOUCHPAD_WHEEL_EVENTS_PERIOD","TOUCHPAD_WHEEL_EVENTS_TIMEOUT","__gesture","__lastTap","__stopMomentum","__momentum","__rollEvents","__eventName","__primaryTarget","__isMultiPointerGesture","__initialAngle","__rollImpulseId","__initialDistance","__rollEventsCountStart","__rollEventsCount","__touchPadDetectionPerformed","__lastRollEventTime","GestureCore","gestureType","checkAndFireGesture","_onDblClick","_fireRoll","gestureBegin","gestureMove","gestureFinish","gestureCancel","__stopLongTapTimer","_hasIntermediaryHandler","startTime","lastEventTime","startX","startY","velocityX","velocityY","isTap","longTapTimer","__fireLongTap","__fireTrack","_calcAngle","_calcDistance","gesture","oldClientX","oldClientY","__fireRotate","__firePinch","_isBelowTapMaxDistance","$$gestureHandler","__handleRollImpulse","isDblTap","lastTap","isBelowDoubleTapDistance","__isBelowDoubleTapDistance","isSameTarget","isSameButton","__getSwipeGesture","stopMomentum","updateGestureTarget","oldTimeoutId","timeoutId","momentum","pointerA","pointerB","atan2","PI","sqrt","_getDeltaCoordinates","maxDistance","x1","y1","x2","y2","inX","inY","angle","deltaCoordinates","distance","velocity","__fireRollEvent","rollFactor","Wheel","getDelta","__performAdaptativeRollScrolling","IS_TOUCHPAD","reLength","__endTouchPadDetection","_isTouchPadDetectionEnabled","detectionTimeout","Tap","Swipe","getStartTime","getDuration","getAxis","getDirection","getVelocity","getDistance","Rotate","getAngle","Pinch","getScale","Track","Roll","getMomentum","Gesture","trackstart","trackend","EVENT_CLASSES","__onDblClickWrapped","__fireRollWrapped","pointerEvent","eventTypeClass","__lastUpDownType","_initKeyObserver","__onKeyUpDownWrapper","__lastKeyCode","__inputListeners","__onKeyPressWrapper","_fireInputEvent","__getEventTarget","KeyInput","_fireSequenceEvent","keyIdentifier","KeySequence","Keyboard","isNonPrintableKeyCode","_emulateKeyPress","__onKeyUpDown","_stopKeyObserver","gecko|webkit|mshtml","_idealKeyHandler","isModifierDown","__firefoxInputFix","_charCode2KeyCode","keyCodeToIdentifierMap","keyCodeToIdentifier","charCodeToIdentifier","_identifierToKeyCode","identifierToKeyCodeMap","Capture","_onLongtap","_onPointerdown","_onWindowBlur","__rebuildStructures","ALLOWED_BUTTONS","MIN_DRAG_DISTANCE","__dropTarget","__dragTarget","__types","__actions","__keys","__currentType","__currentAction","__sessionActive","__validDrop","__validAction","__dragTargetWidget","__startConfig","addType","addAction","supportsType","supportsAction","setDropAllowed","isAllowed","__detectAction","getDataAsync","getCurrentActionAsync","getDragTarget","addData","getCurrentType","actions","Shift","Control","Alt","validAction","dragEvent","Drag","__findDraggable","__findDroppable","clearSession","_onPointermove","_onPointerup","_onKeyDown","_onKeyUp","_onKeyPress","_onRoll","_start","isButtonOk","widgetOriginalTarget","isAnonymous","_getDelta","cursorEl","dropLeaveTarget","innerTracker","validDrop","iden","caption","setIcon","setCaption","_updateCaptionBar","_onWindowPointerDown","_onWindowFocusOut","initVisibility","beforeClose","beforeMinimize","minimize","beforeMaximize","maximize","beforeRestore","restore","alwaysOnTop","modal","showMaximize","showMinimize","allowClose","allowMaximize","allowMinimize","showStatusbar","centerOnAppear","centerOnContainerResize","autoDestroy","__restoredTop","__restoredLeft","__centeringAppearId","__centeringResizeId","maximized","oldParent","getCenterOnContainerResize","getStatus","_onCaptionPointerDblTap","getIcon","getCaption","setAllowGrowX","setFocusable","_onMinimizeButtonTap","_onRestoreButtonTap","_onMaximizeButtonTap","_onCloseButtonTap","setSource","getShowMinimize","getAllowMinimize","resetEnabled","setEnabled","getShowMaximize","isMaximized","getAllowMaximize","getShowClose","getAllowClose","getAutoDestroy","edge","getMode","_applyActive","_applyModal","_applyShowStatusbar","resizeFrame","_applyCaptionBarChange","_applyStatus","_applyCenterOnAppear","_applyCenterOnContainerResize","_onWindowEventStop","getModal","_invalidChildrenCache","availWidth","availHeight","_clearSeparators","_renderSeparator","_getWidget","_applyLayoutChange","_getLayoutChildren","spacing","setSpacing","setAlignY","setSeparator","reversed","__heights","__flexs","__enableFlex","_applyReversed","__rebuildCache","enableFlex","reuse","heights","flexs","getReversed","Util","PERCENT_VALUE","percent","getSpacing","getSeparator","gaps","computeVerticalSeparatorGaps","computeVerticalGaps","allocatedHeight","flexibles","computeFlexOffsets","getMarginTop","getAlignY","separatorInsets","separatorHeight","getMarginLeft","getMarginRight","computeHorizontalAlignOffset","getAlignX","collapseMargins","getMarginBottom","percentMinHeight","thisDom","thisZIndex","modalFrame","getSiblings","isClickAwayClose","command","Command","__recenter","moveItUp","up","cookiesAccepted","cookiesDeclined","COOKIES_ACCEPTED_NAME","getITISPrivacyPolicyLink","linkText","getS4LPrivacyPolicyLink","getZMTEULALink","_link","_text","CheckBox","_text2","textLink","_text3","_color","_textLink","_text4","_licenseLink2","getLicenseURL","lbl","_color2","_textLink2","colSpan","ctrlBtns","checkButtons","acceptCookie","acceptLicense","_acceptLicense","acceptLicense2","acceptBtn","evalAcceptButton","checkButton","BaseAuthPage","FORM_WIDTH","_form","Form","_buildPage","_onAppear","_onDisappear","beautifyFormFields","formItems","getItems","fieldKey","formItem","resetValues","IField","_addTitleHeader","__groups","_buttons","_buttonOptions","_validationManager","_createValidationManager","_resetter","_createResetter","_groupCounter","validator","validatorContext","__isFirstAdd","headerOptions","addGroupHeader","addButton","removeGroupHeader","targetGroup","removeButton","redefineResetter","redefine","redefineResetterItem","redefineItem","getValidationManager","getGroups","getButtons","getButtonOptions","validation","Resetter","__loginPage","LoginWithDecorators","__rebuildLayout","COMPACT_WIDTH_BREAKPOINT","COMPACT_HEIGHT_BREAKPOINT","_getBackgroundImage","LoginPageSplit","loginPage","spacers","hideableItems","getHideableItems","isCompactVersion","__resetBackgroundImage","spacer","setMinHeight","hideableItem","___setBackgroundImage","__setBackgroundImage","backgroundImage","background-image","background-repeat","background-size","background-position","setAlignX","__widths","widths","computeHorizontalSeparatorGaps","computeHorizontalGaps","allocatedWidth","separatorWidth","computeVerticalAlignOffset","percentMinWidth","LOGO_WIDTH","LOGO_HEIGHT","LogoWPlatform","productLogoPath","getImageFormat","getHeightKeepingAspectRatio","setFont","__getVersionLink","LoginView","RegistrationView","RequestAccount","VerifyPhoneNumberView","ResetPassRequestView","ResetPassView","Login2FAValidationCodeView","__getLoginStack","pages","requestAccount","login2FAValidationCode","page","findParameterInFragment","setSelection","userEmail","smsEnabled","restartSMSButton","restartEmailButton","srcPage","versionLinkLayout","organizationLink","vendor","copyright","defaultBG","liteBG","academyBG","API","isJsonFile","appSummary","deleteId","getPage","getPageSearch","getPageTrashed","postToTemplate","selectWallet","payDebt","openDisableAutoStart","duplicate","postNewStudy","postNewStudyFromTemplate","trash","untrash","delete","addNode","startNode","stopNode","getNode","patchNode","deleteNode","getNodeErrors","getPricingUnit","putPricingUnit","checkShareePermissions","postAccessRights","deleteAccessRights","putAccessRights","addTag","removeTag","getInactivity","moveToFolder","moveToWorkspace","addComment","post","getWithWallet","getWithWalletFiltered","getUsagePerService","put","updateSnapshot","currentCommit","checkout","preview","getParameters","takeSnapshot","createIterations","servicesV2","matchInputs","matchOutputs","adminPricingPlans","preferences","notifications","organizations","organizationMembers","users","getAutoRecharge","putAutoRecharge","updateEmailTemplate","getUiConfig","invitations","poUsers","preRegister","payments","startPayment","cancelPayment","payWithPaymentMethod","invoiceLink","paymentMethods","postRRID","postRegister","postRequestAccount","captcha","resendCode","postLogin","postLogout","postRequestResetPassword","postResetPassword","changeEmail","storageDatasets","getByLocation","storageFiles","getByLocationAndDataset","getByNode","storageLink","activity","checkEP","postFail","postEcho","purchases","purchase","checkouts","replaceUrlParams","endpoint","urlParams","resourceDefinition","Resource","_resource","_getRequestConfig","includesRoute","sendRequest","successEndpoint","errorEndpoint","getRequest","endpointDef","std","Quality","attachQualityToObject","__removeCached","pollTask","__addCached","__setCached","resolveWResponse","successCB","getPhase","errorData","errorCB","getAllPages","allRequests","resps","respData","__getCached","idF","getServiceUrl","encodeURIComponent","getCompatibleInputs","node1","portId1","node2","__getMatchInputsUrl","cachedCPs","strUrl","serviceKey2","getKey","serviceVersion2","serviceKey1","serviceVersion1","portKey1","getErrorMsg","description","__longPollHandlers","__pollTimers","__routes","_tailorResource","_getResource","__mapFromDescription","actionSuccess","actionError","POLL_THROTTLE_LIMIT","POLL_THROTTLE_COUNT","REQUIRED","placeholdersFromUrl","setRequestFactory","_getRequest","setRequestHandler","onsuccess","Rest","onfail","onloadend","configureRequest","__addAction","__declareEvent","setBaseUrl","baseUrl","poll","immediately","reqs","getRequestsByAction","isDone","longPoll","lastResponse","immediateResponseCount","handlerId","isImmediateResponse","_getThrottleLimit","_getThrottleCount","throttle","route","headers","AUTHENTICATION","getAuthHeaders","setAutheticationHeader","usernameOrToken","authentication","Basic","defaultCurrentTSR","getDefaultCurrentQualityTSR","sectionKey","defaultTargetTSR","getDefaultTargetQualityTSR","quality","getConformanceLevel","l00","outreach","l01","l02","l03","l04","findConformanceLevel","confLevel","conformanceLevels","conformanceLevel","r01","references","r02","r03","r03b","r03c","r04","r05","r06","r07","r07b","r07c","r07d","r07e","r08","r08b","r09","r10","r10b","computeTSRScore","currentTSR","targetTSR","score","targetScore","maxScore","tsrKey","cTSR","guest","loggedIn","__applyAuth","setLoggedIn","Token","__applyRole","setGuest","setToken","setAuth","resetAuth","getFriendlyUsername","getFirstName","getUsername","getFullName","getLastName","getFriendlyRole","friendlyRole","getRole","__messages","__messageContainer","__displayedMessagesCount","MAX_DISPLAYED","logMessage","flashMessage","FlashMessage","removeMessage","__showMessage","getMessage","setMessage","resetDecorator","__updateContainerPosition","wordCount","setDecorator","messageWidth","currentProperties","setUserValue","deleteUserValue","setInitValue","deleteInitValue","getThemeValue","setThemeValue","deleteThemeValue","preferredWalletId","themeName","autoConnectPorts","confirmBackToDashboard","confirmDeleteStudy","confirmDeleteNode","confirmStopNode","snapNodeToGrid","creditsWarningThreshold","walletIndicatorVisibility","userInactivityThreshold","lowDiskSpaceThreshold","jobConcurrencyLimit","allowMetricsCollection","twoFAPreference","billingCenterUsageColumnOrder","patchPreference","preferenceId","patchPreferenceField","preferenceField","newValue","__applyThemeName","preferredTheme","themes","getAll","__patchPreference","navBar","NavigationBar","populateLayout","userMenu","getMenu","userMenuEntries","userMenuEntry","preloadPromises","areWalletsEnabled","Tags","fetchTags","desktopCenter","DesktopCenter","__listenToWalletSocket","creditsUpdated","__navBar","__backToDashboardPressed","__openLogger","fetchUiConfig","mainStack","__createMainStack","__attachHandlers","__dashboard","__loadingPage","__studyEditor","canDo","isReadOnly","getStudy","getConfirmBackToDashboard","studyName","Confirmation","confirmText","confirmButton","getConfirmButton","getConfirmed","__backToDashboard","__showDashboard","_backToDashboard","dashboardBtn","setFetching","didStudyChange","updateStudyDocument","getTemplateBrowser","invalidateTemplates","reloadResources","getStudyBrowser","invalidateStudies","resetSelection","setActiveWallet","getStudyLogger","mainPageHandler","MainPageHandler","setStack","dashboardLayout","__createDashboardLayout","addDashboard","loadingPage","Loading","addLoadingPage","studyEditor","__getStudyEditor","addStudyEditor","Dashboard","tabsBar","addDashboardTabButtons","__publishTemplate","study_id","copy_data","fetchPromise","createPollingTask","task","templateBrowser","taskToTemplateReceived","templateData","Study","addCollaborators","errMsg","showDashboard","setStudy","__showLoadingPage","setLoadingPageHeader","showLoadingPage","__startSnapshot","_startSnapshot","snapshotId","setMessages","isLocked","__openSnapshot","snapshotResp","params2","studyData","_msg2","loadStudy","__startIteration","_startIteration","iterationUuid","__openIteration","_x3","_x4","StudyEditor","nodeViewer","NodeViewer","initTasks","addTask","taskData","getTasks","getTaskId","PollTask","CLOSABLE_WARN_IN_ADVANCE","PERMANENT_WARN_IN_ADVANCE","__logoutTimer","checkMaintenance","scheduledMaintenance","__setMaintenance","__getText","getReason","maintenanceData","oldStart","oldEnd","oldReason","setStart","setEnd","setReason","__scheduleStart","__removeScheduledLogout","__scheduleRibbonMessage","__scheduleLogout","diffClosable","diffPermanent","messageToRibbon","closable","__logout","LOG_OUT_BEFORE_EXPIRING","__updateInterval","__message","__messageInterval","cookieMaxAge","expirationDateMilliseconds","setExpirationDate","__removeFlashMessage","__startInterval","__checkTimes","nowDate","getExpirationDate","__displayFlashMessage","willExpireIn","updateFlashMessage","__updateFlashMessage","timeoutSec","checkNewUI","newReleaseAvailable","isSwitchUseful","validThemes","switchTheme","currentTheme","validTheme","Bus","dispatchByName","bindLabelToTheme","buttonImageSize","updateLabel","bindIconToTheme","updateIcon","getMaxConcurrentRequestCount","versionParts","versionMain","versionMajor","versionMinor","maxConnectionsPerServer","getSsl","getXmlHttpRequest","ActiveXObject","noXhr","noActiveX","Transport","$$resources","__urlPrefix","findHighResolutionSource","lowResImgSrc","factor","pixelRatioCandidates","hiResImgSrc","getHighResolutionSource","pixelRatio","fileExtIndex","pixelRatioIdentifier","candidate","getIds","pathfragment","getImageWidth","getImageHeight","getCombinedFormat","clippedtype","combId","lib","urlPrefix","LibraryManager","toDataUri","resid","resentry","combined","resstruct","isFontUri","$$libraries","resourceUri","baseElements","__libs","CSS_CLASSNAME_PREFIX","__legacyIe","__dynamic","innerCss","innerStyles","innerKey","innerSelector","removeAllCssClasses","decorations","recurseDecoratorInclude","currentEntry","isValidPropertyValue","IDecorator","isCached","aliasManager","AliasManager","aliases","$$fontBootstrap","_manifestFonts","dynamic","fonts","fo","__getFontClass","comparisonString","setComparisonString","__resolveInclude","fontName","fontToInclude","themed","assign","webfonts","WebFont","__styleCache","__aliasMap","__defaultStates","__resolveId","defaultId","chain","appearances","splitted","chainCopy","subId","aliasMap","bits","$$bits","$$length","incl","baseIncludeKey","baseKey","includeKey","localKey","__normalizeArray","supertheme","__convert","__initializeAliases","boot","objectOrArray","__extractType","__inheritableKeys","$$clazz","borders","icons","widgets","__metaKeys","counter","mixinTheme","__checkForInvalidTheme","stackTrace","__oninterval","_oninterval","__onceFunc","__intervalHandler","_applyInterval","restart","getInterval","restartWith","__direction","setVisibleElement","getVisibleElement","setMoveDirection","getMoveDirection","placeMethod","domMove","placementModeX","placementModeY","offsetLeft","offsetTop","offsetRight","offsetBottom","__ptwLiveUpdater","__ptwLiveDisappearListener","__ptwLiveUpdateDisappearListener","getLayoutLocation","rootCoords","MPlacement","elemLocation","getDomMove","liveupdate","__cleanupFromLastPlaceToWidgetLiveUpdate","Idle","_place","placeToElement","offsetHeight","point","_getPlacementOffsets","getOffsetLeft","getOffsetTop","getOffsetRight","getOffsetBottom","__getPlacementSize","_computePlacementSize","placement","Placement","getPlacementModeX","getPlacementModeY","autoHide","Popup","_onPointerOver","showTimeout","hideTimeout","opener","arrowPosition","placementLeft","Atom","_applyIcon","atom","resetIcon","_applyLabel","resetLabel","_applyRich","setRich","_applyArrowPosition","setReversed","changeEnabled","changeValid","changeInvalidMessage","changeRequired","setRequired","getRequired","setValid","valid","getValid","setInvalidMessage","setRequiredInvalidMessage","getRequiredInvalidMessage","__getStylesheet","__stylesheet","getCreateStyleSheet","createStyleSheet","getInsertRule","insertRule","getDeleteRule","deleteRule","getAddImport","addImport","getRemoveImport","removeImport","createTextNode","cssRules","rules","selectorText","removeSheet","ownerNode","owningElement","imports","Uri","getAbsolute","removeAllImports","IMPORT_RULE","__storage","__any","__getStorage","toDelete","origStorage","startSequence","performance","__start","timePassed","cancelSequence","TIMEOUT","calculateTiming","navigationStart","__nesting","__getSortedQueue","getNestingLevel","leveldown","__getLevelGroupedWidgets","VisibilityQueue","sortedQueue","oldSizeHint","newSizeHint","hintChanged","__hiddenScrollbars","hidden","scrollWidth","scrollHeight","getContentSize","isQuirksMode","isStandardMode","pageXOffset","pageYOffset","__getOrientationNormalizer","currentOrientation","deviceOrientation","orientation","-270","-180","-90","90","180","270","__orientationNormalizer","getOrientation","isLandscape","isPortrait","__style","COMPUTED_MODE","__num","__computeScroll","__computeBody","clientLeft","clientTop","BoxSizing","__computeOffset","__getBodyLocation","SVGElement","overX","overY","getLeft","getTop","getRight","getBottom","getRelative","elem1","elem2","mode1","mode2","getOffsetParent","offsetParent","__WEBKIT_LEGACY_GRADIENT","getBoxModel","getTextOverflow","getPlaceholder","getBorderRadius","getBoxShadow","getBorderImage","getBorderImageSyntax","styleName","borderImageSource","borderImageSlice","borderImageRepeat","getUserSelect","getUserSelectNone","getUserModify","getFloat","cssFloat","styleFloat","getLinearGradient","getFilterGradient","__isFilterSupported","getRadialGradient","getLegacyWebkitGradient","getRgba","getBoxSizing","getInlineBlock","getOpacity","getTextShadow","getFilterTextShadow","filterClass","initParams","getAlphaImageLoaderNeeded","getPointerEvents","initial","pointerEvents","getFlexboxSyntax","detectedSyntax","detector","flexSyntax","syntax","clip","Clip","__map","currentStyle","hasLayout","Opacity","__nativeBorderBox","__usesNativeBorderBox","__styleNames","__cssNames","__detectVendorProperties","styleNames","textOverflow","borderImage","float","userModify","__getStyleName","__mshtmlPixel","__special","special","cssNames","getCss","isPropertySupported","CASCADED_MODE","LOCAL_MODE","smart","getComputedStyle","pixel","localStyle","__splitter","__trim","native","baseVal","regexp","onlyCssKeys","__hasOnlyCssKeys","AnimationCss","AnimationJs","transformKeys","_initButtonObserver","_initMoveObserver","_initWheelObserver","__onButtonEventWrapper","__onMoveEventWrapper","__onWheelEventWrapper","__lastEventType","__lastMouseDownTarget","__preventNextClick","MouseWheel","preventNextClick","_onButtonEvent","_onMoveEvent","_onWheelEvent","_stopButtonObserver","_stopMoveObserver","_stopWheelObserver","isDrag","__doubleClickFixPre","__rightClickFixPost","__differentTargetClickFixPost","commonParent","getCommonParent","_registeredEvents","CANCELABLE","selectstart","eventId","__targets","__instances","$$displayed","legacyIe","displayed","orientationchange","__nativeEventType","_currentOrientation","__onNativeWrapper","detectOrientationChangeDelay","_onOrientationChange","Orientation","SWIPE_MIN_DISTANCE","SWIPE_MIN_VELOCITY","__target","_initTouchObserver","__pointers","__touchStartPosition","__onTouchEventWrapper","__originalTarget","__startTime","__beginScalingDistance","__beginRotation","__touchEventNames","engineVersion","_stopTouchObserver","_commonTouchEventHandler","_getScalingDistance","touch0","touch1","_getRotationAngle","_calcTouchesDelta","_calcSingleTouchDelta","touchStartPosition","_mapPointerEvent","_detectTouchesByPointer","targetTouches","_getTarget","currentScalingDistance","rotation","currentRotation","_rotation","pointer","targetForIE","__evaluateTarget","hitTargets","msElementsFromPoint","TouchCore","MOUSE_TO_TOUCH_MAPPING","__isInTouch","Touch","offline","isOnline","onLine","Offline","_onChangeCheckedWrapper","_onChangeChecked","_onChangeValueWrapper","_onChangeValue","_onInputWrapper","_onInput","_onPropertyWrapper","_onProperty","_onKeyDownWrapper","_onKeyUpWrapper","__enter","__onInputTimeoutId","__oldValue","__oldInputValue","lower","__inputHandlerAttached","elementType","_onKeyPressWrapped","__registerInputListener","_inputFixWrapper","_inputFix","__unregisterInputListener","$$inValueSet","Input","activateCapture","isXmlDocument","getDescendants","cloneNode","eventList","cloneElem","origElem","eventEntry","cloneAll","getNodeIndex","previousSibling","getElementIndex","getNextElementSibling","getPreviousElementSibling","isDescendantOf","ancestor","element1","element2","known","getAncestors","_recursivelyCollect","getChildElements","getNextSiblings","getFirstDescendant","getLastDescendant","getPreviousSiblings","cleanWhitespace","nextNode","__scrollbarSize","getScrollbarWidth","getStyleSize","getBorderRight","getInsetRight","ov","sbv","getBorderLeft","parentRight","parentOuterWidth","parentClientWidth","parentLeftBorder","parentRightBorder","parentScrollBarWidth","elementLocation","elementLeft","elementRight","leftOffset","rightOffset","scrollDiff","alignLeft","alignRight","parentBottom","parentOuterHeight","parentClientHeight","parentTopBorder","parentBottomBorder","parentScrollBarHeight","elementTop","elementBottom","topOffset","bottomOffset","alignTop","alignBottom","intoView","getSelectionObject","documentNode","Range","__isInputOrTextarea","selectionStart","selectionEnd","selectedValue","StringSplit","selectedLength","documentRange","parentElement","moveToBookmark","getBookmark","moveEnd","elementRange","moveToElementText","moved","bodyRange","setEndPoint","compareEndPoints","steps","moveStart","documentSelection","anchorOffset","focusOffset","rng","collapse","newRng","validBoundaries","isCollapsed","collapseToStart","setEndAfter","rangeCount","removeAllRanges","addRange","setSelectionRange","setAll","collapsed","commonAncestor","commonAncestorContainer","_document","_root","_body","__needsScrollFix","iframe","textarea","__onNativeMouseDownWrapper","__onNativeMouseUpWrapper","__onNativeFocusWrapper","__onNativeBlurWrapper","__onNativeDragGestureWrapper","__onNativeSelectStartWrapper","__onNativeFocusInWrapper","__onNativeFocusOutWrapper","__previousFocus","__previousActive","__down","__up","__relatedTarget","createTextRange","textRange","setFocus","resetFocus","tryActivate","__findActivatableElement","_windowFocused","__doWindowBlur","__doWindowFocus","__onNativeMouseDown","__onNativeMouseUp","__onNativeFocus","__onNativeBlur","__onNativeDragGesture","__onNativeFocusIn","__onNativeFocusOut","__onNativeSelectStart","__isSelectable","focusTarget","__findFocusableElement","unselectable","__fixFocus","__getCorrectFocusTarget","focusedElement","textField","__isFocusable","_applyFocus","__mouseActive","__captureElement","__containerCapture","__captureEvents","hasNativeCapture","nativeSetCapture","onNativeListener","nativeReleaseCapture","setCapture","hasChildElements","getParentElement","isInDom","domElements","insertBegin","insertEnd","removeChildAt","replaceChild","newNode","oldNode","replaceAt","__helperElement","__registeredObjects","__registeredIdHashes","segs","ownerId","getRegisteredObjects","__hints","class","for","colspan","rowspan","valign","datetime","accesskey","tabindex","maxlength","readonly","longdesc","cellpadding","cellspacing","frameborder","usemap","bools","nowrap","ismap","declare","noshade","readOnly","multiple","noresize","allowTransparency","maxLength","htmlFor","qxProperties","propertyDefault","removeableProperties","hints","__focusEvents","__ignoreDisabled","_dispatchEvent","domTarget","widgetTarget","targetChanged","domRelatedTarget","widgetRelatedTarget","currentWidget","otherListeners","widgetEvent","EventHandler","__contentElements","loadingFailed","aborted","PLACEHOLDER_IMAGE","__width","__height","__mode","__currentContentElement","__wrapper","__requestId","_styleSource","__getSuitableContentElement","__setSource","__getMode","_applySource","isLoading","_applyScale","__setMode","isPng","__createSuitableContentElement","setScale","__checkForContentElementSwitch","tagNameHint","getTagName","__getContentElement","__setManagedImage","highResolutionSource","imageWidth","imageHeight","backgroundSize","__fireLoadEvent","isLoaded","__setUnmanagedImage","__loadUnmanagedImage","__resetSource","rId","alphaImageLoader","__checkForContentElementReplacement","elementToAdd","currentContentElement","currentStyles","newEl","getSelectable","currentEl","currentDomEl","newDomEl","currentHash","isFont","__updateContentHint","sourceLC","__warned","isFailed","__loaderCallback","resetSource","sparts","fontSource","fontStyles","hasGradient","getStartColor","getEndColor","hasBackground","getBackgroundImage","getAttributes","decoratorStyle","combinedStyles","backgroundPosition","backgroundRepeat","getBackgroundRepeat","imageInfo","failed","setDomMove","_applyAction","blocked","unblocked","_widget","__onBoundsChange","__onWidgetDisappear","_isRoot","setKeepBlockerActive","__activeElements","__focusElements","keepBlockerActive","__blockerCount","__appearListener","_updateBlockerBounds","__onWidgetAppear","getBlockerElement","_applyColor","__setBlockersStyle","blockers","_backupActiveWidget","activeWidget","focusedWidget","_restoreActiveWidget","__createBlockerElement","_block","blocker","__activateBlockerElement","__stopTabEvent","__unblock","getKeepBlockerActive","neededWidth","neededMinWidth","neededHeight","neededMinHeight","isDesktop","marginX","marginY","IFormat","__initialLocale","__format","ISO_MASKS","__UTC","getDateTimeFormat","getDateInstance","_dateInstance","getDateTimeInstance","_dateTimeInstance","ASSUME_YEAR_2000_THRESHOLD","isoDate","isoTime","isoDateTime","isoUtcDateTime","AM_MARKER","PM_MARKER","__parseFeed","__parseRules","__formatTree","__fillNumber","minSize","__getDayInYear","helpDate","day","getMonth","__thursdayOfSameWeek","__getWeekInYear","thursdayDate","weekYear","getFullYear","thursdayWeek1","__getWeekInMonth","__getWeekYear","__isLeapYear","februaryDate","__getMonthAndDayFromDayOfYear","dayOfYear","dayCounter","tempDate","days","__getYearFromWeekYearAndMonth","dayOfMonth","setLocale","resetLocale","fullYear","dayOfWeek","getHours","getMinutes","getSeconds","getMilliseconds","timezoneOffset","timezoneSign","timezoneHours","timezoneMinutes","__initFormatTree","currAtom","wildcardChar","character","wildcardSize","getDayName","localeDayOfWeek","startOfWeek","getWeekStart","getMonthName","getAmMarker","getPmMarker","dateStr","__initParseFeed","dateValues","era","quarter","hour","ispm","weekDay","weekOfMonth","weekOfYear","currGroup","applyWeekYearAfterRule","applyDayOfYearAfterRule","usedRules","manipulator","yearRuleApplied","dayRuleApplied","dayAndMonth","currWildcardChar","currWildcardSize","currLiteral","currChar","__initParseRules","atomIdx","wildcardRule","ruleIdx","__isRuleForWildcard","wildcardStr","regexFunc","LString","amMarker","pmMarker","monthManipulator","localWeekDayManipulator","noZeroHourManipulator","noZeroAmPmHourManipulator","ignoreManipulator","abbrevEraNames","abbrevEraNameManipulator","abbrevQuarterNames","abbrevQuarterManipulator","fullQuarterNames","fullQuarterManipulator","dateNamesManipulator","monthPatternLetters","dayPatternLetters","firstLetterInPattern","isMonth","lengthName","getContext","getMonthNames","getDayNames","yNumber","changeModel","setModel","resetModel","IModel","Message","_unfilter","_shouldReactToFilter","_shouldApplyFilter","IFilterable","_applyModel","MModelProperty","subscribeToFilterGroup","filterGroupId","msgName","subscribe","__subscriber","MFilterable","_onPointerOut","__evalSelectedButton","updateStudy","updateTemplate","updateService","publishTemplate","tagClicked","emptyStudyClicked","SHARE_ICON","SHARED_USER","SHARED_ORGS","SHARED_ALL","PERM_READ","MODE_APP","NEW_ICON","LOADING_ICON","PRODUCT_THUMBNAIL","CARD_PRIORITY","NEW","PLACEHOLDER","ITEM","LOADER","ICON_SIZE","createCardIcon","iconSize","Thumbnail","createTSRLayout","tsrLabel","tsrRating","StarsRating","filterText","checks","filterTags","filterSharedWith","sharedWith","myGroupId","getMyGroupId","myAccessRights","totalAccess","everyoneGroupIds","getEveryoneProductGroup","getEveryoneGroup","gId","filterServiceType","serviceType","filterClassifiers","populateShareIcon","shareIcon","gids","groupEveryone","groupProductEveryone","organizationIds","canIWrite","addHintFromGids","sharedGrps","Hint","usersStore","sharedGrpLabels","maxItems","_i","sharedGrpLabel","hintText","Users","getUser","sent","getLabel","setText","cardKey","thumbnail","resourceData","lastChangeDate","trashedAt","trashedBy","workbench","uiMode","emptyWorkbench","updatable","multiSelectionMode","fetching","focused","hovered","isResourceType","getResourceType","isItemNotClickable","getStudyBrowserContext","getBlocked","__applyResourceData","defaultHits","prjOwner","guessIcon","contact","__applyMultiSelectionMode","setSelected","menuButton","tick","untick","isMultiSelectionMode","getSelected","__applyUuid","setCardKey","_applyThumbnail","_applyTitle","_applyDescription","_applyOwner","_applyLastChangeDate","_applyTrashedAt","_applyTrashedBy","_applyAccessRights","_applyTags","__applyQuality","nStars","showScore","scoreToStarsRating","__openQualityEditor","__applyUiMode","__applyHits","__applyWorkbench","setEmptyWorkbench","isWorkbenchRetired","setUpdatable","isWorkbenchDeprecated","isWorkbenchUpdatable","unaccessibleServices","getInaccessibleServices","setBlocked","unSrv","__showBlockedCard","__applyEmptyWorkbench","__applyUpdatable","__openUpdateServices","service","StatusUI","__applyState","lockInUse","__showBlockedCardFromStatus","__applyPipelineState","__applyDebt","pipelineState","iconSource","borderColor","radius","projectStatusLabel","moreInfo","__blockedInUse","__blockedInDebt","lockedStatus","Export","ICON","lockImageSrc","lockImage","__applyBlocked","resetToolTipText","childName","evaluateMenuButtons","menuButtons","getResourceData","openButton","menuBtn","canBeOpened","duplicateButton","canBeDuplicated","convertToPipelineButton","exportCMISButton","canBeExported","studyDataButton","canShowStudyData","billingSettingsButton","canShowBillingOptions","moveToButton","canMoveTo","trashButton","canBeDeleted","_applyFetching","_applyMenu","_setStudyPermissions","permissionIcon","__openMoreOptions","resourceDetails","ResourceDetails","_startStudyById","openCB","cancelCB","isStudyCreation","ResourceBrowserBase","startStudyById","openData","StudyDataManager","openBilling","openBillingSettings","openAccessRights","openTags","openQuality","openUpdateServices","_getEmptyWorkbenchIcon","_filterText","getTitle","getDescription","getOwner","_filterTags","getTags","getTagId","_filterSharedWith","_filterServiceType","_filterClassifiers","filterId","__defaultSize","__knownImageTypesRegExp","__dataUrlRegExp","loading","getFormat","callbacks","boundCallback","__onload","__onLoadHandler","imgElem","iconPosition","setAnonymous","getRich","getShow","_handleLabel","_handleIcon","_applyGap","setGap","_applyShow","_applyIconPosition","setIconPosition","_applyCenter","setCenter","__executableBindingIds","__semaphore","__executeListenerId","_bindableProperties","cmd","getCommand","__onCommandExecute","_applyCommand","selfPropertyValue","MExecutable","setCommand","IExecutable","getIconPosition","getGap","getCenter","increment","childTop","remainingWidth","shrinkTarget","shrinkTargetWidth","gapSum","_onPointerDown","_onPointerUp","_onTap","pressed","press","release","hasPressed","hasAbandoned","__mgr","withFallback","__localizeWithFallback","canonical","fallback","localizedFormat","weekStart","MV","AE","AF","BH","DJ","DZ","EG","ER","ET","IQ","IR","JO","KE","KW","LB","LY","MA","OM","QA","SA","SD","SO","TN","YE","AS","AU","AZ","BW","CA","CN","FO","GE","GL","GU","HK","IE","IL","IS","JM","JP","KG","KR","LA","MH","MN","MO","MP","MT","NZ","PH","PK","SG","TH","TT","TW","UM","US","UZ","VI","ZA","ZW","MW","NG","TJ","territory","_getTerritory","getWeekendStart","weekendStart","SY","IN","getWeekendEnd","weekendEnd","isWeekend","fallbackContext","localizedString","newKey","getVcsRef","__getRemoteUrl","remoteUrl","commitId","getVcsRefUIUrl","getUIVersion","getQxCompiler","getQxLibraryInfoMap","libs","libInfo","homepage","get3rdPartyLibs","getBackendLibs","changeValue","IStringForm","_onChangeLocale","breakWithinWords","buddy","textAlign","__font","__invalidContentSize","__tapListenerId","__webfontListenerId","__contentSize","__computeContentSize","getWrap","isRich","_applyTextAlign","_onWebFontStatusChange","getDefaultStyles","__fixEllipsis","getBreakWithinWords","wordBreak","getHtmlSize","getTextSize","_applyBuddy","toggleValue","_applyWrap","whiteSpace","_applyBreakWithinWords","_applyValue","setUrl","__applyUrl","__onClick","resetFont","__getFromStaticInfo","getIssues","getSupports","addQuickStartToMenu","quickStart","getQuickStart","qsButton","tutorialWindow","tutorial","addGuidedToursToMenu","guidedToursButton","fetchTours","tours","Tours","getTours","toursManager","setTours","addManualButtonsToMenu","manual","manualBtn","addSupportButtonsToMenu","issues","issueInfo","issueButton","issueConfirmationWindow","contBtn","loginBtn","addCancelButton","addSeparator","supportInfo","supportBtn","__openSendEmailFeedbackDialog","addReleaseNotesToMenu","releaseBtn","subject","centered","openInvitationRequiredDialog","createAccountWindow","_message","REGEXP","hex3","hex6","rgba","SYSTEM","activeborder","activecaption","appworkspace","buttonface","buttonhighlight","buttonshadow","buttontext","captiontext","graytext","highlight","highlighttext","inactiveborder","inactivecaption","inactivecaptiontext","infobackground","infotext","menutext","scrollbar","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","windowframe","windowtext","NAMED","black","silver","gray","white","maroon","red","purple","fuchsia","green","lime","olive","yellow","navy","blue","teal","aqua","transparent","magenta","orange","brown","isNamedColor","isSystemColor","supportsThemes","isThemedColor","__rgbaStringToRgb","__rgbStringToRgb","isHex3String","__hex3StringToRgb","isHex6String","__hex6StringToRgb","cssStringToRgb","stringToRgbString","alpha","$4","$5","$6","hex3StringToRgb","hex3StringToHex6String","hex6StringToRgb","rgbToHsb","hue","saturation","brightness","cmax","cmin","redc","greenc","bluec","hsbToRgb","hsb","tov","randomColor","g","EXTENDED","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","toRgbString","resetCache","getLocations","fileCopied","__locationsCached","__datasetsByLocationCached","__filesByLocationAndDatasetCached","getLocationsCached","cachedData","locations","getDatasetsByLocationCached","datasets","getDatasetsByLocation","emptyData","getFilesByLocationAndDatasetCached","datasetId","files","getFilesByLocationAndDataset","getNodeFiles","download","fileUuid","fileSize","copyFile","fromLoc","toLoc","pathId","deleteFile","_applyOverflowX","_applyOverflowY","MNativeOverflow","cssClass","_applyHtml","_applyCssClass","__requestHeaders","transport","_transport","_createTransport","_setPhase","__onReadyStateChangeBound","_onReadyStateChange","__onLoadBound","_onLoad","__onLoadEndBound","_onLoadEnd","__onAbortBound","_onAbort","__onTimeoutBound","_onTimeout","__onErrorBound","_onError","onreadystatechange","onabort","ontimeout","readyStateChange","loadEnd","statusError","parseError","changeResponse","changePhase","requestData","__response","__abort","__phase","__requestHeadersDeprecated","_parserFailed","_getConfiguredUrl","_getConfiguredRequestHeaders","_getParsedResponse","_getMethod","_isAsync","getTimeout","getRequestData","_serializeData","_setRequestHeaders","sendWithPromise","changeResponseListener","statusErrorListener","getStatusText","timeoutListener","parseErrorListener","abortListener","errorListener","getReadyState","requestHeaders","_getAllRequestHeaders","__getAuthRequestHeaders","getAuthentication","getRequestHeader","removeRequestHeader","getTransport","statusText","getResponseText","getAllResponseHeaders","overrideResponseContentType","contentType","overrideMimeType","getResponseContentType","_setResponse","oldResponse","__onReadyStateDone","Request","isSuccessful","_fireStatefulEvent","phase","previousPhase","isPost","getMethod","isJson","Serializer","toUriParameter","toParameter","qx.debug.io","AbstractRequest","setMethod","_parser","_createResponseParser","accept","serializedData","appendParamsToUrl","getCache","nocache","isAllowsBody","methodAllowsRequestBody","isCrossDomain","getAccept","isAsync","ResponseParser","parsedResponse","setParser","parser","scriptArr","__started","__QUEUE","__IN_PROGRESS","__LOADED","__loadScripts","id1","id2","loader","Script","onError","changeAnnouncements","createLoginAnnouncement","loginAnnouncement","titleLabel","descriptionLabel","widgetType","validPeriod","validProduct","getProducts","validWidgetType","getWidgets","__announcements","__ribbonAnnouncements","announcementsData","announcementData","Announcement","__addToRibbon","ribbonAnnouncement","__addRibbonAnnouncement","hasLoginAnnouncement","hasUserMenuAnnouncement","getLink","createLoginAnnouncements","loginAnnouncements","slideBar","getId","createUserMenuAnnouncements","userMenuAnnouncements","userMenuAnnouncement","setClosable","getFullText","wLineBreak","fullText","longText","_longText","__notifications","__updateRibbon","__createNotificationUI","notificationLayout","notificationAtom","getClosable","closeButton","dontShowButton","notificationUI","shortcut","_shortcut","Shortcut","setShortcut","_applyShortcut","setId","thisWindow","SingletonWindow","orgsWindow","logoutButton","__createLogoutButton","authData","changeSelection","isSelected","isSelectionEmpty","ISingleSelection","__getManager","resetSelected","_onChangeSelected","SingleSelectionManager","_getItems","isItemSelectable","_isItemSelectable","setAllowEmptySelection","_isAllowEmptySelection","MSingleSelectionHandling","__onChangeSelection","_applyDynamic","previous","go","DANGER_ZONE","CREDITS_ICON","setCreditsAvailable","openBuyCredits","buyView","BuyCreditsStepper","idr","cardHolderName","cardNumberMasked","buyCreditsWidget","getNoWriteAccessInformationLabel","getNoWriteAccessOperationsLabel","creditsToColor","defaultColor","getCreditsWarningThreshold","normalizeCredits","normalized","creditsToFixed","createWalletSelector","accessRight","walletSelector","SelectBox","populateSelectBox","sbItem","ListItem","autoSelectActiveWallet","activeWallets","populatePaymentMethodSelector","paymentMethodSB","getPaymentMethods","paymentMethod","lItem","foundWallet","getMyWallets","myWallets","myWallet","getPaymentMethod","paymentMethodId","paymentMethodFound","serializedDataCopy","_serializedDataCopy","_reloadCollaboratorsList","updateAccessRights","sortStudyOrServiceCollabs","createStudyLinkSection","vBox","hBox","linkField","TextField","copyLinkBtn","createTemplateLinkSection","permalink","_resourceType","__addCollaborators","__collaboratorsModel","__createAddCollaboratorSection","__createCollaboratorsListSection","__canIShare","canIShare","CollaboratorsWorkspace","canIDelete","CollaboratorsTag","__canIChangePermissions","fullOptions","__createRolesLayout","rolesLayout","Roles","createRolesStudyInfo","createRolesServicesInfo","createRolesWorkspaceInfo","AddCollaborators","_addEditors","leaveButton","__getLeaveStudyButton","collaboratorsUIList","List","collaboratorsModel","controller","setDelegate","createItem","CollaboratorListItem","bindItem","ctrl","bindProperty","configureItem","border-radius","orgMember","_promoteToEditor","_promoteToOwner","_demoteToUser","_demoteToEditor","_deleteMember","getEmail","leaveText","CollaboratorsStudy","checkRemoveCollaborator","confirmAction","collaborator","getGroupMe","_reloadCollaboratorsList2","everyoneGIds","collaboratorsList","showOptions","allGroups","collab","setSerializedData","getAllGroups","getThumbnail","createModel","walletData","creditsAvailable","aR","toJson","groupsCached","everyoneGroup","everyoneProductGroup","groupMe","groupAdded","groupRemoved","curateOrderBy","orderBy","curatedOrderBy","__fetchGroups","__addToGroupsCache","productEveryoneGroup","organization","setEveryoneGroup","setEveryoneProductGroup","setOrganizations","setGroupMe","myAuthData","Avatar","emailToThumbnail","__fetchGroupMembers","orgMembers","getOrganization","setGroupMembers","__addMemberToCache","fetchGroupsAndMembers","resetUsers","allGroupsAndUsers","getOrganizationIds","getGroup","getUsers","getPotentialCollaborators","includeMe","includeProductEveryone","potentialCollaborators","productEveryone","myGroup","getUserByUserId","getUserId","getUserByGroupId","getGroupMemberByUserId","getGroupMemberByUsername","getGroupMemberByLogin","postOrganization","groupData","deleteOrganization","__deleteFromGroupsCache","patchOrganization","addMember","groupMember","patchAccessRights","newAccessRights","_this8","removeMember","_this9","__removeUserFromCache","groupType","Group","userMember","UserMember","addGroupMember","addUser","removeGroupMember","passwordLengthValidator","checkSamePasswords","passwordField1","passwordField2","pass","phoneNumberValidator","denylistEmailValidator","denylist","emailValue","errorMessage","Validate","checkEmail","parameterName","removeParameterInFragment","removeMe","initPermissions","getInitPermissions","_loop","ROLES_APP","can","tester","product_owner","admin","fromUserToTester","onlyTester","arePermissionsReady","getChildrenRoles","childrenRoles","moreChildren","__nextAction","highestAction","canRoleDo","roles","roleObj","childRole","showMsg","checkCanDo","permission","isTester","isProductOwner","isAdmin","spacingX","spacingY","__rowData","__colData","setSpacingX","setSpacingY","__grid","__colSpans","__rowSpans","__maxRowIndex","__maxColIndex","__rowHeights","__colWidths","rowSpan","__buildGrid","colSpans","rowSpans","maxRowIndex","maxColIndex","_setRowData","rowData","_setColumnData","colData","hAlign","vAlign","getColumnAlign","setRowAlign","getRowAlign","getRowCount","getColumnCount","getCellAlign","widgetProps","getColumnFlex","getRowFlex","setColumnMaxWidth","getColumnMaxWidth","setColumnWidth","getColumnWidth","getColumnMinWidth","setRowMaxHeight","getRowMaxHeight","setRowHeight","getRowHeight","setRowMinHeight","getRowMinHeight","__getOuterSize","hMargins","vMargins","_fixHeightsRowSpan","rowHeights","vSpacing","getSpacingY","widgetRow","prefSpanHeight","minSpanHeight","rowFlexes","rowHeight","rowFlex","totalSpacing","availableHeight","avgRowHeight","usedHeight","rowsNeedAddition","currentHeight","additionalRowHeight","rowIncrements","_fixWidthsColSpan","colWidths","hSpacing","getSpacingX","widgetColumn","prefSpanWidth","minSpanWidth","colFlexes","colWidth","colFlex","colIncrements","_getRowHeights","cellSize","_getColWidths","_getColumnFlexOffsets","_getRowFlexOffsets","prefWidths","colStretchOffsets","prefHeights","rowStretchOffsets","spanWidth","spanHeight","cellHint","cellWidth","cellHeight","cellAlign","cellLeft","cellTop","__resetSourcePath","logoPath","imgHeight","imgWidth","sourcePath","__messageLabel","__extraWidgetsLayout","btnsLayout","_applyMessage","getExtraWidgetsLayout","btnToolbar","cancelButton","__onChangeLocale","requiredInvalidMessage","_applyValid","MForm","__addPlaceholderRules","browser","__useQxPlaceholder","_onChangeContent","_syncPlaceholder","AbstractField","liveUpdate","placeholder","__nullValue","_placeholder","_createInputElement","updateInsets","_getPlaceholderElement","_renderContentElement","_onHtmlInput","_showPlaceholder","_removePlaceholder","__textSize","_applyMaxLength","selectAllText","_getTextSize","fireEvents","getFilter","filteredValue","_validateInput","getLiveUpdate","__fireChangeValueEvent","fieldValue","_onPointerDownPlaceholder","setPlaceholder","processedValue","_applyPlaceholder","_applyReadOnly","initWrap","singleStep","minimalLineHeight","autoSize","__areaClone","__areaHeight","__originalAreaHeight","__autoSize","scrollY","getSingleStep","isAutoSize","__getAreaClone","_getAreaHeight","scrolledHeight","_getScrolledAreaHeight","desiredHeight","_setAreaHeight","__forceRewrap","cloneDom","setWrap","__scrollCloneToBottom","__createAreaClone","cloneHtml","_applyMinimalLineHeight","_applyAutoSize","__warnAutoSizeAndHeight","getMinimalLineHeight","setAutoSize","schemaUrl","ajvLoader","__ajv","Ajv","__validate","$schema","__render","ajvReady","__inputItems","__validationManager","__expand","buttonContainer","__submitBtn","FetchButton","__isValidData","formData","toObject","showMessage","dataPath","depth","isArrayItem","JsonSchemaFormItem","__expandObject","arrayContainer","__expandArray","objectPath","getHeader","addInput","JsonSchemaFormArray","Flow","inputMap","path","getPath","_ref3","_ref4","getInput","FileInput","getFile","__getInput","isFetching","_createScrollBar","ScrollBar","MScrollBarFactory","_cancelRoll","_addRollHandling","_onPointerDownForRoll","_removeRollHandling","showX","showY","scrollbarY","scrollbarX","endY","endX","scrollBy","getMaximum","MRoll","DragDropScrolling","__onDrag","__onDragend","__xDirs","__yDirs","dragScrollThresholdX","dragScrollThresholdY","dragScrollSlowDownFactor","__dragScrollTimer","_findScrollableParent","_isScrollable","_getBounds","scrollable","getScrollAreaContainer","_getEdgeType","thresholdX","thresholdY","_getAxis","edgeType","_getThresholdByEdgeType","getDragScrollThresholdX","getDragScrollThresholdY","_isScrollbarVisible","_isScrollbarExceedingMaxPos","newPos","_calculateThresholdExceedance","threshold","_calculateScrollAmount","scrollbarSize","exceedanceAmount","getDragScrollSlowDownFactor","_scrollBy","xPos","yPos","MDragDropScrolling","DEFAULT_SCROLLBAR_WIDTH","AbstractScrollArea","scrollAnimationXEnd","scrollAnimationYEnd","ScrollPane","_computeScrollbars","_onScrollPaneX","_onScrollPaneY","setMinWidth","_onScrollBarX","_onChangeScrollbarXVisibility","_onScrollAnimationEnd","_onScrollBarY","_onChangeScrollbarYVisibility","getPaneSize","getItemTop","getItemBottom","getItemLeft","getItemRight","scrollByX","scrollByY","stopScrollAnimationX","stopScrollAnimation","stopScrollAnimationY","updatePosition","pane","innerSize","paneSize","scrollSize","getScrollSize","getScrollbarX","getScrollbarY","barX","setMaximum","setKnobFactor","barY","scrollBarOverlayed","scrollBarWidth","osx","getNativeScroll","splitVersion","__uiConfig","uiConfig","beUiConfig","feUiConfig","allErrors","strictDefaults","useDefaults","strictTypes","getNewStudiesUiConfig","EXPORT","IMPORT","SCICRUNCH","VERSION_CONTROL","META_MODELING","LICENSES","isExportDisabled","__isPluginDisabled","isImportDisabled","isVersionControlDisabled","isMetaModelingDisabled","_getLatestUIFromBE","MAXSCROLL","MINSCROLL","FACTOR","__normalize","absDelta","__recalculateMultiplicator","maxRet","_charCode","getCharCode","getChar","_keyCode","_identifier","getKeyCode","isPrintable","isPrintableKeyIdentifier","specialCharCodeMap","numpadToCharCode","96","97","99","101","103","104","105","106","107","109","111","224","37","38","39","40","45","46","112","113","115","117","118","119","120","121","122","123","144","44","145","91","93","charCodeA","charCodeZ","charCode0","charCode9","isIdentifiableKeyCode","numPadKeyCode","isValidKeyIdentifier","originalEvent","stopSession","avail","used","flexSum","flexStep","roundingOffset","currentOffset","grow","remaining","potential","arrangeIdeals","beginMin","beginIdeal","beginMax","endMin","endIdeal","endMax","IBooleanForm","setGroup","RadioGroup","IRadioItem","_onExecute","triState","_applyGroup","isTriState","_applyTriState","ToggleButton","invalid","undetermined","__formItems","__asyncResults","setRequiredFieldMessage","requiredFieldMessage","__valid","__syncValid","__supportsInvalid","__supportsSingleSelection","dataEntry","validatorResult","_validateItem","_validateRequired","formValid","__validateForm","_setValid","__supportsDataBindingSelection","individualMessage","getRequiredFieldMessage","__isAsyncValidator","formValidator","getValidator","validateForm","AsyncValidator","ISelection","_showToolTip","getInvalidMessages","getInvalidFormItems","setItemValid","__checkValidationComplete","setFormValid","currentResult","__items","__typeCheck","resetItem","logoContainer","__hideableItems","toRegister","toRequestAccount","toReset","toVerifyPhone","to2FAValidationCode","__loginBtn","__loginAnnouncements","__addAnnouncements","__addLoginForms","__addExtraWidgets","announcementUIFactory","addAnnouncements","PasswordField","formRenderer","renderer","SinglePlaceholder","__login","grp","createAccountBtn","LinkButton","createAccountAction","__openTipItisPhaseOutDialog","forgotBtn","disclaimer","poweredByLayout","s4lLogo","tipLiteLabel","tipLabel","hereLabel","verifyPhoneCbk","twoFactorAuthCbk","loginFun","failFun","fieldItems","__cancelBtn","password1","password2","invitationToken","setValidator","submitBtn","cancelBtn","__submit","submitButton","commandEnter","commandEsc","__captchaField","__requestButton","__cancelButton","doubleSpaced","denylistData","address","city","postalCode","country","cItem","alpha2","countryFound","country_code","emptyItem","appData","_application","hear","hearOptions","hearData","ppLink","ppText","privacyPolicy","eulaText","eula","DoubleV","captchaLayout","__createCaptchaLayout","scrollView","__requestPressed","captchaValue","__restartCaptcha","captchaGrid","captchaImage","__captchaImage","restartCaptcha","captchaField","skipPhoneRegistration","__itiInput","__verifyPhoneNumberBtn","__validateCodeField","__validateCodeBtn","__sendViaEmail","__buildVerificationLayout","validationLayout","__createValidationLayout","sendViaEmailBtn","__createSendViaEmailButton","verificationInfoTitle","verificationInfoDesc","phoneNumberVerifyLayout","itiInput","verifyPhoneNumberBtn","smsValidationLayout","validateCodeTF","validateCodeBtn","__verifyPhoneNumber","__validateCodeRegister","__requestCodeViaEmail","isValidNumber","getUserEmail","getNumber","__enableEnterCommand","onBtn","__disableCommands","resetCode","_itemForms","restartResendTimer","buttonText","refreshIntervalId","__resendCodeSMSBtn","__resendCodeEmailBtn","__validateCodeLogin","resendLayout","resendCodeDesc","resendButtonsLayout","resendCodeSMSBtn","resendCodeEmailBtn","validationCodeTF","validationCode","__requests","actionSent","started","actionStarted","placeholderRe","placeholders","__baseUrl","__configureRequestCallback","__requestHandler","__begetRequest","_getRequestHandler","OPENED","payload","onprogress","progress","lengthComputable","SimpleXhr","__createRequest","__checkParameters","__configureRequest","__configureJsonRequest","reqHandler","setRequestData","stopPollByAction","scope","intervalListener","_startPoll","restartPollByAction","ff2","ie6","setRequest","setPhase","getAction","IAuthentication","__credentials","Base64","encode","__token","LOG_LEVEL_COLOR_MAP","setDuration","INFO","WARNING","ERROR","closeMessage","IconButton","__applyMessage","HEIGHT","backToDashboardPressed","openLogger","SMALL_SCREEN_BREAKPOINT","BUTTON_OPTIONS","__tabButtons","__navBarResized","studyTitleOptions","TIPTeaser","PoweredByOsparc","StudyTitleWOptions","READ_ONLY_TEXT","attachShowHideHandlers","CreditsIndicatorButton","TasksButton","NotificationsButton","account","MyAccountWindow","__createHelpMenuBtn","__createLoginBtn","UserMenuButton","populateMenu","populateMenuCompact","Menu","MenuButton","registerButton","tabButtons","__applyStudy","readOnlyInfo","tabButton","ttt","tagsCached","tagsChanged","tagsData","tagData","__addToCache","getTag","tagId","postTag","newTagData","deleteTag","__deleteFromCache","patchTag","updateData","fetchAccessRights","accessRightsArray","newCollaborators","removeCollaborator","updateCollaborator","newPermissions","Tag","createSectionBox","sectionName","box","groupbox","GroupBox","createHelpLabel","tabview","TabView","barPosition","TabbedView","addWidgetToTabs","__widgetToPage","iconSrc","BasePage","addTab","_openPage","miniWallet","BillingCenter","createMiniWalletView","__walletsPage","__addWalletsPage","__paymentMethodsPage","__addPaymentMethodsPage","__transactionsPage","__addTransactionsPage","__usagePage","__addUsagePage","__addPurchasesPage","walletName","creditsIndicator","CreditsIndicator","__paymentMethods","__transactionsTable","walletsView","WalletsView","__openBuyCredits","PaymentMethods","transactions","Transactions","Usage","Purchases","__addCheckoutsPage","Checkouts","openWallets","openPaymentMethods","openTransactions","openUsage","ProfilePage","__confirmButton","setConfirmed","confirmed","getCancelButton","__applyConfirmAppearance","confirmationAction","confBtn","resetAppearance","__stack","showStudyEditor","setHeader","startStudy","studyAlias","locked","lockedBy","isCorrupt","inaccessibleServices","getInaccessibleServicesMsg","setStudyData","GRID_POS","SPACER_TOP","SPACER_BOTTOM","showToolbar","ICON_WIDTH","ICON_HEIGHT","STATUS_ICON_SIZE","TOOLBAR","WAITING","EXTRA_WIDGETS","__thumbnail","__header","__messagesContainer","__extraWidgets","__maxButton","maxLayout","__createMaximizeToolbar","logoHeight","waitingHeader","updateCircleAnimation","extraWidgets","maximizeIFrame","maxButton","PersistentIframe","getZoomLabel","getZoomIcon","getMaximizeWidgetId","createToolbarButton","toolbarLayout","__applyLogo","newLogo","__applyHeader","words","getIconSource","msgs","clearMessages","getMessageLabels","addWidgetToMessages","addExtraWidget","__barPositionToState","__radioGroup","_createRadioGroupInstance","_onChangeSelection","setBarPosition","initBarPosition","Page","bar","getBarPosition","_onPageClose","getRadioGroup","_applyBarPosition","horizontal","layoutClass","setOrientation","oldState","newState","oldButton","_onBeforeChangeSelection","_onRadioChangeSelection","PADDING","Svg","JsonDiffPatch","JsonTreeViewer","DOMPurify","RadialMenu","createMenu","__createMainViewLayout","__studyBrowser","__templateBrowser","__serviceBrowser","__dataBrowser","getServiceBrowser","tabs","buttonId","buildLayout","__createStudyBrowser","__createTemplateBrowser","__createServiceBrowser","__createDataBrowser","tabPage","viewLayout","activeTab","tabFound","scrollerMainView","preResourcePromises","Services","getServicesLatest","resourceBrowser","initResources","StudyBrowser","TemplateBrowser","ServiceBrowser","DataBrowser","patchStudyData","OwnPatch","patchData","patchNodeData","_loadingPage","__mainLayout","_showLoadingPage","_showMainLayout","_hideLoadingPage","_addToMainLayout","LoadingPageHandler","viewsStack","__viewsStack","workbenchView","__workbenchView","WorkbenchView","slideshowView","__slideshowView","SlideshowView","signalName","__editSlides","__takeSnapshot","__showSnapshots","__createIterations","__showIterations","__nodesSlidesTree","changeSelectedNode","wbAppear","ssAppear","getCollapseWithUserMenu","partialPipeline","__startPipeline","__stopPipeline","startStopButtons","getStartStopButtons","getUi","getSelectedNodeIDs","__updatingStudy","forceBackToDashboard","userIdled","collapseNavBar","expandNavBar","startSnapshot","startIteration","AUTO_SAVE_INTERVAL","__settingStudy","__autoSaveTimer","__studyEditorIdlingTracker","__studyDataInBackend","__updateThrottled","latestStudyData","setCurrentStudy","__reloadSnapshotsAndIterations","openStudy","__setStudyDataInBackend","getWorkbench","isDeserialized","__initStudy","__uiModeChanged","__attachSocketEventHandlers","initStudy","__startIdlingTracker","maxNumber","dontCheck","getDisableServiceAutoStart","getNodes","__startAutoSaveTimer","portKey","__updatePipelineAndRetrieve","nodeSelected","__restartAutoSaveTimer","deepCloneStudyObject","__listenToLogger","__listenToProgress","__listenToNodeUpdated","__listenToNodeProgress","__listenToNoMoreCreditsEvents","__listenToEvent","__listenToServiceStatus","__listenToStatePorts","logLevelMap","LoggerView","LOG_LEVEL_MAP","logLevel","logsToLogger","jsonString","setProgress","nodeUpdated","nodeNodeProgressSequence","_this10","ttlMap","TTLMap","noMoreCredits","requestStopNode","hasRecentEntry","addOrUpdateEntry","_this11","_this12","getIframeHandler","onNodeState","_this13","__statePortReceived","socketData","propsForm","getPropsForm","portId","retrievingPortData","PropForm","RETRIEVE_STATUS","retrievedPortData","outputsForm","getOutputsForm","_portId","setRetrievingStatus","uploading","getSnapshots","setSnapshots","getIterations","setIterations","_this14","nodesSlidesTree","NodesSlidesTree","nNodes","getNodesTree","getWorkbenchUI","getSlideshow","_this15","setPipelineRunning","__requestStartPipeline","_this16","forceRestart","ApiRequest","__onPipelineSubmitted","subgraph","force_restart","pipelineId","iterationRefIds","__requestStopPipeline","_this17","_this18","getNodeId","retrieveInputs","getLogger","newUIMode","oldUIMode","startSlides","openFirstNode","setMaximized","currentNodeId","getCurrentNodeId","fullscreenNode","editSnapshotView","EditSnapshotView","tagCtrl","_this19","SnapshotsView","_this20","IterationsView","unlistenToNodeUpdated","_this21","studyEditorIdlingTracker","StudyEditorIdlingTracker","__stopIdlingTracker","_this22","__checkStudyChanges","__stopAutoSaveTimer","__stopTimers","__getStudyDiffs","newObj","studyDiffs","_this23","patchStudyDelayed","__closeStudy","stopStudy","setNode","initIframeHandler","iframeHandler","checkState","__iFrameChanged","getIFrame","getLoadingPage","iFrame","iFrameView","setPollInterval","initPollInterval","taskId","statusHref","resultHref","abortHref","__pollTaskState","updateReceived","resultReceived","taskAborted","pollingError","pollInterval","extractPathname","__aborting","statusPath","getStatusHref","getDone","setDone","getPollInterval","__fetchResults","resultPath","getResultHref","resultData","abortRequested","getAbortHref","abortPath","getSubscriptions","subscriber","checkSubscription","unsubscribe","__subscriptions","subscrList","subscription","__callSubscribers","subscribers","__insets","_getDefaultInsets","_isInitialized","_resetInsets","_styleBackgroundColor","bgcolor","MBackgroundColor","radiusTopLeft","radiusTopRight","radiusBottomLeft","radiusBottomRight","_styleBorderRadius","hasRadius","getRadiusTopLeft","getRadiusTopRight","getRadiusBottomLeft","getRadiusBottomRight","_applyBorderRadius","MBorderRadius","shadowHorizontalLength","shadowVerticalLength","shadowBlurRadius","shadowSpreadRadius","shadowColor","shadowLength","_styleBoxShadow","getShadowVerticalLength","getShadowHorizontalLength","vLengths","hLengths","blurs","spreads","vLength","hLength","_getExtendedPropertyValueArrays","_applyBoxShadow","MBoxShadow","widthTop","widthRight","widthBottom","widthLeft","styleTop","styleRight","styleBottom","styleLeft","colorTop","colorRight","colorBottom","colorLeft","_styleBorder","getColorTop","getColorRight","getColorBottom","getColorLeft","getWidthTop","getStyleTop","getWidthRight","getStyleRight","getWidthBottom","getStyleBottom","getWidthLeft","getStyleLeft","_getDefaultInsetsForBorder","_applyWidth","_applyStyle","MSingleBorder","backgroundPositionX","backgroundPositionY","backgroundOrigin","orderGradientsFront","_styleBackgroundImage","images","repeats","tops","lefts","origins","origin","imageMarkup","getOrderGradientsFront","_applyBackgroundImage","_applyBackgroundPosition","MBackgroundImage","__getDefaultInsetsForDoubleBorder","__styleDoubleBorder","innerWidthTop","innerWidthRight","innerWidthBottom","innerWidthLeft","innerColorTop","innerColorRight","innerColorBottom","innerColorLeft","innerColor","innerOpacity","getInnerColorTop","getInnerColorRight","getInnerColorBottom","getInnerColorLeft","getInnerWidthTop","getInnerWidthRight","getInnerWidthBottom","getInnerWidthLeft","getInnerOpacity","__processInnerOpacity","borderTop","borderRight","borderBottom","borderLeft","border-top","border-right","border-bottom","border-left","boxSizingKey","borderRadiusKey","shadowStyle","rgbString","_applyDoubleBorder","MDoubleBorder","startColor","endColor","startColorPosition","endColorPosition","colorPositionUnit","gradientStart","gradientEnd","_styleLinearBackgroundGradient","backgroundStyle","styleImpl","__styleLinearBackgroundGradientAccordingToSpec","__styleLinearBackgroundGradientForLegacyWebkit","__styleLinearBackgroundGradientWithCanvas","__styleLinearBackgroundGradientWithMSFilter","startColors","endColors","units","orientations","startColorPositions","endColorPositions","__getColor","unit","startPos","endPos","me","__canvas","isVertical","lingrad","createLinearGradient","addColorStop","comp","clearRect","fillStyle","fillRect","toDataURL","deg","prefixedName","_applyLinearBackgroundGradient","MLinearBackgroundGradient","sliceTop","sliceRight","sliceBottom","sliceLeft","repeatX","repeatY","fill","borderImageMode","_styleBorderImage","resolvedImage","computedSlices","_getDefaultInsetsForBorderImage","getRepeatX","getRepeatY","getFill","__getSlices","getSliceTop","getSliceRight","getSliceBottom","getSliceLeft","_applyBorderImage","baseImage","getBorderImageMode","topSlice","rightSlice","bottomSlice","leftSlice","ext","MBorderImage","transitionProperty","transitionDuration","transitionTimingFunction","transitionDelay","_styleTransition","getTransitionDuration","tPros","tDurs","tTims","tDels","_applyTransition","MTransition","getInset","slices","_getStyles","jsStyles","cssStyles","directions","defaultInsets","currentInsets","propertyValues","__extendArray","__aliases","_preprocess","dynamics","getAliases","__lookupMap","fontFamily","fontSize","fontWeight","fontStyle","textDecoration","lineHeight","textShadow","setFamily","fromString","parts","setBold","setItalic","setDecoration","fromConfig","__defaultStyles","bold","italic","weight","_applySize","_applyLineHeight","_applyFamily","_applyBold","_applyItalic","_applyDecoration","_applyWeight","_applyTextShadow","changeStatus","__families","_applySources","families","familyName","_quoteFontFamily","sourcesList","getComparisonString","_onWebFontChangeStatus","timeoutInterval","_applyTimeoutInterval","_onInterval","__startTimer","getTimeoutInterval","__stopTimer","__defaultAxis","DirectAxis","axisX","axisY","__instance","area","offsets","modeX","modeY","__getAxis","__direct","__keepAlign","__bestFit","KeepAlignAxis","BestFitAxis","getAxisX","computeStart","__getPositionX","getAxisY","__getPositionY","getEdge","getAlign","__objects","__onPointerDown","__updateIndexes","parseUri","strict","loose","$0","__toParameterPair","CssAnimation","play-state","getPlayState","start-event","getAnimationStart","iteration-event","getAnimationIteration","getAnimationEnd","fill-mode","getFillMode","keyframes","getKeyFrames","msAnimation","WebkitAnimation","MozAnimation","OAnimation","animation","prefixes","getRequestAnimationFrame","choices","__rulePrefix","__transitionKeys","skew","__cssAnimationKeys","__normalizeDesc","__validateDesc","alternate","__addKeyFrames","__onAnimationStart","__onAnimationIteration","__onAnimationEnd","AnimationHandle","Transform","setOrigin","__keepFrame","ended","endFrame","transforms","possibleKeys","__clearCache","__maxStepTime","__units","__getOrderedKeys","stepTime","__getStepTime","__normalizeKeyFrames","__calculateDelta","jsAnimation","initValues","repeatSteps","__applyRepeat","delayId","__getUnit","__normalizeKeyFrameTransforms","transformStyle","keyIndex","stepsToNext","calculationIndex","nItem","__getNextValue","value0","value1","stepValue","timingX","nextItem","lastItem","__applyStyles","animationId","stopped","MAX_VALUE","minDiff","getWheelDelta","__orientation","offsetX","offsetY","layerX","layerY","getAllTouches","getTargetTouches","getChangedTargetTouches","isMultiTouch","__getEventSpecificTouches","getRotation","touchIndex","__getEventSpecificTouch","getIdentifier","_isTouchEnd","getGears","google","gears","getActiveX","getSkype","Plugin","mimeTypes","__db","quicktime","plugin","wmv","divx","silverlight","pdf","getQuicktimeVersion","__getVersion","getWindowsMediaVersion","getDivXVersion","getSilverlightVersion","getPdfVersion","getQuicktime","__isAvailable","getWindowsMedia","getDivX","getSilverlight","getPdf","activeXName","pluginNames","forceActiveX","GetVersions","versionInfo","plugins","verreg","DOMDOC","XMLHTTP","namespaceUri","qualifiedName","loadXML","createDocument","DOMParser","parseFromString","domDoc","httpReq","createRange","getRangeAt","separator2","lastLength","lastLastIndex","sticky","compliantExecNpcg","__paddingTop","__paddingLeft","__rich","_content","__warnings","__alphaFixRepeats","scale-x","scale-y","no-repeat","__repeatToTagname","repeat-x","repeat-y","verticalAlign","_style","WebkitUserDrag","dimension","__getDimension","__normalizeWidthHeight","processAlphaFix","__processScale","__processScaleXScaleY","__processRepeats","sizingMethod","sourceid","clipped","combinedid","__getStylesForClippedScaleX","__getStylesForClippedScaleY","__checkForPotentialClippedImage","offx","offy","bg","Background","__getStylesForSingleRepeat","__refreshCursor","currentCursor","setSender","quad","addCenteredWidget","CenteredGrid","setMaxWidth","setMaxHeight","__applySource","newMaxHeight","newMaxWidth","_newMaxHeight","_newMaxWidth","showEmptyStars","StarFull","StarHalf","StarEmpty","starsRating","_osparc$metadata$Qual","isEditMode","__checkValues","getScore","getMaxScore","__renderStars","__renderScore","starsLayout","getTargetScore","maxStars","getNStars","normScore","fullStars","currentScore","star","__getStarImage","halfStar","_star","emptyStars","getShowEmptyStars","_i2","_star2","_star3","imageUrl","__updateScore","setScore","scoreText","getShowScore","workspaceId","folderId","getPrjOwner","creationDate","getCreationDate","getLastChangeDate","getState","getQuality","getPermalink","getDev","getTrashedAt","wbData","Workbench","setWorkbench","workbenchUi","StudyUI","setUi","buildWorkbench","pipelineRunning","IgnoreSerializationProps","IgnoreModelizationProps","createMinStudyObject","myNewStudyObject","ignoreExtra","studyObject","studyPropKeys","studyAccessRights","orgIDs","canGroupsWrite","canGroupsDelete","getOutputValue","computeStudyProgress","nCompNodes","overallProgress","getMetadata","isComputational","isRunning","initWorkbench","isSnapshot","getCurrentSnapshot","currentSnapshot","snapshot","__getFoldersPath","childId","foldersPath","childFolder","Folders","getFolder","parentFolder","getParentFolderId","getFolderId","getLocationString","getWorkspaceId","workspace","Workspaces","getWorkspace","folder","nodeUpdatedData","nodeData","isFrontend","getMetaData","setOutputData","outputs","populateStates","setErrors","nodeProgressData","progressType","progressReport","setNodeProgressSequence","isPipelineEmpty","isPipelineMononode","__applyAccessRights","setReadOnly","__stopRequestingStatus","__stopFileUploads","__removeIFrames","_Object$values","stopRequestingStatus","_Object$values2","isFilePicker","requestFileUploadAbort","_i3","_Object$values3","removeIFrame","parameters","isParameter","getNonFrontendNodes","isOnlyNodeDynamic","validNodes","hasSlideshow","sendMessageToIframe","patchStudy","studyChanges","upKey","workbenchDiffs","patchWorkbenchDelayed","fieldKeys","caretSize","setCaretSize","hintCssUri","__buildWidget","setElement","ORIENTATION","TOP","RIGHT","BOTTOM","LEFT","textToOrientation","FloatingHelper","classPrefix","getCaretSize","overrideCaretColor","hintBg","hintContainer","caret","caretClass","getElement","_qx$bom$element$Locat","_qx$bom$element$Dimen","selfBounds","getHintBounds","moveToTheCenter","__applyOrientation","__applyElement","oldElement","_elementAppearDisappearHandler","__removeListeners","__addListeners","__elementVisibilityHandler","ne","localWidth","localHeight","showHint","hideHint","tapListener","__fetchUser","_getUser","fetchIfNotFound","userFound","_args","t0","User","usr","searchUsers","usersData","__isAnyLinkedNodeMissing","existingNodeIds","getLinkedNodeIds","linkedNodeId","extractUniqueServices","srv","allServices","servicesCached","Set","inaccessibleService","friendlyKey","isUpdatable","serviceMD","createStudyFromService","existingStudies","newStudyLabel","contextProps","getService","newUuid","minStudyData","createStudyAndPoll","createStudyFromTemplate","progressSequence","ProgressSequence","addOverallProgressBar","setOverallProgress","existingTask","getTask","updateTaskProgress","progressLabel","tsk","subTask","addNewTask","isInDebt","getUiMode","__getBlockedState","canShowServiceUpdates","canShowServiceBootOptions","canShowPreview","__guessTIPIcon","__guessIcon","wbServices","wbService","serviceMetadata","tiPostpro","setupFilePickerIcon","fpNode","FilePicker","getOutput","getOutputs","setTextColor","resetTextColor","getStatusHalo","progressColor","runnerColor","fillColor","getLabelValue","getBorderDecorator","createServiceDeprecatedChip","Chip","DEPRECATED_SERVICE_TEXT","createServiceRetiredChip","RETIRED_SERVICE_TEXT","TaskUI","MAX_WIDTH","_buildLayout","subtitle","__applyTask","stopButton","Tasks","removeTask","__study","setTitle","__resourceData","__resourceModel","Service","__addPages","openTemplate","openService","WIDTH","resourceAlias","TabbedWindow","DEFAULT_PROPS","createToolbar","showOpenButton","__infoPage","__servicesUpdatePage","__permissionsPage","__tagsPage","__billingSettings","__classifiersPage","__qualityPage","__addOpenButton","toolbar","addToHeader","payDebtButton","decorateHeaderButton","isService","serviceVersionSelector","__createServiceVersionSelector","openText","isShowOpenButton","__openTapped","_studyData","updatedStudyData","ServicesInStudyUpdate","updatableNodeIds","__confirmUpdate","__openResource","ResourceUpgradeHelper","primaryAction","secondaryAction","__openInfo","openClassifiers","versionLabel","versionsBox","selectedItem","getVersions","versionToListItem","serviceVersion","serviceData","tabsView","selectedTabId","__getInfoPage","__getBillingPage","__getServicesUpdatePage","__getServicesBootOptionsPage","__getCommentsPage","__getPermissionsPage","__getSaveAsTemplatePage","__getTagsPage","__getQualityPage","__getClassifiersPage","__getPreviewPage","pageCallee","dataAccess","canShowData","pageFound","tabId","resourceModel","infoCard","ServiceLarge","updatedData","StudyLarge","isStudy","isTemplate","addToContent","billingSettings","BillingSettings","_canBeOpened","billingScroll","_title","_page","pricingUnitsList","PricingUnitsList","pricingUnitsListScroll","StudyPreview","commentsList","CommentsList","CommentAdd","setPaddingLeft","fetchComments","addToFooter","permissionsView","CollaboratorsService","ClassifiersEditor","ClassifiersViewer","qualityEditor","QualityEditor","tagManager","TagManager","servicesUpdate","servicesBootOpts","ServicesInStudyBootOpts","autoStartButton","StudyUtils","createDisableServiceAutoStart","canCreateTemplate","saveAsTemplate","SaveAsTemplate","publishTemplateButton","getPublishTemplateButton","leftColumnWidth","SIDE_SPACER_WIDTH","mainLayoutWithSideSpacers","_leftFilters","__centerLayout","rightColum","itemWidth","GridButtonBase","ITEM_WIDTH","SPACING","MIN_GRID_CARDS_PER_ROW","fitResourceCards","w","_moreResourcesRequired","changeTab","PAGINATED_STUDIES","checkLoggedIn","isLogged","resourceSelector","StudyOptions","isCardNewItem","card","GridButtonNew","ListButtonNew","isCardButtonItem","GridButtonItem","ListButtonItem","createToolbarRadioButton","rButton","RadioButton","_resourceFilter","_resourcesList","_toolbar","_searchBarFilter","__viewModeLayout","_resourcesContainer","_loadingResourcesBtn","_createLayout","_addToLayout","reloadMoreResources","_createSearchBar","searchBarFilter","SearchBarFilter","_createResourcesLayout","flatListId","ToolBar","Part","resourcesContainer","ResourceContainerManager","getFlatList","viewMode","setMode","_updateStudyData","_updateTemplateData","_updateServiceData","addTagActiveFilter","_deleteResourceRequested","_folderUpdated","_moveFolderToRequested","_trashFolderRequested","_untrashFolderRequested","_deleteFolderRequested","_studyToFolderRequested","_folderToFolderRequested","_folderSelected","_workspaceSelected","_e$getData","_changeContext","_workspaceUpdated","_trashWorkspaceRequested","_untrashWorkspaceRequested","_deleteWorkspaceRequested","__groupByChanged","groupBy","setGroupBy","_reloadCards","__viewModeChanged","_addGroupByButton","groupByMenu","groupByButton","groupOptions","dontGroup","tagByGroup","groupByShared","_addViewModeButton","gridBtn","listBtn","viewModeLayout","radioGroup","_addResourceFilter","resourceFilter","ResourceFilter","contextTab","setSharedWithActiveFilter","selectedTagIds","setTagsActiveFilter","setServiceTypeActiveFilter","filterData","filterChanged","_checkLoggedIn","_removeResourceCards","cards","getCards","removeNonResourceCard","areMoreResourcesRequired","_taskDataReceived","_populateCardMenu","_createStudyFromTemplate","_createStudyFromService","resourceId","_getOpenMenuButton","_openResourceDetails","openServiceData","_getShareMenuButton","shareButton","_getTagsMenuButton","tagsButton","__reloadTree","studyDataManager","TreeFolderView","treeFolderView","__fileDeleted","foldersTree","getStudyId","populateStudyTree","populateNodeTree","resetFolder","fileMetadata","openSameFolder","openPath","__styles","__prepareText","__createMeasureElement","_textElement","__prepareHtml","_htmlElement","__getStyles","useHtml","xulel","__sanitizer","setSanitizer","__measureSize","QUICK_START","tis","localStorageStr","Slides","tiplite","s4llite","s4l","Welcome","s4lacad","quickStarts","pName","createTitle","createLabel","createDontShowAgain","dontShowCB","dontShow","ButtonLayout","_onChangeCommand","showCommandLabel","getShowCommandLabel","AbstractButton","getChildrenSizes","iconWidth","labelWidth","shortcutWidth","arrowWidth","arrow","preventContextMenuOnce","cmdString","_applyShowCommandLabel","columnChildren","__getMenu","columns","getColumnSizes","setMenu","TOURS","__blankets","tour","__currentBubble","__currentIdx","__selectTour","setTour","__removeCurrentBubble","__removeBlankets","__addBlankets","targetWidget","windowW","windowH","addBlanket","h","blanket","setSteps","__toStepCheck","__getVisibleElement","getSteps","beforeClick","__toStep","__createStep","getTour","stepWidget","Step","evName","_toStep","anchorEl","stepIndex","nSteps","authority","isMethod","qxSerializer","isdataArray","valueAtI","__toUriParameter","encValue","toNativeObject","boundFunc","__onNativeReadyStateChange","__onNativeReadyStateChangeBound","__onNativeAbortBound","__onNativeAbort","__onNativeProgressBound","__onNativeProgress","__onTimeout","__initNativeXhr","_emitter","__onUnloadBound","__onUnload","UNSENT","DONE","readystatechange","loadend","responseXML","__checkDisposed","__send","__conditional","__url","__async","__supportsManyRequests","__nativeXhr","OpenError","__openError","XDomainRequest","_emit","__disposed","__timerId","__dataTypeWhiteList","SendError","_getProtocol","__readyStateChange","mimeType","PropertiesNotAccessable","noop","_createNativeXhr","nxhr","propertiesReadable","XhrPropertiesNotReadable","__normalizeStatus","__normalizeResponseXML","__readyStateChangeDone","__isNetworkError","validateOnParse","PARSER","__parser","_getParser","contentTypeNormalized","contentTypeOrig","__initXhrProperties","__onNativeLoadBound","__onNativeErrorBound","_onNativeError","__headElement","__supportsErrorHandler","__determineSuccess","__environmentGet","_readyStateChange","__createScriptElement","__disposeScriptElement","setDetermineSuccess","__scriptElement","_getUrl","_getScriptElement","__failure","determineSuccess","_success","isLegacyIe","isOpera","products","scrollPane","initOrientation","scrollStep","scrollAnimationEnd","RepeatButton","_onExecuteForward","_onExecuteBackward","_onScroll","barLeft","barTop","barRight","barBottom","_updateArrowsEnabled","_applyOrientation","oldLayouts","buttonForward","buttonBackward","getScrollMaxX","getScrollMaxY","contentSize","_showArrows","_hideArrows","getScrollStep","__pimpLayout","buttonsWidth","__updateElementSizes","btnWidth","getButtonsWidth","__modifier","__key","initEnabled","autoRepeat","__onKeyDown","__matchesKeyEvent","isAutoRepeat","al","__normalizeKeyIdentifier","__oldKeyNameToKeyIdentifierMap","esc","print","del","pageup","pagedown","numlock","numpad_0","numpad_1","numpad_2","numpad_3","numpad_4","numpad_5","numpad_6","numpad_7","numpad_8","numpad_9","numpad_divide","numpad_multiply","numpad_minus","numpad_plus","keyName","kbUtil","modifier","Key","getKeyName","selectionProvider","ISingleSelectionProvider","__selectionProvider","changeSelected","allowEmptySelection","__selected","__isChildElement","__setSelected","__applyAllowEmptySelection","oldSelected","newSelected","isAllowEmptySelection","__personalWallet","cancelled","paymentId","BuyCreditsForm","priceDollars","amountDollars","osparcCredits","paymentData","__paymentCompleted","paymentFormUrl","setPaymentId","__iframe","Iframe","completedStatus","__isGatewaySelected","getPaymentId","_onBlur","maxListHeight","_defaultFormat","getMaxListHeight","selectionMode","quickSelection","_onListChangeSelection","_onListPointerDown","setAutoHide","setKeepActive","_onPopupChangeVisibility","AbstractSelectBox","_applyMaxListHeight","valueLabel","unescape","listPopup","handleKeyPress","setModelSelection","getModelSelection","IModelSelection","__modelSelection","__onModelSelectionArrayChange","__onModelSelectionChange","changeModelSelection","__inSelectionChange","modelSelection","selectables","itemSelection","currentSelection","MModelSelection","_onKeyInput","__preSelectedItem","getSelectionMode","__updateIcon","__updateLabel","_list","getSelectionContext","viewPortHeight","toTop","toBottom","availableHeigth","line-height","deviceType","parameter","sorting","computational","probe","getTypes","typeInfo","getSorting","sortObjectsBasedOn","servicesArray","basedOn","order","convertArrayToObject","filterDeprecated","serviceVersions","getLatest","getLatestCompatible","canUpdateTo","getVersionDisplay","extractVersionDisplay","getReleasedDate","versionDisplay","serviceAccessRights","DEPRECATED_DYNAMIC_INSTRUCTIONS","DEPRECATED_COMPUTATIONAL_INSTRUCTIONS","RETIRED_DYNAMIC_INSTRUCTIONS","RETIRED_COMPUTATIONAL_INSTRUCTIONS","DEPRECATED_AUTOUPDATABLE_INSTRUCTIONS","RETIRED_AUTOUPDATABLE_INSTRUCTIONS","latestCompatible","isDeprecated","deprecationTime","isRetired","getDeprecationDateText","getFilePicker","getParametersMetadata","parametersMetadata","latest","getParameterMetadata","getProbeMetadata","removeFileToKeyMap","inOut","getUniqueServicesFromWorkbench","existingSrv","__workspace","workspaceDataCopy","getViewerAccessRight","read","getCollaboratorAccessRight","getOwnerAccessRight","__make","collaboratorGId","successMsg","failureMsg","WORKSPACE","_demoteToUser2","demoteToUser","itm","__tag","tagDataCopy","STUDY","ORG","longLabel","SERVICES","WALLET","showWording","rolesText","infoHint","InfoHint","createRolesOrgInfo","createRolesWalletInfo","replaceSpacerWithWidget","publishingTemplate","__serializedDataCopy","__publishingTemplate","collaboratorsManager","NewCollaboratorsManager","getActionButton","OrganizationsWindow","selectAll","addToSelection","removeFromSelection","IMultiSelection","SELECTION_MANAGER","handlePointerDown","handleTap","handlePointerOver","handlePointerMove","handleLoseCapture","handleAddItem","handleRemoveItem","_onSelectionChange","dragSelection","__inOnSelectionChange","clearSelection","isItemSelected","addItem","selectRange","selectItemRange","replaceSelection","getSortedSelection","_getManager","invertSelection","_getLeadItem","getSelectedItem","getLeadItem","_applySelectionMode","_applyDragSelection","setDrag","_applyQuickSelection","setQuick","MMultiSelectionHandling","quick","__scrollStepX","__scrollStepY","__scrollTimer","__frameScroll","__lastRelX","__lastRelY","__frameLocation","__dragStartX","__dragStartY","__inCapture","__pointerX","__pointerY","__moveDirectionX","__moveDirectionY","__selectionModified","__selectionContext","__leadItem","__anchorItem","__pointerDownOnSelected","_userInteraction","__oldScrollTop","_selectAllItems","_fireChange","selectItem","_setSelectedItem","_setLeadItem","_setAnchorItem","_scrollItemIntoView","_getAnchorItem","_addToSelection","_removeFromSelection","_applyDefaultSelection","_selectItemRange","_clearSelection","_replaceMultiSelection","_getSelectedItem","_selectableToHashCode","_toggleInSelection","_styleSelectable","_isSelectable","_getSelectableFromPointerEvent","_releaseCapture","_getLocation","_getDimension","_getSelectableLocationX","_getSelectableLocationY","_getScroll","xoff","yoff","_getSelectableRange","item1","item2","_getFirstSelectable","_getLastSelectable","_getRelatedSelectable","relation","_getPage","lead","_applyMode","getQuick","getDrag","anchor","dragX","dragY","_autoSelect","relX","relY","nextX","locationX","moveX","nextY","locationY","moveY","_deselectItemRange","__navigationKeys","Home","Down","Right","PageDown","End","Up","Left","PageUp","consumed","__rangeToMap","incoming","oldUserInteraction","vertical","ScrollArea","__content","_createListItemContainer","_onAddChild","_onRemoveChild","__pressedString","enableInlineFind","__lastKeyPress","oldLayout","setAllowGrowY","_applySpacing","getEnableInlineFind","matchedItem","findItemByLabelFuzzy","currentLabel","findItem","labelNode","__ownSelection","_modifingSelection","__selectionListenerId","__selectionArrayListenerId","_applySelection","__changeSelectionArray","_updateSelection","_changeTargetSelection","__targetSupportsMultiSelection","__targetSupportsSingleSelection","_inSelectionModification","targetSelection","spliceArgs","_addChangeTargetListener","_startSelectionModification","__getSelectableForModel","targetSelectionItems","__selectItem","_endSelectionModification","targetClass","MSelection","labelPath","__lookupTable","__boundProperties","__boundPropertiesReverse","__onUpdate","setLabelPath","iconPath","labelOptions","iconOptions","delegate","allowNull","nullValueTitle","nullValueIcon","__changeModelListenerId","__syncTargetSelection","__syncModelSelection","__changeModelLength","__renewBindings","_applyDelegate","_setConfigureItem","_setFilter","_setCreateItem","_setBindItem","_applyIconOptions","_applyLabelOptions","_applyIconPath","_applyLabelPath","_applyAllowNull","__refreshModel","_applyNullValueTitle","_applyNullValueIcon","__changeModel","__buildUpLookupTable","__removeItem","_applyTarget","__addItem","__inChangeModel","newLength","currentLength","__moveChangeListenerAtTheEnd","_createItem","getDelegate","_bindListItem","_removeBindingsFrom","getVisibleModels","visibleModels","getNullValueTitle","getNullValueIcon","bindDefaultProperties","getLabelPath","getLabelOptions","getIconPath","getIconOptions","_onBindingSet","bindPath","bindPropertyReverse","targetPath","sourceWidget","targetBindPath","__removeFilter","oldTable","tempItem","listItems","isAllowNull","subtitleMD","markdown","Markdown","noMargin","__applyKey","__applyTitle","__applySubtitle","_applySubtitleMD","getSubtitle","getSubtitleMD","collabType","promoteToEditor","promoteToOwner","demoteToEditor","canDelete","getDelete","canWrite","getWrite","getWriteAccess","canRead","getRead","getExecuteAccess","__getRoleInfo","getCollabType","__setRole","__getOptionsMenu","currentRole","promoteButton","_promoteButton","demoteButton","_demoteButton","__applyShowOptions","studyDataCopy","gIds","__getDeleters","deleters","ownerGids","__pushNotifications","__checkShareePermissions","Notifications","postNewTemplate","noAccessible","shareePermissions","ShareePermissions","toClass","includeBubbleEvents","toModel","IMarshaler","__delegate","legacyJsonHash","__jsonToHash","getJsonHash","__jsonToBestHash","bubbleClassHash","bubbleClassName","__toClass","parentProperty","__ignore","getModelClass","__disposeItem","getPropertyMapping","getValidationRule","getModelSuperClass","getModelMixins","delegateMixins","newClass","__createInstance","delegateClass","noBubbleClassName","__toModel","arrayClass","getArrayClass","setAutoDisposeItems","setterName","__getUrl","emailHash","L","K","G","I","H","aa","Z","D","B","C","P","E","Y","X","W","V","J","MD5","defaultImageUrl","groupMembers","memberAdded","memberRemoved","getGroupMembers","checkNumber","checkString","checkUrl","checkColor","inArray","regExp","__type","__selectable","__enabled","__icon","setMarginBottom","setKey","__isArrayItem","JsonSchemaFormHeader","__input","validationManager","__getInputElement","setBuddy","isForm","isFormItem","parentPath","contentMediaType","extension","ListItemSelectBox","Validators","setAllowShrinkY","lineCalculator","LineSizeIterator","lineTop","hasMoreLines","computeNextLine","__renderLine","layoutProps","stretch","gapsBefore","__computeSize","getLastLineChildren","lineData","lineCount","extensions","setExtensions","setMultiple","getExtensions","__selectBtn","__selectedFiles","selectionChanged","getSelectedFilesLabel","maximum","knobFactor","scrollBySteps","IScrollBar","_onResizeSlider","pageStep","__offset","__originalMinSize","ScrollSlider","setPageStep","_onChangeSliderValue","_onSlideAnimationEnd","_onExecuteBegin","_onExecuteEnd","_applyMaximum","_applyPosition","_applyKnobFactor","_applyPageStep","setAllowStretchX","setAllowStretchY","slideTo","slideBy","stopSlideAnimation","setPosition","knob","knobHint","hideKnob","sliderSize","_onUpdate","scrollX","__frame","setScrollX","setScrollY","internalX","internalY","newX","newY","_applyScrollX","_transformScrollX","_applyScrollY","_transformScrollY","groupedProperty","groupProperty","getGroupedProperty","groupedPropertyUp","_onItemChangeChecked","getGroupProperty","_applyGroupedProperty","oldFirstUp","newFirstUp","_applyInvalidMessage","_applyAllowEmptySelection","selectNext","selectPrevious","__validatorFunction","__item","__usedForForm","passwordField","__focusedBorder","border-bottom-width","__toggleEye","eyeButton","addItems","itemsOptions","IFormRenderer","_labels","_names","_render","_onFormChange","labelSuffix","requiredSuffix","buttonOptions","_connectVisibility","newText","_createLabelText","getRequiredSuffix","getLabelSuffix","AbstractRenderer","_row","_buttonRow","Single","_createHeader","_createLabel","setMarginTop","hbox","doubleSpacedItems","__doubleSpacedItems","__row","__buttonRow","takeDouble","itemLayout","randId","convertInputToPhoneInput","__inputToPhoneInput","intlTelInputLib","getLibReady","feedbackCheck","__feedbackCheck","updateStyle","checkIcon","validationError","getValidationError","errorMap","iti","intlTelInput","initialCountry","geoIpLookup","preferredCountries","useCaching","_registerTransportListener","__method","__requestData","millis","isCaching","curTimeout","hasRequestData","hasCacheControlHeader","isBodyForMethodAllowed","curContentType","_onProgress","__base64Chars","is8bit","isMultiByte","characterSet","charset","btoa","base64Chars","translateUTF8","__translateUTF8","characterCode","__getUTF8StringFromBytes","charString","utfByte","nextByte","nextBytes","decode","atob","ilength","stringBytes","base64Byte1","base64Byte2","c1","specialChar","base64Byte3","c2","c3","link1","link2","About","OSPARC_OFFICIAL","MergedLarge","CardLarge","__reloadIFrame","common","URLS","optionsMenu","EditLabel","labelFont","inputFont","newLabel","restartIFrame","editTitle","convertToStandaloneButton","evaluateConvertToStandaloneButton","restoreButton","loggerButton","imageColor","keywordToCSSFilter","keyword","rgbToCSSFilter","_rgb$split$map","_rgb$split$map2","rf","gf","bf","mi","ma","l4","l3","s3","s2","l2","setColorToImage","keywordOrRgb","filterValue","SVGImage","hexColor","rgbColor","myStyle","__applyImageColor","__updateWallet","__forceNullColor","getContextWallet","__updateColor","setImageColor","creditsColorKeyword","CreditsImage","__buttonTapped","__creditsContainer","__tapListener","__hideCreditsContainer","__showCreditsContainer","CreditsSummary","__positionCreditsContainer","__onTapOutsideMouse","cel","domEle","__handleOutsideEvent","onContainer","onButton","__updateTasksButton","__showTasks","nTasks","domeEle","setTasksContainerPosition","getTasksContainer","tasksContainer","__hideTasks","getNotifications","__updateButton","__notificationsContainer","NotificationsContainer","iconContainer","nUnreadNotifications","__hideNotificationsContainer","__showNotificationsContainer","__positionNotificationsContainer","markAllAsRead","__onTapOutside","defaultProps","_setTabbedView","tabbedView","myAccount","__myAccount","MyAccount","accountWindow","_onMenuChange","selectFirst","setSelectedButton","UserMenu","__bindWalletToHalo","__updateHaloColor","myUsername","myEmail","margin-left","creditsColor","_blocker","initKeepFocus","initKeepActive","iconColumnWidth","arrowColumnWidth","selectedButton","openedButton","openInterval","closeInterval","blockBackground","__scheduledOpen","__onAfterSlideBarAdd","__updateSlideBar","_placementTarget","openAtPoint","Separator","_getMenuLayout","_applyIconColumnWidth","setIconColumnWidth","_applyArrowColumnWidth","setArrowColumnWidth","_applySpacingX","setColumnSpacing","_applySpacingY","parentMenu","getParentMenu","setOpenedButton","getOpenedButton","resetOpenedButton","resetSelectedButton","__updateBlockerVisibility","getBlockBackground","_applySelectedButton","_applyOpenedButton","MenuSlideBar","slidebarLayout","_getMenuBounds","menuBounds","rootHeight","_assertSlideBar","cancelClose","subMenu","scheduleOpen","opened","scheduleClose","cancelOpen","legend","setLegend","legendPosition","_repositionFrame","_applyLegend","_applyLegendPosition","getLegendPosition","showCloseButton","firstTab","lastTab","TabButton","_onButtonClose","_applyShowCloseButton","setShowCloseButton","__showLabelOnTab","buttonLayout","setWallet","__updateCredits","__applyWallet","indicator","color1","color2","buyCredits","__walletsList","__walletDetails","walletsPage","WalletsList","walletDetails","WalletDetails","openWalletDetails","loadWallets","walletId2","walletModel","getWalletModel","isWalletsLoaded","excludeShareButton","personalWallet","__personalWalletId","__allPaymentMethods","__introLabel","__addPaymentMethodBtn","__addNewPaymentMethod","__fetchingMsg","__listContainer","__fetchPaymentMethods","gatewayWindow","__popUpPaymentGateway","paymentMethodFormUrl","__cancelPaymentMethod","__windowClosed","pgWindow","PaymentGatewayWindow","popUp","__populatePaymentMethodsList","allPaymentMethods","paymentMethodsUIList","paymentMethodsModel","__paymentMethodsModel","PaymentMethodListItem","__openPaymentMethodDetails","__deletePaymentMethod","paymentMethodModel","__findPaymentMethod","PaymentMethodDetails","__params","until","introContainer","refreshButton","__table","getTableModel","reloadData","TransactionsTable","DateFilters","table","_handleExport","ResourceInTableViewer","walletSelectBox","filterLayout","exportButton","setWalletId","_getSelectWalletId","dateFilters","UsageTable","fetchingImage","reportUrl","searchParams","started_at","PurchasesTable","CheckoutsTable","__fetchProfile","__createProfileUser","__createPrivacySection","__create2FASection","__createPasswordSection","__createDeleteAccount","__userProfileData","__userProfileModel","__userPrivacyData","__userPrivacyModel","__userProfileForm","__setDataToProfile","__setDataToPrivacy","privacyData","hideFullname","hideEmail","expirationLayout","expirationDateLabel","infoLabel","infoExtension","setHintText","addTarget","namesValidator","updateBtn","__resetUserData","privacyBtn","privacy","getHideFullname","getHideEmail","__resetPrivacyData","twoFAPreferenceSB","getTwoFAPreference","lastSelection","selectedId","discourageTitle","discourageText","currentPassword","resetBtn","new","deleteBtn","deleteAccount","DeleteAccount","_getIframeElement","__onNavigate","navigate","frameName","_applyFrameName","getBody","actualUrl","AbstractIframe","__attachInterframeMessageHandlers","iconURL","HIDDEN_TOP","toolbarHeight","__syncScheduled","__buttonsContainer","__diskUsageIndicator","__reloadButton","__zoomButton","persistentIframe","postThemeSwitch","standin","appRoot","iframeEl","buttonsContainer","diskUsageIndicator","DiskUsageIndicator","zoomButton","__syncIframePos","getIframe","getDiskUsageIndicator","actionButton","iframeParentPos","divPos","divSize","getToolbarHeight","isShowToolbar","__applyShowToolbar","setToolbarHeight","__attachTriggerers","__attachListeners","themeSwitchHandler","iframeDomEl","iframeSource","contentWindow","__handleIframeMessage","themeManager","category","vipMarket","MarketWindow","BillingCenterWindow","curateCurveControls","drawCurve","draw","dashed","edgeColor","widerCurve","M","stroke","edgeWidth","curve","dasharray","portArrow","marker","markers","updateCurve","mSegment","getSegment","cSegment","replaceSegment","removeCurve","getRectAttributes","rectAttrs","drawAnnotationText","back","drawAnnotationNote","recipientName","note","nLines","gNote","nested","trianOrangeCtrls","trianOrange","polygon","trianTransparentCtrls","trianTransparent","fobj","foreignObject","textChild","overflowWrap","drawAnnotationRect","updateText","representation","updateTextColor","updateTextSize","drawDashedRect","drawFilledRect","drawNodeUI","nodeUIColor","rx","ry","updateRect","updateItemPos","updateItemColor","updateCurveDashes","stroke-dasharray","updateCurveColor","markerDiv","drawPolygon","updatePolygonColor","drawPolyline","polyline","drawLine","drawPath","makeDraggable","createEmptyCanvas","SVG","__diffPatcher","jsondiffpatchPath","jsondiffpatch","obj1","jsonTreeViewerCssUri","jsonTreeViewerPath","jsonTree","purifyPath","sanitize","addHook","hasAttribute","radialMenuFontsCssUri","defSettings","__getDefaultSettings","hoverBackgroundColor","innerCircle","outerCircle","buttonGap","__getLatestCached","servicesObj","__addHits","__addTSRInfos","__addExtraTypeInfos","getServicesLatestList","excludeFrontend","excludeDeprecated","servicesList","servicesLatest","serviceKeys","serviceLatest","__isInCache","__addHit","__addTSRInfo","__addExtraTypeInfo","getResources","patchServiceData","historyEntry","hVersion","latestServices","serviceWVersion","isIterator","isProbe","favServices","cachedHit","favSrv","ITEM_HEIGHT","TITLE_PADDING","SPACING_IN","THUMBNAIL_SIZE","TITLE","THUMBNAIL","TAGS","FOOTER","FPOS","MODIFIED","UI_MODE","UPDATES","TSR","HITS","PERMISSION","footer","hGrid","border-width","fGrid","DateAndBy","__fitThumbnailHeight","background-origin","thumbnailLayout","checkThis","currentContext","currentWorkspaceId","currentFolderId","multiSelection","__dontShowTutorial","__workspacesList","__foldersList","__loadingFolders","__loadingWorkspaces","__dragWidget","__getActiveStudy","loadStudyId","getCurrentStudyId","addNotifications","__reloadFolders","__reloadStudies","__resetStudiesList","__reloadWorkspaces","getCurrentContext","getFilterData","searchWorkspaces","getOrderBy","fetchWorkspaces","fetchAllTrashedWorkspaces","__setWorkspacesToList","__addNewWorkspaceButton","searchFolders","getCurrentWorkspaceId","getCurrentFolderId","fetchFolders","fetchAllTrashedFolders","__setFoldersToList","__addNewFolderButton","__tasksReceived","noAccessText","__getNextStudiesRequest","__didContextChange","__addStudiesToList","nextRequest","quickStartInfo","quickStartWindow","studiesList","__reloadNewCards","__studyStateReceived","__reloadFolderCards","__reloadWorkspaceCards","getFetching","setResourcesToList","reloadCards","__configureStudyCards","__addNewStudyButtons","loadMoreBtn","__createLoadMoreButton","addNonResourceCard","UIFilterController","reloadNewCards","setWorkspacesToList","reloadWorkspaces","newWorkspaceCard","WorkspaceButtonNew","addNewWorkspaceCard","trashWorkspace","setTrashEmpty","untrashWorkspace","evaluateTrashEmpty","deleteWorkspace","setFoldersToList","reloadFolders","currentWorkspace","newFolderCard","FolderButtonNew","__createFolder","addNewFolderCard","currentFolder","parentFolderId","postFolder","__showMoveToDifferentWorkspaceWarningMessage","moveFolderTo","MoveResourceTo","destWorkspaceId","destFolderId","__folderToFolderRequested","__doMoveFolder","moveFolderToWorkspace","moveFolderToFolder","confirmationWin","__folderToTrash","trashFolder","trashDays","untrashFolder","deleteFolder","setMultiSelectionMode","getMultiSelection","__studyCardClicked","__attachDragHandlers","setDraggable","studyDataOrigin","DragDropHelpers","moveStudy","dragStart","dragEnd","studiesCont","lastIdx","getLastSelectedIndex","currentIdx","getIndex","minMax","setLastSelectedIndex","__getStudyData","setMultiSelection","__studyStateChanged","_e$getData2","__studyDebtChanged","reqParams","cParams","__getRequestParams","currentParams","snakeKey","sameContext","_ref5","_ref6","__getNextPageParams","studiesContainer","urlSearchParams","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_step$value","requestParams","nextPageParams","_ref7","_ref8","__addNewPlusButton","newPlusButton","NewPlusButton","newPlusButtonMenu","__newEmptyStudyBtnClicked","_e$getData4","__newPlanBtnClicked","_e$getData5","__newStudyFromServiceBtnClicked","__addTIPPlusButton","__addPlusButtons","plusButtonConfig","newStudyData","__addEmptyStudyPlusButton","__addNewStudyFromServiceButton","_this24","defTitle","newEmptyStudyBtn","_this25","latestVersion","latestMetadata","newStudyFromServiceButton","_this26","newPlansBtn","newStudiesConfig","newStudies","NewStudies","winTitle","templateInfo","expectedTemplateLabel","_this27","StudyBrowserHeader","importStudyButton","__createImportButton","selectStudiesButton","__createSelectButton","studiesMoveButton","__createMoveStudiesButton","studiesTrashButton","__createTrashStudiesButton","studiesDeleteButton","__createDeleteStudiesButton","__addSortByButton","__connectContexts","__connectDropHandlers","multiEnabled","_this28","getWorkspacesAndFoldersTree","setStudyBrowserContext","contextChanged","_this29","workspacesAndFoldersTree","_e$getData6","__studyToFolderRequested","_e$getData7","__trashStudyRequested","_this30","sortByButton","SortedByMenuButton","setOrderBy","_this31","GridButtonLoadMore","ListButtonLoadMore","_this32","importButton","importStudy","Import","__importStudy","_this33","moveStudiesButton","moveStudyTo","moveStudies","__doMoveStudy","_this34","getConfirmDeleteStudy","__createConfirmTrashWindow","__trashStudies","_this35","deleteButton","__createConfirmDeleteWindow","__doDeleteStudies","_this36","selectButton","__applyMultiSelection","studyItem","setDebt","_this37","__startStudyAfterCreating","newStudyName","_this38","templateCopyData","_this39","_this40","__removeFromStudyList","removeCard","trashed","writeAccess","deleteAccess","renameStudyButton","__getOpenLocationMenuButton","_renameStudyButton","__getRenameStudyMenuButton","editThumbnailButton","__getThumbnailStudyMenuButton","duplicateStudyButton","__getDuplicateMenuButton","__getConvertToPipelineMenuButton","exportStudyButton","__getExportCMisMenuButton","__getStudyDataMenuButton","billingsSettingsButton","__getBillingMenuButton","__getMoveStudyToMenuButton","__getTrashStudyMenuButton","__deleteOrRemoveMe","_deleteButton","__getDeleteStudyMenuButton","untrashButton","__getUntrashStudyMenuButton","_this41","openLocationButton","_this42","renameButton","renamer","Renamer","__updateName","_this43","thumbButton","editor","ThumbnailSuggestions","extractThumbnailSuggestions","suggestions","oldThumbnail","thumbnailEditor","ThumbnailEditor","newUrl","__updateThumbnail","_this44","_this45","studyBillingSettingsButton","_this46","__moveStudyToWorkspace","__moveStudyToFolder","_this47","_this48","_this49","__duplicateStudy","_this50","__updateUIMode","_this51","studyUI","_this52","__exportStudy","__deleteStudyRequested","_this53","__trashStudy","_this54","__createConfirmRemoveForMeWindow","__doDeleteStudy","_this55","_this56","__untrashStudy","_this57","__createDuplicateCard","isGrid","duplicatingStudyCard","GridButtonPlaceholder","ListButtonPlaceholder","Duplicate","_this58","__taskDuplicateReceived","_this59","exportTask","setSubtitle","textSuccess","_this60","uploadingLabel","importTask","importingStudyCard","FormData","upload","ep","percentComplete","processingLabel","_this61","_this62","studiesData","_this63","collabGids","amICollaborator","__removeMeFromCollaborators","arCopy","_this64","_this65","studyNames","studiesText","_this66","duplicateTaskUI","setTask","__attachDuplicateEventHandler","taskUI","_this67","finished","msgLevel","duplicatedStudyData","__updateAllButton","__reloadTemplates","__setResourcesToList","__templateStateReceived","templateItem","templatesList","__itemClicked","__evaluateUpdateAllButton","__getTemplateData","studyOptions","setPatchStudy","cancelStudyOptions","walletSelection","nodesPricingUnits","getNodePricingUnits","updateName","updateWallet","nodesIdsListed","StudyPricingUnits","includeInList","nodePricingUnits","selectedPricingUnitId","getPricingUnits","getSelectedUnitId","pricingPlanId","getPricingPlanId","NodePricingUnits","patchPricingUnitSelection","updateAllButton","__createUpdateAllButton","templatesAlias","__updateAllTemplates","anyUpdatable","getUpdatable","_updateAllTemplates","visibleCards","updatableCards","templatesData","uniqueTemplatesUuids","uniqueTemplatesData","__updateTemplates","_updateTemplates","uniqueTemplateData","templatePromises","finish","editButton","__getEditTemplateMenuButton","__getDeleteTemplateMenuButton","__editTemplate","__deleteTemplateRequested","__doDeleteTemplate","operationPromise","__removeFromTemplateList","__attachToTemplateEventHandler","toTemplateCard","toTemplateTaskUI","ToTemplate","__createToTemplateCard","__sortBy","SortServicesButtons","DefaultSorting","__loadServices","__setServicesToList","__addNewServiceButtons","__addSortingButtons","hasRights","testDataButton","__displayServiceSubmissionForm","addServiceButton","containerSortButtons","addServiceWindow","Headers","ok","populateTree","setFolder","datasetPromises","requestDatasetFiles","_onPointerMove","__splitterOffset","__activeDragSession","__lastPointerX","__lastPointerY","__isHorizontal","__beginSize","__endSize","splitpane","Slider","Splitter","__onSplitterMove","Pane","__setBlockerPosition","__createBlocker","splitter","getVisible","slider","newLayout","VLayout","HLayout","_applyOffset","splitterBounds","splitterElem","setLeft","setTop","splitterLocation","paneLocation","_setLastPointerPosition","__computeSizes","_finalizeSizes","beginSize","endSize","secondWidget","firstFlexValue","secondFlexValue","beginHint","endHint","allocatedSize","_isActiveDragSession","setOffset","decorateSplitter","decorateSlider","__workbenchPanel","WorkbenchPanel","__workbenchUI","getMainView","PRIMARY_COL_BG_COLOR","TAB_BUTTON_HEIGHT","openStudyDataManager","slidesEdit","annotationRectStart","showSnapshots","showIterations","__nodesPage","__studyTreeItem","__nodesTree","__storagePage","__studyOptionsPage","__fileInfoPage","__serviceOptionsPage","__workbenchPanelPage","__workbenchUIConnected","__iframePage","__loggerPage","__loggerView","__currentNodeId","__startAppButton","__editSlidesButton","__startAppButtonTB","__collapseWithUserMenu","sidePanels","CollapsibleViewLight","CARET_WIDTH","__createCollapsibleViewSpacer","__getSidePanelsNewWidth","collapsibleViewLeft","_sidePanels","setContent","collapsing","collapsibleView","sidePanelsNewWidth","sidePanelsWidth","precollapseWidth","__initViews","__connectEvents","__evalSlidesButtons","selectStudyItem","getToolbar","__createTabPage","tabPageBtn","__initPrimaryColumn","__initSecondaryColumn","__initMainView","tabViewPrimary","__removePages","topBar","__addTopBarSpacer","homeAndNodesTree","studyTreeItem","StudyTitleOnlyTree","nodesTree","NodesTree","addNewNodeBtn","running","openServiceCatalog","nodesPage","filesTree","FilesTree","dragMechanism","hideRoot","storagePage","tabViewSecondary","studyOptionsPage","fileInfoPage","serviceOptionsPage","__populateSecondaryColumn","tabViewMain","loadModel","workbenchPanelPage","iframePage","loggerView","loggerPage","startAppButtonTB","collapseWithUserMenu","CollapseWithUserMenu","tabView","tabViewTopBar","workbenchUI","showPipeline","setCurrentNodeId","__openIframeTab","__evalIframe","__removeNode","nodeIds","__removeNodes","edgeId","__removeEdge","filterByNode","__openLoggerTab","__workbenchChanged","nodeLogger","__getNodeLogger","debugs","warns","__addIframe","__openWorkbenchTab","__applyMaximized","__populateSecondaryColumnStudy","__populateSecondaryColumnFilePicker","__populateSecondaryColumnParameter","__populateSecondaryColumnNode","secondaryColumnStudyContent","StudyMedium","__getSlideshowSection","__getAnnotationsSection","snaps","__getSnapshotsSection","isVCDisabled","iters","__getIterationsSection","isMMDisabled","slideshowSection","slideshowButtons","editSlidesBtn","startAppBtn","canStart","isPipelineLinear","annotationsSection","annotationsButtons","addNoteBtn","startAnnotationsNote","addRectBtn","startAnnotationsRect","addTextBtn","startAnnotationsText","snapshotSection","snapshotButtons","takeSnapshotBtn","showSnapshotsBtn","iterationsSection","iterationButtons","createIterationsBtn","showIterationsBtn","filePicker","fpView","hasOutputAssigned","ParameterEditor","buildForm","_populateSecondaryColumnNode","nodeMetadata","inputsForm","inputs","outputsBox","nodeFilesBtn","nodeOptions","PanelView","_innerContainer","hasOutputs","offerProbes","__getNodeOptionsPage","NodeOptions","maximizeIframeCb","avoidConfirmation","getConfirmDeleteNode","__doRemoveNode","_doRemoveNode","connectedEdges","getConnectedEdges","removeNode","clearEdge","clearNode","removeEdge","dynamicNode","slideshowToolbar","__slideshowToolbar","SlideshowToolbar","slideshow","__openFirstNode","__moveToNode","leftNodeId","rightNodeId","__requestServiceBetween","desiredPos","__showNode","__hideNode","mainView","__mainView","prevNextButtons","__prevNextButtons","PrevNextButtons","prevButton","__prevButton","getPreviousButton","nextButton","__nextButton","getNextButton","runButton","__runButton","getRunButton","startPartialPipeline","stopPipeline","CARD_MARGIN","__nodeView","__isNodeReady","lastCurrentNodeId","NodeStatus","isCompNodeReady","__getNeedToRunDependencies","dependencies","getDependencies","wb","getUpstreamCompNodes","upstreamNodeId","upstreamNode","doesCompNodeNeedRun","__getNotReadyDependencies","__getUpstreamCompDependencies","__connectMaximizeEvents","__styleView","__getNodeView","BaseNodeView","createSettingsGroupBox","FilePickerView","getOutputsButton","NodeView","isMovingForward","getInstructionsWindow","requestStartNode","upstreamDependencies","setUpstreamDependencies","notReadyDependencies","showPreparingInputs","notStartedDependencies","getHeaderLayout","getLoggerPanel","sortedPipeline","getPipelineLinearSorted","insertNode","populateButtons","_applyStudy","getSortedNodes","srvCat","ServiceCatalog","setContext","__addServiceBetween","_addServiceBetween","addServiceBetween","addNodeToSlideshow","createEdge","__createFilterToolbar","__createTableLayout","lockLogs","LOG_LEVEL","TIMESTAMP","ORIGIN","MESSAGE","LOG_LEVELS","50","printRow","logLevel2Str","pairFound","pair","__textFilterField","__loggerModel","__loggerTable","_toolbar2","minLogLevelLabel","logLevelSet","logLevelKey","setLogLevel","_toolbar4","_toolbar5","_toolbar6","__pinChanged","__applyFilters","logLevelSelectBox","lockLogsButton","copyToClipboardButton","__copyLogsToClipboard","copySelectedToClipboardButton","__copySelectedLogToClipboard","downloadButton","__downloadLogs","loggerModel","LoggerModel","custom","tableColumnModel","columnmodel","Resize","Table","statusBarVisible","showCellFocusIndicator","forceLineHeight","colModel","getTableColumnModel","setDataCellRenderer","cellrenderer","defaultCellStyle","resizeBehavior","getBehavior","setDataRowRenderer","rowrenderer","ExpandSelection","__currentNodeIdChanged","__nodeSelected","__getLogsString","getFilteredRows","getSelectionModel","getAnchorSelectionIndex","getRowData","__addLogs","nodeLabelChanged","__updateTable","msgLogs","msgLog","addRows","isLockLogs","nFilteredRows","getFilteredRowCount","scrollCellVisible","setFilterString","setFilterLogLevel","getLogLevel","ttl","_entries","_ttl","PropFormBase","LABEL","CTRL_FIELD","UNIT","FIELD_LINK_UNLINK","ROW_HEIGHT","getDisableables","updateUnitLabelPrefix","_osparc$utils$Units$g","Units","getLabels","unitPrefix","unitShort","unitLong","readWrite","gridPos","firstLabel","text-overflow","white-space","__createInfoWHint","__createUnit","__makeLabelsResponsive","extendedVersion","getInputs","_getLabelFieldChild","_getInfoFieldChild","getControl","filteredData","changedXUnits","getChangedXUnits","nodeMD","decomposeXUnit","convertValue","evalFieldRequired","inputsRequired","getInputsRequired","toolTipSuffix","newToolTip","infoButton","newHintText","getHintText","xUnits","ctrls","getControls","composeXUnit","x_unit","setInputsUnits","inputsUnits","__switchPrefix","hasVisibleInputs","getBuddy","hasAnyPortConnected","setAccessLevel","PortInfoHint","unitRegistered","unitLabel","originalUnit","nextPrefix","getNextPrefix","oldPrefix","newPrefix","_getLayoutChild","_child","_layoutProps","_getCtrlFieldChild","__geUnitFieldChild","__ctrlLinkMap","__linkUnlinkStackMap","__fieldOptsBtnMap","__addLinkCtrls","setDroppable","__attachDragoverHighlighter","highlightEdge","linkFieldModified","fileRequested","filePickerRequested","parameterRequested","changeChildVisibility","getRetrievingAtom","getDownloadingAtom","getUploadingAtom","getFailedAtom","getSucceededAtom","getRetrievedEmpty","isFieldParametrizable","paramMD","getParameterOutputTypeFromMD","retrieving","getIconForStatus","__addInputPortButton","__getEmptyDataLastPorts","emptyDataPorts","minVisibleInputs","getMinVisibleInputs","portIds","getPortIds","__getVisibleEmptyDataLastPort","__addInputPortButtonClicked","lastEmptyDataPort","__showPort","__checkAddInputPortButtonVisibility","entryPos","layoutElement","__excludePort","makeInputsDynamic","hidePortId","__createLinkUnlinkStack","linkUnlinkStack","linkOptions","__createLinkOpts","unlinkBtn","__createUnlinkButton","fieldOptsBtn","__populateFieldOptionsMenu","removePortLink","__addInputsMenuButtons","__getSelectFileButton","newParamBtn","__getNewParamButton","paramsMenuBtn","__getParamsMenuButton","areParamsEnabled","inputRequiredButton","__getInputRequiredButton","__connectToInputNode","targetPortId","inputNodeId","outputKey","addInputNode","addPortLink","thisNode","getInputNodes","inputNode","paramButton","Ports","arePortsCompatible","compatible","__getInputMenuButton","inputNodePortsMenu","inputMenuBtn","__populateInputNodePortsMenu","_loop2","selectFileButton","existingParamMenu","existingParamBtn","__populateExistingParamsMenu","paramNode","inputRequiredBtn","evalButton","toggleInputRequired","itemOptions","_loop3","fieldOpts","__createDropMechanism","msgDataFn","pId","__arePortsCompatible","evalRequired","addPortButton","disableables","vis","setPortErrorMessage","setPortErrorMsg","__setRetrievingStatus","dataSize","_layoutProps2","node1Id","port1Id","node2Id","port2Id","uiElement","port1Key","destinations","port2Key","__highlightCompatibles","_data2","compatiblePorts","__unhighlightAll","dragPortId","__isPortAvailable","__createFieldCtrl","controlParam","__resetCtrlField","getControlLink","__addLinkCtrl","controlLink","__portLinkAdded","fromNodeId","fromPortId","ctrlLink","__portLinkRemoved","getLinks","links","toPortId","nodeUuid","highlightEdgeUI","toNodeId","fromPortLabel","addToolTip","setInputLinks","inputLinks","isDataALink","__tree","__disableSlides","__saveSlides","__initRoot","__initTree","__initData","__buildTree","tree","VirtualTree","openMode","rootData","instructions","NodeSlideTreeItem","__itemActioned","__saveInstructions","sorter","aPos","bPos","__convertToModel","nodeInTree","getInstructions","topLevelNodes","allChildren","setChildren","__show","fnct","__hide","__moveUp","__moveDown","__getVisibleItems","itemMdl","oldPos","idx2","setInstructions","baseURL","AbstractResource","__buildForm","__renderer","okButton","openSnapshot","__snapshotsSection","__gitGraphScrollLayout","__gitGraphWrapper","__snapshotPreview","__editSnapshotBtn","__openSnapshotBtn","__snapshots","__currentSnapshot","__selectedSnapshotId","snapshotsSection","__rebuildSnapshots","__buildSnapshotButtons","snapshotPreview","WorkbenchUIPreview","__rebuildSnapshotsGraph","gitGraphLayout","gitGraphCanvas","gitGraphInteract","gitGraphWrapper","GitGraph","populateGraph","__snapshotSelected","buttonsSection","editSnapshotBtn","__createEditSnapshotBtn","__editSnapshot","openSnapshotBtn","__createOpenSnapshotBtn","selectedSnapshot","__loadSnapshotsPreview","__iterations","openIteration","__iterationsSection","__loadingTable","__iterationsTable","__iterationPreview","__tagIterationBtn","__deleteIterationBtn","__openIterationBtn","__selectedIterationId","__lastUpdate","__lastFunc","__buildIterations","iterationsPreview","loadingTable","iterationPromises","iteration","__listenToNodeUpdates","__rebuildIterationsTable","tagIterationBtn","__createTagIterationBtn","__tagIteration","deleteIterationBtn","__createDeleteIterationBtn","openIterationBtn","__createOpenIterationBtn","__iterationUpdated","dataUpdate","iterationData","iterationDataUpdated","__throttleUpdate","__updateNewData","iterationsToTable","iterationsTable","Iterations","populateTable","selectedRow","getRow","iterationId","__iterationSelected","__reloadIteration","studyUuid","__studyUuid","__resetIdlingTimeBound","__resetIdlingTime","INACTIVITY_REQUEST_PERIOD_S","__idlingTime","__idleInterval","__idleFlashMessage","__idleFlashMessageIsShowing","__idleFlashMessageTimeoutId","__removeIdleFlashMessage","WebWorkerScheduler","displayDurationS","__userIdled","inactivityThresholdT","getUserInactivityThreshold","flashMessageDurationS","__createdStyles","__validators","__preferredFormats","getPreferredFormats","FONT_FORMATS","VALIDATION_TIMEOUT","__styleSheet","__queueInterval","sourceUrls","__flushQueue","__require","fontLookupKey","__createFontLookupKey","__removeRule","preferredFormats","browserVersion","os","osVersion","removeStyleSheet","sourcesMap","__getSourcesMap","__getRule","__addRule","Validator","__onFontChangeStatus","cbContext","formats","formatList","__getSourceForFormat","completeRule","__fixCssText","styleSheets","removeDefaultHelperElements","areaSize","_moveToEdgeAndAlign","_isInRange","AbstractAxis","range1End","range2Start","__playState","__playing","__setEnded","__ended","isPaused","CssTransform","getOrigin","3d","get3D","perspective","getPerspective","perspective-origin","getPerspectiveOrigin","backface-visibility","getBackFaceVisibility","__cssKeys","transformCss","getTransformValue","setPerspective","setPerspectiveOrigin","valueX","valueY","setBackfaceVisibility","getBackfaceVisibility","properties3d","_compute3dProperty","_computeAxisProperties","cssValue","dimensions","getImplementation","getDomParser","getSelectSingleNode","selectSingleNode","getSelectNodes","selectNodes","getElementsByTagNameNS","getDomProperties","getProperty","getAttributeNS","setAttributeNS","getCreateElementNS","getCreateNode","createNode","getQualifiedItem","Xml","__tmpl","__emptyStyles","__computePosition","leftCss","topCss","backgroundImageUrl","tmpl","workbenchData","workbenchUIData","__workbenchInitData","__workbenchUIInitData","restartAutoSaveTimer","pipelineChanged","reloadModel","openNode","showInLogger","deserialized","CANT_ADD_NODE","CANT_DELETE_NODE","linkedNodeIDs","linkedNodeID","__nodes","__edges","getWorkbenchInitData","__deserialize","allModels","recursive","upstreamNodes","linkNode","__getDownstreamNodes","downstreamNodes","inputNodeIds","nodesWithoutInputs","inputNodes","allNodes","_edges","getInputNodeId","getOutputNodeId","getEdgeId","_edges2","nodeLeftId","nodeRightId","autoConnect","existingEdge","nodeLeft","nodeRight","Edge","addEdge","createAutoPortConnection","setOutputConnected","setInputConnected","__createNode","_createNode","errorMsgData","isPipelineRunning","service_key","service_version","__initNodeSignals","__addNode","populateNodeData","giveUniqueNameToNode","__filePickerNodeRequested","__parameterNodeRequested","_e$getData3","__probeNodeRequested","downstreamNode","getFreePosition","toTheLeft","nodeWidth","NodeUI","NODE_WIDTH","nodeHeight","NODE_HEIGHT","avoidY","nId","getFarthestPosition","_filePickerNodeRequested","filePickerMetadata","requesterNode","freePos","filePickerId","fileObj","setOutputValueFromStore","getLocation","getDatasetId","getFileId","_x5","_parameterNodeRequested","parameterMetadata","parameterNode","pmId","getPortType","_x6","_x7","_probeNodeRequested","_callee4","requesterPortMD","probeMetadata","probeNode","probeId","_context4","_x8","_x9","_removeNode","_callee5","_context5","connectedEdgeId","_x10","_callee6","leftNode","rightNode","_context6","_x11","_x12","_x13","removeInputNode","removeNodePortConnections","edges","edg","_nodes","__populateNodesData","populateNodeUIData","workbenchInitData","workbenchUIInitData","__deserializeNodes","__deserializeEdges","setDeserialized","metadataPromises","__addInputOutputNodesAndEdges","inputOutputNodeIds","inputOutputNodeId","_i4","_nodes2","serializeUI","getMarker","changedFieldKey","studyDataUI","Slideshow","initCurrentNodeId","initMode","annotations","__annotationsInitData","__applyMode","getAnnotationsInitData","nullAnnotationsInitData","addAnnotation","annotation","getAnnotations","removeAnnotation","annotationId","__metaData","setOutputs","__inputNodes","__inputsRequired","populateWithMetadata","inputAccess","dynamicV2","serviceUrl","portsConnected","bootOptions","inputConnected","outputConnected","keyChanged","probeRequested","fileUploaded","outputListChanged","changeInputNodes","changeInputsRequired","hasBootModes","populateBootModes","bootModeSB","bootModesMD","sbItems","bootModeId","bootModeMD","defaultBMId","getBootModesSelectBox","linkedNodeIds","__settingsForm","__posX","__posY","__iframeHandler","getSlideshowInstructions","isInKey","__applyNewMetaData","newV","oldV","__getInputData","__getInputUnits","changedUnits","inputId","outputId","getFirstOutput","hasInputs","setInputs","__addSettings","populateInputOutputData","setBootOptions","__initLogger","__initParameter","nodeUIData","__addMarker","__setInputData","__setInputUnits","__setInputDataAccess","addInputNodes","setInputsRequired","oldProgress","getProgress","IframeHandler","setIFrame","__applyPropsForm","checkIsPipelineRunning","Auto","setPropsForm","oldPortsConnected","getPortsConnected","portConnected","connection","newConnection","oldPortConnected","setPortsConnected","_portsConnected","callRetrieveInputs","nodeRequestSignal","__applyOutputs","nodeOutputs","NodeOutputs","setOutputsForm","toggleMarker","__removeMarker","markerModel","setMarker","inputData","inputsCopy","setInputAccess","_defineProperty","setHasOutputs","setModified","__getOutputData","__getOutputsData","outputsData","outKey","outData","__applyErrors","loc","_createAutoPortConnection","autoConnections","outPorts","inPorts","outPort","inPort","getAutoConnectPorts","t1","t2","t3","isInputNode","canNodeStart","getInteractive","stopService","stopDynamicService","getConfirmStopNode","renameNode","setLogger","getParameterOutputType","setParameterOutputValue","urlRetrieve","updReq","reqData","port_keys","sizeBytes","failure","msgData","stopIframe","nodeStatus","getProgressSequence","addProgressMessage","attachHandlersToStartButton","startButton","executeListenerId","attachHandlersToStopButton","__deleteInBackend","convertToParameter","newMetadata","convertToIterator","linspace_start","linspace_stop","linspace_step","nodeEntry","getInputAccess","getBootOptions","serializeOutput","filteredNodeEntry","foldersCached","folderAdded","folderRemoved","foldersData","folderData","trashedFoldersData","putFolder","oldParentFolderId","folderMoved","setParentFolderId","setWorkspaceId","Folder","workspacesCached","workspaceAdded","workspaceRemoved","iconsSize","createNewWorkspaceData","workspacesData","workspaceData","trashedWorkspacesData","postWorkspace","newWorkspaceData","newWorkspace","putWorkspace","propKey","modifiedAt","getWorkspaces","Workspace","__initLayout","__tasks","CALC","HALO","createTaskLayout","progressState","createProgressBar","progressBar","ProgressBar","halo","progressUpdate","pBar","progressTitle","__applyOverallProgress","__overallProgressBar","overallPBar","taskFound","newTask","viewContext","itemReset","itemSelected","getFilenameFromPath","splitFilename","getOutputLabel","outFileValue","FileDownloadLink","extractLabelFromLink","isOutputFromStore","isOutputDownloadLink","setOutputValue","outputValue","outFile","setOutputValueFromLink","resetOutputValue","getOutputFileMetadata","outValue","file_id","buildFileFromStoreInfoView","showFields","_Object$entries","_Object$entries$_i","_val","buildDownloadLinkInfoView","urlEntry","labelEntry","downloadOutput","downloadFileBtn","RELOAD","FILES_TREE","DOWNLOAD_LINK","__filesTree","__selectButton","__selectedFile","__selectedFileFound","__fileDownloadLink","__setOutputValueFromLink","__reloadFilesTree","__buildInfoLayout","__addProgressBar","__buildWorkbenchLayout","setMargin","__buildAppModeLayout","progressLayout","alwaysEnabled","getValidProgress","progressChanged","validProgress","formRend","__getDownloadFileButton","resetFileBtn","__getResetFileButton","__resetOutput","__getUploadFileSection","uploadFileSection","uploadPendingFiles","__getFileDropSection","fileDrop","FileDrop","resetDropAction","fileUploader","FileUploader","retrieveUrlAndUpload","ONE_FILE_ONLY","__getDownloadLinkSection","fileDownloadLink","downloadLinkSection","intro","collapsibleViews","newFileSection","setDropHereMessage","newFilePView","downloadLinkPView","fileBrowserLayout","__getFileBrowserLayout","usedFilePView","radioCollapsibleViews","RadioCollapsibleViews","cv","getInnerContainer","addCollapsibleView","openCollapsibleView","treeLayout","treeFolderLayout","showLeafs","folderViewer","FolderViewer","selectionData","__selectionChanged","isDir","__checkSelectedFileIsListed","isFile","__itemSelected","openNodeAndParents","selectBtn","__getOutputFile","loadFilePath","_outFile","selectedData","setSelectedFile","__tasksContainer","authors","xType","__serviceData","_introText","ServicesInStudy","_servicesGrid","servicesInStudy","_populateLayout","__populateEmptyLayout","INFO_BUTTON","_patchNode","fetchButton","emptyStudy","_populateIntroText","_populateHeader","_populateRows","serviceDetails","labelLabel","CURRENT_VERSION","COMPATIBLE_VERSION","UPDATE_BUTTON","anyServiceDeprecated","anyServiceRetired","anyServiceInaccessible","getLatestVersion","colorVersionLabel","_populateIntroText2","inaccessibleText","inaccessibleLabel","deprecatedText","deprecatedLabel","retiredText","retiredLabel","upToDateText","upToDateLabel","useUpdateButtonText","useUpdateButtonLabel","notUpToDateText","notUpToDateLabel","__updateService","_updateService","__updateAllServices","_updateAllServices","currentVersionLabel","compatibleVersionLabel","updateButton","updatableServices","secondaryButton","__secondaryButton","primaryButton","primaryText","secondaryText","__primaryButton","getPrimaryButton","getSecondaryButton","__applyPrimaryAppearance","primaryBtn","__applySecondaryAppearance","secondBtn","PartContainer","openOptions","EXTRA_INFO_WIDTH","THUMBNAIL_MIN_WIDTH","THUMBNAIL_MAX_WIDTH","_attachHandlers","_rebuildLayout","setService","setNodeId","setInstanceLabel","setStudyId","setOpenOptions","instanceLabel","serviceLarge","__createDeprecated","__createDescription","editInTitle","__createViewWithEdit","__openDescriptionEditor","copyMetadataButton","buttonsLayout","copyStudyIdButton","__copyStudyIdToClipboard","copyNodeIdButton","__copyNodeIdToClipboard","__createIcon","iconLayout","__openIconEditor","__createName","titleLayout","__openTitleEditor","extraInfo","__extraInfo","extraInfoLayout","__createExtraInfo","maxThumbnailHeight","thumbnailWidth","__createThumbnail","__openThumbnailEditor","infoAndThumbnail","descriptionUi","__createDescriptionUi","__createResources","editBtn","serviceIcon","serviceName","getInstanceLabel","ServiceUtils","__createNodeId","__createKey","__copyKeyToClipboard","__createIntegrationVersion","__createDisplayVersion","__openVersionDisplayEditor","__createReleasedDate","__createContact","__createAuthors","__createAccessRights","isOpenOptions","__openAccessRights","__createClassifiers","__openClassifiers","__createQuality","__openQuality","extraInfosToGrid","createNodeId","createKey","createVersion","createVersionDisplay","createReleasedDate","createContact","createAuthors","createAccessRights","createClassifiers","createQuality","createThumbnail","cbAutoPorts","__patchService","createDescription","resourcesLayout","createResourcesInfoCompact","resourcesToResourcesInfoCompact","__createRawMetadata","JsonTreeWidget","iconEditor","newIcon","titleEditor","oldVersionDisplay","versionDisplayEditor","newVersionDisplay","updatedServiceData","validUrl","textEditor","MarkdownEditor","newDescription","serviceDataCopy","__isTemplate","__canIWrite","infoElements","__infoElements","infoLayout","infoElementsToLayout","copyIdButton","DESCRIPTION","createDescriptionMD","AUTHOR","createOwner","ACCESS_RIGHTS","CREATED","createCreationDate","createLastChangeDate","createTags","__openTagsEditor","pathLabel","__createStudyId","createUuid","thumb","__patchStudy","setQuality","setTags","__studyData","debtPayed","__studyWalletId","__debtMessage","createGroupBox","__buildDebtMessage","__buildWalletGroup","__buildPricingUnitsGroup","debtMessage","boxContent","paramsGet","__addDebtLayout","__getSelectedWallet","__switchWallet","__getStudyWallet","wllt","__openBuyCreditsWindow","__transferCredits","__debtPayed","originWallet","destWallet","__doTransferCredits","creditAccountBox","paramsPut","pricingUnitsLayout","__serviceMetadata","__fetchUnits","Pricing","fetchPricingPlansService","__populateList","pricingUnitsData","pUnits","PricingUnitTiers","notFound","__buildPreview","workbenchUIPreview","__studyId","__nextRequestParams","removeComments","loadMoreButton","__getNextRequest","comments","__addComments","nextRequestParams","commentsTitle","commentUi","CommentUI","commentAdded","commentField","commentText","contents","SERVICE","updateClassifiers","__classifiersTree","__createRRIDSection","__createClassifiersTree","__createButtons","rridLayout","addRRIDClassifierBtn","__addRRIDClassifier","classifiersTree","ClassifiersFilter","recreateTree","saveBtn","__saveClassifiers","rrid","newClassifiers","getCheckedClassifierIDs","selectedClassifiers","Classifiers","getClassifiersAsTree","ClassifiersTree","__initResourceData","updateQuality","GridPos","clCurrent","clTarget","reference","edit","__copyQualityData","__enabledQuality","__TSRSection","__tsrGrid","__createEditButtons","__createTSRSection","__createEnableSection","__populateForms","enabledQuality","helpTextMD","__populateEnable","__populateTSR","__populateTSRHeaders","__populateTSRData","schemaRules","headerTSR","headerCL","headerTargetCL","headerRef","ruleWHint","FieldWHint","copyTSRCurrent","copyTSRTarget","tsrTotalRating","updateTotalTSR","ruleKey","currentRule","currentRuleLayout","updateCurrentLevel","ruleRating","newScore","ruleRatingWHint","hintPosition","targetRule","targetsBox","targetItem","newMaxScore","referenceMD","saveButton","__save","buttonsToolbar","newQuality","tsr_current","tsr_target","__selectedTags","__renderLayout","updateTags","__resourceId","__tagsContainer","__addTagButton","TextFilter","tagsContainer","scrollTags","addTagButton","__repopulateTags","newItem","TagItem","modes","EDIT","tagButtons","__tagButton","tagButton","TagToggleButton","isLiveUpdate","__saveAddTag","__saveRemoveTag","__getAddTagPromise","__getRemoveTagPromise","_save","updatedStudy","_tagId","BOOT_MODE","anyBootOptions","__updateBootMode","newBootModeId","newBootOptions","myGID","nClassifiers","tsrLayout","addStars","devObj","devObjCopy","addTags","noTagsLabel","selectedTag","__titleWithEditLayout","titleWidth","hasButton","extraInfos","positions","inline","QUALITY","CLASSIFIERS","LOCATION","mainInfoGrid","mainInfoLayout","extraInfoGrid","row2","gridInfo","_titleLayout","box1","__createSectionBox","box2","__studyDataClone","__shareWith","__publishTemplateBtn","__copyWData","publishWithData","shareWith","PublishTemplate","publishTemplateBtn","getSelectedGroups","copyData","__evaluateOpenButton","loadingImage","unitsBoxesLayout","unitsLoading","unitsReady","__fetchStudy","hasTitle","walletSelected","__buildTopSummaryLayout","__buildOptionsLayout","__buildButtons","titleField","__openStudy","_openStudy","titleSelection","isPatchStudy","setPriority","setThumbnail","ListButtonBase","SPACER","LOCK_STATUS","PROGRESS","ICONS_LAYOUT","OWNER","SHARED","LAST_CHANGE","OPTIONS","MENU_BTN_DIMENSIONS","setGroupId","__createOwner","tagUI","moreButton","__makeItemResponsive","menuSelectionStack","_menuSelectionStack","_menuSelectionStack2","getAllowEmptySelection","IFilter","registerFilter","_getMessageName","getFilterId","getFilterGroupId","_filterChange","publish","UIFilter","registerContainer","containerId","registerFilterContainer","resetGroup","setContainerVisibility","setFilterContainerVisibility","__state","__filterContainers","__getInputMessageName","__getOutputMessageName","__resourceType","__buildFiltersMenu","__currentFilter","getSharedWithOptions","__filtersMenu","sharedWithButton","__addSharedWith","__addTags","classifiersButton","__addClassifiers","serviceTypeButton","__addServiceTypes","__showFilterMenu","__hideFilterMenu","__filter","__resetFilters","getTextFilterValue","tagsMenu","sharedWithMenu","sharedWithRadioGroup","option","classifiersMenu","classifierButton","display_name","__addChip","serviceTypeMenu","serviceTypes","serviceId","tagIds","__removeChip","optionId","optionLabel","__removeChips","activeFilter","chip","__createChip","chipType","chipId","chipLabel","chipButton","chipFound","chipsFounds","textFilter","__removedItems","__removePriority","openMenu","overflowIndicator","overflowHandling","hideItem","showItem","getOverflowHandling","overflowWidget","getOverflowIndicator","_recalculateOverflow","requiredWidth","overflowWidgetWidth","childToHide","_getNextToHide","margins","childWidth","__hideChild","overflowWidgetMargins","removedChild","removedChildWidth","fits","__showChild","setRemovePriority","_applyOverflowHandling","_applyOverflowIndicator","__allowMenuOpenHover","_setAllowMenuOpenHover","_isAllowMenuOpenHover","resetSpacing","setShow","addSpacer","getMenuButtons","menubar","__onSyncAppearance","__resourcesList","__groupedContainersList","workspacesContainer","__workspacesContainer","CardContainer","foldersContainer","__foldersContainer","nonGroupedContainer","__nonGroupedContainer","__createFlatList","groupedContainers","__groupedContainers","changeVisibility","folderSelected","folderUpdated","moveFolderToRequested","trashFolderRequested","untrashFolderRequested","deleteFolderRequested","workspaceSelected","workspaceUpdated","trashWorkspaceRequested","untrashWorkspaceRequested","deleteWorkspaceRequested","changeContext","studyToFolderRequested","folderToFolderRequested","sortListByPriority","getPriority","cardExists","newCard","getCardKey","isValidCard","getGroupBy","noGroupContainer","__getGroupContainer","__addCardToContainer","getContentContainer","groupedContainer","__createGroupContainer","headerLabel","headerColor","groupContainer","GroupedCardContainer","headerIcon","loadingResourcesBtn","__createCard","eName","fitToContainer","resourcesList","__cleanAll","__addFoldersContainer","flatList","setContainerSpacing","__resourceToCards","newCards","currentCards","workspacesList","workspacesCards","__workspaceToCard","__createWorkspaceCard","WorkspaceButtonItem","foldersList","folderCards","__folderToCard","__createFolderCard","FolderButtonItem","__moveNoGroupToLast","grpContainer","__groupByTags","setHeaderIcon","getHeaderLabel","__groupByShareWith","orgIds","cardsCreated","__sharedWithButtons","__tagButtons","__serviceTypeButtons","trashContext","trashStudyRequested","changeSharedWith","changeSelectedTags","changeServiceType","__workspacesAndFoldersTree","__trashButton","filtersSpacer","__createWorkspacesAndFoldersTree","__createTrashBin","__createTagsFilterLayout","__createSharedWithFilterLayout","_scrollView","__createServiceTypeFilterLayout","WorkspacesAndFoldersTree","rowConfig","getPane","getRowConfig","totalHeight","itemCount","defaultItemSize","__attachDropHandlers","dragOver","dragLeave","studiesParams","foldersParams","workspacesParams","nTrashedStudies","nTrashedFolders","nTrashedWorkspaces","__createResourceTypeContextButtons","resourceTypeContextButtons","studiesButton","__createStudiesButton","templatesButton","__createTemplatesButton","servicesButton","__createServicesButton","templateAlias","sharedWithLayout","tagsLayout","__populateTags","__getSelectedTagIds","showAllButton","showingAll","editTagsButton","foundBtn","_treeFolderLayout","folderTree","selectedFolder","findItemId","SlidesBase","WINDOW_WIDTH","CONTENT_PADDING","arrowsLayout","__createArrows","__createStack","__createFooter","__setSlideIdx","CONTENT_WIDTH","__slideCounter","__prevBtn","__nextBtn","prevBtn","slideCounter","nextBtn","firstSlide","lastSlide","_getSlides","slide","slideContainer","footerItems","_getFooterItems","footerItem","footerLinks","videoText","videoLabel","manualsLabel","manualText","licenseText","licenseLabel","ElectrodeSelector","PostPro","S4LPostPro","MoreInformation","S4LLiteSpecs","S4LLiteUI","docLink","licenseLink","licenseUrl","__createContent","introTitle","intro1","welcomeText","welcome","intro2","__getFooterItems","_onKeyUpDown","__openTimer","_onOpenInterval","__closeTimer","_onCloseInterval","__scheduleOpen","__scheduleClose","_getChild","iter","loop","_isInMenu","_isMenuOpener","menus","_getMenuButton","getActiveMenu","getOpenInterval","getCloseInterval","__onPreventContextMenu","__selectionKeys","Enter","Space","Escape","getSelectedButton","_onKeyPressUp","_onKeyPressDown","_onKeyPressLeft","_onKeyPressRight","_onKeyPressEnter","_onKeyPressSpace","menuOpener","getMenuBar","tourSelected","__isSelectorVisible","contextSelector","__getTourButton","seqButton","__applyTours","toursLayout","tourTitle","skipPressed","nextPressed","endPressed","toTours","__nextRequested","getStepIndex","getNSteps","__updateButtons","lastStep","AcceleratingTimer","firstInterval","minTimer","timerDecrease","__executed","__startInternalTimer","fireExecuteEvent","__stopInternalTimer","getFirstInterval","minimum","getMinTimer","decrease","getTimerDecrease","localizedKey","_keyNames","keyNames","subtitleLayout","__getForm","__getButtons","__amountInput","buyBtn","__buyBtn","formContainer","amountContainer","BuyCreditsInput","getCreditPrice","paymentMethodContainer","paymentMethodLabel","paymentMethodSelect","AppMotionSelect","unsavedCardOption","__source","__blockerElement","_createBlockerElement","isDOMNodeInserted","mutationRecord","addedNodes","removedNodes","observer","mutationRecords","_syncSourceAfterDOMMove","childList","subtree","_onDOMNodeInserted","_onIframeLoad","getNativeHelp","iframeDomElement","_applyScrollbar","TO_CHARCODE","quot","amp","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","ordf","laquo","shy","macr","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","divide","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","fnof","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","beta","gamma","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","bull","hellip","prime","Prime","oline","frasl","weierp","real","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","exist","nabla","isin","notin","ni","prod","minus","lowast","radic","infin","ang","and","or","cap","cup","int","there4","sim","cong","asymp","equiv","le","ge","sup","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","rang","loz","spades","clubs","hearts","diams","OElig","oelig","Scaron","scaron","Yuml","circ","tilde","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","permil","lsaquo","rsaquo","euro","StringEscape","FROM_CHARCODE","fromText"," ","\n","INFO_ICON","__createHint","_hint","__applyHintText","showOrganizations","__showOrganizations","__selectedCollaborators","__potentialCollaborators","__reloadPotentialCollaborators","__textFilter","__collabButtonsContainer","__searchingCollaborators","__searchDelayer","__shareButton","setCompact","filterTextField","__searchUsers","collabButtonsContainer","searchingCollaborators","SearchingCollaborators","__shareClicked","__addPotentialCollaborators","__showProductEveryone","showProductEveryone","__collaboratorButton","collaboratorButton","CollaboratorToggleButton","existingCollabs","existingCollaborators","potentialCollaborator","__orgsPage","__orgDetails","orgsPage","OrganizationsList","orgDetails","OrganizationDetails","openOrganizationDetails","reloadOrganizations","organizationId","openOrgDetails","orgModel","getOrgModel","setCurrentOrg","isOrganizationsLoaded","__loadMarked","marked","__resizeMe","resized","__applyMarkdown","linkColor","linkHtml","linkRepresentation","use","safeHtml","__parseImages","__getDomElement","elemHeight","__getChildrenElementHeight","elemMaxWidth","__getChildrenElementMaxWidth","__getElementHeight","getNoMargin","__getElementSize","__getElementWidth","localName","__newNotificationBase","user_id","user_from_id","__newOrganizationObj","baseNotification","specNotification","actionable_path","resource_id","__newStudyObj","__newTemplateObj","__newAnnotationNoteObj","__newWalletObj","postNewOrganization","postNewAnnotationNote","postNewWallet","markAsRead","isRead","notificationId","setRead","__addNotification","notificationObj","Notification","shareesData","__populateLayout","shareeData","subel","subval","one","wrapValue","styleValue","__label","__getHeaderText","_regExp","__spacing","__hasMoreLines","__childIndex","lineWidth","lineChildren","gapBefore","__computeGapBeforeChild","childHeight","lineBreak","childIndex","INumberForm","setMinimum","getMinimum","setSingleStep","getPageStep","IRange","slideAnimationEnd","__sliderLocation","__knobLocation","__knobSize","__dragMode","__dragOffset","__trackingMode","__trackingDirection","__trackingEnd","__dragTimer","__lastValueEvent","__dragValue","__scrollAnimationframe","_updateKnobPosition","isHorizontal","backward","slideForward","slideBack","slidePageForward","slidePageBack","slideToBegin","slideToEnd","locationProperty","cursorLocation","sliderLocation","knobLocation","_fireValue","__computeTrackingEnd","deltaSlider","deltaPosition","positionSlider","_valueToPosition","_positionToValue","availSize","knobSize","sizeProperty","_updateKnobSize","__slidingSpace","_setKnobPosition","getKnobFactor","__animateTo","__normalizeValue","resetWidth","resetHeight","_applyMinimum","MAX_HEIGHT","poweredByLabel","poweredText","portalLink","aboutText","aboutLabel","frontendPage","__populateFrontendEntries","backendPage","__populateBackendEntries","__createFrontendEntries","flat","__createEntry","entryLabel","entryVersion","__createTitle","__createTags","_editInTitle","rawMetadata","more","setCollapsed","copy2Clip","__createCreationDate","__createLastChangeDate","__copyUuidToClipboard","descriptionLayout","descriptionContainer","createResourcesInfo","resourcesToResourcesInfo","blank","checkbox-checked","checkbox-blank","checkbox-undetermined","radiobutton-checked","radiobutton-unchecked","window-minimize","window-maximize","window-restore","window-close","cursor-copy","cursor-move","cursor-alias","cursor-nodrop","arrow-right","arrow-left","arrow-up","arrow-down","arrow-forward","arrow-rewind","arrow-down-small","arrow-up-small","arrow-up-invert","arrow-down-invert","arrow-right-invert","knob-horizontal","knob-vertical","tree-minus","tree-plus","select-column-order","table-ascending","table-descending","treevirtual-line","treevirtual-minus-only","treevirtual-plus-only","treevirtual-minus-start","treevirtual-plus-start","treevirtual-minus-end","treevirtual-plus-end","treevirtual-minus-cross","treevirtual-plus-cross","treevirtual-end","treevirtual-cross","folder-open","menu-checkbox","menu-checkbox-checked","menu-radiobutton-checked","menu-radiobutton","tabview-close","__loadingIcon","editValue","MODES","DISPLAY","editable","__labelWidth","isEditable","_applySpecificFont","oldFont","_applyEditable","BILLING_CENTER_BUTTON_SIZE","TIME_RANGES","buttonSize","_buttonSize","trItem","CreditsPerService","__buildConsumptionSummary","timeRangeSB","servicesConsumption","fetchData","setDaysRange","NotificationUI","notificationsContainer","__container","__updateContainer","miniProfile","createMiniProfileView","__profilePage","__addProfilePage","__addGeneralSettings","__addConfirmationSettings","__addTokensPage","__addTagsPage","withSpacer","avatarSize","usernameLabel","fullNameLabel","roleLabel","usageOverview","generalPage","GeneralPage","confirmPage","ConfirmationsPage","tokensPage","TokensPage","tagsPage","TagsPage","columnSpacing","spanColumn","__columnSizes","sizes","getSpanColumn","columnSizes","getColumnSpacing","spanColumnWidth","maxInset","getIconColumnWidth","getArrowColumnWidth","MiniProfileMenuButton","ThemeSwitcherMenuBtn","AdminCenterWindow","po","POCenterWindow","TesterCenterWindow","AboutProduct","licenseURL","HoverButton","initShowCloseButton","getShowCloseButton","listsLayout","headerPersonal","__createHeader","__noPersonalWalletsLabel","listPersonal","__createWalletsList","__personalWalletsModel","__createModelFromList","headerShared","__noSharedWalletsLabel","listShared","__sharedWalletsModel","walletsLoaded","__getWalletsFilter","widgetId","walletsUIList","walletsModel","WalletListItem","__openEditWallet","__walletSelected","usersPrimaryGroup","setWalletsLoaded","walletEditor","WalletEditor","setIsFetching","showCurrently","userWallets","selectColumn","__getTitleLayout","__getTabs","backToWallets","__walletModel","__titleLayout","__walletListItem","__membersList","walletListItem","__addWalletListItem","membersListPage","membersList","MembersList","TYPE","MASKED_NUMBER","EXPIRATION_DATE","DELETE_BUTTON","cardType","getExpirationYear","getExpirationMonth","expirationMonth","expirationYear","openPaymentMethodDetails","deletePaymentMethod","__deletePressed","paymentMethodData","paymentMethodDetails","tableModel","initiallyHiddenColumns","setInitiallyHiddenColumns","selectionManager","setNewSelectionManager","selectionModel","setNewSelectionModel","setNewTableColumnModel","tablePane","setNewTablePane","tablePaneHeader","setNewTablePaneHeader","tablePaneScroller","setNewTablePaneScroller","tablePaneModel","setNewTablePaneModel","columnMenu","setNewColumnMenu","__scrollerParent","Default","__selectionManager","getNewSelectionManager","setSelectionModel","getNewSelectionModel","setTableModel","getEmptyTableModel","setMetaColumnCounts","setTabIndex","_onFocusChanged","__focusedCol","__focusedRow","initStatusBarVisible","columnVisibilityMenuCreateStart","columnVisibilityMenuCreateEnd","tableWidthChanged","verticalScrollBarChanged","cellTap","cellDbltap","cellContextmenu","dataEdited","__redirectEvents","headerCellsVisible","headerCellHeight","additionalStatusBarText","columnVisibilityButtonVisible","metaColumnCounts","focusCellOnPointerMove","rowFocusChangeModifiesSelection","contextMenuFromDataCellsOnly","keepFirstVisibleRowComplete","alwaysUpdateCells","resetSelectionOnHeaderTap","dataRowRenderer","modalCellEditorPreOpenFunction","excludeScrollerScrollbarsIfNotNeeded","newColumnMenu","columnmenu","newSelectionManager","newSelectionModel","Model","newTableColumnModel","newTablePane","newTablePaneHeader","Header","newTablePaneScroller","Scroller","newTablePaneModel","columnModel","__additionalStatusBarText","__lastRowCount","__internalChange","__columnMenuButtons","__columnModel","__emptyTableModel","__hadVerticalScrollBar","getNewColumnMenu","factory","_initColumnMenu","_applySelectionModel","_onSelectionChanged","_applyRowHeight","scrollerArr","_getPaneScrollerArr","updateVerScrollBarMaximum","_applyHeaderCellsVisible","getColumnVisibilityButtonVisible","_applyColumnVisibilityButtonVisible","_applyHeaderCellHeight","Simple","setColumns","_applyTableModel","_onTableModelMetaDataChanged","_onTableModelDataChanged","_updateStatusBar","_updateTableData","getNewTableColumnModel","_onColVisibilityChanged","_onColWidthChanged","_onColOrderChanged","getTablePaneModel","setTableColumnModel","_applyStatusBarVisible","_applyAdditionalStatusBarText","_applyMetaColumnCounts","handlers","bubble","_cleanUpMetaColumns","leftX","paneModel","paneScroller","setFirstColumnX","setMaxColumnCount","getNewTablePaneModel","getNewTablePaneScroller","setTablePaneModel","_onScrollY","isLast","getHeaderCellHeight","setTopRightWidget","isColumnVisibilityButtonVisible","_updateScrollerWidths","_updateScrollBarVisibility","_applyFocusCellOnPointerMove","setFocusCellOnPointerMove","_applyShowCellFocusIndicator","setShowCellFocusIndicator","_applyContextMenuFromDataCellsOnly","setContextMenuFromDataCellsOnly","_applyKeepFirstVisibleRowComplete","onKeepFirstVisibleRowCompleteChanged","_applyResetSelectionOnHeaderTap","setResetSelectionOnHeaderTap","getSelectionManager","getPaneScroller","metaColumn","fromMetaColumn","updateContent","getDataRowRenderer","initThemeValues","onSelectionChanged","onTableModelMetaDataChanged","firstRow","lastRow","firstColumn","lastColumn","removeStart","removeCount","removeSelectionInterval","setFocusedCell","onTableModelDataChanged","rowCount","oldFocusedRow","isEditing","stopEditing","moveFocusedCell","startEditing","cancelEditing","setSelectionInterval","handleSelectKeyDown","scroller","getTablePane","getVisibleRowCount","getRowFocusChangeModifiesSelection","handleMoveKeyDown","onFocusChanged","onColVisibilityChanged","setColumnVisible","onColOrderChanged","getTablePaneScrollerAtPageX","metaCol","_getMetaColumnAtPageX","scrollVisible","resetCellFocus","getFocusedColumn","getFocusedRow","highlightFocusedRow","bHighlight","setHighlightFocusRow","clearFocusedRowHighlight","FocusIndicator","getVisibleX","colCount","getVisibleColumnCount","getVisibleColumnAtX","_getMetaColumnAtColumnX","blockHeaderElements","unblockHeaderElements","visXPos","getMetaColumnCounts","rightXPos","counts","getStatusBarVisible","selectedRowCount","getSelectedCount","getTotalWidth","setPaneWidth","horBar","HORIZONTAL_SCROLLBAR","verBar","VERTICAL_SCROLLBAR","horNeeded","verNeeded","getExcludeScrollerScrollbarsIfNotNeeded","bars","getNeededScrollBars","setHorizontalScrollBarVisible","getVerticalScrollBarVisible","setVerticalScrollBarVisible","columnButton","getColumnName","bVisible","isColumnVisible","IColumnMenuItem","_createColumnVisibilityCheckBoxHandler","updateDataRowElement","rowInfo","rowElement","getRowHeightStyle","createRowStyle","getRowClass","IRowRenderer","highlightFocusRow","_colors","_fontStyle","_fontStyleString","_renderFont","bgcolFocusedSelected","bgcolFocused","bgcolSelected","bgcolEven","bgcolOdd","colSelected","colNormal","horLine","_insetY","rowElem","focusedRow","getHighlightFocusRow","rowStyle","getRowAttributes","TransactionsTableModel","setStatusBarVisible","StringWithTooltip","setHeaderCellHeight","defaultFrom","setMonth","__from","__addDateInput","__until","lastWeekBtn","lastWeek","lastMonthBtn","lastMonth","lastYearBtn","lastYear","setYear","initDate","datepicker","DateField","_changeHandler","UsageTableModel","COLS","COST","USER","__columnOrder","getOverallColumnCount","getBillingCenterUsageColumnOrder","setColumnsOrder","setBillingCenterUsageColumnOrder","fromOverXPos","toOverXPos","toSpliced","PROJECT","NODE","START","DURATION","STATUS","PurchasesTableModel","PURCHASE_ID","ITEM_ID","ITEM_LABEL","END","SEATS","CheckoutsTableModel","CHECKOUT_ID","bidirectional","reverseOptions","__removeTargetFrom","__addTarget","targetArray","idReverse","targetHash","removeTarget","currentListing","deleted","retentionDays","__createDeleteForm","__requestDeletion","lowDiskSpacePreferencesSettings","__lowDiskThreshold","getLowDiskSpaceThreshold","__lastDiskUsage","__updateDiskIndicator","currentNode","__applyCurrentNode","prevNode","_unsubscribe","_subscribe","DiskUsageController","__getIndicatorColor","freeSpace","warningSize","criticalSize","diskUsage","getCurrentNode","diskHostUsage","labelDiskSize","diskVolsUsage","background-color","border-color","__vipMarket","Market","openBy","storeWindow","getVipMarket","sendCloseMessage","billingCenter","__billingCenter","WorkspaceButtonBase","HEADER_MAX_HEIGHT","FOLDER_LOOK","HEADER","BODY","HPOS","MENU","DATE","folderLook","__createFolderLookHeader","spacer00","triangle","topHeight","colorTriangle","spacer01","spacer10","spacer11","__applyThumbnail","workspaceCreated","workspaceDeleted","workspaceEditor","WorkspaceEditor","FolderButtonBase","gridLayout","__onPointerOver","__onPointerOut","SUBTITLE","createFolder","folderEditor","FolderEditor","__currentWorkspaceId","__currentFolderId","moveButton","__selectedWorkspaceId","__selectedFolderId","workspaceText","workspaceLabel","folderText","folderLabel","__getUpstreamFolders","folderIds","dragWidget","DragWidget","folderItem","workspaceDestId","workspaceIdOrigin","workspaceOrigin","workspaceDest","studyToFolderData","moveFolder","folderOrigin","folderDestId","folderToFolderData","draggedItem","NewPlusMenu","newStudiesData","newButtonsInfo","categories","__flatList","displayTemplates","newButtonInfo","showDisabled","__newStudies","templatesLoaded","newStudyClicked","listId","__groupByCategory","newPlanButton","initCurrentWorkspaceId","initCurrentFolderId","locationChanged","trashEmptied","BREADCRUMBS","EDIT_BUTTON","SHARE_LAYOUT","ROLE_LAYOUT","EMPTY_TRASH_BUTTON","ContextBreadcrumbs","__createConfirmEmptyTrashWindow","__titleTapped","setCurrentFolderId","locationBreadcrumbs","editWorkspace","shareWorkspaceLayout","roleWorkspaceLayout","__setIcon","__getShareIcon","__shareIcon","__updateShareInfo","shareText","__applyMyAccessRights","roleText","roleIcon","__editWorkspace","__openShareWith","sortedByMenu","getSortByOptions","btnId","__menuButton","__buttonExecuted","__handelSortEvent","sortByChanged","__handelSort","getSort","setSort","__applySort","fileInput","importBtn","fileReady","oldLabel","__populateNodeLabelEditor","__addSubtitle","labelChanged","nodeLabelEditor","labelEditor","save","subtitleLabel","setButtonsWidth","__thumbnails","thumbnailAdded","thumbnailTapped","defaultTemplates","osparcTemplates","tipTemplates","queryParams","addToQueryParams","qP","defaultThumbnails","setThumbnailTemplates","amendedArray","__addThumbnail","thumbnailData","__applyStudyData","suggestion","thumbnailUrl","fileUrl","__reloadSuggestions","addPreviewsToSuggestions","previewsPerNodes","previewsPerNode","previews","setSuggestions","__thumbnailTapped","unselectedBorderColor","unselectedBGColor","thumbnailImg","selectedBorderColor","selectedBGColor","thumbnailType","thumbnailFileUrl","updateThumbnail","sanitizeUrl","dirty","urlField","__applySuggestions","thumbnailSuggestions","STATE","titleText","stateText","showProgressBar","stateLabel","__layout","__studyName","__applyDate","__applyGroupId","__nodePricingUnits","loadingUnits","__showPricingUnits","showPricingUnits","__nodeKey","__nodeVersion","__nodeLabel","planId","selectedUnitId","pricingUnitId","__pricingUnits","inGroupBox","nodeKey","nodeVersion","nodeLabel","pricingPlanData","unitParams","preselectedPricingUnit","pricingUnitTiers","isPatchNode","setSelectedUnitId","sortByMenu","hitsDesc","nameAsc","nameDesc","sortBy","parentWidget","_applyVisible","spliterSize","splitterLeft","splitterTop","beginFlex","endFlex","splitterHint","beginHeight","splitterHeight","endHeight","flexAvailable","beginWidth","splitterWidth","endWidth","__toolbar","WorkbenchToolbar","WorkbenchUI","initCollapsed","styleCollapseExpandButton","expandBtn","collapseBtn","__applyCollapsed","scrollContent","__applyContent","oldContent","columnCount","__pane","virtual","isShowTopLevelOpenCloseIcons","getLookupTable","isNodeOpen","openNodeWithoutScrolling","closeNode","closeNodeWithoutScrolling","IVirtualTree","_initSelectionManager","__defaultSelection","initSelection","__ignoreChangeSelection","__ignoreManagerChangeSelection","selectionDelegate","_provider","styleSelectable","wasAdded","styleSelectabled","styleUnselectabled","Row","attachPointerEvents","attachKeyEvents","_onManagerChangeSelection","setAutoScrollIntoView","_autoScrollIntoView","getAutoScrollIntoView","newSelection","_getSelectables","_reverseLookup","_beforeApplySelection","__synchronizeSelection","_afterApplySelection","__isSelectionEquals","managerSelection","_getDataFromRow","__replaceSelection","MModel","__rowConfig","Axis","__columnConfig","__scrollTop","__scrollLeft","__paneHeight","__paneWidth","__layerWindow","__layerContainer","__layers","fullUpdate","_onDbltap","_onContextmenu","__dontFireUpdate","__rowSizes","__pointerDownCoords","getColumnConfig","addLayer","layer","ILayer","getLayers","getVisibleLayers","layers","getTotalSize","_deferredUpdateScrollPosition","scrollRowIntoView","itemTop","getItemPosition","itemBottom","getItemSize","scrollColumnIntoView","itemLeft","itemRight","scrollCellIntoView","getCellAtPosition","documentX","documentY","columnData","getItemAtPosition","prefetchX","minLeft","maxLeft","minRight","maxRight","paneRight","rightAvailable","_setLayerWindow","prefetchY","minAbove","maxAbove","minBelow","maxBelow","paneBottom","belowAvailable","above","below","_updateScrollPosition","__handlePointerCellEvent","_checkScrollBounds","maxx","maxy","cellEventType","pointerDownCoords","CellEvent","_fullUpdate","doFullUpdate","rowCellData","rowSizes","getItemSizes","layerHeight","layerTop","layerBottom","columnCellData","layerWidth","layerLeft","layerRight","updateLayerWindow","__checkPaneResize","isUpdatePending","paneWindow","rootModel","childProperty","openProperty","setChildProperty","initModel","initItemHeight","initOpenMode","openViaModelChanges","itemHeight","showTopLevelOpenCloseIcons","_layer","__openNodes","__nestingLevel","_itemWidth","__parentChain","__openProperty","getFirstRow","rowSize","getRowSizes","getRenderedCellWidget","paneWidth","setItemSize","__openNode","buildLookupTable","autoscroll","__openNodeAndAllParents","_openCloseController","OpenCloseController","getOpenProperty","_initLayer","provider","WidgetProvider","createLayer","_onUpdated","getOpenNodes","getChildProperty","isShowLeafs","setDefaultItemSize","_applyOpenMode","_onOpen","_applyHideRoot","_applyShowTopLevelOpenCloseIcons","_applyShowLeafs","_applyChildProperty","setIconPath","setLabelOptions","setIconOptions","_onChangeBubble","__applyModelChanges","visibleParent","__getVisibleParent","__buildParentChain","lookupTable","nestedLevel","isHideRoot","visibleChildren","__getVisibleChildrenFrom","removeBindings","__updateRowCount","Delegate","targetNode","setItemCount","simpleNodes","__getSortingValue","__getIcon","createStudyModel","iconColor","sortingValue","studyModel","nodeToModel","nodeModel","_getDelegate","nChildren","nodeTreeItem","NodeTreeItem","__openFullscreen","_openItemRenamer","__openNodeInfo","__deleteNode","__openItem","itemA","itemB","getSortingValue","__getNodeModel","__getSelection","treeSelection","treeItemRenamer","studyDetails","keyEvent","newModel","__openStudyInfo","resetChecks","__loadPaths","dropMechanism","filesAddedToTree","addLoadingChild","loadingModel","removeLoadingChild","attachPathLabel","srcPathLabel","__locations","__datasets","treeName","__resetTree","__filesToDataset","newChildren","Converters","fromDSMToVirtualTreeModel","nodeTreeName","rootNodeModel","nodeItemsOnly","__itemsToNode","__populateLocations","outFileVal","__addToLoadFilePath","__hasLocationNeedToBeLoaded","__hasDatasetNeedToBeLoaded","__filesReceived","paths","itemId","FileTreeItem","isOpen","getLoaded","getIsDataset","setLoaded","__addDragAndDropMechanisms","__locationsToRoot","__populateLocation","openThis","locationData","createDirEntry","getPathLabel","locationModel","__getLocationModel","__datasetsToLocation","locationModels","__getDatasetModel","datasetModels","datasetModel","currentModel","newModelToAdd","dataStore","datasetData","dataset_id","isDataset","sortModelByLabel","__rerender","getItemId","filesModel","childItem","__getItemsInTree","__getLeavesInTree","leaves","__findUuidInLeaves","getShowLeafs","isDragMechanism","__createDragMechanism","isDropMechanism","treeItem","dragData","collapseNavBarBtn","expandNavBarBtn","backToDashboardBtn","userMenuButton","collapseExpandStack","nameAndMenuButton","__createMenuButton","moreInfoButton","__getMoreInfoMenuButton","__openStudyDetails","out_1","ContentSchemaArray","addArrayBrackets","parametrizableType","parametrizableTypeItem","Spinner","allSettings","typeBox","valueField","setContentSchema","COLLAPSED_CARET","EXPANDED_CARET","__containerHeight","__layoutFlex","__minHeight","__contentMinHeight","__getCaretId","getCollapsed","__attachToggler","_header","_header2","_header3","_header4","CollapsibleView","toggleCollapsed","getTitleBar","getTitleLabel","getTitleBarBtnsContainerLeft","getTitleBarBtnsContainerRight","_applyCollapsed","getContent","_applyContent","_applyCaretSize","moreCaret","lessCaret","sections","showStartStopButton","tierSelectionView","lifeCycleView","bootOptionsView","updateResourceLimitsView","startStopButton","TierSelectionView","LifeCycleView","BootOptionsView","UpdateResourceLimitsView","StartStopButton","section","_populateNodesNavigationLayout","Toolbar","nodeSelectionRequested","saveSlideshow","showNode","hideNode","slidesStop","editing","BreadcrumbsSlideshow","BreadcrumbsSlideshowEdit","spacerLeft","editSlideshowButtons","getSortedNodeIds","__evalButtonsIfEditing","currentModeBtn","runPressed","PREV_BUTTON","NEXT_BUTTON","RUN_BUTTON","BUSY_BUTTON","SELECT_FILE_BUTTON","__prvsBtn","__runBtn","prvsBtn","__prevPressed","__nextPressed","runBtn","__runPressed","__updatePrevNextButtons","__applyNode","nodesIds","isFirst","currentNodeStatusOutput","__updateNextButtonState","btnIcon","NodeProgressSequence","setProgressSequence","interactive","getRunning","isComputationalRunning","__transformProgress","oldP","hasDependencies","__applyRunning","__recomputeOutput","__applyInteractive","resetSequence","compRunning","getHasOutputs","getModified","setOutput","setDependencies","setRunning","currentStatus","HEADER_HEIGHT","__inputsButton","__preparingInputs","__instructionsBtn","__instructionsWindow","__nodeStartButton","__nodeStopButton","__nodeStatusUI","_mainView","_settingsLayout","_iFrameLayout","_outputsLayout","__progressBar","__buildHeader","__buildMainView","inputsStateBtn","infoBtn","__openServiceDetails","instructionsBtn","__openInstructions","startBtn","stopBtn","nodeStatusUI","NodeStatusUI","outputsBtn","_outputsBtn","settingsBox","outputsLayout","markdownInstructions","getSettingsLayout","isSettingsGroupShowable","_addSettings","_addIFrame","_addOutputs","_addLogger","__areInputsReady","upstreamNodeIds","__enableIframeContent","pointer-events","tapListenerId","monitoredNodes","setMonitoredNodes","__dependenciesChanged","preparingNodes","getPreparingNodes","waiting","buttonsIcon","PreparingInputs","updateProgress","outputCounter","__buildMyLayout","_applyNode","LOGGER_HEIGHT","__loggerPanel","__checkSettingsVisibility","loggerPanel","Width","Height","catalogLayout","__createFilterLayout","__createListLayout","__createButtonsLayout","__createEvents","addService","LATEST","__servicesLatest","__filteredServicesObj","__contextLeftNodeId","__contextRightNodeId","__versionsBox","__infoBtn","__serviceList","__addBtn","ServiceFilterGroup","getTextFilter","containerSortBtns","serviceList","ServiceList","scrolledServices","selectedService","__changedSelection","__showServiceDetails","__onCancel","addBtn","__onAddService","__updateList","filteredServices","needsInputs","needsOutputs","connectable","filteredServicesObj","groupedServicesList","_onAddService","eData","__getSelectedService","_getSelectedService","_showServiceDetails","selectFirstVisible","dataChanged","metaDataChanged","rowIndex","getColumnId","columnIndex","getColumnIndexById","columnId","isColumnEditable","isColumnSortable","sortByColumn","ascending","getSortColumnIndex","isSortAscending","prefetchRows","firstRowIndex","lastRowIndex","getValueById","setValueById","ITableModel","__columnIdArr","__columnNameArr","__columnIndexMap","setColumnIds","columnIdArr","setColumnNamesByIndex","columnNameArr","setColumnNamesById","columnNameMap","bSetIds","_sortColumnIndex","_sortAscending","_rowCount","_lruCounter","_firstLoadingBlock","_firstRowToLoad","_lastRowToLoad","_ignoreCurrentRequest","_rowBlockCache","_rowBlockCount","_sortableColArr","_editableColArr","blockSize","maxCachedBlockCount","clearCacheOnRemove","blockConcurrentLoadRowCount","_loadRowCountRequestRunning","_clearCache","_getIgnoreCurrentRequest","getBlockConcurrentLoadRowCount","_loadRowCount","_onRowCountLoaded","_cancelCurrentRequest","clearCache","getCacheContent","sortColumnIndex","sortAscending","lruCounter","rowBlockCache","rowBlockCount","restoreCacheContent","cacheContent","iterateCachedRows","getBlockSize","blockCount","blockData","rowOffset","rowDataArr","relRow","newRowData","totalBlockCount","firstBlock","lastBlock","firstBlockToLoad","lastBlockToLoad","isDirty","_loadRowData","_onRowDataLoaded","_setRowBlockData","blockRowData","mailCount","getMaxCachedBlockCount","lruBlock","minLru","currBlock","currLru","lru","removeRow","getClearCacheOnRemove","startBlock","removeIndex","nextBlockData","setEditable","setColumnEditable","setColumnSortable","sortable","setSortColumnIndexWithoutSortingData","setSortAscendingWithoutSortingData","Remote","__rawData","filterLogLevel","filterString","getLevelIcon","logLevels","__filteredData","getRows","newRows","newRow","clearTable","rawLength","getRawRowCount","__filterByString","getFilterString","__filterByLogLevel","getFilterLogLevel","__checkFilters","showStrWho","showStrWhat","showLog","createHeaderCell","cellInfo","updateHeaderCell","cellWidget","IHeaderRenderer","STATE_SORTED","STATE_SORTED_ASCENDING","headerrenderer","HeaderCell","DefaultHeaderCellRenderer","widgetToolTip","setToolTip","sortedAscending","createDataCellHtml","htmlArr","ICellRenderer","__clazz","_createStyleSheet","_insetX","_getCellClass","_getCellStyle","_getCellAttributes","_getContentHtml","_getCellSizeStyle","styleWidth","styleHeight","STYLEFLAG_ALIGN_RIGHT","STYLEFLAG_BOLD","STYLEFLAG_ITALIC","_numberFormat","useAutoAlign","_getStyleFlags","getUseAutoAlign","cellClass","stylesToApply","_formatValue","setMaximumFractionDigits","createCellEditor","getCellEditorValue","cellEditor","ICellEditorFactory","validationFunction","_createEditor","originalValue","validationFunc","getValidationFunction","celleditor","__overallColumnArr","__visibleColumnArr","widthChanged","visibilityChangedPre","visibilityChanged","orderChanged","headerCellRendererChanged","DEFAULT_WIDTH","DEFAULT_HEADER_RENDERER","DEFAULT_DATA_RENDERER","DEFAULT_EDITOR_FACTORY","__colToXPosMap","__columnDataArr","__headerRenderer","__dataRenderer","__editorFactory","headerRenderer","dataRenderer","editorFactory","getInitiallyHiddenColumns","getVisibleColumns","isPointerAction","oldWidth","setHeaderCellRenderer","oldRenderer","setHeaderCellRenderers","renderers","cols","getHeaderCellRenderer","getDataCellRenderer","setCellEditorFactory","oldFactory","getCellEditorFactory","_getColToXPosMap","visX","getOverallColumnAtX","overXPos","getOverallX","nextVisX","colToXPosMap","currVisX","moveColumn","newPositions","colIdx","__bInProgress","__bAppeared","_applyBehavior","_setNumColumns","numColumns","_onappear","_onTableWidthChanged","_onverticalscrollbarchanged","_addResetColumnWidthButton","_oncolumnwidthchanged","_onvisibilitychanged","setBehavior","resizebehavior","getTable","onAppear","onTableWidthChanged","onVerticalScrollBarChanged","onColumnWidthChanged","onVisibilityChanged","AbstractImage","__defaultWidth","__defaultHeight","__imageData","_identifyImage","_getImageInfos","imageData","__getImageSize","srcUrl","getRepeat","__imageWidth","__imageHeight","__am","imageHints","minimumIntegerDigits","maximumIntegerDigits","minimumFractionDigits","maximumFractionDigits","groupingUsed","postfix","num","negative","getMaximumFractionDigits","mover","integerDigits","numStr","integerStr","getMinimumIntegerDigits","getMaximumIntegerDigits","fractionStr","getMinimumFractionDigits","getGroupingUsed","groupPos","origIntegerStr","getGroupSeparator","getPrefix","getPostfix","getDecimalSeparator","groupSepEsc","decimalSepEsc","asStr","numericAllowed","betweenAllowed","conditions","__defaultTextAlign","__defaultColor","__defaultFontStyle","__defaultFontWeight","__applyFormatting","addNumericCondition","addBetweenCondition","value2","addRegex","cond_test","compareValue","text-align","font-style","font-weight","styleString","Conditional","expandableColPos","__expandableColPos","rowClicked","expanded","expandedHeight","BASE_UNITS","meter","quantity","short","long","second","ampere","candela","gram","mole","kelvin","radian","PREFIXES","multiplier","milli","no-prefix","kilo","mega","__isUnitRegistered","unitKey","__getBaseUnit","__getShortLabel","baseUnit","shortLabel","__getLongLabel","xUnit","__getPrefixMultiplier","originalPrefix","orignalIdx","midPrefix","pKeys","getMultiplier","unitSplit","ERROR_ICON","portErrorMsg","__applyPortErrorMsg","portId2","isDataAParameter","portsMetadata","portType","_addWidgets","initOpen","openSymbolMode","iconOpened","__labelAdded","__iconAdded","__spacer","FolderOpenButton","_onChangeOpen","_updateIndent","AbstractItem","addOpenButton","isOpenable","setOpen","addIcon","addLabel","__getUserValueIconOpened","__setIconSource","_applyIconOpened","__getUserValueIcon","_applyOpen","getIconOpened","getOpenSymbolMode","_shouldShowOpenSymbol","_applyOpenSymbolMode","openWidth","openBounds","getIndent","_applyIndent","_onChangeChildProperty","_onChangeLength","oldChildren","VirtualTreeItem","moveUp","moveDown","saveInstructions","setPaddingTop","posLbl","moveUpBtn","moveDownBtn","hideBtn","showBtn","editTextBtn","__editText","formatUrl","tail","__nodesUI","__edgesUI","__selectedNodeUIs","__annotations","__selectedAnnotations","_addItemsToLayout","_addEventListeners","getDashedBorderStyle","isRight","side","borderStyle","ZOOM_VALUES","removeNodes","requestOpenLogger","_currentModel","__deleteItemButton","__workbenchLayer","__workbenchLayout","_workbenchLayoutScroll","__svgLayer","__tempEdgeNodeId","__tempEdgeIsInput","__tempEdgeRepr","__pointerPos","__selectedItemId","__startHint","__toolHint","__dropHereUI","__selectionRectInitPos","__selectionRectRepr","__panning","__isDraggingFile","__isDraggingLink","__annotatingNote","__annotatingRect","__annotatingText","__annotationInitPos","__annotationEditor","__annotationLastColor","__reloadCurrentModel","_addWorkbenchLayer","__addExtras","workbenchLayer","workbenchLayoutScroll","workbenchLayout","__addDesktop","__addSVGLayer","Desktop","svgLayer","SvgWidget","__addStartHint","__addToolHint","__addDeleteItemButton","toolHint","deleteItemButton","__isSelectedItemAnEdge","__getEdgeUI","__getAnnotationEditorView","annotationEditor","AnnotationEditor","addDeleteButton","__getWorkbench","__createInputOutputNodesLayout","isInput","inputOutputNodesLayout","__openServiceCatalog","nodePos","__pointerEventToWorkbenchPos","nodeUI","newNodeId","_createEdgeBetweenNodes","__createTemporaryNodeUI","boxWidth","boxHeight","temporaryNodeUI","circleSize","__removeTemporaryNodeUI","_addNode","tempNodeUI","_createNodeUI","_addNodeUIToWorkbench","__createDragDropMechanism","__getNodesBounds","__cursorOnNodeUI","onNodeUI","nBounds","__updateNodeUIPos","isStudyReadOnly","__addNodeListeners","__updateHint","__itemStartedMoving","getSelectedNodeUIs","selectedNodeUI","initPos","getSelectedAnnotations","selectedAnnotation","__itemMoving","xDiff","yDiff","__itemStoppedMoving","isSnapNodeToGrid","snapToGrid","__updateWorkbenchBounds","__selectNode","__addAnnotationListeners","__selectAnnotation","reprPos","getRepresentationPosition","getCurrentModel","getSelectedNodes","__setSelectedNodes","__setSelectedAnnotations","__setSelectedItem","selectedNodeUIs","selectedNode","selectedAnnotations","activeNodeUI","getNodeUI","populateNodeLayout","__openNodeRenamer","__openMarkerEditor","edgeFound","edgeUI","getInputNode","outputNode","getOutputNode","setHighlighted","__edgeRepresentationExists","dragNodeId","dragIsInput","__updateTempEdge","dropNodeId","dropIsInput","dragNode","dropNode","dragPortTarget","getInputPort","getOutputPort","dropPortTarget","nodeAId","nodeBId","__removeTempEdge","__removePointerMoveListener","nodeUI1","nodeUI2","getCurrentBounds","port1","port2","pointList","__getEdgePoints","edgeRepresentation","isPortConnected","EdgeUI","getHint","svgEl","getRepresentation","__updateAllEdges","__updateEdges","edgesInvolved","getNodeType","__updateIteratorShadows","nShadows","shadows","__getLeftOffset","__getTopOffset","__pointerEventToScreenPos","__screenToToWorkbenchPos","scaledPos","__scaleCoordinates","scaledScroll","_this$__pointerEventT","portPos","getEdgePoint","BaseNodeUI","PORT_CONNECTED","colorHex","getEdgeColor","getInputConnected","getOutputConnected","PORT_DISCONNECTED","p1","p2","__clearNodeUI","__clearEdge","removeShadows","__clearAllNodes","__clearAllEdges","__clearAnnotation","__clearAllAnnotations","_clearAll","getReady","_loadModel","_loadModel2","__renderNodes","__renderAnnotations","nNodesToRender","nodeUIs","__renderEdges","_renderEdges","initData","Annotation","__addAnnotation","newID","__isSelectedItemAnAnnotation","__getAnnotation","_annotation","setAnnotation","makeItModal","__removeAnnotation","__unscaleCoordinates","__openContextMenu","radialMenuWrapper","__doOpenContextMenu","wbPos","zoomIn","zoomReset","zoomOut","drawText","pointerPos","drawRect","startDynService","stopDynService","addRemoveMarker","addServiceInput","addServiceOutput","noAction","__buttonsToContextMenu","__contextMenu","addButtons","setPos","w2","h2","__mouseDown","__mouseDownOnSVG","__mouseMove","__draggingLink","__drawingAnnotation","__drawingSelectionRect","__mouseUp","annotationInitPos","annotationType","__consolidateAnnotation","__rectAnnotationRepr","__dropLink","__mouseWheel","zoomValues","newScale","prevItem","__applyScale","nodeBounds","nodesWidth","nodesHeight","scaledWidth","scaledHeight","wbWidth","wbHeight","screenWidth","screenHeight","scaledScreenWidth","scaledScreenHeight","sliderKnobX","sliderKnobY","resetBackgroundColor","_fitScaleToNodes","maxScale","xFit","yFit","prefScale","closestDown","z","workbenchPos","dragging","__draggingFile","__dropFile","stopDragging","__updateDropHere","startDragging","_listenToMouseWheel","selectedNodeIDs","__allowDragFile","allow","__allowDragLink","posX","posY","dropHereNodeUI","dropHere","dropMeBounds","currentPos","nodePosX","nodePosY","annotationPosX","annotationPosY","DEFAULT_COLOR","serializeData","noteEditor","AnnotationNoteCreator","getRecipientGid","recipientGid","getNote","tempAnnotation","addAddButtons","_win","getForm","_dropFile","getFilesFromEvent","_dropLink","isEmptyWorkspace","hintBounds","_this$__workbenchLayo","setIsMovable","_nodeId","__commits","COMMIT_SPACING","getTemplateConfig","commit","dot","displayAuthor","displayBranch","displayHash","branch","strokeColor","snapshotTap","__gitGraphCanvas","__gitgraph","__selectedCommit","__branches","__parentIDs","__gitGraphInteract","gitgraph","__createGraph","gitGraphPath","graphContainer","myTemplate","GitgraphJS","templateExtend","createGitgraph","__commit","commitData","texts","__createBranch","lastCommit","fromBranch","__getBranch","branchFound","myOnHoldBranch","waitingFor","sortedSnapshots","parentID","currentBranch","snapshotDate","createdAt","parentsIDs","selectionRanges","getSelectedRanges","minIndex","maxIndex","_applyData","makeItLoose","resourceName","__initModel","T_POS","__populateTable","colKey","rows","metaStudy","__metaStudy","extractIterators","iterators","extractProbes","probes","extractIteratorOutput","extractProbeOutput","itWB","rowIdx","getRowDataAsMap","iteratorInMeta","probeInMeta","iteratorsInMeta","probesInMeta","countFormat","studyProgress","countRow","itOut","porbeOut","__registeredCallbacks","__schedulerWorker","_event$data","workerEvent","setFontFamily","__requestedHelpers","_getRequestedHelpers","COMPARISON_FONTS","sans","serif","HELPER_CSS","fontVariant","COMPARISON_STRING","__defaultSizes","__defaultHelpers","defaultHelpers","__checkTimer","__checkStarted","__onTimerInterval","_isFontValid","requestedSans","requestedSerif","cls","fontsSans","getFontFamily","fontsSerif","_getHelperElement","styleMap","_applyFontFamily","setEdgeId","setInputNode","setOutputNode","checkAnyPortsConnected","__applyOutputNode","__checkIsPortConnected","anyConnected","captionBar","PORT_WIDTH","__getMenuButton","CAPTION_POS","captionTitle","labelDom","__nodeMoving","isMovable","PORT_HEIGHT","LOCK","MARKER","DEPRECATED","captionHeight","infoNode","markerClicked","edgeDragStart","edgeDragOver","edgeDrop","edgeDragEnd","nodeMovingStart","nodeMoving","nodeMovingStop","__inputLayout","__outputLayout","_optionsMenu","_markerBtn","_deleteBtn","renameBtn","markerBtn","_createPort","_setPositionFromEvent","sideBarWidth","navigationBarHeight","getIsMovable","__resetNodeUILayout","FILE_NODE_WIDTH","updateNodeDecorator","__svgWorkbenchCanvas","statusLabel","evaluateLabel","resetThumbnail","__createWindowLayout","svgWorkbenchCanvas","__createPorts","makeIterator","lock","updateMarker","evaluateLifeCycleIcon","deprecatedIcon","ttMsg","deprecatedDateMsg","deprecatedTTMsg","_ttMsg","_deprecatedTTMsg","_toolTip","setCurrentNode","__applyType","__checkTurnIntoFileUI","__turnIntoParameterUI","__checkTurnIntoIteratorUI","__turnIntoProbeUI","__setNodeUIWidth","__turnIntoFileUI","imageSrc","__turnIntoIteratorUI","nodeUIShadow","__turnIntoIteratorIteratedUI","__setProbeValue","shadow","linkInfo","__addDragDropMechanism","eventPair","__createDragDropEventData","_node$getPosition","snapX","snapY","thumbnailSrc","__filterText","__filterTags","slideshowData","changeSlideshow","nodeId2","leftPos","rightPos","__moveNode","numberOfDeletedElm","elm","lastNodeId","targetNodeId","movingForward","sortedNodeIds","newStatus","oldStatus","__statusInteractiveChanged","__initLoadingPage","__initIFrame","iframeChanged","__unresponsiveRetries","__retriesLeft","__nodeState","setShowToolbar","__getLoadingPageHeader","setLogo","sequenceWidget","getWidgetForLoadingPage","setLoadingPage","setInteractive","retryMsg","retryMsgData","serviceState","serviceMessage","_osparc$utils$Utils$c","setDynamicV2","__waitForServiceReady","retry","credentials","__serviceReadyIn","setServiceUrl","_msgData","resetServiceUrl","__loadIframe","boundsCR","structure","__ctrlMap","formCtrl","__formCtrl","__boxCtrl","__addField","__model","__settingData","changeData","hasValidatableProp","__getData","relax","__setData","setSelectBoxData","__setupDateField","addBindingOptions","dateValue","__setupTextArea","__setupTextField","__setupNumberField","model2target","target2model","myContext","__setupSpinner","__setupSelectBox","sbModel","__setupComboBox","cfg","__setupBoolField","__setupFileButton","__setupContentSchema","contentSchema","__getField","ref_contentSchema","setup","ComboBox","rangeText","ContentSchemaHelper","getDomainText","_osparc$utils$Units$d","createValidator","VALUE","__gridLayout","ports","__outputsChanged","PROBE","__populateGrid","getPorts","portKeys","fromTypeToIcon","probeBtn","eTag","valueWidget","__getValueWidget","__valueToGrid","_filename","__removeEntry","lastModified","_changeProgress","downloadLinkField","fileLinkAdded","checkFileExists","urlToFile","getBorderStyle","getShowBorder","dropHereMessage","__dropHereMessage","__centerDropHereMessage","__addDragAndDropListeners","border-style","getNoBorderStyle","dataTransfer","webkitGetAsEntry","getAsFile","localFileDropped","fileLinkDropped","showBorder","showDropHere","__dropMe","__applyShowBorder","__applyShowDropHere","dropHereBounds","fileDropBounds","__updateWidgets","__pointerFileEventToScreenPos","__pointerLinkEventToScreenPos","__updateDropMe","getShowDropHere","__hideDropMe","dropMe","stopDraggingLink","startDraggingLink","__presignedLinkData","uploadAborted","PROGRESS_VALUES","FETCHING_PLINK","CHUNKING","COMPLETING","createChunk","chunkIdx","chunkSize","chunkEnd","__uploadedParts","__fileMetadata","urls","__uploadFile","__abortUpload","_uploadFile","_chunkIdx","chunkBlob","uploadedParts","nProgress","e_tag","__uploadChunk","uploadedPart","__checkCompleteUpload","completeUrl","complete_upload","__pollFileUploadState","__completeUpload","stateLink","abortUrl","abort_upload","__collapsibleViews","allowMultiSelection","multiSelectButton","listViewButton","gridViewButton","folderContent","selectedFileLayout","setMultiSelect","setItemSelected","multiSelectionData","setMultiItemSelected","openItemSelected","folderUp","FolderContent","FileLabelWithActions","__applyFolder","changeChildren","instanceUuid","releasedDate","author","oldVal","oldTTT","RESOURCES_INFO","resourcesInfo","limitLayout","headerLayout","imagesResourcesInfo","imageName","resourceKey","resourceInfo","resourceInfoKey","compactInfo","setJson","prettyJson","initText","__addButtons","textChanged","writePage","TextEditor","previewPage","pricingPlansCached","pricingPlansChanged","fetchPricingPlans","pricingPlansData","pricingPlan","postPricingPlan","newPricingPlanData","putPricingPlan","plansParams","fetchPricingUnits","getPricingPlan","pricingUnitData","__addPricingUnitToCache","createPricingUnit","newPricingUnitData","updatePricingUnit","getPricingPlans","pricingUnit","getPricingUnitId","pricingPlanKey","classification","PricingPlan","PricingUnit","changeSelectionAllowed","selectPricingUnitRequested","__pricingUnitTiers","pricingUnitTier","PricingUnitTier","showSelectButton","pricingUnitTierFound","getUnitData","getIsDefault","__applySelectedUnitId","puTIer","isMyComment","__isMyComment","userName","date2","initTreeData","checkedClassifiers","CheckboxTree","__setCheckedClassifiers","getChecked","checkedClassifierIDs","checkedClassifier","getClassifier","setChecked","filtered","idxs","_rootData$children","__virtualTree","classifierId","currentPath","pathName","getLeafClassifiers","__createModel","ClassifiersTreeItem","__extendData","__field","setPaddingRight","__infoButton","TOP_MARGIN","__applyHintPosition","__applyCompact","tagSaved","cancelNewTag","__applyTag","__renderEditMode","__renderDisplayMode","nameContainer","descInputContainer","__colorPicker","__tagItemEditButtons","__tagItemButtons","sharedIcon","__serializeData","tagsStore","setTag","newTag","innerContainer","colorInput","__potentialTemplateData","__selectedCollabs","__updateAccessRights","currentGids","collabButton","groupIDs","selectedCollab","setOpenMenu","getOpenMenu","resetOpenMenu","__lastSelectedIdx","__getVisibles","selectOne","setLastSelectedItem","__showAllButton","__contentContainer","__createContentContainer","setExpanded","isExpanded","contentContainer","showAllBtn","__updateHeaderLabel","__updateHeaderIcon","__updateHeaderColor","__applyExpanded","__childVisibilityChanged","anyVis","__applyWorkspace","__updateTooltip","__applyDescription","__trashWorkspaceRequested","__deleteWorkspaceRequested","__applyModifiedAt","__applyTrashedAt","__applyTrashedBy","FolderWithSharedIcon","__addMenuButton","folderDest","__applyWorkspaceId","newSource","__applyLastModified","__editFolder","__deleteFolderRequested","__models","__addMyWorkspace","__addSharedWorkspaces","__folderAdded","__folderRemoved","__addWorkspace","__workspaceRemoved","openChanged","WorkspacesAndFoldersTreeItem","_model","_source","__populateFolder","folderModels","folderModel","__createItemData","myWorkspaceData","myWorkspaceModel","sharedWorkspaceData","sharedWorkspaceModel","workspaceModel","__getModel","modelFound","__addFolder","parentModel","newFolderModels","mdl","_populateCard","SlideBase","newPlanText","newPlan","otherPlansText","otherPlans","text1","label1","text2","label2","text4","label4","text5","label5","image1","text3","label3","image2","image3","notAvailableText","dashboardProjects","newProjectText","newProject","otherProjectsText","otherProjects","otherProjects2Text","otherProjects2","dashboardTutorials","importProjectsText","importProjects","featuresText","features","limitationsText","limitations","manualGif","__currentInterval","getDecrease","pricePerCredit","currencySymbol","__pricePerCredit","__currencySymbol","__priceInput","__totalInput","_this$__getInputAndLa","__getInputAndLabel","_this$__getInputAndLa2","priceContainer","priceInput","_this$__getSpinnerAnd","__getSpinnerAndLabel","_this$__getSpinnerAnd2","amountInput","_this$__getInputAndLa3","_this$__getInputAndLa4","totalContainer","totalInput","amountChanged","labelText","inputProps","queryCurrentUrl","onevent","currentUrl","$$url","DEFAULT_ATTRIBUTES","frameBorder","frameSpacing","marginWidth","marginHeight","hspace","vspace","__rememberUrl","charCodeToEntities","entitiesToCharCode","entity","studiesLabel","orgsFilter","__getOrganizationsFilter","__getOrganizationsList","__getCreateOrganizationSection","organizationSelected","organizationsLoaded","sortOrganizations","__orgsUIList","__orgsModel","createOrgBtn","orgEditor","OrganizationEditor","__createOrganization","orgsUIList","__organizationSelected","orgsModel","OrganizationListItem","orgKey","__openEditOrganization","__deleteOrganization","setOrganizationsLoaded","__updateOrganization","getGid","backToOrganizations","__orgModel","__organizationListItem","__templatesList","__servicesList","organizationListItem","__addOrganizationListItem","updateNMembers","setShowDeleteButton","templatesText","templatesListPage","TemplatesList","servicesListPage","ServicesList","actionablePath","userFromId","daysRange","nDays","timePeriod","totalCredits","totalHours","datas","percentageHours","percentageCredits","uiEntry","CreditsServiceListItem","nothingFound","setNotification","__notificationTapped","notificationTapped","__applyNotification","getResourceId","getActionablePath","getUserFromId","getCategory","_user","_params","_user2","mouseOn","getNotification","__openActionablePath","__openOrganizationDetails","__openWalletDetails","__addCreditsIndicatorSettings","__addLowDiskSpaceSetting","__addInactivitySetting","__addS4LUserPrivacySettings","walletIndicatorVisibilitySB","getWalletIndicatorVisibility","creditsWarningThresholdField","inactivitySpinner","MAX_SAFE_INTEGER","__addJobConcurrencySetting","jobConcurrencySpinner","diskUsageSpinner","cbAllowMetricsCollection","confirmationSettings","__createConfirmationsSettings","experimentalSettings","__createExperimentalSettings","cbConfirmBackToDashboard","cbConfirmDeleteStudy","cbConfirmDeleteNode","cbConfirmStopNode","cbSnapNodeToGrid","__createAPIKeysSection","__createTokensSection","__rebuildAPIKeysList","__rebuildTokensList","__apiKeysList","__validTokensGB","__supportedExternalsGB","__requestAPIKeyBtn","apiKeysList","requestAPIKeyBtn","__requestAPIKey","createAPIKeyWindow","CreateAPIKey","secret","showAPIKeyWindow","ShowAPIKey","apiKey","apiKeyForm","__createAPIKeyEntry","__createValidEntryLayout","nameLabel","delAPIKeyBtn","__deleteAPIKey","apiKeyId","__supportedExternalServices","validTokensGB","supportedExternalsGB","tokensList","supportedExternalServices","tokenForm","__createTokenEntry","newTokenForm","__createNewTokenForm","nameVal","delTokenBtn","__deleteToken","gr","newTokenService","newTokenKey","newTokenSecret","addTokenBtn","token_key","token_secret","studyLabel","_renderLayout","tagContainerScroll","tagItem","__attachTagItemEvents","adminCenter","AdminCenter","poCenter","POCenter","testerCenter","TesterCenter","__buildS4LLayout","__buildS4LLiteLayout","__buildTIPLayout","noInfoText","noInfoLabel","__getMailTo","__addCopyright","copyrightLink","ListItemWithMenu","_setRole","_getInfoButton","__applyOptions","getExecute","_getOptionsMenu","openShareWallet","openEditWallet","toggleFavourite","setStatus","__autorechargeBtn","autorecharge","AutoRecharge","__applyCreditsAvailable","accessRightss","myAr","editWalletButton","__applyStatus","favouriteButton","favouriteButtonIcon","__validator","__createIntroText","__getMemberInvitation","__getRolesToolbar","__getMembersFilter","__getMembersList","getNoReadAccess","getReadAccess","getDeleteAccess","sortWalletMembers","__currentModel","__memberInvitation","__membersModel","__reloadWalletMembers","addMemberBtn","membersUIList","membersModel","MemberListItem","listedMember","__promoteToAccountant","__demoteToMember","__deleteMember","_reloadWalletMembers","IColumnMenuButton","MenuItem","__lastPointerDownHandled","isSelectedIndex","_handleSelectEvent","leadIndex","getLeadSelectionIndex","anchorIndex","addSelectionInterval","__selectedRangeArr","__anchorSelectionIndex","__leadSelectionIndex","hasBatchModeRefCount","__hadChangeEventInBatchMode","NO_SELECTION","SINGLE_SELECTION","SINGLE_INTERVAL_SELECTION","MULTIPLE_INTERVAL_SELECTION","MULTIPLE_INTERVAL_SELECTION_TOGGLE","setBatchMode","batchMode","_fireChangeSelection","hasBatchMode","_setAnchorSelectionIndex","_setLeadSelectionIndex","_getSelectedRangeArr","_resetSelection","selectedCount","retVal","iterateSelection","toIndex","_addSelectionInterval","SelectionModel","rowsRemoved","newRanges","extraRange","minIsIn","maxIsIn","newRangeIndex","lastRange","_dumpRanges","__paneScroller","__lastColCount","__rowCache","paneReloadsData","paneUpdated","firstVisibleRow","visibleRowCount","maxCacheLines","__tableContainer","__rowCacheCount","_applyFirstVisibleRow","_applyVisibleRowCount","massUpdate","oldRow","onPaneModelChanged","__rowCacheClear","paneFirstRow","getFirstVisibleRow","_applyMaxCacheLines","__rowCacheGet","__rowCacheSet","rowString","getMaxCacheLines","completeUpdate","scrollOffset","onlyRow","onlySelectionOrFocusChanged","_scrollContent","getAlwaysUpdateCells","_updateRowStyles","_updateAllRows","rowRenderer","rowNodes","_getRowsHtml","getColumnAtX","focusedCol","rowsArr","cachedRow","rowHtml","rowAttributes","rowClass","stopLoop","col_def","cellRenderer","getDefaultCellStyle","tableBody","tableChildNodes","removeRowBase","addRowBase","exp","tableDummy","newTableRows","modelRowCount","rowWidth","getForceLineHeight","_onTrack","__moveFeedback","__lastPointerOverColumn","_updateContent","getHeaderWidgetAtColumn","setPointerOverColumn","getX","showColumnMoveFeedback","feedback","hideColumnMoveFeedback","isShowingColumnMoveFeedback","sortedColumn","_cleanUpCells","cachedWidget","__tablePane","__top","_headerClipper","_createHeaderClipper","_onChangeCaptureHeader","_onPointermoveHeader","_onPointerdownHeader","_onPointerupHeader","_onTapHeader","_paneClipper","_createPaneClipper","_onPointermovePane","_onPointerdownPane","_onTapPane","_onContextMenu","_onDbltapPane","_onResizePane","__clipperContainer","__horScrollBar","__verScrollBar","__focusIndicator","initShowCellFocusIndicator","_onPointerout","initScrollTimeout","MIN_COLUMN_WIDTH","RESIZE_REGION_RADIUS","TAP_TOLERANCE","changeScrollY","changeScrollX","beforeSort","horizontalScrollBarVisible","verticalScrollBarVisible","liveResize","selectBeforeFocus","scrollTimeout","__updateContentPlanned","__onintervalWrapper","_moveColumn","__lastMoveColPos","_lastMoveTargetX","_lastMoveTargetScroller","__lastMovePointerPageX","__resizeColumn","__lastResizePointerPageX","__lastResizeWidth","__lastPointerDownCell","__firedTapEvent","__ignoreTap","__lastPointerPageX","__lastPointerPageY","_cellEditor","__cellEditorFactory","__topRightWidget","__focusIndicatorPointerDownListener","getPaneInsetRight","topRight","getTopRightWidget","topRightWidth","scrollBar","getVerticalScrollBarWidth","isVerticalScrollBarVisible","getNewTablePaneHeader","getNewTablePane","_onPointerupFocusIndicator","_onScrollX","_applyHorizontalScrollBarVisible","_applyVerticalScrollBarVisible","_applyTablePaneModel","_onPaneModelChanged","_updateFocusIndicator","renderSync","Clipper","updateHorScrollBarMaximum","getKeepFirstVisibleRowComplete","_startInterval","getScrollTimeout","_stopInterval","__inOnScrollY","sign","_postponedUpdateContent","scrolled","__isAtEdge","getFocusCellOnPointerMove","_focusCellAtPagePos","__handleResizeColumn","minColumnWidth","getLiveResize","_showResizeLine","getColumnLeft","__handleMoveColumn","tapTolerance","targetScroller","useResizeCursor","pointerOverColumn","_getResizeColumnForPageX","_getColumnForPageX","_getRowForPagePos","resizeCol","_startResizeHeader","moveCol","_startMoveHeader","getColumn","_stopResizeHeader","_stopMoveHeader","_hideResizeLine","fromVisXPos","getFirstColumnX","toVisXPos","fromCol","toCol","tapEvent","getResetSelectionOnHeaderTap","getSelectBeforeFocus","getContextMenuFromDataCellsOnly","getShowCellFocusIndicator","resizeLine","paneBounds","paneLeft","targetXPos","targetX","currX","scrollerLeft","scrollerWidth","clipperSize","colLeft","rowTop","minScrollX","maxScrollX","minScrollY","maxScrollY","setModal","setShowClose","_onCellEditorModalWindowClose","getModalCellEditorPreOpenFunction","flushEditor","contentLocation","regionRadius","panePos","tableY","headerPos","oldWidget","forceHorizontal","preventVertical","verScrollBar","verBarWidth","horScrollBar","horBarHeight","viewWidth","viewHeight","getHorizontalScrollBarVisible","paneHeight","getPaneClipper","_applyScrollTimeout","_layoutPending","oldFirstRow","setFirstVisibleRow","paneOffset","firstVisibleRowComplete","setVisibleRowCount","moveToCell","modelChanged","EVENT_TYPE_MODEL_CHANGED","firstColumnX","maxColumnCount","__columnCount","__tableColumnModel","_applyFirstColumnX","_applyMaxColumnCount","_onHeaderCellRendererChanged","firstX","maxColCount","getMaxColumnCount","totalColCount","currCol","totalWidth","_rowArr","__sortColumnIndex","__sortMethods","__editableColArr","caseSensitiveSorting","_defaultSortComparatorAscending","row1","_defaultSortComparatorInsensitiveAscending","_defaultSortComparatorDescending","_defaultSortComparatorInsensitiveDescending","__sortableColArr","__sortAscending","originalData","getDataAsMapArray","comparator","sortMethods","descending","getCaseSensitiveSorting","setSortMethods","getSortMethods","clearSorting","_setSortColumnIndex","_setSortAscending","rowArr","setDataAsMapArray","mapArr","rememberMaps","_mapArray2RowArr","addRowsAsMapArray","setRows","setRowsAsMapArray","removeRows","columnArr","dataArr","__scroller","setRow","setColumn","columnVisible","changeColumnVisible","qxLastRow","getFetchPromise","rawRow","price","__addColorTag","invoice","invoiceUrl","__createPdfIconWithLink","reqLimit","requests","responses","__getLevelColor","numberFormat","nf","getNumberFormat","IDateForm","_setDefaultDateFormat","_addLocaleChangeListener","__dateFormat","__formatter","getDefaultDateFormatter","__localeListenerId","setDateFormat","textfieldValue","_applyDateFormat","textfield","currentDate","_onTextFieldChangeValue","DateChooser","setKeepFocus","_onChangeDate","selectedDate","chooser","usageCols","colLabels","colIDs","SERVER_MAX_LIMIT","COLUMN_ID_TO_DB_COLUMN_MAP","getFilters","rawData","_data$push","purchasesCols","startAt","LicensedItems","getPurchasedLicensedItems","licensedItemsStore","getLicensedItems","purchasesItems","purchasesItem","licensedItemId","licensedItem","checkoutsCols","getCheckedOutLicensedItems","checkoutsItems","checkoutsItem","__prevDiskUsageStateList","__socket","__callbacks","__evaluateDisplayMessage","__diskUsage","__getWarningLevel","prevDiskUsageState","warningLevel","objIndex","shouldDisplayMessage","openCategory","__reqOpenCategory","__populateCategories","importMessageSent","__myModelsCategoryMarket","__myModelsCategoryButton","purchasedItems","availableCategory","LicensedItem","addSeatsFromPurchases","categoryId","getSeats","getCategoryId","cat","getCategoryDisplay","getCategoryIcon","__addFreeItems","__buildViPMarketPage","__openCategory","licensedItemsArr","_licensedItemsArr","__freeItems","getCost","__repopulateMyModelsCategory","marketTabInfo","vipMarketView","VipMarket","setLicensedItems","viewFound","getOpenBy","setWorkspace","__creatingWorkspace","__createWorkspace","__onAppear","INTRO","SHARING","BUTTONS","__saveWorkspace","workspaceStore","defaultName","newFolder","__doButton","updateFolder","initDropAllowed","dropAllowed","__dropAllowed","__onMouseMoveDragging","__categoryHeaders","__addItems","newEmptyStudyClicked","newStudyFromTemplateClicked","newStudyFromServiceClicked","createMenuButton","infoText","createHeader","__createNewFolder","_addItems","__addNewStudyItems","_addNewStudyItems","__addCategories","__addDisabledButton","__addEmptyStudyButton","__addFromTemplateButton","__addFromServiceButton","__getLastIdxFromCategory","categoryHeader","__addIcon","__addFromResourceButton","templateMetadata","addListenerToButton","_menuButton","__rebuild","__createUpstreamButtons","currentFolderButton","__createCurrentFolderButton","__createArrow","upstreamButton","__createFolderButton","__changeFolder","folderButton","StartStopButtons","ZoomButtons","_pane","_delegate","paneElement","detatchPointerEvents","detachKeyEvents","attachListEvents","detachListEvents","_getItemCount","getItemCount","cell","getDefaultItemSize","_tree","_lids","sync","lid","_onClose","poolCellWidget","IWidgetCellProvider","createRenderer","IVirtualTreeProvider","__boundItems","__getBindPath","bindTarget","__addBinding","_bindItem","__getBindings","MWidgetController","_onChangeDelegate","_renderer","__onOpenChanged","_styleSelectabled","_styleUnselectabled","setOpenSymbolMode","_onPool","WidgetCell","createWidget","updateStates","onPool","_onItemCreated","ignoreLeafs","specificMethod","containsMethod","customSizes","__ranges","resetItemSizes","__getRanges","defaultSize","indexes","ranges","firstItemSize","rangeStart","rangeEnd","correctionSum","remainingItemsSize","__findRangeByPosition","pivot","__findRangeByIndex","minSizeSum","itemSize","updateLayerData","__setNotHoveredStyle","simpleNode","__optionsMenu","__applyIconColor","isSimpleNode","__setHoveredStyle","hideButtonsIfMouseOut","__mergeFileTreeChildren","two","newDir","sortFiles","fileInTree","isSimcore","fileInfo","__createFileEntry","_dateFormat","lastModifiedWidget","sizeWidget","__applyItemId","setMarginRight","resetPadding","resetMargin","cSchema","getContentSchema","__applyContentSchema","createArrayValidator","__lastValidValue","__pageUpMode","__pageDownMode","setFilter","_getFilterRegExp","_onTextChange","_countUp","_countDown","decimalSeparator","groupSeparator","_updateButtons","_checkValue","_applyNumberFormat","_onChangeNumberFormat","upButton","downButton","setNumberFormat","gotoValue","ServiceOptionsView","tierChanged","tiersLayout","tierBox","tItem","tierFound","pUnitUIs","pUnitUI","showEditButton","showSelectedTier","pUnitFound","__addTitle","__addDeprecationDate","__addAutoUpdatableSection","__addNonAutoUpdatableSection","deprecateDateLabel","__addAutoUpdatableInstructions","__addAutoUpdateButtonsSection","instructionsMsg","instructionsLabel","setVersion","boot_mode","__resourceFields","__saveBtn","resourceKeyTitle","spinner","setMinimumFractionDigits","__saveValues","updatedResources","resourceField","_createBtns","BreadcrumbNavigation","btns","__createBtn","__buttonsToBreadcrumb","shape","thisBtn","breadcrumbSplitter","BreadcrumbSplitter","addLeftRightWidgets","leftBtn","rightBtn","setLeftWidget","setRightWidget","__createNodeBtn","statusIcon","updateCurrentNodeId","newServiceBtn","__createNewServiceBtn","skipNode","__addEditNodeMenu","showButton","hideButton","clusterUpScaling","sidecarPulling","outputsPulling","statePulling","imagesPulling","startingSoftware","inputsPulling","DISCLAIMER_TIME","createDisclaimerText","disclaimerText","__mainLoadingPage","__clusterUpScalingLayout","__pullingSidecarLayout","__pullingOutputsLayout","__pullingStateLayout","__pullingImagesLayout","__startingSoftwareLayout","__pullingInputsLayout","__disclaimerTimer","__disclaimerText","getDefaultStartValues","getDefaultEndValues","defaultVals","setClusterUpScaling","setSidecarPulling","setOutputsPulling","setStatePulling","setImagesPulling","setStartingSoftware","setInputsPulling","report","current_value","total_value","percentage","sequenceLoadingPage","__computeOverallProgress","getClusterUpScaling","getSidecarPulling","getOutputsPulling","getStatePulling","getImagesPulling","getInputsPulling","__applyClusterUpScaling","__applySidecarPulling","defaultEndVals","__applyOutputsPulling","__applyStatePulling","__applyImagesPulling","__applyStartingSoftware","__applyInputsPulling","__setupFilePicker","__setupComputational","__setupInteractive","errorsText","labelValue","outputLabel","runAllButton","__getRunAllButton","__getStopButton","__monitoredNodesList","loggerLayout","__loggerLayout","__updateRunButtonsStatus","changePreparingNodes","__runAllButton","__stopButton","getMonitoredNodes","moniteoredNodesIds","monitoredNode","__applyMonitoredNodes","changeEvent","__updatePreparingNodes","__updateMonitoredNodesList","nodeLayout","showLoggerBtn","rerunBtn","checkRerunStatus","nodeRunningStatus","rerunnable","statusUI","__filterGroupId","tagsFilter","__tagsFilter","NodeTypeFilter","getTagsFilter","__filterGroup","serviceAdd","__serviceListItem","ServiceListItem","sortIcon","_applySortIcon","getSortIcon","__computedWidth","getComputedWidth","getFlex","qx.tableResizeDebug","ColumnData","forceRefresh","_getAvailableWidth","scrollerParentWidth","__resizeColumnData","__deferredComputeColumnsFlexWidth","_computeColumnsFlexWidth","newResizeBehaviorColumnData","initializeWidthsOnEveryAppear","__layoutChildren","__widthsInitialized","getInitializeWidthsOnEveryAppear","_extendNextColumn","_extendLastColumn","getNewResizeBehaviorColumnData","visibleColumns","visibleColumnsLength","__clearLayoutCaches","nextCol","widthUsed","lastCol","_getResizeColumnData","getPercentFormat","toggleOpen","windowManager","svgWrapper","setReady","SvgWidgetReady","getCurveControls","drawBoundingBox","bBox","bbox","deleteAnnotation","ColorPicker","_buttons2","__applyAnnotation","colorPicker","setFontSize","__applyMarker","setEdge","setRepresentation","__updateEdgeState","newColor","noPortsConnectedText","selectedColor","strongColor","annotationClicked","annotationStartedMoving","annotationMoving","annotationStoppedMoving","__drawAnnotation","_drawAnnotation","__applyColor","addNote","collabs","__setRecipientGid","setRecipientGid","atom/label","atom/icon","tooltip/atom","tooltip-error","tooltip-error/atom","move-frame","resize-frame","dragdrop-cursor","material-button","material-button/label","button-frame","button-frame/label","hover-button","menubutton","material-textfield","showingPlaceholder","framebox","splitbutton","splitbutton/button","splitbutton/arrow","slidebar","slidebar/scrollpane","slidebar/content","slidebar/button-forward","slidebar/button-backward","table/statusbar","table/column-button","table-column-reset-button","table-scroller/scrollbar-x","table-scroller/scrollbar-y","table-scroller","table-scroller/header","table-scroller/pane","table-scroller/focus-indicator","table-scroller/resize-line","table-header-cell","table-header-cell/icon","table-header-cell/sort-icon","table-editor-textfield","table-editor-selectbox","table-editor-combobox","progressive-table-header","progressive-table-header-cell","treevirtual","superStyles","treevirtual-folder","treevirtual-file","treevirtual-contract","treevirtual-expand","treevirtual-only-contract","treevirtual-only-expand","treevirtual-start-contract","treevirtual-start-expand","treevirtual-end-contract","treevirtual-end-expand","treevirtual-cross-contract","treevirtual-cross-expand","resizer","splitpane/splitter","splitpane/splitter/knob","splitpane/slider","submenu","menu/slidebar","menu-slidebar","menu-slidebar-button","menu-slidebar/button-backward","menu-slidebar/button-forward","menu-separator","menu-button","menu-button/icon","menu-button/label","menu-button/shortcut","menu-button/arrow","menubar-button","virtual-list","virtual-list/row-layer","row-layer","column-layer","group-item","virtual-selectbox","virtual-selectbox/dropdown","virtual-selectbox/dropdown/list","virtual-combobox","virtual-combobox/dropdown","virtual-combobox/dropdown/list","virtual-tree","virtual-tree-folder","virtual-tree-file","cell-string","cell-number","cell-image","cell-boolean","cell-atom","cell-date","cell-html","scrollbar/slider","scrollbar/slider/knob","scrollbar/button","scrollbar/button-begin","scrollbar/button-end","scrollarea/corner","scrollarea","scrollarea/pane","scrollarea/scrollbar-x","scrollarea/scrollbar-y","radiobutton","radiobutton/icon","form-renderer-label","checkbox/icon","spinner/textfield","spinner/upbutton","spinner/downbutton","selectbox","selectbox/atom","selectbox/popup","selectbox/list","selectbox/arrow","combobox","combobox/button","combobox/popup","combobox/list","combobox/textfield","datefield","datefield/button","datefield/textfield","datefield/list","listitem","slider/knob","groupbox/legend","groupbox/frame","check-groupbox","check-groupbox/legend","radio-groupbox","radio-groupbox/legend","tree-folder/open","tree-folder","tree-folder/icon","tree-folder/label","tree-file","window-resize-frame","window/pane","window/captionbar","window/icon","window/title","window/minimize-button","window/restore-button","window/maximize-button","window/close-button","window/statusbar","window/statusbar-text","datechooser","datechooser/navigation-bar","datechooser/last-year-button-tooltip","datechooser/last-month-button-tooltip","datechooser/next-year-button-tooltip","datechooser/next-month-button-tooltip","datechooser/last-year-button","datechooser/last-month-button","datechooser/next-year-button","datechooser/next-month-button","datechooser/button/icon","datechooser/button","nextYear","nextMonth","datechooser/month-year-label","datechooser/date-pane","datechooser/weekday","weekend","datechooser/day","otherMonth","datechooser/week","progressbar","progressbar/progress","toolbar/part","toolbar/part/container","toolbar/part/handle","toolbar-separator","toolbar-button","middle","toolbar-menubutton","showArrow","toolbar-menubutton/arrow","toolbar-splitbutton","toolbar-splitbutton/button","toolbar-splitbutton/arrow","tabview/bar","tabview/bar/button-forward","tabview/bar/button-backward","tabview/pane","tabview-page","tabview-page/button","tabview-page/button/label","tabview-page/button/icon","tabview-page/button/close-button","colorpopup","colorpopup/field","colorpopup/selector-button","colorpopup/auto-button","colorpopup/preview-pane","colorpopup/current-preview","colorpopup/selected-preview","colorpopup/colorselector-okbutton","colorpopup/colorselector-cancelbutton","colorselector","colorselector/control-bar","colorselector/visual-pane","colorselector/control-pane","colorselector/preset-grid","colorselector/colorbucket","colorselector/preset-field-set","colorselector/input-field-set","colorselector/preview-field-set","colorselector/hex-field-composite","colorselector/hex-field","colorselector/rgb-spinner-composite","colorselector/rgb-spinner-red","colorselector/rgb-spinner-green","colorselector/rgb-spinner-blue","colorselector/hsb-spinner-composite","colorselector/hsb-spinner-hue","colorselector/hsb-spinner-saturation","colorselector/hsb-spinner-brightness","colorselector/preview-content-old","colorselector/preview-content-new","colorselector/hue-saturation-field","colorselector/brightness-field","colorselector/hue-saturation-pane","colorselector/hue-saturation-handle","colorselector/brightness-pane","colorselector/brightness-handle","app-header","app-header-label","app-splitpane","strong-ui","dragdrop-no-cursor","dragdrop-own-cursor","material-button-invalid","pb-list","pb-listitem","pb-new","pb-study","pb-template","pb-dynamic","pb-computational","widget/selected-file-layout/download-button/icon","widget/selected-file-layout/delete-button/icon","pb-dynamic/menu-button/icon","pb-template/menu-button/icon","pb-study/menu-button/icon","pb-computational/menu-button/icon","pb-study/lock-status","pb-template/lock-status","pb-computational/lock-status","pb-dynamic/lock-status","none","floating-menu","node-ui-cap","node-ui-cap/captionbar","node-ui-cap/title","node-ui-cap/minimize-button","node-ui-cap/restore-button","node-ui-cap/maximize-button","node-ui-cap/close-button","node-ui-cap/progress","service-window","service-window/captionbar","info-service-window","dialog-window-content","panelview","panelview/title","panelview/caret","panelview-titlebar","panelview-content","toolbar-textfield","toolbar-label","textfilter","textfilter/textfield","autocompletefilter","autocompletefilter/autocompletefield/textfield","autocompletefilter/autocompletefield/button","toolbar-selectbox","toolbar-selectbox/arrow","toolbar-selectbox/list","splitpane/collapsible-view-left/collapse-button","splitpane/collapsible-view-right/collapse-button","node-ports","service-browser","form-input","form-password","widget/reset-button","form-button","form-button-outlined","fab-button","form-button-text","menu-wider","link-button","xl-button","xl-button/label","lg-button","lg-button/label","md-button","md-button/label","toolbar-xl-button","toolbar-xl-button/label","toolbar-lg-button","toolbar-lg-button/label","toolbar-md-button","toolbar-md-button/label","no-shadow-button","strong-button","warning-button","danger-button","tab-button","flash","flash/badge","settings-groupbox","settings-groupbox/frame","settings-groupbox/legend","chip/label","dashboard/pane","dashboard/bar/content","dashboard-page","dashboard-page/button","editlabel-label","editlabel-input","tagitem","tagitem/colorbutton","tagbutton","margined-layout","chip-button","filter-toggle-button","filter-toggle-button/label","filter-toggle-button/icon","form-array-container","appmotion-button","appmotion-button-action","appmotion-button/label","appmotion-buy-credits-input","appmotion-buy-credits-select","appmotion-buy-credits-select/list","appmotion-buy-credits-spinner","appmotion-buy-credits-spinner/textfield","appmotion-buy-credits-checkbox","selfUpdate","_selfUpdate","__bindingOptions","__objectController","__isModelSelectable","currentData","itemValue","updateModel","__tearDownBinding","__setUpBinding","oldTarget","__onInputId","setSelectionMode","_setPreselectedItem","resetAllTextSelection","__getDomainText","__getArrayDomainText","sMerged","minItems","valuesInString","_oorInvalidMessage","_oorInvalidMessage2","oorInvalidMessage","multiSelect","multiSelectionChanged","getItemButton","MODIFIED_DATE","SIZE","__convertEntries","getLastModified","gridItem","__attachListenersToGridItem","__getEntries","__reloadFolderContent","__attachListenersToTableItem","iconsLayout","__changeMultiSelect","getMultiSelect","selectedButtons","isMultiSelect","__itemDblTapped","selectedItems","__retrieveURLAndDownloadSelected","__deleteSelected","fileDeleted","__changeMultiSelection","__retrieveURLAndDownloadFile","toBeDeleted","isFolderSelected","__doDeleteSelected","__deleteItem","unitName","cost","currentCostPerUnit","isDefault","unitExtraInfo","specificInfo","setUnitData","editPricingUnit","unitData","__applySelected","strong","selectPricingUnit","showAwsSpecificInfo","showUnitExtraInfo","getExtraInfo","CheckboxTreeItem","checkedChanged","enableTriState","areAllChecked","addHint","__populateInfoButton","linkWithRightColor","MHintInTree","setNotHoveredStyle","setHoveredStyle","__getFolder","draggingOver","createOrg","updateOrg","showDeleteButton","openEditOrganization","editOrgButton","deleteOrgButton","Icons","everyone","__createNewMemberLayout","__createMembersList","sortOrgMembers","__currentOrg","__addMembersButton","__reloadOrgMembers","__createAddMembersText","membersFilter","selectedMembers","selectedMemberGId","__addMember","__promoteToUser","__promoteToManager","__promoteToAdministrator","__demoteToRestrictedUser","__demoteToManager","__deleteMyself","_addMember","newMemberIdentifier","newMember","patchMember","__doDeleteMember","isThereAnyAdmin","isThereAnyManager","rUSure","__getTemplatesFilter","__getTemplatesList","__templatesModel","__reloadOrgTemplates","templatesUIList","templatesModel","SharedResourceListItem","getOrgId","orgTemplate","orgTemplateCopy","__getServicesFilter","__getServicesList","__servicesModel","__reloadOrgServices","servicesUIList","servicesModel","orgServices","orgService","orgServiceCopy","GRID","TIME","CREDITS","PERCENTAGE","__addInfoText","APIKeyBase","__populateWindow","hBox2","confirmBtn","expiration","__populateTokens","hBox1","__createStarredEntry","hBox3","copyAPIKeyBtn","copyAPISecretBtn","copyBaseUrlBtn","sTitle","sLabel","__addPricingPlansPage","__addMaintenancePage","__addAnnouncementsPage","pricing","PlanManager","Maintenance","Announcements","__addUsersPage","__addPreRegistrationPage","__addInvitationsPage","__addProductPage","__addMsgTemplatesPage","preRegistration","PreRegistration","Invitations","productInfo","ProductInfo","MessageTemplates","__addSocketMessagesPage","__addConsoleErrorsPage","__addStaticsPage","webSocketMessages","WebSocketMessages","consoleErrors","ConsoleErrors","Statics","addNewPaymentMethod","__topUpAmountField","__monthlyLimitField","__paymentMethodField","__mainContent","__getAutoRechargeForm","__noPaymentMethodsContent","__fetchingView","_requestData","arData","__populateForm","__enabledField","autoRechargeLayout","enabledLayout","enabledTitle","enabledCheckbox","topUpAmountLayout","topUpAmountTitleLayout","topUpAmountTitle","topUpAmountInfo","topUpAmountField","monthlyLimitLayout","monthlyLimitTitleLayout","monthlyLimitTitle","monthlyLimitTitleInfo","monthlyLimitField","monthlyLimitHelper","paymentMethodLayout","paymentMethodTitle","paymentMethodField","__getFieldsData","topUpAmountInUsd","monthlyLimitInUsd","__updateAutoRecharge","successfulMsg","btnContainer","saveAutoRechargeBtn","promoteToAccountant","demoteToMember","getOptions","MONTH_YEAR_FORMAT","shownDate","showMonth","_updateDatePane","_onPointerUpDown","WEEKDAY_FORMAT","WEEK_FORMAT","shownMonth","shownYear","__weekdayLabelArr","__dayLabelArr","__weekLabelArr","_onNavButtonTap","_onDayTap","_onDayDblTap","controlLayout","getShownMonth","getShownYear","newDay","dayLabel","dateTime","dayIncrement","monthIncrement","yearIncrement","setFullYear","setShownMonth","setShownYear","todayYear","todayMonth","todayDayOfMonth","selDate","selYear","selMonth","selDayOfMonth","monthYearFormat","firstDayOfWeek","firstSundayInMonth","weekDayFormat","nrDaysOfLastMonth","weekFormat","week","__licensedItems","getLowerLicensedItems","lowerLicensedItems","seatsToNSeats","seats","nSeats","seat","getNumOfSeats","licensedItemsData","licensedItemData","__addLicensedItemsToCache","getLicensedItemId","purchasesParams","purchaseLicensedItem","numOfSeats","wallet_id","pricing_plan_id","pricing_unit_id","num_of_seats","licensedResources","firstItem","licensedRsrc","licensedItemResource","LicensedItemResource","termsOfUseUrl","categoryIcon","categoryDisplay","setSeats","licensedItemPurchaseId","expireAt","modelPurchased","__anatomicalBundles","__anatomicalBundlesModel","SortModelsButtons","LicensedItemDetails","modelsUIList","anatomicalModelsModel","LicensedItemListItem","anatomicModelDetails","licensedItemBundle","anatomicalBundle","setAnatomicalModelsData","licensedBundles","__populateModels","__modelPurchaseRequested","modelId","__sendImportModelMessage","selectLicensedItemId","models","sortModel","nASeats","nBSeats","entryFound","purchaseData","__nodeSelectionChanged","startPipeline","__runSelectionButton","splitButtonMenu","runSelectionButton","FetchSplitButton","selectedNodes","dynamicsLayout","computationalsLayout","isSelectionRunnable","__setRunning","__getRunButtons","__checkButtonsVisible","isRunnable","__getZoomOutButton","__getZoomResetButton","__getZoomInButton","__getZoomBtn","__firstRow","__firstColumn","getFirstColumn","_updateLayerWindow","_updateLayerData","widgetCellProvider","_cellProvider","__spacerPool","updated","_getSpacer","_activateNotEmptyChild","elementToPool","cellProvider","visibleItems","overlap","_lastRow","_lastColumn","lineLength","widgetsToMove","widgetsToMoveIndexes","IWidgetCell","created","_createWidget","oldStates","newStates","__getWidgetFromPool","_cleanupPool","AbstractWidget","leftWidget","rightWidget","getTriangleControlsLeft","getTriangleControlsRight","getSlashControls","offsetW","getArrowControlsLeft","getArrowControlsRight","getArrowControls","getSeparatorControls","getPlusBtnControlsLeft","getPlusBtnControlsRight","__leftPart","__rightPart","__getBGColor","decoratorName","decoratorBG","_applyLeftWidget","getShape","_applyRightWidget","polylineControls","lineControls","_applyShowArrow","__dropdown","__activeTags","printTags","ActiveTagIcon","__menu","_getMenuButtons","__dispatch","getActiveTags","_addTag","prevIcon","TagsFilter","isPrintTags","_getActiveMenuButtons","_addOption","existing","_removeAllOptions","_addSeparator","__buildMenu","setResourceType","SERVICE_THUMBNAIL","__applyService","__applyVersion","__applyHitsOnItem","hitsLabel","getHits","getContact","getXType","__openColorSelector","colorSelector","ColorSelector","setRed","setGreen","setBlue","checkboxClicked","setTriState","promoteToMember","promoteToManager","promoteToAdministrator","demoteToManager","leaveResource","_promoteButton2","_demoteButton2","_removeButton","openMoreInfo","BaseView","Plans","pricingPlanDetails","PlanDetails","pricingPlanModel","setCurrentPricingPlan","__populateMaintenanceLayout","respLabel","invitationRespViewer","__createAnnouncements","announcementGroupBox","announcementForm","__createAnnouncementForm","widgetLogin","widgetRibbon","widgetUserMenu","generateAnnouncementBtn","__populateAnnouncementLayout","announcementField","copyAnnouncementBtn","usersGroupBox","searchUsersForm","__searchUsersForm","searchBtn","findingStatus","__populateFoundUsersLayout","foundUsersContainer","usersRespViewer","__searchPreRegistration","groupBox","__preRegistrationForm","requestAccountData","flashErrorMsg","detailErrorMsg","__populatePreRegistrationLayout","preRegistrationContainer","preregistrationRespViewer","__createInvitations","invitationGroupBox","__createInvitationForm","extraCreditsInUsd","withExpiration","trialDays","generateInvitationBtn","__populateInvitationLayout","invitationField","copyInvitationBtn","__messageTemplates","templatesSB","htmlViewer","__htmlViewer","HtmlEditor","__populateMessage","newTemplate","__saveTemplate","Filtered","filterMessage","jsonViewer","resetHiddenRows","addNotRegex","applyFilters","messagesObj","messagesArray","channel","toLocaleTimeString","errorViewer","errorsArray","_Object$entries2","_Object$entries2$_i","_textField","licensedItemResourceData","titleAndSubtitle","manufacturerData","doi","manufacturerLabel","manufacturerLink","manufacturerIcon","longName","licensedResource","getFeatures","functionality","dateDesc","dateAsc","modelPurchaseRequested","modelImportRequested","anatomicalModelsData","__modelsInfoStack","getAnatomicalModelsData","getLicensedResources","__addModelsInfo","__addSeatsSection","__addPricing","selectModelLabel","modelBundleLayout","__populateModelsInfo","modelSelectionLayout","modelsLayout","modelSelected","thumbnailAndTitle","modelLayout","miniThumbnail","modelInfoLayout","topGrid","getManufacturerLabel","getManufacturerIcon","getManufacturerLink","middleLayout","featuresGrid","featuresLayout","capitalizeField","_titleLabel","featureValue","getDoi","doiTitle","doiLabel","doiToLink","getTermsOfUseUrl","tAndC","__openLicense","importSection","__createImportSection","rawLink","MarkdownWindow","selectedIdx","getModelId","pricingLayout","availableForImporting","pUnit","PricingUnitLicense","showRentButton","seatsSection","seatsText","__applyDisplayName","__applySeats","nSeatsLabel","__cursorIsOut","_onButtonExecute","SplitButton","_onChangeMenuVisibility","resetMenu","IColorForm","dialogok","dialogcancel","__updateContext","__presetTable","__capture","__brightnessSubtract","__hueSaturationSubtractTop","__hueSaturationSubtractLeft","__preventChangeValueEvent","_onHueSaturationPaneRoll","_onHueSaturationFieldPointerDown","_onHueSaturationHandlePointerUp","_onHueSaturationHandlePointerMove","_onBrightnessPaneRoll","_onBrightnessFieldPointerDown","_onBrightnessHandlePointerDown","_onBrightnessHandlePointerUp","_onBrightnessHandlePointerMove","_onColorFieldTap","colorField","colorPos","hexLabel","hexHelper","setMaxLength","_onHexFieldChange","rgbSpinLabel","_setRedFromSpinner","_setGreenFromSpinner","_setBlueFromSpinner","hsbSpinLabel","_setHueFromSpinner","_setSaturationFromSpinner","_setBrightnessFromSpinner","getRed","getGreen","getBlue","_applyRed","_setHexFromRgb","_setHueFromRgb","_setPreviewFromRgb","_applyGreen","_applyBlue","_applyHue","_setRgbFromHue","_setBrightnessGradiant","_applySaturation","_applyBrightness","topValue","locationBrightnessField","locationBrightnessHandle","fieldBounds","_setBrightnessOnFieldEvent","setBrightness","getBrightness","_setHueSaturationOnFieldEvent","handleBounds","setSaturation","getSaturation","setHue","getHue","vTop","vLeft","hexField","vColor","vRgb","setPreviousColor","helpRgb","helpRgbString","__createList","fetchPlans","pricingPlanSelected","ppSelected","__openCreatePricingPlan","PlanListItem","__openUpdatePricingPlan","ppCreator","PlanEditor","ppEditor","backToPricingPlans","createTabPage","__servicesPage","UnitsList","_tabPage","pricingPlanListItem","setPricingPlanId","getClassification","__filterTypes","==","!=","<=",">=","between","!between","__applyingFilters","Filters","__fullArr","getFullArray","_js_in_array","the_needle","the_haystack","addBetweenFilter","addNumericFilter","ignorecase","regexarg","filter_test","rowLength","rowsToHide","hideRows","rowNum","numOfRows","kludge","markdownUrl","rentPricingUnit","__rentUnit","nCredits","editPricingPlan","ppId","ppKey","__applyPpId","__applyPpKey","__applyIsActive","__pricingPlan","getPricingPlanKey","getIsActive","setClassification","__createPricingPlan","__updatePricingPlan","getPpKey","__openCreatePricingUnit","__openUpdatePricingUnit","puCreator","UnitEditor","puEditor","__openAddServiceToPlan","__fetchServices","sList","costPerUnit","getSpecificInfo","unitExtraInfoCPU","unitExtraInfoRAM","unitExtraInfoVRAM","unitExtraInfoNSeats","__createPricingUnit","__updatePricingUnit","__applyPricingPlanId","getUnitName","getCostPerUnit","getDefault","awsEc2Instances","aws_ec2_instances","CPU","getUnitExtraInfoCPU","RAM","getUnitExtraInfoRAM","VRAM","getUnitExtraInfoVRAM","getUnitExtraInfo","getUnitExtraInfoNSeats","pricingUnitCostUpdate","_specificInfo","activitytree-background-cpu","activitytree-background-memory","ready-green","warning-yellow","busy-orange","failed-red","danger-red","text-on-warning","info-bg","success-bg","warning-bg","error-bg","disclaimer-bg","pb-service","pb-locked","default-button-text-outline","default-button-text-action","default-button","default-button-background","default-button-hover","default-button-hover-background","default-button-active","default-button-active-background","default-button-focus","default-button-focus-background","default-button-disabled","default-button-disabled-background","default-button-focus-blur","border-separator","visual-blue","logger-warning-message","logger-error-message","workbench-edge-selected","table-header","table-header-foreground","table-header-border","table-focus-indicator","table-row-background-even","table-row-background-odd","table-row-background-focused","table-row-background-focused-selected","table-row-background-selected","table-row-selected","table-row","table-row-line","table-column-line","scales","static","55","60","65","75","80","85","95","danger","zmt","speag","inversed","translucent","primary","secondary","regular","on-hover","on-active","off-hover","off-active","minimal","overlay","subtle","muted","alternating","accent","strong-v","fg","on-strong","on-strong-v","primary-v","secondary-v","warning-v","danger-v","__resolvePath","curr","cKey","colorProvider","ColorProvider","c00","c01","c02","c03","c04","c05","c06","c07","c08","c09","c10","c12","c14","product-color","strong-main","a-bit-transparent","background-main","background-main-1","background-main-2","background-main-3","background-main-4","background-main-5","background-card-overlay","background-workspace-card-overlay","navigation_bar_background_color","fab_text","fab-background","input_background","input_background_disable","hint-background","transparent_overlay","flash_message_bg","text-disabled","text-selected","text-placeholder","text-darker","contrasted-text-dark","contrasted-text-light","bg-shadow","box-shadow","window-popup-background","window-caption-background","window-caption-background-active","window-caption-text","window-caption-text-active","window-border","window-border-inner","material-button-background","material-button-background-disabled","material-button-background-hovered","material-button-background-pressed","material-button-text-disabled","material-button-text","material-textfield-focused","material-textfield-disabled","material-textfield-invalid","background-selected","background-selected-disabled","background-selected-dark","background-disabled","background-disabled-checked","background-pane","tabview-unselected","tabview-button-border","tabview-label-active-disabled","tabview-pane-background","tabview-button-background","scrollbar-passive","scrollbar-active","button-border","button-border-hovered","button-box","button-box-pressed","border-lead","white-box-border","border-focused","border-invalid","border-disabled","tooltip-text","progressive-table-row-background-even","progressive-table-row-background-odd","progressive-progressbar-background","progressive-progressbar-indicator-done","progressive-progressbar-indicator-undone","progressive-progressbar-percent-background","progressive-progressbar-percent-text","workbench-edge-comp-active","workbench-edge-api-active","workbench-start-hint","workbench-view-navbar","workbench-view-splitter","node-background","node-selected-background","node-title-text","node-port-text","logger-debug-message","logger-info-message","service-window-hint","progressbar-disabled","progressbar-runner","haloProgressbar","haloProgressbar-disabled","haloProgressbar-runner","haloProgressbar-fill","loading-page-background-color","loading-page-text","loading-page-spinner","ColorLight","material-textfield-focused-invalid","material-textfield-readonly","material-button-hovered","material-button-pressed","material-button-disabled","material-button-left","material-button-right","material-button-hovered-left","material-button-focused-left","material-button-hovered-right","material-button-focused-right","material-button-pressed-left","material-button-pressed-right","material-button-disabled-left","material-button-disabled-right","border-blue","main-top","main-right","main-bottom","main-left","main-dark","button-box-pressed-hovered","button-box-hovered","button-box-invalid","button-box-pressed-invalid","button-box-hovered-invalid","button-box-pressed-hovered-invalid","button-box-focused","button-box-pressed-focused","button-box-hovered-focused","button-box-pressed-hovered-focused","button-box-right","button-box-pressed-right","button-box-pressed-hovered-right","button-box-hovered-right","button-box-focused-right","button-box-hovered-focused-right","button-box-pressed-focused-right","button-box-pressed-hovered-focused-right","button-box-top-right","button-box-pressed-top-right","button-box-pressed-hovered-top-right","button-box-hovered-top-right","button-box-bottom-right","button-box-pressed-bottom-right","button-box-pressed-hovered-bottom-right","button-box-hovered-bottom-right","button-box-bottom-left","button-box-pressed-bottom-left","button-box-pressed-hovered-bottom-left","button-box-hovered-bottom-left","button-box-top-left","button-box-pressed-top-left","button-box-pressed-hovered-top-left","button-box-hovered-top-left","button-box-middle","button-box-pressed-middle","button-box-pressed-hovered-middle","button-box-hovered-middle","button-box-left","button-box-pressed-left","button-box-pressed-hovered-left","button-box-hovered-left","button-box-focused-left","button-box-hovered-focused-left","button-box-pressed-hovered-focused-left","button-box-pressed-focused-left","separator-horizontal","separator-vertical","scroll-knob","scroll-knob-pressed","scroll-knob-hovered","scroll-knob-pressed-hovered","button-hover","window-active","window-caption","white-box","lead-item","toolbar-button-hovered","toolbar-button-left","toolbar-button-hovered-left","toolbar-button-right","toolbar-button-hovered-right","menubar-button-hovered","menubar-button-pressed","datechooser-date-pane","datechooser-weekday","datechooser-week","datechooser-week-header","tabview-page-button-top","tabview-page-button-bottom","tabview-page-button-left","tabview-page-button-right","statusbar","table-scroller-focus-indicator","table-header-column-button","table-header-cell-first","rounded","border-simple","no-border","indicator-border","form-input-focused","form-input-disabled","form-input-invalid","form-input-focused-invalid","service-tree","outputPortHighlighted","node-ui-cap-maximized","workbench-small-cap-captionbar","service-window-maximized","sidepanel","flash-message","flash-info","flash-success","flash-warning","flash-error","flash-badge","flash-container-transitioned","no-border-2","border-status","border-ok","border-warning","border-error","border-busy","border-editable","filter-toggle-button-selected","no-radius-button","tagitem-colorbutton","bordered-button","strong-bordered-button","tab-button-selected","form-button-hovered","form-button-hovered-checked","form-button-checked","form-button-focused","form-button-active","form-button-disabled","form-button-outlined-middle","form-button-outlined-right","form-button-outlined-hovered-right","form-button-outlined-checked-right","form-button-outlined-left","form-button-outlined-hovered-left","form-button-outlined-checked-left","form-button-warning","form-button-warning-hover","form-button-danger","form-button-danger-hover","selected-light","selected-dark","thumbnail-selected","headline","small","monospace","title-18","text-18","title-16","text-16","title-14","text-14","link-label-14","text-13","text-13-italic","text-12","link-label-12","text-11","text-11-italic","text-10","text-9","Oxygen","ThemeLight","ColorDark","ThemeDark"],"mappings":"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,EACAw/C,EAASzshB,KAAKiqC,UACdq/hB,EAAY78C,EAAO7rhB,OACnB2okB,KAEKprb,EAAM,EAAGA,EAAMmrb,EAAWnrb,IACnC,CACEkrb,GAAc,EACd,IAAK3okB,KAAKV,KAAK2okB,QACf,CAEE,GAA+C,YAA3C3okB,KAAKmokB,cAAcnokB,KAAK2okB,QAAQjokB,GAAG,IACvC,CACEuse,EAAejte,KAAKu8d,aAAav8d,KAAK2okB,QAAQjokB,GAAG,GAAIy9I,GACrD,OAAOn+I,KAAK2okB,QAAQjokB,GAAG,IAEvB,IAAK,KACCuse,GAAgBjte,KAAK2okB,QAAQjokB,GAAG,KAClC2okB,GAAc,GAGhB,MAEF,IAAK,KACCp8F,GAAgBjte,KAAK2okB,QAAQjokB,GAAG,KAClC2okB,GAAc,GAGhB,MAEF,IAAK,IACCp8F,EAAejte,KAAK2okB,QAAQjokB,GAAG,KACjC2okB,GAAc,GAGhB,MAEF,IAAK,IACCp8F,EAAejte,KAAK2okB,QAAQjokB,GAAG,KACjC2okB,GAAc,GAGhB,MAEF,IAAK,KACCp8F,GAAgBjte,KAAK2okB,QAAQjokB,GAAG,KAClC2okB,GAAc,GAGhB,MAEF,IAAK,KACCp8F,GAAgBjte,KAAK2okB,QAAQjokB,GAAG,KAClC2okB,GAAc,SAMf,GAA+C,YAA3CrpkB,KAAKmokB,cAAcnokB,KAAK2okB,QAAQjokB,GAAG,IAC5C,CACEuse,EAAejte,KAAKu8d,aAAav8d,KAAK2okB,QAAQjokB,GAAG,GAAIy9I,GAErD,OAAOn+I,KAAK2okB,QAAQjokB,GAAG,IAEvB,IAAK,UACCuse,GAAgBjte,KAAK2okB,QAAQjokB,GAAG,IAChCuse,GAAgBjte,KAAK2okB,QAAQjokB,GAAG,KAClC2okB,GAAc,GAGhB,MAEF,IAAK,YACCp8F,EAAejte,KAAK2okB,QAAQjokB,GAAG,IAC/Buse,EAAejte,KAAK2okB,QAAQjokB,GAAG,MACjC2okB,GAAc,SAMf,GAA2B,UAAvBrpkB,KAAK2okB,QAAQjokB,GAAG,GACzB,CACEuse,EAAejte,KAAKu8d,aAAa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A,IACA,GAEFiD,IACE,IACA,IACA,IACA,GAEF2E,IACE,IACA,IACA,IACA,GAEF4J,IACE,IACA,IACA,IACA,GAEFoE,IACE,IACA,IACA,IACA,GAEFuC,IACE,IACA,IACA,IACA,GAEFqqM,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEF4nH,IACE,IACA,IACA,IACA,GAEF2kN,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFn3c,IACE,IACA,IACA,IACA,GAEFo3c,IACE,GACA,IACA,IACA,GAEFC,IACE,GACA,GACA,GACA,GAEFC,IACE,GACA,GACA,GACA,GAEFrwY,IACE,GACA,GACA,GACA,GAEFswY,IACE,GACA,GACA,GACA,GAEF1me,KACE,GACA,GACA,GACA,GAEFg5J,KACE,GACA,GACA,GACA,GAEF1zL,KACE,GACA,GACA,GACA,GAEF2zL,KACE,GACA,GACA,GACA,GAEFC,KACE,GACA,GACA,GACA,GAEFC,KACE,EACA,EACA,EACA,IAGJ5nN,SACE56B,GACE,IACA,IACA,IACA,GAEFE,GACE,IACA,IACA,IACA,GAEFC,GACE,IACA,IACA,IACA,GAEF+yB,GACE,IACA,IACA,IACA,GAEF8C,GACE,IACA,IACA,IACA,GAEFyK,IACE,IACA,IACA,IACA,GAEFiD,IACE,IACA,IACA,IACA,GAEF2E,IACE,IACA,IACA,IACA,GAEF4J,IACE,IACA,IACA,IACA,GAEFoE,IACE,IACA,IACA,IACA,GAEFuC,IACE,IACA,IACA,GACA,GAEFqqM,IACE,IACA,IACA,GACA,GAEFC,IACE,IACA,IACA,GACA,GAEF4nH,IACE,IACA,IACA,GACA,GAEF2kN,IACE,IACA,IACA,GACA,GAEFC,IACE,IACA,IACA,GACA,GAEFC,IACE,IACA,IACA,EACA,GAEFn3c,IACE,IACA,GACA,EACA,GAEFo3c,IACE,IACA,GACA,EACA,GAEFC,IACE,IACA,GACA,EACA,GAEFC,IACE,IACA,GACA,EACA,GAEFrwY,IACE,GACA,GACA,EACA,GAEFswY,IACE,GACA,GACA,EACA,GAEF1me,KACE,GACA,GACA,EACA,GAEFg5J,KACE,GACA,GACA,EACA,GAEF1zL,KACE,GACA,GACA,EACA,GAEF2zL,KACE,GACA,GACA,EACA,GAEFC,KACE,GACA,GACA,EACA,GAEFC,KACE,GACA,EACA,EACA,IAGJwtU,QACEhwjB,GACE,IACA,IACA,IACA,GAEFE,GACE,IACA,IACA,IACA,GAEFC,GACE,IACA,IACA,IACA,GAEF+yB,GACE,IACA,IACA,IACA,GAEF8C,GACE,IACA,IACA,IACA,GAEFyK,IACE,IACA,IACA,IACA,GAEFiD,IACE,IACA,IACA,IACA,GAEF2E,IACE,IACA,IACA,IACA,GAEF4J,IACE,IACA,IACA,IACA,GAEFoE,IACE,IACA,IACA,IACA,GAEFuC,IACE,IACA,IACA,IACA,GAEFqqM,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEF4nH,IACE,IACA,IACA,IACA,GAEF2kN,IACE,IACA,GACA,GACA,GAEFC,IACE,IACA,GACA,GACA,GAEFC,IACE,IACA,GACA,GACA,GAEFn3c,IACE,IACA,GACA,GACA,GAEFo3c,IACE,IACA,GACA,GACA,GAEFC,IACE,IACA,GACA,GACA,GAEFC,IACE,IACA,GACA,GACA,GAEFrwY,IACE,IACA,GACA,GACA,GAEFswY,IACE,IACA,GACA,GACA,GAEF1me,KACE,GACA,EACA,EACA,GAEFg5J,KACE,GACA,EACA,EACA,GAEF1zL,KACE,GACA,EACA,EACA,GAEF2zL,KACE,GACA,EACA,EACA,GAEFC,KACE,GACA,EACA,EACA,GAEFC,KACE,GACA,EACA,EACA,IAGJytU,KACEjwjB,GACE,IACA,IACA,IACA,GAEFE,GACE,IACA,IACA,IACA,GAEFC,GACE,IACA,IACA,IACA,GAEF+yB,GACE,IACA,IACA,IACA,GAEF8C,GACE,IACA,IACA,IACA,GAEFyK,IACE,IACA,IACA,IACA,GAEFiD,IACE,IACA,IACA,IACA,GAEF2E,IACE,IACA,IACA,IACA,GAEF4J,IACE,IACA,IACA,IACA,GAEFoE,IACE,IACA,IACA,IACA,GAEFuC,IACE,IACA,IACA,IACA,GAEFqqM,IACE,GACA,IACA,IACA,GAEFC,IACE,GACA,IACA,IACA,GAEF4nH,IACE,GACA,IACA,IACA,GAEF2kN,IACE,GACA,IACA,IACA,GAEFC,IACE,GACA,IACA,IACA,GAEFC,IACE,GACA,IACA,IACA,GAEFn3c,IACE,GACA,IACA,IACA,GAEFo3c,IACE,GACA,IACA,IACA,GAEFC,IACE,GACA,GACA,IACA,GAEFC,IACE,EACA,GACA,IACA,GAEFrwY,IACE,EACA,GACA,IACA,GAEFswY,IACE,EACA,GACA,GACA,GAEF1me,KACE,EACA,GACA,GACA,GAEFg5J,KACE,EACA,GACA,GACA,GAEF1zL,KACE,EACA,GACA,GACA,GAEF2zL,KACE,EACA,GACA,GACA,GAEFC,KACE,EACA,GACA,GACA,GAEFC,KACE,EACA,EACA,GACA,IAGJ0tU,OACElwjB,GACE,IACA,IACA,IACA,GAEFE,GACE,IACA,IACA,IACA,GAEFC,GACE,IACA,IACA,IACA,GAEF+yB,GACE,IACA,IACA,IACA,GAEF8C,GACE,IACA,IACA,IACA,GAEFyK,IACE,IACA,IACA,IACA,GAEFiD,IACE,IACA,IACA,GACA,GAEF2E,IACE,IACA,IACA,EACA,GAEF4J,IACE,IACA,IACA,EACA,GAEFoE,IACE,IACA,IACA,EACA,GAEFuC,IACE,IACA,IACA,EACA,GAEFqqM,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,IACA,EACA,GAEF4nH,IACE,IACA,IACA,EACA,GAEF2kN,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,IACA,EACA,GAEFn3c,IACE,IACA,IACA,EACA,GAEFo3c,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,GACA,EACA,GAEFC,IACE,GACA,GACA,EACA,GAEFrwY,IACE,GACA,GACA,EACA,GAEFswY,IACE,GACA,GACA,EACA,GAEF1me,KACE,GACA,GACA,EACA,GAEFg5J,KACE,GACA,GACA,EACA,GAEF1zL,KACE,GACA,GACA,EACA,GAEF2zL,KACE,GACA,GACA,EACA,GAEFC,KACE,GACA,GACA,EACA,GAEFC,KACE,GACA,EACA,EACA,IAGJ2tU,UACEnvkB,MACE8e,GACE,IACA,IACA,IACA,GAEFC,GACE,IACA,IACA,IACA,GAEFC,GACE,IACA,IACA,IACA,GAEFC,GACE,IACA,IACA,IACA,GAEFC,GACE,IACA,IACA,IACA,GAEFC,GACE,IACA,IACA,IACA,GAEF+yB,GACE,IACA,IACA,IACA,GAEFqC,GACE,IACA,IACA,IACA,GAEFS,GACE,IACA,IACA,IACA,GAEFkB,GACE,IACA,IACA,IACA,GAEFuJ,IACE,IACA,IACA,IACA,GAEFiD,IACE,IACA,IACA,IACA,GAEF2E,IACE,IACA,IACA,IACA,GAEF4J,IACE,IACA,IACA,IACA,GAEFoE,IACE,IACA,IACA,IACA,GAEFuC,IACE,IACA,IACA,IACA,GAEFqqM,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEF4nH,IACE,IACA,IACA,IACA,GAEF2kN,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFn3c,IACE,IACA,IACA,IACA,GAEFo3c,IACE,GACA,IACA,IACA,GAEFC,IACE,GACA,GACA,GACA,GAEFC,IACE,GACA,GACA,GACA,GAEFrwY,IACE,GACA,GACA,GACA,GAEFswY,IACE,GACA,GACA,GACA,GAEF1me,KACE,GACA,GACA,GACA,GAEFg5J,KACE,GACA,GACA,GACA,GAEF1zL,KACE,GACA,GACA,GACA,GAEF2zL,KACE,GACA,GACA,GACA,GAEFC,KACE,GACA,GACA,GACA,GAEFC,KACE,EACA,EACA,EACA,IAGJ5nN,SACE56B,GACE,IACA,IACA,IACA,GAEFE,GACE,IACA,IACA,IACA,GAEFC,GACE,IACA,IACA,IACA,GAEF+yB,GACE,IACA,IACA,IACA,GAEF8C,GACE,IACA,IACA,IACA,GAEFyK,IACE,IACA,IACA,IACA,GAEFiD,IACE,IACA,IACA,IACA,GAEF2E,IACE,IACA,IACA,IACA,GAEF4J,IACE,IACA,IACA,IACA,GAEFoE,IACE,IACA,IACA,IACA,GAEFuC,IACE,IACA,IACA,GACA,GAEFqqM,IACE,IACA,IACA,GACA,GAEFC,IACE,IACA,IACA,GACA,GAEF4nH,IACE,IACA,IACA,GACA,GAEF2kN,IACE,IACA,IACA,GACA,GAEFC,IACE,IACA,IACA,GACA,GAEFC,IACE,IACA,IACA,EACA,GAEFn3c,IACE,IACA,GACA,EACA,GAEFo3c,IACE,IACA,GACA,EACA,GAEFC,IACE,IACA,GACA,EACA,GAEFC,IACE,IACA,GACA,EACA,GAEFrwY,IACE,GACA,GACA,EACA,GAEFswY,IACE,GACA,GACA,EACA,GAEF1me,KACE,GACA,GACA,EACA,GAEFg5J,KACE,GACA,GACA,EACA,GAEF1zL,KACE,GACA,GACA,EACA,GAEF2zL,KACE,GACA,GACA,EACA,GAEFC,KACE,GACA,GACA,EACA,GAEFC,KACE,GACA,EACA,EACA,IAGJwtU,QACEhwjB,GACE,IACA,IACA,IACA,GAEFE,GACE,IACA,IACA,IACA,GAEFC,GACE,IACA,IACA,IACA,GAEF+yB,GACE,IACA,IACA,IACA,GAEF8C,GACE,IACA,IACA,IACA,GAEFyK,IACE,IACA,IACA,IACA,GAEFiD,IACE,IACA,IACA,IACA,GAEF2E,IACE,IACA,IACA,IACA,GAEF4J,IACE,IACA,IACA,IACA,GAEFoE,IACE,IACA,IACA,IACA,GAEFuC,IACE,IACA,IACA,IACA,GAEFqqM,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEF4nH,IACE,IACA,IACA,IACA,GAEF2kN,IACE,IACA,GACA,GACA,GAEFC,IACE,IACA,GACA,GACA,GAEFC,IACE,IACA,GACA,GACA,GAEFn3c,IACE,IACA,GACA,GACA,GAEFo3c,IACE,IACA,GACA,GACA,GAEFC,IACE,IACA,GACA,GACA,GAEFC,IACE,IACA,GACA,GACA,GAEFrwY,IACE,IACA,GACA,GACA,GAEFswY,IACE,IACA,GACA,GACA,GAEF1me,KACE,GACA,EACA,EACA,GAEFg5J,KACE,GACA,EACA,EACA,GAEF1zL,KACE,GACA,EACA,EACA,GAEF2zL,KACE,GACA,EACA,EACA,GAEFC,KACE,GACA,EACA,EACA,GAEFC,KACE,GACA,EACA,EACA,IAGJytU,KACEjwjB,GACE,IACA,IACA,IACA,GAEFE,GACE,IACA,IACA,IACA,GAEFC,GACE,IACA,IACA,IACA,GAEF+yB,GACE,IACA,IACA,IACA,GAEF8C,GACE,IACA,IACA,IACA,GAEFyK,IACE,IACA,IACA,IACA,GAEFiD,IACE,IACA,IACA,IACA,GAEF2E,IACE,IACA,IACA,IACA,GAEF4J,IACE,IACA,IACA,IACA,GAEFoE,IACE,IACA,IACA,IACA,GAEFuC,IACE,IACA,IACA,IACA,GAEFqqM,IACE,GACA,IACA,IACA,GAEFC,IACE,GACA,IACA,IACA,GAEF4nH,IACE,GACA,IACA,IACA,GAEF2kN,IACE,GACA,IACA,IACA,GAEFC,IACE,GACA,IACA,IACA,GAEFC,IACE,GACA,IACA,IACA,GAEFn3c,IACE,GACA,IACA,IACA,GAEFo3c,IACE,GACA,IACA,IACA,GAEFC,IACE,GACA,GACA,IACA,GAEFC,IACE,EACA,GACA,IACA,GAEFrwY,IACE,EACA,GACA,IACA,GAEFswY,IACE,EACA,GACA,GACA,GAEF1me,KACE,EACA,GACA,GACA,GAEFg5J,KACE,EACA,GACA,GACA,GAEF1zL,KACE,EACA,GACA,GACA,GAEF2zL,KACE,EACA,GACA,GACA,GAEFC,KACE,EACA,GACA,GACA,GAEFC,KACE,EACA,EACA,GACA,IAGJ0tU,OACElwjB,GACE,IACA,IACA,IACA,GAEFE,GACE,IACA,IACA,IACA,GAEFC,GACE,IACA,IACA,IACA,GAEF+yB,GACE,IACA,IACA,IACA,GAEF8C,GACE,IACA,IACA,IACA,GAEFyK,IACE,IACA,IACA,IACA,GAEFiD,IACE,IACA,IACA,GACA,GAEF2E,IACE,IACA,IACA,EACA,GAEF4J,IACE,IACA,IACA,EACA,GAEFoE,IACE,IACA,IACA,EACA,GAEFuC,IACE,IACA,IACA,EACA,GAEFqqM,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,IACA,EACA,GAEF4nH,IACE,IACA,IACA,EACA,GAEF2kN,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,IACA,EACA,GAEFn3c,IACE,IACA,IACA,EACA,GAEFo3c,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,GACA,EACA,GAEFC,IACE,GACA,GACA,EACA,GAEFrwY,IACE,GACA,GACA,EACA,GAEFswY,IACE,GACA,GACA,EACA,GAEF1me,KACE,GACA,GACA,EACA,GAEFg5J,KACE,GACA,GACA,EACA,GAEF1zL,KACE,GACA,GACA,EACA,GAEF2zL,KACE,GACA,GACA,EACA,GAEFC,KACE,GACA,GACA,EACA,GAEFC,KACE,GACA,EACA,EACA,MAKRytU,KACEjwjB,GACE,EACA,GACA,GACA,GAEFE,GACE,EACA,GACA,GACA,GAEFC,GACE,EACA,GACA,GACA,GAEF+yB,GACE,EACA,GACA,GACA,GAEF8C,GACE,EACA,GACA,GACA,GAEFyK,IACE,EACA,GACA,GACA,GAEFiD,IACE,EACA,GACA,IACA,GAEF2E,IACE,GACA,GACA,IACA,GAEF4J,IACE,GACA,IACA,IACA,GAEFoE,IACE,GACA,IACA,IACA,GAEFuC,IACE,GACA,IACA,IACA,GAEFqqM,IACE,GACA,IACA,IACA,GAEFC,IACE,GACA,IACA,IACA,GAEF4nH,IACE,GACA,IACA,IACA,GAEF2kN,IACE,GACA,IACA,IACA,GAEFC,IACE,GACA,IACA,IACA,GAEFC,IACE,GACA,IACA,IACA,GAEFn3c,IACE,IACA,IACA,IACA,GAEFo3c,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFrwY,IACE,IACA,IACA,IACA,GAEFswY,IACE,IACA,IACA,IACA,GAEF1me,KACE,IACA,IACA,IACA,GAEFg5J,KACE,IACA,IACA,IACA,GAEF1zL,KACE,IACA,IACA,IACA,GAEF2zL,KACE,IACA,IACA,IACA,GAEFC,KACE,IACA,IACA,IACA,GAEFC,KACE,IACA,IACA,IACA,IAGJ0tU,OACElwjB,GACE,GACA,GACA,EACA,GAEFE,GACE,GACA,GACA,EACA,GAEFC,GACE,GACA,GACA,EACA,GAEF+yB,GACE,GACA,GACA,EACA,GAEF8C,GACE,GACA,GACA,EACA,GAEFyK,IACE,GACA,GACA,EACA,GAEFiD,IACE,GACA,GACA,EACA,GAEF2E,IACE,IACA,GACA,EACA,GAEF4J,IACE,IACA,GACA,EACA,GAEFoE,IACE,IACA,IACA,EACA,GAEFuC,IACE,IACA,IACA,EACA,GAEFqqM,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,IACA,EACA,GAEF4nH,IACE,IACA,IACA,EACA,GAEF2kN,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,IACA,EACA,GAEFn3c,IACE,IACA,IACA,EACA,GAEFo3c,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,IACA,EACA,GAEFrwY,IACE,IACA,IACA,GACA,GAEFswY,IACE,IACA,IACA,IACA,GAEF1me,KACE,IACA,IACA,IACA,GAEFg5J,KACE,IACA,IACA,IACA,GAEF1zL,KACE,IACA,IACA,IACA,GAEF2zL,KACE,IACA,IACA,IACA,GAEFC,KACE,IACA,IACA,IACA,GAEFC,KACE,IACA,IACA,IACA,IAGJxhQ,MACE8e,GACE,EACA,EACA,EACA,GAEFC,GACE,GACA,GACA,GACA,GAEFC,GACE,GACA,GACA,GACA,GAEFC,GACE,GACA,GACA,GACA,GAEFC,GACE,GACA,GACA,GACA,GAEFC,GACE,GACA,GACA,GACA,GAEF+yB,GACE,GACA,GACA,GACA,GAEFqC,GACE,GACA,GACA,GACA,GAEFS,GACE,GACA,GACA,GACA,GAEFkB,GACE,GACA,GACA,GACA,GAEFuJ,IACE,GACA,GACA,GACA,GAEFiD,IACE,GACA,GACA,GACA,GAEF2E,IACE,GACA,GACA,GACA,GAEF4J,IACE,GACA,IACA,IACA,GAEFoE,IACE,IACA,IACA,IACA,GAEFuC,IACE,IACA,IACA,IACA,GAEFqqM,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEF4nH,IACE,IACA,IACA,IACA,GAEF2kN,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFn3c,IACE,IACA,IACA,IACA,GAEFo3c,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFrwY,IACE,IACA,IACA,IACA,GAEFswY,IACE,IACA,IACA,IACA,GAEF1me,KACE,IACA,IACA,IACA,GAEFg5J,KACE,IACA,IACA,IACA,GAEF1zL,KACE,IACA,IACA,IACA,GAEF2zL,KACE,IACA,IACA,IACA,GAEFC,KACE,IACA,IACA,IACA,GAEFC,KACE,IACA,IACA,IACA,GAEF4tU,aACEtwjB,GACEA,GACE,EACA,EACA,EACA,GAEFK,GACE,EACA,EACA,EACA,KAEFsgC,IACE,EACA,EACA,EACA,IAEFiD,IACE,EACA,EACA,EACA,KAEF2E,IACE,EACA,EACA,EACA,IAEF4J,IACE,EACA,EACA,EACA,KAEFoE,IACE,EACA,EACA,EACA,IAEFuC,IACE,EACA,EACA,EACA,KAEFqqM,IACE,EACA,EACA,EACA,IAEFC,IACE,EACA,EACA,EACA,KAEF4nH,IACE,EACA,EACA,EACA,IAEF2kN,IACE,EACA,EACA,EACA,KAEFC,IACE,EACA,EACA,EACA,IAEFC,IACE,EACA,EACA,EACA,KAEFn3c,IACE,EACA,EACA,EACA,IAEFo3c,IACE,EACA,EACA,EACA,KAEFC,IACE,EACA,EACA,EACA,IAEFC,IACE,EACA,EACA,EACA,KAEFrwY,IACE,EACA,EACA,EACA,IAEFswY,IACE,EACA,EACA,EACA,KAEF1me,KACE,EACA,EACA,EACA,IAGJyhR,IACEhrW,GACE,IACA,IACA,IACA,GAEFK,GACE,IACA,IACA,IACA,KAEFsgC,IACE,IACA,IACA,IACA,IAEFiD,IACE,IACA,IACA,IACA,KAEF2E,IACE,IACA,IACA,IACA,IAEF4J,IACE,IACA,IACA,IACA,KAEFoE,IACE,IACA,IACA,IACA,IAEFuC,IACE,IACA,IACA,IACA,KAEFqqM,IACE,IACA,IACA,IACA,IAEFC,IACE,IACA,IACA,IACA,KAEF4nH,IACE,IACA,IACA,IACA,IAEF2kN,IACE,IACA,IACA,IACA,KAEFC,IACE,IACA,IACA,IACA,IAEFC,IACE,IACA,IACA,IACA,KAEFn3c,IACE,IACA,IACA,IACA,IAEFo3c,IACE,IACA,IACA,IACA,KAEFC,IACE,IACA,IACA,IACA,IAEFC,IACE,IACA,IACA,IACA,KAEFrwY,IACE,IACA,IACA,IACA,IAEFswY,IACE,IACA,IACA,IACA,KAEF1me,KACE,IACA,IACA,IACA,IAGJA,KACEvpF,GACE,IACA,IACA,IACA,GAEFK,GACE,IACA,IACA,IACA,KAEFsgC,IACE,IACA,IACA,IACA,IAEFiD,IACE,IACA,IACA,IACA,KAEF2E,IACE,IACA,IACA,IACA,IAEF4J,IACE,IACA,IACA,IACA,KAEFoE,IACE,IACA,IACA,IACA,IAEFuC,IACE,IACA,IACA,IACA,KAEFqqM,IACE,IACA,IACA,IACA,IAEFC,IACE,IACA,IACA,IACA,KAEF4nH,IACE,IACA,IACA,IACA,IAEF2kN,IACE,IACA,IACA,IACA,KAEFC,IACE,IACA,IACA,IACA,IAEFC,IACE,IACA,IACA,IACA,KAEFn3c,IACE,IACA,IACA,IACA,IAEFo3c,IACE,IACA,IACA,IACA,KAEFC,IACE,IACA,IACA,IACA,IAEFC,IACE,IACA,IACA,IACA,KAEFrwY,IACE,IACA,IACA,IACA,IAEFswY,IACE,IACA,IACA,IACA,KAEF1me,KACE,IACA,IACA,IACA,MAKRzuD,SACE56B,GACE,GACA,GACA,EACA,GAEFE,GACE,GACA,GACA,EACA,GAEFC,GACE,GACA,GACA,EACA,GAEF+yB,GACE,GACA,GACA,EACA,GAEF8C,GACE,GACA,GACA,EACA,GAEFyK,IACE,GACA,GACA,EACA,GAEFiD,IACE,IACA,GACA,EACA,GAEF2E,IACE,IACA,GACA,EACA,GAEF4J,IACE,IACA,GACA,EACA,GAEFoE,IACE,IACA,GACA,EACA,GAEFuC,IACE,IACA,IACA,EACA,GAEFqqM,IACE,IACA,IACA,GACA,GAEFC,IACE,IACA,IACA,GACA,GAEF4nH,IACE,IACA,IACA,GACA,GAEF2kN,IACE,IACA,IACA,GACA,GAEFC,IACE,IACA,IACA,GACA,GAEFC,IACE,IACA,IACA,GACA,GAEFn3c,IACE,IACA,IACA,IACA,GAEFo3c,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFrwY,IACE,IACA,IACA,IACA,GAEFswY,IACE,IACA,IACA,IACA,GAEF1me,KACE,IACA,IACA,IACA,GAEFg5J,KACE,IACA,IACA,IACA,GAEF1zL,KACE,IACA,IACA,IACA,GAEF2zL,KACE,IACA,IACA,IACA,GAEFC,KACE,IACA,IACA,IACA,GAEFC,KACE,IACA,IACA,IACA,IAGJwtU,QACEhwjB,GACE,GACA,EACA,EACA,GAEFE,GACE,GACA,EACA,EACA,GAEFC,GACE,GACA,EACA,GACA,GAEF+yB,GACE,GACA,EACA,GACA,GAEF8C,GACE,IACA,GACA,GACA,GAEFyK,IACE,IACA,GACA,GACA,GAEFiD,IACE,IACA,GACA,GACA,GAEF2E,IACE,IACA,GACA,GACA,GAEF4J,IACE,IACA,GACA,GACA,GAEFoE,IACE,IACA,GACA,GACA,GAEFuC,IACE,IACA,GACA,GACA,GAEFqqM,IACE,IACA,GACA,GACA,GAEFC,IACE,IACA,GACA,GACA,GAEF4nH,IACE,IACA,IACA,GACA,GAEF2kN,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFn3c,IACE,IACA,IACA,IACA,GAEFo3c,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFrwY,IACE,IACA,IACA,IACA,GAEFswY,IACE,IACA,IACA,IACA,GAEF1me,KACE,IACA,IACA,IACA,GAEFg5J,KACE,IACA,IACA,IACA,GAEF1zL,KACE,IACA,IACA,IACA,GAEF2zL,KACE,IACA,IACA,IACA,GAEFC,KACE,IACA,IACA,IACA,GAEFC,KACE,IACA,IACA,IACA,GAEF4tU,aACEtlN,IACEhrW,GACE,IACA,IACA,GACA,GAEFK,GACE,IACA,IACA,GACA,KAEFsgC,IACE,IACA,IACA,GACA,IAEFiD,IACE,IACA,IACA,GACA,KAEF2E,IACE,IACA,IACA,GACA,IAEF4J,IACE,IACA,IACA,GACA,KAEFoE,IACE,IACA,IACA,GACA,IAEFuC,IACE,IACA,IACA,GACA,KAEFqqM,IACE,IACA,IACA,GACA,IAEFC,IACE,IACA,IACA,GACA,KAEF4nH,IACE,IACA,IACA,GACA,IAEF2kN,IACE,IACA,IACA,GACA,KAEFC,IACE,IACA,IACA,GACA,IAEFC,IACE,IACA,IACA,GACA,KAEFn3c,IACE,IACA,IACA,GACA,IAEFo3c,IACE,IACA,IACA,GACA,KAEFC,IACE,IACA,IACA,GACA,IAEFC,IACE,IACA,IACA,GACA,KAEFrwY,IACE,IACA,IACA,GACA,IAEFswY,IACE,IACA,IACA,GACA,KAEF1me,KACE,IACA,IACA,GACA,IAGJA,KACEvpF,GACE,IACA,IACA,IACA,GAEFK,GACE,IACA,IACA,IACA,KAEFsgC,IACE,IACA,IACA,IACA,IAEFiD,IACE,IACA,IACA,IACA,KAEF2E,IACE,IACA,IACA,IACA,IAEF4J,IACE,IACA,IACA,IACA,KAEFoE,IACE,IACA,IACA,IACA,IAEFuC,IACE,IACA,IACA,IACA,KAEFqqM,IACE,IACA,IACA,IACA,IAEFC,IACE,IACA,IACA,IACA,KAEF4nH,IACE,IACA,IACA,IACA,IAEF2kN,IACE,IACA,IACA,IACA,KAEFC,IACE,IACA,IACA,IACA,IAEFC,IACE,IACA,IACA,IACA,KAEFn3c,IACE,IACA,IACA,IACA,IAEFo3c,IACE,IACA,IACA,IACA,KAEFC,IACE,IACA,IACA,IACA,IAEFC,IACE,IACA,IACA,IACA,KAEFrwY,IACE,IACA,IACA,IACA,IAEFswY,IACE,IACA,IACA,IACA,KAEF1me,KACE,IACA,IACA,IACA,MAKRgne,SACErwjB,GACE,EACA,GACA,GACA,GAEFE,GACE,EACA,GACA,GACA,GAEFC,GACE,EACA,GACA,GACA,GAEF+yB,GACE,EACA,GACA,GACA,GAEF8C,GACE,EACA,GACA,GACA,GAEFyK,IACE,EACA,GACA,GACA,GAEFiD,IACE,EACA,GACA,IACA,GAEF2E,IACE,GACA,GACA,IACA,GAEF4J,IACE,GACA,IACA,IACA,GAEFoE,IACE,GACA,IACA,IACA,GAEFuC,IACE,GACA,IACA,IACA,GAEFqqM,IACE,GACA,IACA,IACA,GAEFC,IACE,GACA,IACA,IACA,GAEF4nH,IACE,GACA,IACA,IACA,GAEF2kN,IACE,GACA,IACA,IACA,GAEFC,IACE,GACA,IACA,IACA,GAEFC,IACE,GACA,IACA,IACA,GAEFn3c,IACE,IACA,IACA,IACA,GAEFo3c,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFC,IACE,IACA,IACA,IACA,GAEFrwY,IACE,IACA,IACA,IACA,GAEFswY,IACE,IACA,IACA,IACA,GAEF1me,KACE,IACA,IACA,IACA,GAEFg5J,KACE,IACA,IACA,IACA,GAEF1zL,KACE,IACA,IACA,IACA,GAEF2zL,KACE,IACA,IACA,IACA,GAEFC,KACE,IACA,IACA,IACA,GAEFC,KACE,IACA,IACA,IACA,GAEF4tU,aACE3vhB,IACE3gC,GACE,EACA,GACA,GACA,GAEFK,GACE,EACA,GACA,GACA,KAEFsgC,IACE,EACA,GACA,GACA,IAEFiD,IACE,EACA,GACA,GACA,KAEF2E,IACE,EACA,GACA,GACA,IAEF4J,IACE,EACA,GACA,GACA,KAEFoE,IACE,EACA,GACA,GACA,IAEFuC,IACE,EACA,GACA,GACA,KAEFqqM,IACE,EACA,GACA,GACA,IAEFC,IACE,EACA,GACA,GACA,KAEF4nH,IACE,EACA,GACA,GACA,IAEF2kN,IACE,EACA,GACA,GACA,KAEFC,IACE,EACA,GACA,GACA,IAEFC,IACE,EACA,GACA,GACA,KAEFn3c,IACE,EACA,GACA,GACA,IAEFo3c,IACE,EACA,GACA,GACA,KAEFC,IACE,EACA,GACA,GACA,IAEFC,IACE,EACA,GACA,GACA,KAEFrwY,IACE,EACA,GACA,GACA,IAEFswY,IACE,EACA,GACA,GACA,KAEF1me,KACE,EACA,GACA,GACA,IAGJyhR,IACEhrW,GACE,GACA,IACA,IACA,GAEFK,GACE,GACA,IACA,IACA,KAEFsgC,IACE,GACA,IACA,IACA,IAEFiD,IACE,GACA,IACA,IACA,KAEF2E,IACE,GACA,IACA,IACA,IAEF4J,IACE,GACA,IACA,IACA,KAEFoE,IACE,GACA,IACA,IACA,IAEFuC,IACE,GACA,IACA,IACA,KAEFqqM,IACE,GACA,IACA,IACA,IAEFC,IACE,GACA,IACA,IACA,KAEF4nH,IACE,GACA,IACA,IACA,IAEF2kN,IACE,GACA,IACA,IACA,KAEFC,IACE,GACA,IACA,IACA,IAEFC,IACE,GACA,IACA,IACA,KAEFn3c,IACE,GACA,IACA,IACA,IAEFo3c,IACE,GACA,IACA,IACA,KAEFC,IACE,GACA,IACA,IACA,IAEFC,IACE,GACA,IACA,IACA,KAEFrwY,IACE,GACA,IACA,IACA,IAEFswY,IACE,GACA,IACA,IACA,KAEF1me,KACE,GACA,IACA,IACA,IAGJA,KACEvpF,GACE,IACA,IACA,IACA,GAEFK,GACE,IACA,IACA,IACA,KAEFsgC,IACE,IACA,IACA,IACA,IAEFiD,IACE,IACA,IACA,IACA,KAEF2E,IACE,IACA,IACA,IACA,IAEF4J,IACE,IACA,IACA,IACA,KAEFoE,IACE,IACA,IACA,IACA,IAEFuC,IACE,IACA,IACA,IACA,KAEFqqM,IACE,IACA,IACA,IACA,IAEFC,IACE,IACA,IACA,IACA,KAEF4nH,IACE,IACA,IACA,IACA,IAEF2kN,IACE,IACA,IACA,IACA,KAEFC,IACE,IACA,IACA,IACA,IAEFC,IACE,IACA,IACA,IACA,KAEFn3c,IACE,IACA,IACA,IACA,IAEFo3c,IACE,IACA,IACA,IACA,KAEFC,IACE,IACA,IACA,IACA,IAEFC,IACE,IACA,IACA,IACA,KAEFrwY,IACE,IACA,IACA,IACA,IAEFswY,IACE,IACA,IACA,IACA,KAEF1me,KACE,IACA,IACA,IACA,MAKRine,WACEtwjB,GACE,GACA,GACA,EACA,GAEFE,GACE,GACA,GACA,EACA,GAEFC,GACE,GACA,GACA,EACA,GAEF+yB,GACE,GACA,GACA,EACA,GAEF8C,GACE,GACA,GACA,EACA,GAEFyK,IACE,GACA,GACA,EACA,GAEFiD,IACE,GACA,GACA,EACA,GAEF2E,IACE,IACA,GACA,EACA,GAEF4J,IACE,IACA,GACA,EACA,GAEFoE,IACE,IACA,IACA,EACA,GAEFuC,IACE,IACA,IACA,EACA,GAEFqqM,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,IACA,EACA,GAEF4nH,IACE,IACA,IACA,EACA,GAEF2kN,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,IACA,EACA,GAEFn3c,IACE,IACA,IACA,EACA,GAEFo3c,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,IACA,EACA,GAEFC,IACE,IACA,IACA,EACA,GAEFrwY,IACE,IACA,IACA,GACA,GAEFswY,IACE,IACA,IACA,IACA,GAEF1me,KACE,IACA,IACA,IACA,GAEFg5J,KACE,IACA,IACA,IACA,GAEF1zL,KACE,IACA,IACA,IACA,GAEF2zL,KACE,IACA,IACA,IACA,GAEFC,KACE,IACA,IACA,IACA,GAEFC,KACE,IACA,IACA,IACA,GAEF4tU,aACE3vhB,IACE3gC,GACE,GACA,GACA,EACA,GAEFK,GACE,GACA,GACA,EACA,KAEFsgC,IACE,GACA,GACA,EACA,IAEFiD,IACE,GACA,GACA,EACA,KAEF2E,IACE,GACA,GACA,EACA,IAEF4J,IACE,GACA,GACA,EACA,KAEFoE,IACE,GACA,GACA,EACA,IAEFuC,IACE,GACA,GACA,EACA,KAEFqqM,IACE,GACA,GACA,EACA,IAEFC,IACE,GACA,GACA,EACA,KAEF4nH,IACE,GACA,GACA,EACA,IAEF2kN,IACE,GACA,GACA,EACA,KAEFC,IACE,GACA,GACA,EACA,IAEFC,IACE,GACA,GACA,EACA,KAEFn3c,IACE,GACA,GACA,EACA,IAEFo3c,IACE,GACA,GACA,EACA,KAEFC,IACE,GACA,GACA,EACA,IAEFC,IACE,GACA,GACA,EACA,KAEFrwY,IACE,GACA,GACA,EACA,IAEFswY,IACE,GACA,GACA,EACA,KAEF1me,KACE,GACA,GACA,EACA,IAGJyhR,IACEhrW,GACE,IACA,IACA,EACA,GAEFK,GACE,IACA,IACA,EACA,KAEFsgC,IACE,IACA,IACA,EACA,IAEFiD,IACE,IACA,IACA,EACA,KAEF2E,IACE,IACA,IACA,EACA,IAEF4J,IACE,IACA,IACA,EACA,KAEFoE,IACE,IACA,IACA,EACA,IAEFuC,IACE,IACA,IACA,EACA,KAEFqqM,IACE,IACA,IACA,EACA,IAEFC,IACE,IACA,IACA,EACA,KAEF4nH,IACE,IACA,IACA,EACA,IAEF2kN,IACE,IACA,IACA,EACA,KAEFC,IACE,IACA,IACA,EACA,IAEFC,IACE,IACA,IACA,EACA,KAEFn3c,IACE,IACA,IACA,EACA,IAEFo3c,IACE,IACA,IACA,EACA,KAEFC,IACE,IACA,IACA,EACA,IAEFC,IACE,IACA,IACA,EACA,KAEFrwY,IACE,IACA,IACA,EACA,IAEFswY,IACE,IACA,IACA,EACA,KAEF1me,KACE,IACA,IACA,EACA,IAGJA,KACEvpF,GACE,IACA,IACA,IACA,GAEFK,GACE,IACA,IACA,IACA,KAEFsgC,IACE,IACA,IACA,IACA,IAEFiD,IACE,IACA,IACA,IACA,KAEF2E,IACE,IACA,IACA,IACA,IAEF4J,IACE,IACA,IACA,IACA,KAEFoE,IACE,IACA,IACA,IACA,IAEFuC,IACE,IACA,IACA,IACA,KAEFqqM,IACE,IACA,IACA,IACA,IAEFC,IACE,IACA,IACA,IACA,KAEF4nH,IACE,IACA,IACA,IACA,IAEF2kN,IACE,IACA,IACA,IACA,KAEFC,IACE,IACA,IACA,IACA,IAEFC,IACE,IACA,IACA,IACA,KAEFn3c,IACE,IACA,IACA,IACA,IAEFo3c,IACE,IACA,IACA,IACA,KAEFC,IACE,IACA,IACA,IACA,IAEFC,IACE,IACA,IACA,IACA,KAEFrwY,IACE,IACA,IACA,IACA,IAEFswY,IACE,IACA,IACA,IACA,KAEF1me,KACE,IACA,IACA,IACA,OAMVkhM,IACEnqM,QACEmwe,SACEvvkB,MACE,GACA,GACA,GACA,GAEF6mG,OACE,GACA,IACA,IACA,GAEFujD,QACE,GACA,GACA,GACA,GAEFjyD,UACE,GACA,GACA,GACA,GAEFqM,IACE,GACA,IACA,IACA,GAEFgre,YACE,GACA,IACA,IACA,GAEFC,aACE,GACA,IACA,IACA,GAEFhre,KACE,GACA,GACA,GACA,GAEFire,aACE,GACA,IACA,IACA,GAEFC,cACE,GACA,GACA,GACA,IAGJvqc,SACEplI,MACE,IACA,IACA,IACA,GAEF6mG,OACE,IACA,IACA,IACA,IAEFujD,QACE,IACA,IACA,IACA,IAEFjyD,UACE,IACA,IACA,IACA,GAEFqM,IACE,GACA,IACA,IACA,IAEFgre,YACE,GACA,IACA,IACA,IAEFC,aACE,GACA,IACA,IACA,IAEFhre,KACE,IACA,IACA,IACA,GAEFire,aACE,IACA,IACA,IACA,IAEFC,cACE,IACA,IACA,IACA,KAGJC,SACE5vkB,MACE,IACA,IACA,IACA,GAEF6mG,OACE,IACA,IACA,IACA,IAEFujD,QACE,IACA,IACA,IACA,IAEFjyD,UACE,IACA,IACA,IACA,GAEFqM,IACE,IACA,IACA,IACA,KAEFgre,YACE,IACA,IACA,IACA,IAEFC,aACE,IACA,IACA,IACA,IAEFhre,KACE,IACA,IACA,IACA,GAEFire,aACE,IACA,IACA,IACA,IAEFC,cACE,IACA,IACA,IACA,MAIN1pkB,SACE,GACA,GACA,GACA,GAEF4pkB,SACE,GACA,GACA,GACA,GAEFvyd,OACE,GACA,GACA,GACA,GAEFwyd,QACE,GACA,GACA,GACA,GAEF5tB,QACE,IACA,IACA,IACA,GAEF6tB,OACE,GACA,GACA,GACA,IAEFC,aACEzwe,KACE,EACA,EACA,EACA,IAEFD,MACE,GACA,GACA,GACA,KAGJ2we,QACEZ,SACES,QACE,EACA,GACA,GACA,GAEF5tB,QACE,IACA,IACA,IACA,GAEFguB,YACE,GACA,IACA,IACA,GAEFH,OACE,EACA,GACA,GACA,KAGJT,WACEQ,QACE,GACA,GACA,EACA,GAEF5tB,QACE,IACA,IACA,EACA,GAEFguB,YACE,IACA,IACA,EACA,GAEFH,OACE,GACA,GACA,EACA,KAGJn2hB,SACEk2hB,QACE,GACA,GACA,EACA,GAEF5tB,QACE,IACA,IACA,IACA,GAEFguB,YACE,IACA,IACA,GACA,GAEFH,OACE,GACA,GACA,EACA,KAGJf,QACEc,QACE,IACA,GACA,GACA,GAEF5tB,QACE,IACA,IACA,IACA,GAEFguB,YACE,IACA,IACA,IACA,GAEFH,OACE,IACA,GACA,GACA,OAKRI,IACE/we,QACEmwe,SACEvvkB,MACE,IACA,IACA,IACA,GAEF6mG,OACE,IACA,IACA,IACA,GAEFujD,QACE,IACA,IACA,IACA,GAEFjyD,UACE,IACA,IACA,IACA,IAEFqM,IACE,IACA,IACA,IACA,GAEFgre,YACE,IACA,IACA,IACA,GAEFC,aACE,IACA,IACA,IACA,GAEFhre,KACE,IACA,IACA,IACA,GAEFire,aACE,IACA,IACA,IACA,GAEFC,cACE,IACA,IACA,IACA,IAGJvqc,SACEplI,MACE,IACA,IACA,IACA,GAEF6mG,OACE,IACA,IACA,IACA,GAEFujD,QACE,IACA,IACA,IACA,GAEFjyD,UACE,IACA,IACA,IACA,IAEFqM,IACE,IACA,IACA,IACA,GAEFgre,YACE,IACA,IACA,IACA,GAEFC,aACE,IACA,IACA,IACA,GAEFhre,KACE,IACA,IACA,IACA,GAEFire,aACE,IACA,IACA,IACA,GAEFC,cACE,IACA,IACA,IACA,IAGJC,SACE5vkB,MACE,IACA,IACA,IACA,GAEF6mG,OACE,IACA,IACA,IACA,GAEFujD,QACE,IACA,IACA,IACA,GAEFjyD,UACE,IACA,IACA,IACA,IAEFqM,IACE,IACA,IACA,IACA,GAEFgre,YACE,IACA,IACA,IACA,GAEFC,aACE,IACA,IACA,IACA,GAEFhre,KACE,IACA,IACA,IACA,GAEFire,aACE,IACA,IACA,IACA,GAEFC,cACE,IACA,IACA,IACA,KAIN1pkB,SACE,IACA,IACA,IACA,GAEFi8iB,QACE,IACA,IACA,IACA,GAEF4tB,QACE,IACA,IACA,IACA,GAEF33e,UACE,IACA,IACA,IACA,IAEFi4e,aACE,GACA,GACA,GACA,GAEFC,eACE,EACA,EACA,EACA,GAEFlB,UACElpkB,SACE,GACA,GACA,GACA,GAEFi8iB,QACE,EACA,EACA,EACA,GAEF4tB,QACE,IACA,IACA,IACA,IAGJV,aACEnpkB,SACE,IACA,IACA,IACA,IAEFi8iB,QACE,IACA,IACA,IACA,GAEF4tB,QACE,IACA,IACA,IACA,IAEF33e,UACE,IACA,IACA,IACA,IAEFi4e,aACE,EACA,EACA,EACA,IAEFC,eACE,EACA,EACA,EACA,KAGJJ,QACEZ,SACE,IACA,IACA,IACA,GAEFC,WACE,IACA,IACA,EACA,GAEF11hB,SACE,IACA,IACA,IACA,GAEFo1hB,QACE,IACA,IACA,IACA,GAEFsB,aACE,IACA,IACA,IACA,GAEFC,eACE,IACA,IACA,EACA,GAEFC,aACE,IACA,IACA,GACA,GAEFC,YACE,IACA,IACA,IACA,KAINtrc,QACE/lC,QACEmwe,SACEvvkB,MACE,GACA,GACA,GACA,GAEF6mG,OACE,IACA,IACA,IACA,GAEFujD,QACE,IACA,IACA,IACA,GAEFjyD,UACE,IACA,IACA,IACA,IAEFqM,IACE,GACA,IACA,IACA,GAEFgre,YACE,IACA,IACA,IACA,GAEFC,aACE,IACA,IACA,IACA,GAEFhre,KACE,GACA,GACA,GACA,GAEFire,aACE,IACA,IACA,IACA,GAEFC,cACE,IACA,IACA,IACA,IAGJvqc,SACEplI,MACE,IACA,IACA,IACA,GAEF6mG,OACE,IACA,IACA,IACA,GAEFujD,QACE,IACA,IACA,IACA,GAEFjyD,UACE,IACA,IACA,IACA,IAEFqM,IACE,IACA,IACA,IACA,GAEFgre,YACE,IACA,IACA,IACA,GAEFC,aACE,IACA,IACA,IACA,GAEFhre,KACE,GACA,GACA,GACA,GAEFire,aACE,IACA,IACA,IACA,GAEFC,cACE,IACA,IACA,IACA,KAIN1pkB,SACE,IACA,IACA,IACA,GAEF6pkB,QACE,GACA,GACA,GACA,GAEF5tB,QACE,IACA,IACA,IACA,GAEF6tB,OACE,IACA,IACA,IACA,IAEFE,QACEZ,SACEppkB,SACE,GACA,IACA,IACA,GAEFi8iB,QACE,IACA,IACA,IACA,IAGJotB,WACErpkB,SACE,IACA,IACA,EACA,GAEFi8iB,QACE,IACA,IACA,EACA,IAGJtogB,SACE3zC,SACE,IACA,IACA,GACA,GAEFi8iB,QACE,IACA,I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","sourcesContent":["/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2009 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Martin Wittemann (martinwittemann)\n\n************************************************************************ */\n\n/**\n * Basic runtime detection for qooxdoo.\n *\n * This class is used by {@link qx.core.Environment} and should not be used\n * directly. Please check its class comment for details how to use it.\n *\n * @internal\n *\n * @ignore(environment)\n * @ignore(process)\n * @ignore(Titanium.*)\n */\nqx.Bootstrap.define(\"qx.bom.client.Runtime\",\n{\n statics :\n {\n /**\n * Checks for the name of the runtime and returns it. In general, it checks\n * for rhino and node.js and if that could not be detected, it falls back\n * to the browser name defined by {@link qx.bom.client.Browser#getName}.\n * @return {String} The name of the current runtime.\n * @internal\n * @ignore(environment, process, Titanium.*, Packages)\n */\n getName : function() {\n var name = \"\";\n\n // check for the Rhino runtime\n if (typeof Packages === \"object\" && Object.prototype.toString.call(Packages) === \"[object JavaPackage]\") {\n name = \"rhino\";\n // check for the Node.js runtime\n } else if (typeof process !== \"undefined\") {\n name = \"node.js\";\n } else if (typeof Titanium !== \"undefined\" &&\n typeof Titanium.userAgent !== \"undefined\")\n {\n name = \"titanium\";\n } else {\n // otherwise, we think its a browser\n name = qx.bom.client.Browser.getName();\n }\n\n return name;\n }\n },\n\n defer : function(statics) {\n qx.core.Environment.add(\"runtime.name\", statics.getName);\n }\n});\n","/**\n * A dummy class to trigger the compiler to copy the font files\n */\n/**\n * @asset(iconfont/fontawesome5/*)\n */\nqx.Class.define(\"iconfont.fontawesome5.Load\", {});\n","/**\n * A dummy class to trigger the compiler to copy the font files\n */\n/**\n * @asset(iconfont/material/MaterialIcons-Regular.eot)\n * @asset(iconfont/material/MaterialIcons-Regular.ttf)\n * @asset(iconfont/material/MaterialIcons-Regular.woff)\n * @asset(iconfont/material/MaterialIcons-Regular.woff2)\n */\nqx.Class.define(\"iconfont.material.Load\", {});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n\n************************************************************************ */\n\n/**\n * For a GUI application that looks & feels like native desktop application\n * (often called \"RIA\" - Rich Internet Application).\n *\n * Such a stand-alone application typically creates and updates all content\n * dynamically. Often it is called a \"single-page application\", since the\n * document itself is never reloaded or changed. Communication with the server\n * is done with AJAX.\n *\n * @require(qx.core.Init)\n */\nqx.Class.define(\"qx.application.Standalone\",\n{\n extend : qx.application.AbstractGui,\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n _createRootWidget : function() {\n return new qx.ui.root.Application(document);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n * Tobias Oetiker (oetiker)\n * Pedro Crespo (pcrespov)\n\n************************************************************************ */\n\n/**\n * This is the main application class of \"osparc\"\n *\n * @asset(osparc/*)\n * @asset(common/*)\n */\n\nqx.Class.define(\"osparc.Application\", {\n extend: qx.application.Standalone,\n include: [\n qx.locale.MTranslation\n ],\n\n members: {\n __current: null,\n __mainPage: null,\n\n /**\n * This method contains the initial application code and gets called\n * during startup of the application\n */\n main: async function() {\n // Call super class\n this.base();\n\n // Enable logging in debug variant\n if (qx.core.Environment.get(\"qx.debug\")) {\n // support native logging capabilities, e.g. Firebug for Firefox\n qx.log.appender.Native;\n }\n\n await this.__preloadCalls();\n\n this.__preventAutofillBrowserStyles();\n this.__loadCommonCss();\n this.__updateTabName();\n if (osparc.utils.Utils.isDevelopmentPlatform()) {\n this.__updateMetaTags();\n this.__setDeviceSpecificIcons();\n }\n if (qx.core.Environment.get(\"product.name\") === \"s4lengine\") {\n const view = new osparc.auth.BlurredLoginPageS4LEngineering();\n this.__loadView(view);\n return;\n }\n\n // libs\n osparc.wrapper.IntlTelInput.getInstance().init();\n\n // trackers\n osparc.announcement.Tracker.getInstance().startTracker();\n osparc.WindowSizeTracker.getInstance().startTracker();\n osparc.ConsoleErrorTracker.getInstance().startTracker();\n\n const webSocket = osparc.wrapper.WebSocket.getInstance();\n webSocket.addListener(\"connect\", () => osparc.WatchDog.getInstance().setOnline(true));\n webSocket.addListener(\"disconnect\", () => osparc.WatchDog.getInstance().setOnline(false));\n webSocket.addListener(\"logout\", () => this.logout(qx.locale.Manager.tr(\"You were logged out\")));\n // alert the users that they are about to navigate away\n // from osparc. unfortunately it is not possible\n // to provide our own message here\n window.addEventListener(\"beforeunload\", e => {\n const downloadLinkTracker = osparc.DownloadLinkTracker.getInstance();\n if (\n // The downloadLinkTracker uses an external link for downloading files.\n // When it starts (click), triggers an unload event. This condition avoids the false positive\n !downloadLinkTracker.isDownloading() &&\n // allow reloading in login page\n webSocket.isConnected() &&\n // allow reloading in dashboard\n osparc.store.Store.getInstance().getCurrentStudy()\n ) {\n // Cancel the event as stated by the standard.\n e.preventDefault();\n // Chrome requires returnValue to be set.\n e.returnValue = \"\";\n }\n });\n\n // Setting up auth manager\n osparc.auth.Manager.getInstance().addListener(\"loggedOut\", () => this.__closeAllAndToLoginPage(), this);\n\n this.__initRouting();\n this.__startupChecks();\n },\n\n __preloadCalls: async function() {\n await osparc.store.Store.getInstance().preloadCalls();\n },\n\n __initRouting: function() {\n const urlFragment = osparc.utils.Utils.parseURLFragment();\n if (urlFragment.nav && urlFragment.nav.length) {\n this.__rerouteNav(urlFragment);\n } else if (urlFragment.params) {\n if (urlFragment.params.registered) {\n // Route: /#/?registered=true\n osparc.utils.Utils.cookie.deleteCookie(\"user\");\n this.__restart();\n } else {\n // this.load404();\n console.error(\"URL fragment format not recognized.\");\n }\n } else {\n this.__restart();\n }\n },\n\n __rerouteNav: function(urlFragment) {\n const page = urlFragment.nav[0];\n switch (page) {\n case \"study\": {\n // Route: /#/study/{id}\n if (urlFragment.nav.length > 1) {\n osparc.utils.Utils.cookie.deleteCookie(\"user\");\n osparc.auth.Manager.getInstance().validateToken()\n .then(() => {\n const studyId = urlFragment.nav[1];\n this.__loadMainPage(studyId);\n })\n .catch(() => this.__loadLoginPage());\n }\n break;\n }\n case \"view\": {\n // Route: /#/view/?project_id={studyId}&viewer_node_id={viewerNodeId}\n if (urlFragment.params && urlFragment.params.project_id && urlFragment.params.viewer_node_id) {\n osparc.utils.Utils.cookie.deleteCookie(\"user\");\n const studyId = urlFragment.params.project_id;\n const viewerNodeId = urlFragment.params.viewer_node_id;\n\n osparc.auth.Manager.getInstance().validateToken()\n .then(data => {\n if ([\"anonymous\", \"guest\"].includes(data.role.toLowerCase())) {\n this.__loadNodeViewerPage(studyId, viewerNodeId);\n } else {\n this.__loadMainPage(studyId);\n }\n });\n }\n break;\n }\n case \"registration\": {\n // Route: /#/registration/?invitation={token}\n if (urlFragment.params && urlFragment.params.invitation) {\n osparc.utils.Utils.cookie.deleteCookie(\"user\");\n this.__restart();\n }\n break;\n }\n case \"request-account\": {\n // Route: /#/request-account\n osparc.utils.Utils.cookie.deleteCookie(\"user\");\n this.__restart();\n break;\n }\n case \"reset-password\": {\n // Route: /#/reset-password/?code={resetCode}\n if (urlFragment.params && urlFragment.params.code) {\n osparc.utils.Utils.cookie.deleteCookie(\"user\");\n this.__restart();\n }\n break;\n }\n case \"error\": {\n // Route: /#/error/?message={errorMessage}&status_code={statusCode}\n if (urlFragment.params && urlFragment.params.message) {\n let msg = urlFragment.params.message;\n // Replace plus sign in URL query string by spaces\n msg = msg.replace(/\\+/g, \"%20\");\n msg = decodeURIComponent(msg);\n osparc.utils.Utils.cookie.deleteCookie(\"user\");\n const errorPage = new osparc.ErrorPage().set({\n code: urlFragment.params.status_code,\n messages: [\n msg\n ]\n });\n this.__loadView(errorPage, {\n top: \"10%\"\n });\n }\n break;\n }\n case \"form-sandbox\": {\n this.__loadView(new osparc.desktop.FormSandboxPage(), {}, false);\n }\n }\n },\n\n __updateTabName: function() {\n const newName = osparc.utils.Utils.composeTabName();\n osparc.utils.Utils.updateTabName(newName);\n },\n\n __setDeviceSpecificIcons: function() {\n const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n const isAndroid = /android/i.test(navigator.userAgent);\n // default icons\n this.__updateMetaTags();\n this.__setDefaultIcons()\n if (isIOS) {\n this.__setIOSpIcons();\n } else if (isAndroid) {\n this.__setGoogleIcons();\n }\n },\n\n __getProductMetaData: function() {\n let productName = osparc.product.Utils.getProductName();\n if (osparc.product.Utils.isS4LProduct() || osparc.product.Utils.isProduct(\"s4llite\")) {\n productName = \"s4l\";\n } else if (osparc.product.Utils.isProduct(\"tis\") || osparc.product.Utils.isProduct(\"tiplite\")) {\n productName = \"tis\";\n }\n\n const productColor = qx.theme.manager.Color.getInstance().resolve(\"product-color\");\n return {\n productName: productName,\n productColor: productColor,\n }\n },\n\n __updateMetaTags: function() {\n // check device type and only set the icons for the device type\n // i.e iOS, Android or windows etc\n const themeColorMeta = document.querySelector(\"meta[name='theme-color']\");\n const tileColorMeta = document.querySelector(\"meta[name='msapplication-TileColor']\");\n const tileImageMeta = document.querySelector(\"meta[name='msapplication-TileImage']\");\n const maskIconMeta = document.querySelector(\"meta[rel='mask-icon']\");\n const shortIconMeta = document.querySelector(\"link[rel='icon']\");\n const manifestLink = document.querySelector(\"link[rel='manifest']\");\n const msApplicationLink = document.querySelector(\"link[rel='msapplication-config']\");\n\n const {productName, productColor} = this.__getProductMetaData();\n\n if (themeColorMeta) {\n themeColorMeta.setAttribute(\"content\", productColor);\n }\n\n if (tileColorMeta && tileImageMeta) {\n const maskIcon = `../resource/osparc/${productName}/icons/ms-icon-150x150.png`\n tileColorMeta.setAttribute(\"content\", productColor);\n tileImageMeta.setAttribute(\"content\", maskIcon);\n }\n\n if (shortIconMeta) {\n const maskIconPath = `../resource/osparc/${productName}/icons/favicon-96x96.png`\n shortIconMeta.setAttribute(\"href\", maskIconPath);\n }\n\n if (maskIconMeta) {\n const maskIconPath = `../resource/osparc/${productName}/apple-icon-fallback.png`\n maskIconMeta.setAttribute(\"href\", maskIconPath);\n }\n\n if (manifestLink) {\n const manifestPath = `../resource/osparc/${productName}/manifest.json`\n manifestLink.setAttribute(\"href\", manifestPath);\n }\n\n if (msApplicationLink) {\n const msApplicationPath = `../resource/osparc/${productName}/broswserconfig.xml`\n msApplicationLink.setAttribute(\"href\", msApplicationPath);\n }\n },\n\n __setDefaultIcons: function() {\n const {productName} = this.__getProductMetaData()\n const resourcePath = `../resource/osparc/${productName}/icons/`;\n const favIconUrls = [\n \"favicon-16x16.png\",\n \"favicon-32x32.png\",\n \"favicon-96x96.png\"\n ];\n\n const iconSizes = [\n \"16x16\", \"32x32\", \"96x96\"\n ];\n favIconUrls.forEach((url, index) => {\n let link = document.createElement(\"link\");\n link.setAttribute(\"rel\", \"icon\");\n link.setAttribute(\"sizes\", iconSizes[index]);\n link.setAttribute(\"type\", \"image/png\");\n link.setAttribute(\"href\", resourcePath + url);\n document.head.appendChild(link);\n });\n },\n\n __setGoogleIcons: function() {\n const {productName} = this.__getProductMetaData()\n const resourcePath = `../resource/osparc/${productName}/icons`;\n\n const favIconUrls = [\n \"android-icon-48x48.png\",\n \"android-icon-192x192.png\",\n ];\n\n const iconSizes = [\n \"48x48\", \"192x192\"\n ];\n favIconUrls.forEach((url, index) => {\n let link = document.createElement(\"link\");\n link.setAttribute(\"rel\", \"icon\");\n link.setAttribute(\"sizes\", iconSizes[index]);\n link.setAttribute(\"type\", \"image/png\");\n link.setAttribute(\"href\", resourcePath + url);\n document.head.appendChild(link);\n });\n },\n\n __setIOSpIcons: function() {\n // Array of promises to resolve icon URLs for Apple Touch Icons\n const {productName} = this.__getProductMetaData()\n const resourcePath = `../resource/osparc/${productName}/icons`;\n\n const appleIconUrls = [\n \"apple-icon-57x57.png\",\n \"apple-icon-60x60.png\",\n \"apple-icon-72x72.png\",\n \"apple-icon-76x76.png\",\n \"apple-icon-114x114.png\",\n \"apple-icon-120x120.png\",\n \"apple-icon-144x144.png\",\n \"apple-icon-152x152.png\",\n \"apple-icon-180x180.png\"\n ];\n\n const appleIconSizes = [\n \"57x57\", \"60x60\", \"72x72\", \"76x76\", \"114x114\", \"120x120\", \"144x144\", \"152x152\", \"180x180\"\n ];\n appleIconUrls.forEach((url, index) => {\n let link = document.createElement(\"link\");\n link.setAttribute(\"rel\", \"apple-touch-icon\");\n link.setAttribute(\"sizes\", appleIconSizes[index]);\n link.setAttribute(\"href\", resourcePath + url);\n document.head.appendChild(link);\n });\n },\n\n __startupChecks: function() {\n // first, pop up new release window\n this.__checkNewRelease();\n\n const platformName = osparc.store.StaticInfo.getInstance().getPlatformName();\n if (platformName !== \"master\") {\n // then, pop up cookies accepted window. It will go on top.\n this.__checkCookiesAccepted();\n }\n },\n\n __checkNewRelease: function() {\n if (osparc.NewRelease.firstTimeISeeThisFrontend()) {\n const newRelease = new osparc.NewRelease();\n const title = this.tr(\"New Release\");\n const win = osparc.ui.window.Window.popUpInWindow(newRelease, title, 350, 135).set({\n clickAwayClose: false,\n resizable: false,\n showClose: true\n });\n const closeBtn = win.getChildControl(\"close-button\");\n osparc.utils.Utils.setIdToWidget(closeBtn, \"newReleaseCloseBtn\");\n }\n },\n\n __checkCookiesAccepted: function() {\n if (!osparc.CookiePolicy.areCookiesAccepted()) {\n const cookiePolicy = new osparc.CookiePolicy();\n let title = this.tr(\"Privacy Policy\");\n let height = 160;\n if (osparc.product.Utils.showLicenseExtra()) {\n // \"tis\", \"tiplite\" and \"s4llite\" include the license terms\n title = this.tr(\"Privacy Policy and License Terms\");\n height = 210;\n }\n const win = osparc.ui.window.Window.popUpInWindow(cookiePolicy, title, 400, height).set({\n clickAwayClose: false,\n resizable: false,\n showClose: false\n });\n cookiePolicy.addListener(\"cookiesAccepted\", () => {\n osparc.CookiePolicy.acceptCookies();\n win.close();\n }, this);\n cookiePolicy.addListener(\"cookiesDeclined\", () => {\n osparc.CookiePolicy.declineCookies();\n win.close();\n }, this);\n }\n },\n\n __restart: function() {\n let isLogged = osparc.auth.Manager.getInstance().isLoggedIn();\n if (isLogged) {\n this.__loadMainPage();\n } else {\n osparc.auth.Manager.getInstance().validateToken()\n .then(data => {\n if (data.role.toLowerCase() === \"guest\") {\n // Logout a guest trying to access the Dashboard\n this.logout();\n } else {\n this.__loadMainPage();\n }\n })\n .catch(() => this.__loadLoginPage());\n }\n },\n\n __loadLoginPage: function() {\n this.__disconnectWebSocket();\n let view = null;\n switch (qx.core.Environment.get(\"product.name\")) {\n case \"s4l\":\n case \"s4llite\":\n case \"s4lacad\":\n case \"s4ldesktop\":\n case \"s4ldesktopacad\":\n view = new osparc.auth.LoginPageS4L();\n break;\n case \"tis\":\n case \"tiplite\":\n view = new osparc.auth.LoginPageTI();\n break;\n default: {\n view = new osparc.auth.LoginPageOsparc();\n break;\n }\n }\n this.__loadView(view);\n view.addListener(\"done\", () => this.__restart(), this);\n },\n\n __loadMainPage: function(studyId = null) {\n // logged in\n osparc.WindowSizeTracker.getInstance().evaluateTooSmallDialog();\n osparc.data.Resources.getOne(\"profile\")\n .then(profile => {\n if (profile) {\n this.__connectWebSocket();\n\n if (osparc.auth.Data.getInstance().isGuest()) {\n const msg = osparc.utils.Utils.createAccountMessage();\n osparc.FlashMessenger.getInstance().logAs(msg, \"WARNING\");\n } else if (profile[\"expirationDate\"]) {\n const now = new Date();\n const today = new Date(now.toISOString().slice(0, 10));\n const expirationDay = new Date(profile[\"expirationDate\"]);\n const daysToExpiration = osparc.utils.Utils.daysBetween(today, expirationDay);\n if (daysToExpiration < 7) {\n const msg = osparc.utils.Utils.expirationMessage(daysToExpiration);\n osparc.FlashMessenger.getInstance().logAs(msg, \"WARNING\");\n }\n }\n\n if (\"preferences\" in profile) {\n const bePreferences = profile[\"preferences\"];\n const fePreferences = Object.keys(qx.util.PropertyUtil.getProperties(osparc.Preferences));\n const preferencesSettings = osparc.Preferences.getInstance();\n Object.entries(bePreferences).forEach(([key, data]) => {\n const value = data.value;\n switch (key) {\n case \"themeName\":\n if (value) {\n preferencesSettings.setThemeName(value);\n }\n break;\n case \"preferredWalletId\":\n if (value) {\n preferencesSettings.setPreferredWalletId(parseInt(value));\n }\n break;\n default:\n if (fePreferences.includes(key)) {\n preferencesSettings.set(key, value);\n }\n }\n });\n }\n\n if (studyId) {\n osparc.store.Store.getInstance().setCurrentStudyId(studyId);\n }\n\n let mainPage = null;\n if (osparc.product.Utils.getProductName().includes(\"s4ldesktop\")) {\n mainPage = new osparc.desktop.MainPageDesktop();\n } else {\n mainPage = new osparc.desktop.MainPage();\n }\n this.__mainPage = mainPage;\n this.__loadView(mainPage);\n }\n })\n .catch(err => console.error(err));\n },\n\n __loadNodeViewerPage: async function(studyId, viewerNodeId) {\n this.__connectWebSocket();\n const mainPage = new osparc.viewer.MainPage(studyId, viewerNodeId);\n this.__mainPage = mainPage;\n this.__loadView(mainPage);\n },\n\n __loadView: function(view, opts, clearUrl=true) {\n const options = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n ...opts\n };\n\n // Update root document and currentness\n let doc = this.getRoot();\n if (doc.hasChildren()) {\n if (this.__current) {\n doc.remove(this.__current);\n }\n }\n doc.add(view, options);\n this.__current = view;\n\n // Clear URL\n if (clearUrl) {\n window.history.replaceState(null, \"\", \"/\");\n }\n },\n\n /**\n * Resets session and restarts\n */\n logout: function(forcedReason) {\n const isLoggedIn = osparc.auth.Manager.getInstance().isLoggedIn();\n if (isLoggedIn) {\n osparc.auth.Manager.getInstance().logout()\n .finally(() => this.__loggedOut(forcedReason));\n } else {\n this.__loggedOut(forcedReason);\n }\n },\n\n __loggedOut: function(forcedReason) {\n if (forcedReason) {\n osparc.FlashMessenger.getInstance().logAs(forcedReason, \"WARNING\", 0);\n } else {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"You are logged out\"), \"INFO\");\n }\n this.__closeAllAndToLoginPage();\n },\n\n __closeAllAndToLoginPage: function() {\n osparc.data.PollTasks.getInstance().removeTasks();\n osparc.MaintenanceTracker.getInstance().stopTracker();\n osparc.CookieExpirationTracker.getInstance().stopTracker();\n osparc.NewUITracker.getInstance().stopTracker();\n osparc.announcement.Tracker.getInstance().stopTracker();\n if (\"closeEditor\" in this.__mainPage) {\n this.__mainPage.closeEditor();\n }\n osparc.utils.Utils.closeHangingWindows();\n\n // Remove all bindings and Invalidate the entire cache\n const store = osparc.store.Store.getInstance();\n store.removeAllBindings();\n store.invalidateEntireCache();\n\n // back to the dark theme to make pretty forms\n const validThemes = osparc.ui.switch.ThemeSwitcher.getValidThemes();\n const themeFound = validThemes.find(theme => theme.basename === \"ThemeDark\");\n if (themeFound) {\n qx.theme.manager.Meta.getInstance().setTheme(themeFound);\n }\n\n this.__restart();\n },\n\n __connectWebSocket: function() {\n // open web socket\n osparc.wrapper.WebSocket.getInstance().connect();\n },\n\n __disconnectWebSocket: function() {\n // open web socket\n osparc.wrapper.WebSocket.getInstance().disconnect();\n },\n\n __preventAutofillBrowserStyles: function() {\n const stylesheet = qx.ui.style.Stylesheet.getInstance();\n if (qx.bom.client.Browser.getName() === \"chrome\" && qx.bom.client.Browser.getVersion() >= 71) {\n stylesheet.addRule(\n \"input:-internal-autofill-previewed,\" +\n \"input:-internal-autofill-selected,\" +\n \"textarea:-internal-autofill-previewed,\" +\n \"textarea:-internal-autofill-selected,\" +\n \"select:-internal-autofill-previewed,\" +\n \"select:-internal-autofill-selected\",\n\n \"transition: background-color 0s linear 100000s, color 0s linear 100000s\"\n );\n } else if (qx.bom.client.Engine.getName() === \"webkit\") {\n stylesheet.addRule(\n \"input:-webkit-autofill,\" +\n \"input:-webkit-autofill:hover,\" +\n \"input:-webkit-autofill:focus,\" +\n \"textarea:-webkit-autofill,\" +\n \"textarea:-webkit-autofill:hover,\" +\n \"textarea:-webkit-autofill:focus,\" +\n \"select:-webkit-autofill,\" +\n \"select:-webkit-autofill:hover,\" +\n \"select:-webkit-autofill:focus\",\n\n \"transition: background-color 0s linear 100000s, color 0s linear 100000s\"\n );\n }\n },\n\n __loadCommonCss: function() {\n const commonCssUri = qx.util.ResourceManager.getInstance().toUri(\"common/common.css\");\n qx.module.Css.includeStylesheet(commonCssUri);\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2007-2009 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Fabian Jakobs (fjakobs)\n\n ======================================================================\n\n This class uses ideas and code snippets presented at\n http://webreflection.blogspot.com/2008/05/habemus-array-unlocked-length-in-ie8.html\n http://webreflection.blogspot.com/2008/05/stack-and-arrayobject-how-to-create.html\n\n Author:\n Andrea Giammarchi\n\n License:\n MIT: http://www.opensource.org/licenses/mit-license.php\n\n ======================================================================\n\n This class uses documentation of the native Array methods from the MDC\n documentation of Mozilla.\n\n License:\n CC Attribution-Sharealike License:\n http://creativecommons.org/licenses/by-sa/2.5/\n\n************************************************************************ */\n\n/**\n * This class is the common superclass for most array classes in\n * qooxdoo. It supports all of the shiny 1.6 JavaScript array features\n * like forEach
and map
.\n *\n * This class may be instantiated instead of the native Array if\n * one wants to work with a feature-unified Array instead of the native\n * one. This class uses native features whereever possible but fills\n * all missing implementations with custom ones.\n *\n * Through the ability to extend from this class one could add even\n * more utility features on top of it.\n *\n * @require(qx.bom.client.Engine)\n * @require(qx.lang.normalize.Array)\n */\nqx.Bootstrap.define(\"qx.type.BaseArray\",\n{\n extend : Array,\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * Creates a new Array with the given length or the listed elements.\n *\n *
\n * var arr1 = new qx.type.BaseArray(arrayLength);\n * var arr2 = new qx.type.BaseArray(item0, item1, ..., itemN);\n *\n *\n * *
arrayLength
: The initial length of the array. You can access\n * this value using the length property. If the value specified is not a\n * number, an array of length 1 is created, with the first element having\n * the specified value. The maximum length allowed for an\n * array is 2^32-1, i.e. 4,294,967,295.\n * * itemN
: A value for the element in that position in the\n * array. When this form is used, the array is initialized with the specified\n * values as its elements, and the array's length property is set to the\n * number of arguments.\n *\n * @param length_or_items {Integer|var?null} The initial length of the array\n * OR an argument list of values.\n */\n construct : function(length_or_items) {},\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n /**\n * Converts a base array to a native Array\n *\n * @signature function()\n * @return {Array} The native array\n */\n toArray : null,\n\n /**\n * Returns the current number of items stored in the Array\n *\n * @signature function()\n * @return {Integer} number of items\n */\n valueOf : null,\n\n /**\n * Removes the last element from an array and returns that element.\n *\n * This method modifies the array.\n *\n * @signature function()\n * @return {var} The last element of the array.\n */\n pop : null,\n\n /**\n * Adds one or more elements to the end of an array and returns the new length of the array.\n *\n * This method modifies the array.\n *\n * @signature function(varargs)\n * @param varargs {var} The elements to add to the end of the array.\n * @return {Integer} The new array's length\n */\n push : null,\n\n /**\n * Reverses the order of the elements of an array -- the first becomes the last, and the last becomes the first.\n *\n * This method modifies the array.\n *\n * @signature function()\n * @return {Array} Returns the modified array (works in place)\n */\n reverse : null,\n\n /**\n * Removes the first element from an array and returns that element.\n *\n * This method modifies the array.\n *\n * @signature function()\n * @return {var} The first element of the array.\n */\n shift : null,\n\n /**\n * Sorts the elements of an array.\n *\n * This method modifies the array.\n *\n * @signature function(compareFunction)\n * @param compareFunction {Function?null} Specifies a function that defines the sort order. If omitted,\n * the array is sorted lexicographically (in dictionary order) according to the string conversion of each element.\n * @return {Array} Returns the modified array (works in place)\n */\n sort : null,\n\n /**\n * Adds and/or removes elements from an array.\n *\n * @signature function(index, howMany, varargs)\n * @param index {Integer} Index at which to start changing the array. If negative, will begin\n * that many elements from the end.\n * @param howMany {Integer} An integer indicating the number of old array elements to remove.\n * If howMany
is 0, no elements are removed. In this case, you should specify\n * at least one new element.\n * @param varargs {var?null} The elements to add to the array. If you don't specify any elements,\n * splice simply removes elements from the array.\n * @return {qx.type.BaseArray} New array with the removed elements.\n */\n splice : null,\n\n /**\n * Adds one or more elements to the front of an array and returns the new length of the array.\n *\n * This method modifies the array.\n *\n * @signature function(varargs)\n * @param varargs {var} The elements to add to the front of the array.\n * @return {Integer} The new array's length\n */\n unshift : null,\n\n /**\n * Returns a new array comprised of this array joined with other array(s) and/or value(s).\n *\n * This method does not modify the array and returns a modified copy of the original.\n *\n * @signature function(varargs)\n * @param varargs {Array|var} Arrays and/or values to concatenate to the resulting array.\n * @return {qx.type.BaseArray} New array built of the given arrays or values.\n */\n concat : null,\n\n /**\n * Joins all elements of an array into a string.\n *\n * @signature function(separator)\n * @param separator {String} Specifies a string to separate each element of the array. The separator is\n * converted to a string if necessary. If omitted, the array elements are separated with a comma.\n * @return {String} The stringified values of all elements divided by the given separator.\n */\n join : null,\n\n /**\n * Extracts a section of an array and returns a new array.\n *\n * @signature function(begin, end)\n * @param begin {Integer} Zero-based index at which to begin extraction. As a negative index, start indicates\n * an offset from the end of the sequence. slice(-2) extracts the second-to-last element and the last element\n * in the sequence.\n * @param end {Integer?length} Zero-based index at which to end extraction. slice extracts up to but not including end.\n * slice(1,4)
extracts the second element through the fourth element (elements indexed 1, 2, and 3).\n * As a negative index, end indicates an offset from the end of the sequence. slice(2,-1) extracts the third element through the second-to-last element in the sequence.\n * If end is omitted, slice extracts to the end of the sequence.\n * @return {qx.type.BaseArray} An new array which contains a copy of the given region.\n */\n slice : null,\n\n /**\n * Returns a string representing the array and its elements. Overrides the Object.prototype.toString method.\n *\n * @signature function()\n * @return {String} The string representation of the array.\n */\n toString : null,\n\n /**\n * Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found.\n *\n * @signature function(searchElement, fromIndex)\n * @param searchElement {var} Element to locate in the array.\n * @param fromIndex {Integer?0} The index at which to begin the search. Defaults to 0, i.e. the\n * whole array will be searched. If the index is greater than or equal to the length of the\n * array, -1 is returned, i.e. the array will not be searched. If negative, it is taken as\n * the offset from the end of the array. Note that even when the index is negative, the array\n * is still searched from front to back. If the calculated index is less than 0, the whole\n * array will be searched.\n * @return {Integer} The index of the given element\n */\n indexOf : null,\n\n /**\n * Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found.\n *\n * @signature function(searchElement, fromIndex)\n * @param searchElement {var} Element to locate in the array.\n * @param fromIndex {Integer?length} The index at which to start searching backwards. Defaults to\n * the array's length, i.e. the whole array will be searched. If the index is greater than\n * or equal to the length of the array, the whole array will be searched. If negative, it\n * is taken as the offset from the end of the array. Note that even when the index is\n * negative, the array is still searched from back to front. If the calculated index is\n * less than 0, -1 is returned, i.e. the array will not be searched.\n * @return {Integer} The index of the given element\n */\n lastIndexOf : null,\n\n /**\n * Executes a provided function once per array element.\n *\n * forEach
executes the provided function (callback
) once for each\n * element present in the array. callback
is invoked only for indexes of the array\n * which have assigned values; it is not invoked for indexes which have been deleted or which\n * have never been assigned values.\n *\n * callback
is invoked with three arguments: the value of the element, the index\n * of the element, and the Array object being traversed.\n *\n * If a obj
parameter is provided to forEach
, it will be used\n * as the this
for each invocation of the callback
. If it is not\n * provided, or is null
, the global object associated with callback
\n * is used instead.\n *\n * forEach
does not mutate the array on which it is called.\n *\n * The range of elements processed by forEach
is set before the first invocation of\n * callback
. Elements which are appended to the array after the call to\n * forEach
begins will not be visited by callback
. If existing elements\n * of the array are changed, or deleted, their value as passed to callback
will be\n * the value at the time forEach
visits them; elements that are deleted are not visited.\n *\n * @signature function(callback, obj)\n * @param callback {Function} Function to execute for each element.\n * @param obj {Object} Object to use as this when executing callback.\n */\n forEach : null,\n\n /**\n * Creates a new array with all elements that pass the test implemented by the provided\n * function.\n *\n * filter
calls a provided callback
function once for each\n * element in an array, and constructs a new array of all the values for which\n * callback
returns a true value. callback
is invoked only\n * for indexes of the array which have assigned values; it is not invoked for indexes\n * which have been deleted or which have never been assigned values. Array elements which\n * do not pass the callback
test are simply skipped, and are not included\n * in the new array.\n *\n * callback
is invoked with three arguments: the value of the element, the\n * index of the element, and the Array object being traversed.\n *\n * If a obj
parameter is provided to filter
, it will\n * be used as the this
for each invocation of the callback
.\n * If it is not provided, or is null
, the global object associated with\n * callback
is used instead.\n *\n * filter
does not mutate the array on which it is called. The range of\n * elements processed by filter
is set before the first invocation of\n * callback
. Elements which are appended to the array after the call to\n * filter
begins will not be visited by callback
. If existing\n * elements of the array are changed, or deleted, their value as passed to callback
\n * will be the value at the time filter
visits them; elements that are deleted\n * are not visited.\n *\n * @signature function(callback, obj)\n * @param callback {Function} Function to test each element of the array.\n * @param obj {Object} Object to use as this
when executing callback
.\n * @return {qx.type.BaseArray} The newly created array with all matching elements\n */\n filter : null,\n\n /**\n * Creates a new array with the results of calling a provided function on every element in this array.\n *\n * map
calls a provided callback
function once for each element in an array,\n * in order, and constructs a new array from the results. callback
is invoked only for\n * indexes of the array which have assigned values; it is not invoked for indexes which have been\n * deleted or which have never been assigned values.\n *\n * callback
is invoked with three arguments: the value of the element, the index of the\n * element, and the Array object being traversed.\n *\n * If a obj
parameter is provided to map
, it will be used as the\n * this
for each invocation of the callback
. If it is not provided, or is\n * null
, the global object associated with callback
is used instead.\n *\n * map
does not mutate the array on which it is called.\n *\n * The range of elements processed by map
is set before the first invocation of\n * callback
. Elements which are appended to the array after the call to map
\n * begins will not be visited by callback
. If existing elements of the array are changed,\n * or deleted, their value as passed to callback
will be the value at the time\n * map
visits them; elements that are deleted are not visited.\n *\n * @signature function(callback, obj)\n * @param callback {Function} Function produce an element of the new Array from an element of the current one.\n * @param obj {Object} Object to use as this
when executing callback
.\n * @return {qx.type.BaseArray} A new array which contains the return values of every item executed through the given function\n */\n map : null,\n\n /**\n * Tests whether some element in the array passes the test implemented by the provided function.\n *\n * some
executes the callback
function once for each element present in\n * the array until it finds one where callback
returns a true value. If such an element\n * is found, some
immediately returns true
. Otherwise, some
\n * returns false
. callback
is invoked only for indexes of the array which\n * have assigned values; it is not invoked for indexes which have been deleted or which have never\n * been assigned values.\n *\n * callback
is invoked with three arguments: the value of the element, the index of the\n * element, and the Array object being traversed.\n *\n * If a obj
parameter is provided to some
, it will be used as the\n * this
for each invocation of the callback
. If it is not provided, or is\n * null
, the global object associated with callback
is used instead.\n *\n * some
does not mutate the array on which it is called.\n *\n * The range of elements processed by some
is set before the first invocation of\n * callback
. Elements that are appended to the array after the call to some
\n * begins will not be visited by callback
. If an existing, unvisited element of the array\n * is changed by callback
, its value passed to the visiting callback
will\n * be the value at the time that some
visits that element's index; elements that are\n * deleted are not visited.\n *\n * @signature function(callback, obj)\n * @param callback {Function} Function to test for each element.\n * @param obj {Object} Object to use as this
when executing callback
.\n * @return {Boolean} Whether at least one elements passed the test\n */\n some : null,\n\n /**\n * Tests whether all elements in the array pass the test implemented by the provided function.\n *\n * every
executes the provided callback
function once for each element\n * present in the array until it finds one where callback
returns a false value. If\n * such an element is found, the every
method immediately returns false
.\n * Otherwise, if callback
returned a true value for all elements, every
\n * will return true
. callback
is invoked only for indexes of the array\n * which have assigned values; it is not invoked for indexes which have been deleted or which have\n * never been assigned values.\n *\n * callback
is invoked with three arguments: the value of the element, the index of\n * the element, and the Array object being traversed.\n *\n * If a obj
parameter is provided to every
, it will be used as\n * the this
for each invocation of the callback
. If it is not provided,\n * or is null
, the global object associated with callback
is used instead.\n *\n * every
does not mutate the array on which it is called. The range of elements processed\n * by every
is set before the first invocation of callback
. Elements which\n * are appended to the array after the call to every
begins will not be visited by\n * callback
. If existing elements of the array are changed, their value as passed\n * to callback
will be the value at the time every
visits them; elements\n * that are deleted are not visited.\n *\n * @signature function(callback, obj)\n * @param callback {Function} Function to test for each element.\n * @param obj {Object} Object to use as this
when executing callback
.\n * @return {Boolean} Whether all elements passed the test\n */\n every : null\n }\n});\n\n(function() {\n\nfunction createStackConstructor(stack)\n{\n // In IE don't inherit from Array but use an empty object as prototype\n // and copy the methods from Array\n if ((qx.core.Environment.get(\"engine.name\") == \"mshtml\"))\n {\n Stack.prototype = {\n length : 0,\n $$isArray : true\n };\n\n var args = \"pop.push.reverse.shift.sort.splice.unshift.join.slice\".split(\".\");\n\n for (var length = args.length; length;) {\n Stack.prototype[args[--length]] = Array.prototype[args[length]];\n }\n };\n\n // Remember Array's slice method\n var slice = Array.prototype.slice;\n\n // Fix \"concat\" method\n Stack.prototype.concat = function()\n {\n var constructor = this.slice(0);\n\n for (var i=0, length=arguments.length; iq
object or define methods on the\n * collection it returns.\n *\n * By default, the core module is assigned to a global module named q
.\n * In case q
is already defined, the name qxWeb
\n * is used instead.\n *\n * For further details, take a look at the documentation in the\n * user manual.\n *\n * @ignore(q)\n *\n * @group (Core)\n */\nqx.Bootstrap.define(\"qxWeb\", {\n extend : qx.type.BaseArray,\n statics : {\n // internal storage for all initializers\n __init : [],\n\n // internal reference to the used qx namespace\n $$qx : qx,\n\n /**\n * Internal helper to initialize collections.\n *\n * @param arg {var} An array of Elements which will\n * be initialized as {@link q}. All items in the array which are not\n * either a window object, a DOM element node or a DOM document node will\n * be ignored.\n * @param clazz {Class} The class of the new collection.\n * @return {q} A new initialized collection.\n */\n $init : function(arg, clazz) {\n // restore widget instance\n if (arg.length && arg.length == 1 && arg[0] && arg[0].$widget instanceof qxWeb) {\n return arg[0].$widget;\n }\n\n var clean = [];\n for (var i = 0; i < arg.length; i++) {\n // check for node or window object\n var isNode = !!(arg[i] && (arg[i].nodeType === 1 ||\n arg[i].nodeType === 9 || arg[i].nodeType === 11));\n if (isNode) {\n clean.push(arg[i]);\n continue;\n }\n var isWindow = !!(arg[i] && arg[i].history && arg[i].location && arg[i].document);\n if (isWindow) {\n clean.push(arg[i]);\n }\n }\n\n if (arg[0] && arg[0].getAttribute && arg[0].getAttribute(\"data-qx-class\") && clean.length < 2) {\n clazz = qx.Bootstrap.getByName(arg[0].getAttribute(\"data-qx-class\")) || clazz;\n }\n\n var col = qx.lang.Array.cast(clean, clazz);\n for (var i=0; i < qxWeb.__init.length; i++) {\n qxWeb.__init[i].call(col);\n }\n\n return col;\n },\n\n\n /**\n * This is an API for module development and can be used to attach new methods\n * to {@link q}.\n *\n * @param module {Map} A map containing the methods to attach.\n * @param override {Boolean?false} Force to override\n */\n $attach : function(module, override) {\n for (var name in module) {\n if (qxWeb.prototype[name] != undefined && Array.prototype[name] == undefined && override !== true) {\n if (qx.core.Environment.get(\"qx.debug\")) {\n throw new Error(\"Method '\" + name + \"' already available.\");\n }\n } else {\n qxWeb.prototype[name] = module[name];\n }\n }\n },\n\n\n /**\n * This is an API for module development and can be used to attach new methods\n * to {@link q}.\n *\n * @param module {Map} A map containing the methods to attach.\n * @param override {Boolean?false} Force to override\n */\n $attachStatic : function(module, override) {\n for (var name in module) {\n if (qx.core.Environment.get(\"qx.debug\")) {\n if (qxWeb[name] != undefined && override !== true) {\n throw new Error(\"Method '\" + name + \"' already available as static method.\");\n }\n }\n qxWeb[name] = module[name];\n }\n },\n\n /**\n * This is an API for module development and can be used to attach new methods\n * to {@link q} during runtime according to the following conventions:\n *\n * Public members of the module are attached to the collection similar to\n * qxWeb.$attach
. Members beginning with '$' or '_' are ignored.\n *\n * Statics of the module are attached to {@link q} similar to\n * qxWeb.$attachStatic
. Statics beginning with '$' or '_', as well as constants\n * (all upper case) and some qooxdoo-internal statics of the module are ignored.\n *\n *\n * If more fine-grained control outside if these conventions is needed,\n * simply use qxWeb.$attach
or qxWeb$attachStatic
.\n *\n * @param clazz {Object} the qooxdoo class definition calling this method.\n * @param staticsNamespace {String?undefined} Specifies the namespace under which statics are attached to {@link q}.\n */\n $attachAll : function(clazz, staticsNamespace) {\n // members\n for (var name in clazz.members) {\n if (name.indexOf(\"$\") !== 0 && name.indexOf(\"_\") !== 0)\n qxWeb.prototype[name] = clazz.members[name];\n }\n\n // statics\n var destination;\n if (staticsNamespace != null) {\n qxWeb[staticsNamespace] = qxWeb[staticsNamespace] || {};\n destination = qxWeb[staticsNamespace];\n } else {\n destination = qxWeb;\n }\n\n for (var name in clazz.statics) {\n if (name.indexOf(\"$\") !== 0 && name.indexOf(\"_\") !== 0 && name !== \"name\" && name !== \"basename\" &&\n name !== \"classname\" && name !== \"toString\" && name !== name.toUpperCase())\n destination[name] = clazz.statics[name];\n }\n },\n\n\n /**\n * This is an API for module development and can be used to attach new initialization\n * methods to {@link q} which will be called when a new collection is\n * created.\n *\n * @param init {Function} The initialization method for a module.\n */\n $attachInit : function(init) {\n this.__init.push(init);\n },\n\n\n /**\n * Define a new class using the qooxdoo class system.\n *\n * @param name {String?} Name of the class. If null, the class will not be\n * attached to a namespace.\n * @param config {Map ? null} Class definition structure. The configuration map has the following keys:\n * Name | Type | Description |
---|---|---|
extend | Class | The super class the current class inherits from. |
construct | Function | The constructor of the class. |
statics | Map | Map of static values / functions of the class. |
members | Map | Map of instance members of the class. |
defer | Function | Function that is called at the end of\n * processing the class declaration. |
Object
or Array
) directly inside the members section.\n * Only list and initialize it with null
. Initialize your reference type inside the\n * construct
. Check out one of the samples below to get the idea.\n * @return {Function} The defined class.\n */\n define : function(name, config) {\n if (config == undefined) {\n config = name;\n name = null;\n }\n return qx.Bootstrap.define.call(qx.Bootstrap, name, config);\n }\n },\n\n\n /**\n * Primary usage:\n * Accepts a selector string and returns a collection of found items. The optional context\n * element can be used to reduce the amount of found elements to children of the\n * context element. If the context object is a collection, its first item is used.\n *\n * Secondary usage:\n * Creates a collection from an existing DOM element, document node or window object\n * (or an Array containing any such objects)\n *\n * Sizzle is used as selector engine.\n * Check out the documentation\n * for more details.\n *\n * @param selector {String|Element|Document|Window|Array} Valid selector (CSS3 + extensions),\n * window object, DOM element/document or Array of DOM Elements.\n * @param context {Element|q} Only the children of this element are considered.\n * @return {q} A collection of DOM elements.\n */\n construct : function(selector, context) {\n if (!selector && this instanceof qxWeb) {\n return this;\n }\n\n if (!selector) {\n selector = [];\n }\n else if (qx.Bootstrap.isString(selector)) {\n if (context instanceof qxWeb && context.length != 0) {\n context = context[0];\n }\n if (context instanceof qxWeb) {\n selector = [];\n } else {\n selector = qx.bom.Selector.query(selector, context);\n }\n }\n else if ((selector.nodeType === 1 || selector.nodeType === 9 ||\n selector.nodeType === 11) ||\n (selector.history && selector.location && selector.document))\n {\n selector = [selector];\n }\n return qxWeb.$init(selector, qxWeb);\n },\n\n\n members : {\n /**\n * Gets a new collection containing only those elements that passed the\n * given filter. This can be either a selector expression or a filter\n * function.\n *\n * @param selector {String|Function} Selector expression or filter function\n * @return {q} New collection containing the elements that passed the filter\n */\n filter : function(selector) {\n if (qx.lang.Type.isFunction(selector)) {\n return qxWeb.$init(Array.prototype.filter.call(this, selector), this.constructor);\n }\n return qxWeb.$init(qx.bom.Selector.matches(selector, this), this.constructor);\n },\n\n\n /**\n * Recreates a collection which is free of all duplicate elements from the original.\n *\n * @return {q} Returns a copy with no duplicates\n */\n unique : function() {\n var unique = qx.lang.Array.unique(this);\n return qxWeb.$init(unique, this.constructor);\n },\n\n\n /**\n * Returns a copy of the collection within the given range.\n *\n * @param begin {Number} The index to begin.\n * @param end {Number?} The index to end.\n * @return {q} A new collection containing a slice of the original collection.\n */\n slice : function(begin, end) {\n // Old IEs return an empty array if the second argument is undefined\n // check 'end' explicit for \"undefined\" [BUG #7322]\n if (end !== undefined) {\n return qxWeb.$init(Array.prototype.slice.call(this, begin, end), this.constructor);\n }\n return qxWeb.$init(Array.prototype.slice.call(this, begin), this.constructor);\n },\n\n\n /**\n * Removes the given number of items and returns the removed items as a new collection.\n * This method can also add items. Take a look at the\n * documentation of MDN for more details.\n *\n * @param index {Number} The index to begin.\n * @param howMany {Number} the amount of items to remove.\n * @param varargs {var} As many items as you want to add.\n * @return {q} A new collection containing the removed items.\n */\n splice : function(index , howMany, varargs) {\n return qxWeb.$init(Array.prototype.splice.apply(this, arguments), this.constructor);\n },\n\n\n /**\n * Returns a new collection containing the modified elements. For more details, check out the\n * MDN documentation.\n *\n * @param callback {Function} Function which produces the new element.\n * @param thisarg {var} Context of the callback.\n * @return {q} New collection containing the elements that passed the filter\n */\n map : function(callback, thisarg) {\n return qxWeb.$init(Array.prototype.map.apply(this, arguments), qxWeb);\n },\n\n\n /**\n * Returns a copy of the collection including the given elements.\n *\n * @param varargs {var} As many items as you want to add.\n * @return {q} A new collection containing all items.\n */\n concat : function(varargs) {\n var clone = Array.prototype.slice.call(this, 0);\n for (var i=0; i < arguments.length; i++) {\n if (arguments[i] instanceof qxWeb) {\n clone = clone.concat(Array.prototype.slice.call(arguments[i], 0));\n } else {\n clone.push(arguments[i]);\n }\n }\n return qxWeb.$init(clone, this.constructor);\n },\n\n\n /**\n * Returns the index of the given element within the current\n * collection or -1 if the element is not in the collection\n * @param elem {Element|Element[]|qxWeb} Element or collection of elements\n * @param fromIndex {Integer} The index to start the search at\n * @return {Number} The element's index\n */\n indexOf : function(elem, fromIndex) {\n if (!elem) {\n return -1;\n }\n\n if (!fromIndex) {\n fromIndex = 0;\n }\n\n if (typeof fromIndex !== \"number\") {\n return -1;\n }\n\n if (fromIndex < 0) {\n fromIndex = this.length + fromIndex;\n if (fromIndex < 0) {\n fromIndex = 0;\n }\n }\n\n if (qx.lang.Type.isArray(elem)) {\n elem = elem[0];\n }\n\n for (var i = fromIndex, l = this.length; i\n * osparc.WatchDog.getInstance().startCheck();\n *\n */\n\nqx.Class.define(\"osparc.WatchDog\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n construct: function() {\n this.__clientHeartbeatWWPinger = new Worker(\"resource/osparc/pacemaker.js\");\n this.__clientHeartbeatWWPinger.onmessage = () => {\n this.__pingServer();\n };\n\n // register for socket.io event to change the default heartbeat interval\n const socket = osparc.wrapper.WebSocket.getInstance();\n socket.removeSlot(\"set_heartbeat_emit_interval\");\n socket.on(\"set_heartbeat_emit_interval\", ({ interval }) => {\n const newInterval = parseInt(interval) * 1000;\n this.setHeartbeatInterval(newInterval);\n }, this);\n },\n\n properties: {\n online: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n event: \"changeOnline\",\n apply: \"__applyOnline\"\n },\n\n heartbeatInterval: {\n check: \"Number\",\n init: 2 * 1000, // in milliseconds\n nullable: false,\n apply: \"_applyHeartbeatInterval\"\n }\n },\n\n members: {\n __clientHeartbeatWWPinger: null,\n\n __applyOnline: function(value) {\n const logo = osparc.navigation.LogoOnOff.getInstance();\n if (logo) {\n logo.setOnline(value);\n }\n\n if (value) {\n this.__clientHeartbeatWWPinger.postMessage([\"start\", this.getHeartbeatInterval()]);\n } else {\n this.__clientHeartbeatWWPinger.postMessage([\"stop\"]);\n }\n },\n\n _applyHeartbeatInterval: function(value) {\n this.__clientHeartbeatWWPinger.postMessage([\"start\", value]);\n },\n\n __pingServer: function() {\n const socket = osparc.wrapper.WebSocket.getInstance();\n try {\n socket.emit(\"client_heartbeat\");\n } catch (error) {\n // no need to handle the error, nor does it need to cause further issues\n // it is ok to eat it up\n }\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Andreas Ecker (ecker)\n * Fabian Jakobs (fjakobs)\n\n************************************************************************ */\n\n/**\n * The qx.locale.Manager provides static translation methods (like tr()) and\n * general locale information.\n *\n * @require(qx.event.dispatch.Direct)\n * @require(qx.locale.LocalizedString)\n *\n * @cldr()\n */\n\nqx.Class.define(\"qx.locale.Manager\",\n{\n type : \"singleton\",\n extend : qx.core.Object,\n\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n construct : function()\n {\n this.base(arguments);\n\n this.__translations = qx.$$translations || {};\n this.__locales = qx.$$locales || {};\n\n this.initLocale();\n this.__clientLocale = this.getLocale();\n },\n\n\n /*\n *****************************************************************************\n STATICS\n *****************************************************************************\n */\n\n statics :\n {\n /**\n * Translate a message\n *\n * @param messageId {String} message id (may contain format strings)\n * @param varargs {Object} variable number of arguments applied to the format string\n * @return {String | LocalizedString} The translated message or localized string\n * @see qx.lang.String.format\n */\n tr : function(messageId, varargs)\n {\n var args = qx.lang.Array.fromArguments(arguments);\n args.splice(0, 1);\n\n return qx.locale.Manager.getInstance().translate(messageId, args);\n },\n\n\n /**\n * Translate a plural message\n *\n * Depending on the third argument the plural or the singular form is chosen.\n *\n * @param singularMessageId {String} message id of the singular form (may contain format strings)\n * @param pluralMessageId {String} message id of the plural form (may contain format strings)\n * @param count {Integer} singular form if equals 1, otherwise plural\n * @param varargs {Object} variable number of arguments applied to the format string\n * @return {String | LocalizedString} The translated message or localized string\n * @see qx.lang.String.format\n */\n trn : function(singularMessageId, pluralMessageId, count, varargs)\n {\n var args = qx.lang.Array.fromArguments(arguments);\n args.splice(0, 3);\n\n // assumes \"Two forms, singular used for one only\" (seems to be the most common form)\n // (http://www.gnu.org/software/gettext/manual/html_node/gettext_150.html#Plural-forms)\n // closely related with bug #745\n if (count != 1) {\n return qx.locale.Manager.getInstance().translate(pluralMessageId, args);\n } else {\n return qx.locale.Manager.getInstance().translate(singularMessageId, args);\n }\n },\n\n\n /**\n * Translate a message with translation hint (from developer addressed to translator).\n *\n * @param hint {String} hint for the translator of the message. Will be included in the .po file.\n * @param messageId {String} message id (may contain format strings)\n * @param varargs {Object} variable number of arguments applied to the format string\n * @return {String | LocalizedString} The translated message or localized string\n * @see qx.lang.String.format\n */\n trc : function(hint, messageId, varargs)\n {\n var args = qx.lang.Array.fromArguments(arguments);\n args.splice(0, 2);\n\n return qx.locale.Manager.getInstance().translate(messageId, args);\n },\n\n /**\n * Translate a plural message with translation hint (from developer addressed to translator).\n *\n * Depending on the third argument the plural or the singular form is chosen.\n *\n * @param hint {String} hint for the translator of the message. Will be included in the .po file.\n * @param singularMessageId {String} message id of the singular form (may contain format strings)\n * @param pluralMessageId {String} message id of the plural form (may contain format strings)\n * @param count {Integer} singular form if equals 1, otherwise plural\n * @param varargs {Object} variable number of arguments applied to the format string\n * @return {String | LocalizedString} The translated message or localized string\n * @see qx.lang.String.format\n */\n trnc : function(hint, singularMessageId, pluralMessageId, count, varargs)\n {\n var args = qx.lang.Array.fromArguments(arguments);\n args.splice(0, 4);\n\n // see trn()\n if (count != 1) {\n return qx.locale.Manager.getInstance().translate(pluralMessageId, args);\n } else {\n return qx.locale.Manager.getInstance().translate(singularMessageId, args);\n }\n },\n\n /**\n * Mark the message for translation but return the original message.\n *\n * @param messageId {String} the message ID\n * @return {String} messageId\n */\n marktr : function(messageId) {\n return messageId;\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n /** current locale. locale is an language code like de, de_AT, en, en_GB, fr, ... */\n locale :\n {\n check : \"String\",\n apply : \"_applyLocale\",\n event : \"changeLocale\",\n init : (function() { \n var locale = qx.core.Environment.get(\"locale\");\n if(!locale || locale === \"\") {\n return qx.core.Environment.get(\"locale.default\");\n }\n var variant = qx.core.Environment.get(\"locale.variant\");\n if (variant !== \"\") {\n locale += \"_\" + variant;\n }\n return locale; })()\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n\n __defaultLocale : qx.core.Environment.get(\"locale.default\"),\n __locale : null,\n __language : null,\n __translations : null,\n __locales : null,\n __clientLocale : null,\n\n /**\n * Get the language code of the current locale\n *\n * This is the first part of a locale definition. The language for \"de_DE\" would be \"de\"\n *\n * @return {String} language code\n */\n getLanguage : function() {\n return this.__language;\n },\n\n\n /**\n * Get the territory code of the current locale\n *\n * This is the second part of a locale definition. The territory for \"de_DE\" would be \"DE\"\n *\n * @return {String} territory code\n */\n getTerritory : function() {\n return this.getLocale().split(\"_\")[1] || \"\";\n },\n\n\n /**\n * Return the available application locales\n *\n * This corresponds to the LOCALES setting in config.json. Without argument,\n * it only returns the currently loaded locales, with an argument of true\n * all locales that went into the build. This is particularly interesting if\n * locales were generated as dedicated I18N parts, and have to be loaded\n * explicitly before being available.\n *\n * @param includeNonloaded {Boolean?null} include locales not yet loaded\n * @return {String[]} array of available locales\n */\n getAvailableLocales : function(includeNonloaded)\n {\n var locales = [];\n\n for (var locale in this.__locales)\n {\n if (locale != this.__defaultLocale) {\n if (this.__locales[locale] === null && !includeNonloaded) {\n continue; // skip not yet loaded locales\n }\n locales.push(locale);\n }\n }\n\n return locales;\n },\n\n\n /**\n * Extract the language part from a locale.\n *\n * @param locale {String} locale to be used\n * @return {String} language\n */\n __extractLanguage : function(locale)\n {\n var language;\n if (locale == null) {\n return null;\n }\n var pos = locale.indexOf(\"_\");\n\n if (pos == -1) {\n language = locale;\n } else {\n language = locale.substring(0, pos);\n }\n\n return language;\n },\n\n\n // property apply\n _applyLocale : function(value, old)\n {\n if (qx.core.Environment.get(\"qx.debug\")) {\n if (!(value in this.__locales || value == this.__clientLocale)) {\n qx.log.Logger.warn(\"Locale: \" + value+\" not available.\");\n }\n }\n\n this.__locale = value;\n this.__language = this.__extractLanguage(value);\n },\n\n\n /**\n * Add a translation to the translation manager.\n *\n * If
languageCode
already exists, its map will be updated with\n * translationMap
(new keys will be added, existing keys will be\n * overwritten).\n *\n * @param languageCode {String} language code of the translation like de, de_AT, en, en_GB, fr, ...\n * @param translationMap {Map} mapping of message identifiers to message strings in the target\n * language, e.g. {\"greeting_short\" : \"Hello\"}. Plural forms\n * are separate keys.\n */\n addTranslation : function(languageCode, translationMap)\n {\n var catalog = this.__translations;\n if (catalog[languageCode])\n {\n for (var key in translationMap) {\n catalog[languageCode][key] = translationMap[key];\n }\n }\n else\n {\n catalog[languageCode] = translationMap;\n }\n },\n\n\n /**\n * Add a localization to the localization manager.\n *\n * If localeCode
already exists, its map will be updated with\n * localeMap
(new keys will be added, existing keys will be overwritten).\n *\n * @param localeCode {String} locale code of the translation like de, de_AT, en, en_GB, fr, ...\n * @param localeMap {Map} mapping of locale keys to the target locale values, e.g.\n * {\"cldr_date_format_short\" : \"M/d/yy\"}.\n */\n addLocale : function(localeCode, localeMap)\n {\n var catalog = this.__locales;\n if (catalog[localeCode])\n {\n for (var key in localeMap) {\n catalog[localeCode][key] = localeMap[key];\n }\n }\n else\n {\n catalog[localeCode] = localeMap;\n }\n },\n\n\n /**\n * Translate a message using the current locale and apply format string to the arguments.\n *\n * Implements the lookup chain locale (e.g. en_US) -> language (e.g. en) ->\n * default locale (e.g. C). Localizes the arguments if possible and splices\n * them into the message. If qx.dynlocale is on, returns a {@link\n * LocalizedString}.\n *\n * @param messageId {String} message id (may contain format strings)\n * @param args {Object[]} array of objects, which are inserted into the format string\n * @param locale {String ? #locale} locale to be used; if not given, defaults to the value of {@link #locale}\n * @return {String | LocalizedString} translated message or localized string\n */\n translate : function(messageId, args, locale)\n {\n var catalog = this.__translations;\n return this.__lookupAndExpand(catalog, messageId, args, locale);\n },\n\n /**\n * Provide localization (CLDR) data.\n *\n * Implements the lookup chain locale (e.g. en_US) -> language (e.g. en) ->\n * default locale (e.g. C). Localizes the arguments if possible and splices\n * them into the message. If qx.dynlocale is on, returns a {@link\n * LocalizedString}.\n *\n * @param messageId {String} message id (may contain format strings)\n * @param args {Object[]} array of objects, which are inserted into the format string\n * @param locale {String ? #locale} locale to be used; if not given, defaults to the value of {@link #locale}\n * @return {String | LocalizedString} translated message or localized string\n */\n localize : function(messageId, args, locale)\n {\n var catalog = this.__locales;\n return this.__lookupAndExpand(catalog, messageId, args, locale);\n },\n\n\n /**\n * Look up an I18N key in a catalog and expand format strings.\n *\n * Implements the lookup chain locale (e.g. en_US) -> language (e.g. en) ->\n * default locale (e.g. C). Localizes the arguments if possible and splices\n * them into the message. If qx.dynlocale is on, returns a {@link\n * LocalizedString}.\n *\n * @param catalog {Map} map of I18N keys and their values\n * @param messageId {String} message id (may contain format strings)\n * @param args {Object[]} array of objects, which are inserted into the format string\n * @param locale {String ? #locale} locale to be used; if not given, defaults to the value of {@link #locale}\n * @return {String | LocalizedString} translated message or localized string\n */\n __lookupAndExpand : function(catalog, messageId, args, locale)\n {\n if (qx.core.Environment.get(\"qx.debug\")) {\n this.assertObject(catalog);\n this.assertString(messageId);\n this.assertArray(args);\n }\n var txt;\n\n if (!catalog) {\n return messageId;\n }\n\n if (locale) {\n var language = this.__extractLanguage(locale);\n }\n else\n {\n locale = this.__locale;\n language = this.__language;\n }\n\n // e.g. DE_at\n if (!txt && catalog[locale]) {\n txt = catalog[locale][messageId];\n }\n\n // e.g. DE\n if (!txt && catalog[language]) {\n txt = catalog[language][messageId];\n }\n\n // C\n if (!txt && catalog[this.__defaultLocale]) {\n txt = catalog[this.__defaultLocale][messageId];\n }\n\n if (!txt) {\n txt = messageId;\n }\n\n if (args.length > 0)\n {\n var translatedArgs = [];\n for ( var i = 0; i < args.length; i++)\n {\n var arg = args[i];\n if (arg && arg.translate) {\n translatedArgs[i] = arg.translate();\n } else {\n translatedArgs[i] = arg;\n }\n }\n txt = qx.lang.String.format(txt, translatedArgs);\n }\n\n if (qx.core.Environment.get(\"qx.dynlocale\")) {\n txt = new qx.locale.LocalizedString(txt, messageId, args, catalog === this.__locales);\n }\n\n return txt;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.DownloadLinkTracker\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n properties: {\n downloading: {\n check: \"Boolean\",\n init: false,\n nullable: true\n }\n },\n\n members: {\n downloadLinkUnattended: function(url, fileName) {\n const downloadAnchorNode = document.createElement(\"a\");\n downloadAnchorNode.setAttribute(\"href\", url);\n downloadAnchorNode.setAttribute(\"download\", fileName);\n downloadAnchorNode.setAttribute(\"osparc\", \"downloadFile\");\n document.body.appendChild(downloadAnchorNode);\n this.setDownloading(true);\n downloadAnchorNode.click();\n document.body.removeChild(downloadAnchorNode);\n // This is needed to make it work in Firefox\n setTimeout(() => this.setDownloading(false), 100);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\n/**\n * Singleton class that stores all the application resources and acts as a cache for them. It is used by {osparc.data.Resources},\n * before making an API call to retrieve resources from the server, it will try to get them from here. Same with post and put calls,\n * their stored elements will be cached here.\n *\n * *Example*\n *\n * Here is a little example of how to use the class. You can get resources like this:\n *\n * \n * let studies = osparc.store.Store.getInstance().getStudies();\n *\n *\n * To invalidate the cache for any of the entities, config for example, just do:\n *
\n * osparc.store.Store.getInstance().resetConfig();\n *\n * or\n *
\n * osparc.store.Store.getInstance().invalidate(\"config\");\n *\n * To invalidate the entire cache:\n *
\n * osparc.store.Store.getInstance().invalidate();\n *\n */\nqx.Class.define(\"osparc.store.Store\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n properties: {\n config: {\n check: \"Object\",\n init: {}\n },\n statics: {\n check: \"Object\",\n init: {}\n },\n announcements: {\n check: \"Array\",\n init: []\n },\n maintenance: {\n check: \"Object\",\n init: {}\n },\n currentStudy: {\n check: \"osparc.data.model.Study\",\n init: null,\n nullable: true,\n event: \"changeCurrentStudy\",\n apply: \"__applyCurrentStudy\",\n },\n currentStudyId: {\n check: \"String\",\n init: null,\n nullable: true\n },\n studyBrowserContext: {\n check: [\"studiesAndFolders\", \"workspaces\", \"search\", \"trash\"],\n init: \"studiesAndFolders\",\n nullable: false,\n event: \"changeStudyBrowserContext\",\n },\n studies: {\n check: \"Array\",\n init: []\n },\n folders: {\n check: \"Array\",\n init: []\n },\n workspaces: {\n check: \"Array\",\n init: []\n },\n studyComments: {\n check: \"Array\",\n init: []\n },\n resourceUsage: {\n check: \"Array\",\n init: []\n },\n nodesInStudyResources: {\n check: \"Array\",\n init: []\n },\n serviceResources: {\n check: \"Array\",\n init: []\n },\n snapshots: {\n check: \"Array\",\n init: [],\n event: \"changeSnapshots\"\n },\n iterations: {\n check: \"Array\",\n init: [],\n event: \"changeIterations\"\n },\n templates: {\n check: \"Array\",\n init: []\n },\n profile: {\n check: \"Object\",\n init: {}\n },\n wallets: {\n check: \"Array\",\n init: [],\n event: \"changeWallets\",\n apply: \"__applyWallets\"\n },\n // If a study with a wallet is opened, this wallet will be the active one\n activeWallet: {\n check: \"osparc.data.model.Wallet\",\n init: null,\n nullable: true,\n event: \"changeActiveWallet\",\n apply: \"__applyActiveWallet\"\n },\n // User's default or primary wallet\n preferredWallet: {\n check: \"osparc.data.model.Wallet\",\n init: null,\n nullable: true,\n event: \"changePreferredWallet\",\n apply: \"__applyPreferredWallet\"\n },\n // activeWallet, preferredWallet or null (in a product with wallets enabled there shouldn't be a null context wallet)\n contextWallet: {\n check: \"osparc.data.model.Wallet\",\n init: null,\n nullable: true,\n event: \"changeContextWallet\"\n },\n creditPrice: {\n check: \"Number\",\n init: null,\n nullable: true,\n event: \"changeCreditPrice\"\n },\n productMetadata: {\n check: \"Object\",\n init: {},\n nullable: true\n },\n permissions: {\n check: \"Array\",\n init: []\n },\n apiKeys: {\n check: \"Array\",\n init: []\n },\n tokens: {\n check: \"Array\",\n init: []\n },\n services: {\n check: \"Array\",\n init: []\n },\n pricingPlans: {\n check: \"Array\",\n init: []\n },\n pricingUnits: {\n check: \"Array\",\n init: []\n },\n billableServices: {\n check: \"Array\",\n init: []\n },\n portsCompatibility: {\n check: \"Object\",\n init: {}\n },\n dags: {\n check: \"Array\",\n init: []\n },\n storageLocations: {\n check: \"Array\",\n init: []\n },\n tags: {\n check: \"Array\",\n init: [],\n event: \"changeTags\"\n },\n classifiers: {\n check: \"Array\",\n init: null,\n nullable: true,\n event: \"changeClassifiers\"\n },\n tasks: {\n check: \"Array\",\n init: []\n },\n licensedItems: {\n check: \"Array\",\n init: []\n },\n },\n\n events: {\n \"studyStateChanged\": \"qx.event.type.Data\",\n \"studyDebtChanged\": \"qx.event.type.Data\",\n },\n\n members: {\n // fetch resources that do not require log in\n preloadCalls: async function() {\n await osparc.data.Resources.get(\"config\");\n await osparc.data.Resources.get(\"statics\");\n },\n\n /**\n * Updates an element or a set of elements in the store.\n * @param {String} resource Name of the resource property. If used with {osparc.data.Resources}, it has to be the same there.\n * @param {*} data Data to be stored, it needs to have the correct type as in the property definition.\n * @param {String} idField Key(s) used for the id field. This field has to be unique among all elements of that resource.\n */\n update: function(resource, data, idField = \"uuid\") {\n if (data === undefined) {\n return;\n }\n const stored = this.get(resource);\n if (Array.isArray(stored)) {\n if (Array.isArray(data)) {\n this.set(resource, data);\n } else {\n const idFields = Array.isArray(idField) ? idField : [idField];\n const element = stored.find(item => idFields.every(id => item[id] === data[id]));\n if (element) {\n const newStored = stored.map(item => {\n if (idFields.every(id => item[id] === data[id])) {\n return data;\n }\n return item;\n });\n this.set(resource, newStored);\n } else {\n this.set(resource, [...stored, data]);\n }\n }\n } else {\n this.set(resource, data);\n }\n },\n\n append: function(resource, data) {\n if (data === undefined) {\n return;\n }\n const stored = this.get(resource);\n if (Array.isArray(stored)) {\n this.set(resource, stored.concat(data));\n } else {\n this.set(resource, data);\n }\n },\n\n /**\n * Remove an element from an array, or erase the store for a given resource.\n * @param {String} resource Name of the resource property. If used with {osparc.data.Resources}, it has to be the same there.\n * @param {String} idField Key(s) used for the id field. This field has to be unique among all elements of that resource.\n * @param {String} id(s) Value of the id field.\n */\n remove: function(resource, idField = \"uuid\", id) {\n const stored = this.get(resource);\n if (Array.isArray(stored)) {\n const idFields = Array.isArray(idField) ? idField : [idField];\n const ids = Array.isArray(id) ? id : [id];\n const index = stored.findIndex(element => {\n let match = true;\n for (let i=0; i
\n * // create the composite\n * var composite = new qx.ui.container.Composite()\n *\n * // configure it with a horizontal box layout with a spacing of '5'\n * composite.setLayout(new qx.ui.layout.HBox(5));\n *\n * // add some children\n * composite.add(new qx.ui.basic.Label(\"Name: \"));\n * composite.add(new qx.ui.form.TextField());\n *\n * this.getRoot().add(composite);\n *\n *\n * This example horizontally groups a label and text field by using a\n * Composite configured with a horizontal box layout as a container.\n *\n * *External Documentation*\n *\n * \n * Documentation of this widget in the qooxdoo manual.\n */\nqx.Class.define(\"qx.ui.container.Composite\",\n{\n extend : qx.ui.core.Widget,\n include : [ qx.ui.core.MChildrenHandling, qx.ui.core.MLayoutHandling ],\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param layout {qx.ui.layout.Abstract} A layout instance to use to\n * place widgets on the screen.\n */\n construct : function(layout)\n {\n this.base(arguments);\n\n if (layout != null) {\n this._setLayout(layout);\n }\n },\n\n\n\n /*\n *****************************************************************************\n EVENTS\n *****************************************************************************\n */\n\n events :\n {\n /**\n * This event is fired after a child widget was added to this widget. The\n * {@link qx.event.type.Data#getData} method of the event returns the\n * added child.\n */\n addChildWidget : \"qx.event.type.Data\",\n\n\n /**\n * This event is fired after a child widget has been removed from this widget.\n * The {@link qx.event.type.Data#getData} method of the event returns the\n * removed child.\n */\n removeChildWidget : \"qx.event.type.Data\"\n },\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n // overridden\n _afterAddChild : function(child) {\n this.fireNonBubblingEvent(\"addChildWidget\", qx.event.type.Data, [child]);\n },\n\n\n // overridden\n _afterRemoveChild : function(child) {\n this.fireNonBubblingEvent(\"removeChildWidget\", qx.event.type.Data, [child]);\n }\n },\n\n\n\n /*\n *****************************************************************************\n DEFER\n *****************************************************************************\n */\n\n defer : function(statics, members)\n {\n qx.ui.core.MChildrenHandling.remap(members);\n qx.ui.core.MLayoutHandling.remap(members);\n }\n});","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2022 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Author: Ignacio Pascual (ignapas)\n */\n\n/**\n * @asset(form/test1.json)\n */\n\nqx.Class.define(\"osparc.desktop.FormSandboxPage\", {\n extend: qx.ui.container.Composite,\n construct: function() {\n this.base();\n this.__buildLayout();\n this.__attachEventHandlers();\n osparc.utils.Utils.fetchJSON(\"/resource/form/test1.json\")\n .then(schema => {\n const stringData = JSON.stringify(schema, null, 4);\n this.__schema.setValue(stringData);\n this.__form.addListener(\"ajvReady\", () => {\n this.__form.setSchema(schema);\n });\n });\n },\n members: {\n __schema: null,\n __data: null,\n __jsonData: null,\n __buildLayout: function() {\n this.setPadding(100);\n this.setLayout(new qx.ui.layout.HBox(50));\n const schemaAndData = new qx.ui.container.Composite();\n schemaAndData.setLayout(new qx.ui.layout.VBox(20));\n this.__schema = new qx.ui.form.TextArea();\n this.__data = new qx.ui.form.TextArea();\n schemaAndData.add(this.__schema, {height: \"50%\"});\n schemaAndData.add(this.__data, {height: \"50%\"});\n this.add(schemaAndData, {width: \"50%\"});\n this.__form = new osparc.form.json.JsonSchemaForm();\n const scrollContainer = new qx.ui.container.Scroll();\n scrollContainer.add(this.__form);\n this.add(scrollContainer, {width: \"50%\"});\n },\n __attachEventHandlers: function() {\n this.__schema.addListener(\"input\", data => {\n try {\n const jsonSchema = JSON.parse(data.getData());\n this.__form.setSchema(jsonSchema);\n this.__form.setData(this.__jsonData);\n } catch (e) {\n this.__form.setSchema(null);\n }\n });\n this.__data.addListener(\"input\", data => {\n try {\n const jsonData = JSON.parse(data.getData());\n this.__form.setData(jsonData);\n this.__jsonData = jsonData;\n } catch (e) {\n console.error(e);\n this.__form.setData(null);\n }\n });\n this.__form.addListener(\"submit\", data => {\n const stringData = JSON.stringify(data.getData().json, null, 4);\n this.__data.setValue(stringData);\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Sandbox of static methods related to products.\n */\n\nqx.Class.define(\"osparc.product.Utils\", {\n type: \"static\",\n\n statics: {\n getProductName: function() {\n return qx.core.Environment.get(\"product.name\");\n },\n\n isProduct: function(productName) {\n const product = this.getProductName();\n return (productName === product);\n },\n\n isS4LProduct: function() {\n return (\n this.isProduct(\"s4l\") ||\n this.isProduct(\"s4lacad\") ||\n this.isProduct(\"s4ldesktop\") ||\n this.isProduct(\"s4ldesktopacad\")\n );\n },\n\n getStudyAlias: function(options = {}) {\n let alias = null;\n if (this.getProductName().includes(\"s4l\")) {\n if (options.plural) {\n alias = qx.locale.Manager.tr(\"projects\");\n } else {\n alias = qx.locale.Manager.tr(\"project\");\n }\n } else if (options.plural) {\n alias = qx.locale.Manager.tr(\"studies\");\n } else {\n alias = qx.locale.Manager.tr(\"study\");\n }\n\n if (options.firstUpperCase) {\n alias = osparc.utils.Utils.capitalize(alias);\n } else if (options.allUpperCase) {\n alias = alias.toUpperCase();\n }\n\n return alias;\n },\n\n getTemplateAlias: function(options = {}) {\n let alias = null;\n if (this.getProductName().includes(\"s4l\")) {\n if (options.plural) {\n alias = qx.locale.Manager.tr(\"tutorials\");\n } else {\n alias = qx.locale.Manager.tr(\"tutorial\");\n }\n } else if (options.plural) {\n alias = qx.locale.Manager.tr(\"templates\");\n } else {\n alias = qx.locale.Manager.tr(\"template\");\n }\n\n if (options.firstUpperCase) {\n alias = osparc.utils.Utils.capitalize(alias);\n } else if (options.allUpperCase) {\n alias = alias.toUpperCase();\n }\n\n return alias;\n },\n\n getServiceAlias: function(options = {}) {\n let alias = qx.locale.Manager.tr(\"service\");\n if (options.plural) {\n alias = qx.locale.Manager.tr(\"services\");\n }\n\n if (options.firstUpperCase) {\n alias = osparc.utils.Utils.capitalize(alias);\n } else if (options.allUpperCase) {\n alias = alias.toUpperCase();\n }\n\n return alias;\n },\n\n resourceTypeToAlias: function(resourceType, options) {\n switch (resourceType) {\n case \"study\":\n return this.getStudyAlias(options);\n case \"template\":\n return this.getTemplateAlias(options);\n case \"service\":\n return this.getServiceAlias(options);\n }\n return resourceType;\n },\n\n getLogoPath: function(longLogo = true) {\n let logosPath = null;\n const colorManager = qx.theme.manager.Color.getInstance();\n const textColor = colorManager.resolve(\"text\");\n const lightLogo = osparc.utils.Utils.getColorLuminance(textColor) > 0.4;\n const product = osparc.product.Utils.getProductName();\n switch (product) {\n case \"s4l\": {\n if (lightLogo) {\n if (longLogo) {\n logosPath = \"osparc/Sim4Life_full_logo_white.svg\";\n } else {\n logosPath = \"osparc/s4l_logo_white_short.svg\";\n }\n } else if (longLogo) {\n logosPath = \"osparc/Sim4Life_full_logo_black.svg\";\n } else {\n logosPath = \"osparc/s4l_logo_black_short.svg\";\n }\n break;\n }\n case \"s4llite\":\n logosPath = lightLogo ? \"osparc/s4llite-white.png\" : \"osparc/s4llite-black.png\";\n break;\n case \"s4lacad\":\n logosPath = lightLogo ? \"osparc/Sim4Life_full_logo_white.svg\" : \"osparc/Sim4Life_full_logo_black.svg\";\n break;\n case \"s4ldesktop\":\n logosPath = lightLogo ? \"osparc/Sim4Life_full_logo_white.svg\" : \"osparc/Sim4Life_full_logo_black.svg\";\n break;\n case \"s4ldesktopacad\":\n logosPath = lightLogo ? \"osparc/Sim4Life_full_logo_white.svg\" : \"osparc/Sim4Life_full_logo_black.svg\";\n break;\n case \"tis\":\n logosPath = lightLogo ? \"osparc/tip_itis-white.svg\" : \"osparc/tip_itis-black.svg\";\n break;\n case \"tiplite\":\n logosPath = lightLogo ? \"osparc/tip_lite_itis-white.svg\" : \"osparc/tip_lite_itis-black.svg\";\n break;\n default:\n logosPath = lightLogo ? \"osparc/osparc-white.svg\" : \"osparc/osparc-black.svg\";\n break;\n }\n return logosPath;\n },\n\n forceNullCreditsColor: function(wallet) {\n // TIP is a product that can be used for free, so allow making 0 credits scenario more friendly.\n if (osparc.product.Utils.isProduct(\"tis\") || osparc.product.Utils.isProduct(\"tiplite\")) {\n // Ideally, check if there was ever a transaction. If not, keep the indicator gray.\n // Note: Since we can't fetch payments per wallet, for now rely on the available credits.\n const credits = wallet.getCreditsAvailable();\n return credits === 0;\n }\n return false;\n },\n\n /**\n * @returns {String} [\"REGISTER\", \"REQUEST_ACCOUNT_FORM\", \"REQUEST_ACCOUNT_INSTRUCTIONS\"]\n */\n getCreateAccountAction: function() {\n const config = osparc.store.Store.getInstance().get(\"config\");\n if (config[\"invitation_required\"]) {\n const vendor = osparc.store.VendorInfo.getInstance().getVendor();\n if (vendor[\"invitation_form\"]) {\n // If invitation_required (login_settings) and invitation_form (vendor)\n return \"REQUEST_ACCOUNT_FORM\";\n }\n // do not show request account form, pop up a dialog with instructions instead\n return \"REQUEST_ACCOUNT_INSTRUCTIONS\";\n }\n return \"REGISTER\";\n },\n\n hasConvertToPipelineEnabled: function() {\n return false;\n },\n\n // oSPARC only\n hasExportCMisEnabled: function() {\n const product = this.getProductName();\n return product === \"osparc\";\n },\n\n // All products except oSPARC\n hasIdlingTrackerEnabled: function() {\n const product = this.getProductName();\n return product !== \"osparc\";\n },\n\n // All products except oSPARC\n showLicenseExtra: function() {\n const product = this.getProductName();\n return product !== \"osparc\";\n },\n\n showStudyPreview: function() {\n if (this.isProduct(\"s4llite\") || this.isProduct(\"tis\") || this.isProduct(\"tiplite\")) {\n return false;\n }\n return true;\n },\n\n showAboutProduct: function() {\n return (\n this.isS4LProduct() ||\n this.isProduct(\"s4llite\") ||\n this.isProduct(\"tis\") ||\n this.isProduct(\"tiplite\")\n );\n },\n\n showPreferencesTokens: function() {\n if (this.isProduct(\"s4llite\") || this.isProduct(\"tis\") || this.isProduct(\"tiplite\")) {\n return false;\n }\n return true;\n },\n\n showPreferencesExperimental: function() {\n if (this.isProduct(\"s4llite\") || this.isProduct(\"tis\") || this.isProduct(\"tiplite\")) {\n return false;\n }\n return true;\n },\n\n showDisableServiceAutoStart: function() {\n if (this.isProduct(\"s4llite\")) {\n return false;\n }\n return true;\n },\n\n showQuality: function() {\n if (this.isProduct(\"osparc\")) {\n return true;\n }\n return false;\n },\n\n showClassifiers: function() {\n if (this.getProductName().includes(\"s4l\")) {\n return false;\n }\n return true;\n },\n\n showS4LStore: function() {\n const licensesEnabled = osparc.store.StaticInfo.getInstance().areLicensesEnabled();\n return this.isS4LProduct() && licensesEnabled;\n },\n\n getIconUrl: function(asset = \"Default.png\") {\n const base = \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/icons\"\n let url;\n switch (osparc.product.Utils.getProductName()) {\n case \"osparc\":\n url = `${base}/osparc/${asset}`;\n break;\n case \"tis\":\n case \"tiplite\":\n url = `${base}/tip/${asset}`;\n break;\n default:\n url = `${base}/s4l/${asset}`;\n break;\n }\n return url;\n },\n\n getThumbnailUrl: function(asset = \"Default.png\") {\n const base = \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails\"\n let url;\n switch (osparc.product.Utils.getProductName()) {\n case \"osparc\":\n url = `${base}/oSparc/${asset}`;\n break;\n case \"tis\":\n case \"tiplite\":\n url = `${base}/TIP/${asset}`;\n break;\n default:\n url = `${base}/S4L/${asset}`;\n break;\n }\n return url;\n },\n\n getBackgroundUrl: function(asset = \"Thumbnail-01.png\") {\n const base = \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/background-images\"\n let url;\n switch (osparc.product.Utils.getProductName()) {\n case \"osparc\":\n url = `${base}/oSparc/${asset}`;\n break;\n case \"tis\":\n case \"tiplite\":\n url = `${base}/TIP/${asset}`;\n break;\n default:\n url = `${base}/S4L/${asset}`;\n break;\n }\n return url;\n },\n\n hasNewPlusButton: function() {\n return Boolean(osparc.store.Products.getInstance().getPlusButtonUiConfig());\n },\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Andreas Ecker (ecker)\n\n************************************************************************ */\n\n/**\n * Manager for color themes\n */\nqx.Class.define(\"qx.theme.manager.Color\",\n{\n type : \"singleton\",\n extend : qx.util.ValueManager,\n\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n /** the currently selected color theme */\n theme :\n {\n check : \"Theme\",\n nullable : true,\n apply : \"_applyTheme\",\n event : \"changeTheme\"\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n\n _applyTheme : function(value)\n {\n var dest = {};\n\n if (value) {\n var colors = value.colors;\n\n for (var name in colors) {\n dest[name] = this.__parseColor(colors, name);\n }\n }\n\n this._setDynamic(dest);\n },\n\n\n /**\n * Helper to take a color stored in the theme and returns the string color value.\n * In most of the times that means it just returns the string stored in the theme.\n * It additionally checks if its a valid color at all.\n *\n * @param colors {Map} The map of color definitions.\n * @param name {String} The name of the color to check.\n * @return {String} The resolved color as string.\n */\n __parseColor : function(colors, name) {\n var color = colors[name];\n if (typeof color === \"string\") {\n if (!qx.util.ColorUtil.isCssString(color)) {\n // check for references to in theme colors\n if (colors[color] != undefined) {\n return this.__parseColor(colors, color);\n }\n throw new Error(\"Could not parse color: \" + color);\n }\n return color;\n\n } else if (color instanceof Array) {\n return qx.util.ColorUtil.rgbToRgbString(color);\n }\n\n throw new Error(\"Could not parse color: \" + color);\n },\n\n\n /**\n * Returns the dynamically interpreted result for the incoming value,\n * (if available), otherwise returns the original value\n * @param value {String} Value to resolve\n * @return {var} either returns the (translated) result of the incoming\n * value or the value itself\n */\n resolve : function(value)\n {\n var cache = this._dynamic;\n var resolved = cache[value];\n\n if (resolved)\n {\n return resolved;\n }\n\n // If the font instance is not yet cached create a new one to return\n // This is true whenever a runtime include occurred (using \"qx.Theme.include\"\n // or \"qx.Theme.patch\"), since these methods only merging the keys of\n // the theme and are not updating the cache\n var theme = this.getTheme();\n if (theme !== null && theme.colors[value])\n {\n return cache[value] = theme.colors[value];\n }\n\n return value;\n },\n\n\n /**\n * Whether a value is interpreted dynamically\n *\n * @param value {String} dynamically interpreted identifier\n * @return {Boolean} returns true if the value is interpreted dynamically\n */\n isDynamic : function(value) {\n var cache = this._dynamic;\n\n if (value && (cache[value] !== undefined))\n {\n return true;\n }\n\n // If the font instance is not yet cached create a new one to return\n // This is true whenever a runtime include occurred (using \"qx.Theme.include\"\n // or \"qx.Theme.patch\"), since these methods only merging the keys of\n // the theme and are not updating the cache\n var theme = this.getTheme();\n if (theme !== null && value && (theme.colors[value] !== undefined))\n {\n cache[value] = theme.colors[value];\n return true;\n }\n\n return false;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.store.StaticInfo\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n members: {\n getValue: function(key) {\n const statics = osparc.store.Store.getInstance().get(\"statics\");\n if (key in statics) {\n return statics[key];\n }\n const errorMsg = `${key} not found in statics`;\n console.warn(errorMsg);\n return null;\n },\n\n getPlatformName: function() {\n const staticKey = \"stackName\";\n const stackName = this.getValue(staticKey);\n let platformName = \"dev\";\n if (stackName.includes(\"master\")) {\n platformName = \"master\";\n } else if (stackName.includes(\"staging\")) {\n platformName = \"staging\";\n } else if (stackName.includes(\"production\")) {\n platformName = \"\";\n }\n return platformName;\n },\n\n getDisplayName: function() {\n const staticKey = \"displayName\";\n return this.getValue(staticKey);\n },\n\n getReleaseData: function() {\n const rTag = this.getValue(\"vcsReleaseTag\");\n const rUrl = this.getValue(\"vcsReleaseUrl\");\n return {\n \"tag\": rTag,\n \"url\": rUrl\n };\n },\n\n\n getMaxNumberDyNodes: function() {\n const staticKey = \"webserverProjects\";\n const wsStaticData = this.getValue(staticKey);\n const key = \"PROJECTS_MAX_NUM_RUNNING_DYNAMIC_NODES\";\n if (key in wsStaticData) {\n return wsStaticData[key];\n }\n return null;\n },\n\n areLicensesEnabled: function() {\n const isDisabled = osparc.utils.DisabledPlugins.isLicensesDisabled();\n return !isDisabled;\n },\n\n getTrashRetentionDays: function() {\n const staticKey = \"webserverTrash\";\n const wsStaticData = this.getValue(staticKey);\n const key = \"TRASH_RETENTION_DAYS\";\n if (key in wsStaticData) {\n return wsStaticData[key];\n }\n return \"unknown\";\n },\n\n getAccountDeletionRetentionDays: function() {\n const staticKey = \"webserverLogin\";\n const wsStaticData = this.getValue(staticKey);\n const key = \"LOGIN_ACCOUNT_DELETION_RETENTION_DAYS\";\n if (key in wsStaticData) {\n return wsStaticData[key];\n }\n return 30;\n },\n\n is2FARequired: function() {\n const staticKey = \"webserverLogin\";\n const wsStaticData = this.getValue(staticKey);\n const key = \"LOGIN_2FA_REQUIRED\";\n if (key in wsStaticData) {\n return wsStaticData[key];\n }\n return false;\n },\n\n getCountries: function() {\n const staticKey = \"countries\";\n const metadata = this.getValue(staticKey);\n return metadata ? metadata : [];\n },\n\n /**\n * @returns {Number} Cookie expiration time in seconds\n */\n getCookieMaxAge: function() {\n const staticKey = \"webserverSession\";\n const wsStaticData = this.getValue(staticKey);\n const key = \"SESSION_COOKIE_MAX_AGE\";\n if (key in wsStaticData) {\n return wsStaticData[key];\n }\n return null;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.NewRelease\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this.__buildLayout();\n },\n\n statics: {\n /**\n * Compare the version logged in the cache with the one being shown\n */\n firstTimeISeeThisFrontend: function() {\n let isIt = false;\n const lastUICommit = osparc.utils.Utils.localCache.getLastCommitVcsRefUI();\n const thisUICommit = osparc.utils.LibVersions.getVcsRefUI();\n if (lastUICommit && thisUICommit) {\n isIt = lastUICommit !== thisUICommit;\n }\n osparc.utils.Utils.localCache.setLastCommitVcsRefUI(thisUICommit);\n return isIt;\n },\n\n /**\n * Compare the latest version provided by the backend with the one loaded in the browser (might be an old cached one)\n */\n isMyFrontendOld: function() {\n return new Promise((resolve, reject) => {\n osparc.store.AppSummary.getLatestUIFromBE()\n .then(lastUICommit => {\n const thisUICommit = osparc.utils.LibVersions.getVcsRefUI();\n if (lastUICommit && thisUICommit) {\n resolve(lastUICommit !== thisUICommit)\n } else {\n reject();\n }\n })\n .catch(() => reject());\n });\n }\n },\n\n members: {\n __buildLayout: function() {\n const introText = qx.locale.Manager.tr(\"We are pleased to announce that some new features were deployed for you!\");\n const introLabel = new qx.ui.basic.Label(introText).set({\n font: \"text-14\",\n rich: true,\n wrap: true\n });\n this._add(introLabel);\n\n const releaseTag = osparc.utils.Utils.getReleaseTag();\n const releaseLink = osparc.utils.Utils.getReleaseLink();\n const linkLabel = new osparc.ui.basic.LinkLabel().set({\n value: this.tr(\"What's new in \") + releaseTag,\n url: releaseLink,\n font: \"link-label-14\"\n });\n this._add(linkLabel);\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Fabian Jakobs (fjakobs)\n\n************************************************************************ */\n\n/**\n * A vertical box layout.\n *\n * The vertical box layout lays out widgets in a vertical column, from top\n * to bottom.\n *\n * *Features*\n *\n * * Minimum and maximum dimensions\n * * Prioritized growing/shrinking (flex)\n * * Margins (with vertical collapsing)\n * * Auto sizing (ignoring percent values)\n * * Percent heights (not relevant for size hint)\n * * Alignment (child property {@link qx.ui.core.LayoutItem#alignY} is ignored)\n * * Vertical spacing (collapsed with margins)\n * * Reversed children layout (from last to first)\n * * Horizontal children stretching (respecting size hints)\n *\n * *Item Properties*\n *\n *
\n * var layout = new qx.ui.layout.VBox();\n * layout.setSpacing(4); // apply spacing\n *\n * var container = new qx.ui.container.Composite(layout);\n *\n * container.add(new qx.ui.core.Widget());\n * container.add(new qx.ui.core.Widget());\n * container.add(new qx.ui.core.Widget());\n *\n *\n * *External Documentation*\n *\n * See extended documentation\n * and links to demos for this layout.\n *\n */\nqx.Class.define(\"qx.ui.layout.VBox\",\n{\n extend : qx.ui.layout.Abstract,\n\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param spacing {Integer?0} The spacing between child widgets {@link #spacing}.\n * @param alignY {String?\"top\"} Vertical alignment of the whole children\n * block {@link #alignY}.\n * @param separator {String|qx.ui.decoration.IDecorator?} A separator to be rendered between the items\n */\n construct : function(spacing, alignY, separator)\n {\n this.base(arguments);\n\n if (spacing) {\n this.setSpacing(spacing);\n }\n\n if (alignY) {\n this.setAlignY(alignY);\n }\n\n if (separator) {\n this.setSeparator(separator);\n }\n },\n\n\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n /**\n * Vertical alignment of the whole children block. The vertical\n * alignment of the child is completely ignored in VBoxes (\n * {@link qx.ui.core.LayoutItem#alignY}).\n */\n alignY :\n {\n check : [ \"top\", \"middle\", \"bottom\" ],\n init : \"top\",\n apply : \"_applyLayoutChange\"\n },\n\n\n /**\n * Horizontal alignment of each child. Can be overridden through\n * {@link qx.ui.core.LayoutItem#alignX}.\n */\n alignX :\n {\n check : [ \"left\", \"center\", \"right\" ],\n init : \"left\",\n apply : \"_applyLayoutChange\"\n },\n\n\n /** Vertical spacing between two children */\n spacing :\n {\n check : \"Integer\",\n init : 0,\n apply : \"_applyLayoutChange\"\n },\n\n\n /** Separator lines to use between the objects */\n separator :\n {\n check : \"Decorator\",\n nullable : true,\n apply : \"_applyLayoutChange\"\n },\n\n\n /** Whether the actual children list should be laid out in reversed order. */\n reversed :\n {\n check : \"Boolean\",\n init : false,\n apply : \"_applyReversed\"\n }\n },\n\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n __heights : null,\n __flexs : null,\n __enableFlex : null,\n __children : null,\n\n\n /*\n ---------------------------------------------------------------------------\n HELPER METHODS\n ---------------------------------------------------------------------------\n */\n\n // property apply\n _applyReversed : function()\n {\n // easiest way is to invalidate the cache\n this._invalidChildrenCache = true;\n\n // call normal layout change\n this._applyLayoutChange();\n },\n\n\n /**\n * Rebuilds caches for flex and percent layout properties\n */\n __rebuildCache : function()\n {\n var children = this._getLayoutChildren();\n var length = children.length;\n var enableFlex = false;\n var reuse = this.__heights && this.__heights.length != length && this.__flexs && this.__heights;\n var props;\n\n // Sparse array (keep old one if lengths has not been modified)\n var heights = reuse ? this.__heights : new Array(length);\n var flexs = reuse ? this.__flexs : new Array(length);\n\n // Reverse support\n if (this.getReversed()) {\n children = children.concat().reverse();\n }\n\n // Loop through children to preparse values\n for (var i=0; i
true
, if the item could be removed.\n */\n remove : function(item) {\n for (var i = 0; i < this.__groups.length; i++) {\n var group = this.__groups[i];\n for (var j = 0; j < group.items.length; j++) {\n var storedItem = group.items[j];\n if (storedItem === item) {\n // remove all stored data\n group.items.splice(j, 1);\n group.labels.splice(j, 1);\n group.names.splice(j, 1);\n group.options.splice(j, 1);\n\n // remove the item to the validation manager\n this._validationManager.remove(item);\n // remove the item to the reset manager\n this._resetter.remove(item);\n\n // fire the change event\n this.fireEvent(\"change\");\n return true;\n }\n }\n }\n return false;\n },\n\n\n /**\n * Removes the given group header from the form. All items in the group will be moved to\n * another group (usually the previous group). If there is more than one group with\n * the same title, only the first group will be removed.\n *\n * @param title {String} The title.\n * @return {Boolean} true
, if the header could be removed.\n */\n removeGroupHeader : function(title) {\n for (var i = 0; i < this.__groups.length; i++) {\n var group = this.__groups[i];\n if (group.title === title) {\n var targetGroup;\n\n // if it's the first group\n if (i == 0) {\n // if it's the only group\n if (this.__groups.length == 1) {\n // remove the title and the header options\n group.title = null;\n group.headerOptions = {};\n // fire the change event\n this.fireEvent(\"change\");\n return true;\n } else {\n // add to the next\n targetGroup = this.__groups[i+1];\n }\n } else {\n // add to the previous group\n targetGroup = this.__groups[i-1];\n }\n\n // copy the data over\n targetGroup.items = targetGroup.items.concat(group.items);\n targetGroup.labels = targetGroup.labels.concat(group.labels);\n targetGroup.names = targetGroup.names.concat(group.names);\n targetGroup.options = targetGroup.options.concat(group.options);\n\n // delete the group\n this.__groups.splice(i, 1);\n\n this._groupCounter--;\n\n // fire the change event\n this.fireEvent(\"change\");\n return true;\n }\n }\n return false;\n },\n\n\n /**\n * Removes the given button from the form.\n *\n * @param button {qx.ui.form.Button} The button to remove.\n * @return {Boolean} true
, if the button could be removed.\n */\n removeButton : function(button) {\n for (var i = 0; i < this._buttons.length; i++) {\n var storedButton = this._buttons[i];\n if (storedButton === button) {\n this._buttons.splice(i, 1);\n this._buttonOptions.splice(i, 1);\n // fire the change event\n this.fireEvent(\"change\");\n return true;\n }\n }\n return false;\n },\n\n\n /**\n * Returns all added items as a map.\n *\n * @return {Map} A map containing for every item an entry with its name.\n */\n getItems : function() {\n var items = {};\n // go threw all groups\n for (var i = 0; i < this.__groups.length; i++) {\n var group = this.__groups[i];\n // get all items\n for (var j = 0; j < group.names.length; j++) {\n var name = group.names[j];\n items[name] = group.items[j];\n }\n }\n return items;\n },\n\n\n /**\n * Return an item by name.\n *\n * @param name {string} Item name.\n * @return {qx.ui.form.IForm|null} The form item or null.\n */\n getItem : function(name) {\n for (var i = 0; i < this.__groups.length; i++) {\n var group = this.__groups[i];\n for (var j = 0; j < group.names.length; j++) {\n if (group.names[j] === name) {\n return group.items[j];\n }\n }\n }\n\n return null;\n },\n\n\n /*\n ---------------------------------------------------------------------------\n RESET SUPPORT\n ---------------------------------------------------------------------------\n */\n\n /**\n * Resets the form. This means reseting all form items and the validation.\n */\n reset : function() {\n this._resetter.reset();\n this._validationManager.reset();\n },\n\n\n /**\n * Redefines the values used for resetting. It calls\n * {@link qx.ui.form.Resetter#redefine} to get that.\n */\n redefineResetter : function() {\n this._resetter.redefine();\n },\n\n\n /**\n * Redefines the value used for resetting of the given item. It calls\n * {@link qx.ui.form.Resetter#redefineItem} to get that.\n *\n * @param item {qx.ui.core.Widget} The item to redefine.\n */\n redefineResetterItem : function(item) {\n this._resetter.redefineItem(item);\n },\n\n\n\n /*\n ---------------------------------------------------------------------------\n VALIDATION\n ---------------------------------------------------------------------------\n */\n\n /**\n * Validates the form using the\n * {@link qx.ui.form.validation.Manager#validate} method.\n *\n * @return {Boolean | null} The validation result.\n */\n validate : function() {\n return this._validationManager.validate();\n },\n\n\n /**\n * Returns the internally used validation manager. If you want to do some\n * enhanced validation tasks, you need to use the validation manager.\n *\n * @return {qx.ui.form.validation.Manager} The used manager.\n */\n getValidationManager : function() {\n return this._validationManager;\n },\n\n\n /*\n ---------------------------------------------------------------------------\n RENDERER SUPPORT\n ---------------------------------------------------------------------------\n */\n\n /**\n * Accessor method for the renderer which returns all added items in a\n * array containing a map of all items:\n * {title: title, items: [], labels: [], names: []}\n *\n * @return {Array} An array containing all necessary data for the renderer.\n * @internal\n */\n getGroups : function() {\n return this.__groups;\n },\n\n\n /**\n * Accessor method for the renderer which returns all added buttons in an\n * array.\n * @return {Array} An array containing all added buttons.\n * @internal\n */\n getButtons : function() {\n return this._buttons;\n },\n\n\n /**\n * Accessor method for the renderer which returns all added options for\n * the buttons in an array.\n * @return {Array} An array containing all added options for the buttons.\n * @internal\n */\n getButtonOptions : function() {\n return this._buttonOptions;\n },\n\n\n\n /*\n ---------------------------------------------------------------------------\n INTERNAL\n ---------------------------------------------------------------------------\n */\n\n /**\n * Creates and returns the used validation manager.\n *\n * @return {qx.ui.form.validation.Manager} The validation manager.\n */\n _createValidationManager : function() {\n return new qx.ui.form.validation.Manager();\n },\n\n\n /**\n * Creates and returns the used resetter.\n *\n * @return {qx.ui.form.Resetter} the resetter class.\n */\n _createResetter : function() {\n return new qx.ui.form.Resetter();\n }\n },\n\n\n /*\n *****************************************************************************\n DESTRUCTOR\n *****************************************************************************\n */\n destruct : function()\n {\n // holding references to widgets --> must set to null\n this.__groups = this._buttons = this._buttonOptions = null;\n this._validationManager.dispose();\n this._resetter.dispose();\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.auth.LoginPageSplit\", {\n extend: qx.ui.core.Widget,\n type: \"abstract\",\n\n construct: function() {\n this.base(arguments);\n\n const layout = new qx.ui.layout.HBox();\n this._setLayout(layout);\n\n const loginPage = this.__loginPage = new osparc.auth.LoginWithDecorators();\n loginPage.addListener(\"done\", e => this.fireDataEvent(\"done\", e.getData()));\n\n this.__rebuildLayout();\n\n setTimeout(() => this.__resized(), 100);\n window.addEventListener(\"resize\", () => this.__resized());\n },\n\n properties: {\n compactVersion: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n event: \"changeCompactVersion\",\n apply: \"__rebuildLayout\"\n }\n },\n\n events: {\n \"done\": \"qx.event.type.Data\",\n },\n\n statics: {\n COMPACT_WIDTH_BREAKPOINT: 2*(osparc.auth.core.BaseAuthPage.FORM_WIDTH + 50),\n COMPACT_HEIGHT_BREAKPOINT: osparc.WindowSizeTracker.HEIGHT_BREAKPOINT * 1.1,\n },\n\n members: {\n __loginPage: null,\n\n _getBackgroundImage: function() {\n throw new Error(\"Abstract method called!\");\n },\n\n __resized: function() {\n const width = document.documentElement.clientWidth;\n const height = document.documentElement.clientHeight;\n this.setCompactVersion(\n (width < this.self().COMPACT_WIDTH_BREAKPOINT) ||\n (height < this.self().COMPACT_HEIGHT_BREAKPOINT)\n );\n },\n\n __rebuildLayout: function() {\n this._removeAll();\n\n const loginPage = this.__loginPage;\n const container = new qx.ui.container.Scroll();\n container.add(loginPage);\n const spacers = [\n loginPage.getChildControl(\"top-spacer\"),\n loginPage.getChildControl(\"bottom-spacer\"),\n ];\n const hideableItems = loginPage.getChildControl(\"login-view\").getHideableItems();\n if (this.isCompactVersion()) {\n // no split-image\n // just the login widget\n this.__resetBackgroundImage();\n this._add(container, {\n flex: 1\n });\n spacers.forEach(spacer => spacer.setMinHeight(0));\n hideableItems.forEach(hideableItem => hideableItem.exclude());\n } else {\n // split-image on the left\n // the login widget on the right\n this.___setBackgroundImage();\n this._add(new qx.ui.core.Spacer(), {\n width: \"50%\"\n });\n this._add(container, {\n width: \"50%\"\n });\n spacers.forEach(spacer => spacer.setMinHeight(50));\n hideableItems.forEach(hideableItem => hideableItem.show());\n }\n },\n\n __setBackgroundImage: function(backgroundImage) {\n if (osparc.product.Utils.getProductName().includes(\"s4l\")) {\n this.getContentElement().setStyles({\n \"background-image\": backgroundImage,\n \"background-repeat\": \"no-repeat\",\n \"background-size\": \"65% auto, 80% auto\", // auto width, 85% height\n \"background-position\": \"left bottom, left -440px bottom -230px\" // left bottom\n });\n } else {\n this.getContentElement().setStyles({\n \"background-image\": backgroundImage,\n \"background-repeat\": \"no-repeat\",\n \"background-size\": \"50% auto\", // 50% of the view width\n \"background-position\": \"left 10% center\" // left bottom\n });\n }\n },\n\n __resetBackgroundImage: function() {\n this.getContentElement().setStyles({\n \"background-image\": \"\"\n });\n },\n\n ___setBackgroundImage: function() {\n const backgroundImage = this._getBackgroundImage();\n this.__setBackgroundImage(backgroundImage);\n },\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Fabian Jakobs (fjakobs)\n\n************************************************************************ */\n\n/**\n * A horizontal box layout.\n *\n * The horizontal box layout lays out widgets in a horizontal row, from left\n * to right.\n *\n * *Features*\n *\n * * Minimum and maximum dimensions\n * * Prioritized growing/shrinking (flex)\n * * Margins (with horizontal collapsing)\n * * Auto sizing (ignoring percent values)\n * * Percent widths (not relevant for size hint)\n * * Alignment (child property {@link qx.ui.core.LayoutItem#alignX} is ignored)\n * * Horizontal spacing (collapsed with margins)\n * * Reversed children layout (from last to first)\n * * Vertical children stretching (respecting size hints)\n *\n * *Item Properties*\n *\n * \n * var layout = new qx.ui.layout.HBox();\n * layout.setSpacing(4); // apply spacing\n *\n * var container = new qx.ui.container.Composite(layout);\n *\n * container.add(new qx.ui.core.Widget());\n * container.add(new qx.ui.core.Widget());\n * container.add(new qx.ui.core.Widget());\n *\n *\n * *External Documentation*\n *\n * See extended documentation\n * and links to demos for this layout.\n *\n */\nqx.Class.define(\"qx.ui.layout.HBox\",\n{\n extend : qx.ui.layout.Abstract,\n\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param spacing {Integer?0} The spacing between child widgets {@link #spacing}.\n * @param alignX {String?\"left\"} Horizontal alignment of the whole children\n * block {@link #alignX}.\n * @param separator {String|qx.ui.decoration.IDecorator?} A separator to render between the items\n */\n construct : function(spacing, alignX, separator)\n {\n this.base(arguments);\n\n if (spacing) {\n this.setSpacing(spacing);\n }\n\n if (alignX) {\n this.setAlignX(alignX);\n }\n\n if (separator) {\n this.setSeparator(separator);\n }\n },\n\n\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n /**\n * Horizontal alignment of the whole children block. The horizontal\n * alignment of the child is completely ignored in HBoxes (\n * {@link qx.ui.core.LayoutItem#alignX}).\n */\n alignX :\n {\n check : [ \"left\", \"center\", \"right\" ],\n init : \"left\",\n apply : \"_applyLayoutChange\"\n },\n\n\n /**\n * Vertical alignment of each child. Can be overridden through\n * {@link qx.ui.core.LayoutItem#alignY}.\n */\n alignY :\n {\n check : [ \"top\", \"middle\", \"bottom\" ],\n init : \"top\",\n apply : \"_applyLayoutChange\"\n },\n\n\n /** Horizontal spacing between two children */\n spacing :\n {\n check : \"Integer\",\n init : 0,\n apply : \"_applyLayoutChange\"\n },\n\n\n /** Separator lines to use between the objects */\n separator :\n {\n check : \"Decorator\",\n nullable : true,\n apply : \"_applyLayoutChange\"\n },\n\n\n /** Whether the actual children list should be laid out in reversed order. */\n reversed :\n {\n check : \"Boolean\",\n init : false,\n apply : \"_applyReversed\"\n }\n },\n\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n __widths : null,\n __flexs : null,\n __enableFlex : null,\n __children : null,\n\n /*\n ---------------------------------------------------------------------------\n HELPER METHODS\n ---------------------------------------------------------------------------\n */\n\n // property apply\n _applyReversed : function()\n {\n // easiest way is to invalidate the cache\n this._invalidChildrenCache = true;\n\n // call normal layout change\n this._applyLayoutChange();\n },\n\n\n /**\n * Rebuilds caches for flex and percent layout properties\n */\n __rebuildCache : function()\n {\n var children = this._getLayoutChildren();\n var length = children.length;\n var enableFlex = false;\n var reuse = this.__widths && this.__widths.length != length && this.__flexs && this.__widths;\n var props;\n\n // Sparse array (keep old one if lengths has not been modified)\n var widths = reuse ? this.__widths : new Array(length);\n var flexs = reuse ? this.__flexs : new Array(length);\n\n // Reverse support\n if (this.getReversed()) {\n children = children.concat().reverse();\n }\n\n // Loop through children to preparse values\n for (var i=0; i
\n * const params = {\n * url: { // Params for the URL\n * studyId\n * },\n * data: { // Payload\n * studyData\n * }\n * }\n * osparc.data.Resources.fetch(\"studies\", \"getOne\", params)\n * .then(study => {\n * // study contains the new updated study\n * // This code will execute if the call succeeds\n * })\n * .catch(err => {\n * // Treat the error. This will execute if the call fails.\n * });\n *\n *\n * Keep in mind that in order for this to work, the resource has to be defined in the static property resources:\n *
\n * statics.resources = {\n * studies: {\n * useCache: true, // Decide if the resources in the response have to be cached to avoid future calls\n * endpoints: {\n * // Define here all possible operations on this resource\n * post: { // Second parameter of of fetch, endpoint name. The used method (post) should be contained in this name.\n * method: \"POST\", // HTTP REST operation\n * url: statics.API + \"/projects/{studyId}\" // Defined in params under the 'url' property\n * }\n * }\n * }\n * }\n *\n *\n * For just getting the resources without modifying them in the server, we use the dedicated methods 'get' and 'getOne'.\n * They will try to get them from the cache if they exist there. If not, they will issue the call to get them from the server.\n */\n\nqx.Class.define(\"osparc.data.Resources\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n defer: function(statics) {\n /*\n * Define here all resources and their endpoints.\n */\n statics.resources = {\n /*\n * CONFIG\n */\n \"config\": {\n useCache: true,\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/config\"\n }\n }\n },\n\n /*\n * STATICS\n * Gets the json file containing some runtime server variables.\n */\n \"statics\": {\n useCache: true,\n endpoints: {\n get: {\n method: \"GET\",\n url: \"/static-frontend-data.json\",\n isJsonFile: true\n }\n }\n },\n\n /*\n * APP SUMMARY\n * Gets the json file built by the qx compiler with some extra env variables\n * added by oSPARC as compilation vars\n */\n \"appSummary\": {\n useCache: false,\n endpoints: {\n get: {\n method: \"GET\",\n url: \"/{productName}/app-summary.json\",\n isJsonFile: true\n }\n }\n },\n\n /*\n * STUDIES\n */\n \"studies\": {\n useCache: true,\n idField: \"uuid\",\n deleteId: \"studyId\",\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/projects?type=user\"\n },\n getOne: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/projects/{studyId}\"\n },\n getActive: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/projects/active?client_session_id={tabId}\"\n },\n getPage: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/projects?type=user&offset={offset}&limit={limit}&workspace_id={workspaceId}&folder_id={folderId}&order_by={orderBy}\"\n },\n getPageSearch: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/projects:search?offset={offset}&limit={limit}&text={text}&tag_ids={tagIds}&order_by={orderBy}\"\n },\n getPageTrashed: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/projects:search?filters={%22trashed%22:%22true%22}&offset={offset}&limit={limit}&order_by={orderBy}\"\n },\n postToTemplate: {\n method: \"POST\",\n url: statics.API + \"/projects?from_study={study_id}&as_template=true©_data={copy_data}\"\n },\n open: {\n method: \"POST\",\n url: statics.API + \"/projects/{studyId}:open\"\n },\n getWallet: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/projects/{studyId}/wallet\"\n },\n selectWallet: {\n method: \"PUT\",\n url: statics.API + \"/projects/{studyId}/wallet/{walletId}\"\n },\n payDebt: {\n method: \"POST\",\n url: statics.API + \"/projects/{studyId}/wallet/{walletId}:pay-debt\"\n },\n openDisableAutoStart: {\n method: \"POST\",\n url: statics.API + \"/projects/{studyId}:open?disable_service_auto_start={disableServiceAutoStart}\"\n },\n close: {\n method: \"POST\",\n url: statics.API + \"/projects/{studyId}:close\"\n },\n duplicate: {\n method: \"POST\",\n // url: statics.API + \"/projects/{studyId}:duplicate\"\n // supports copy_data\n url: statics.API + \"/projects?from_study={studyId}\"\n },\n state: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/projects/{studyId}/state\"\n },\n postNewStudy: {\n method: \"POST\",\n url: statics.API + \"/projects\"\n },\n postNewStudyFromTemplate: {\n method: \"POST\",\n url: statics.API + \"/projects?from_study={templateId}\"\n },\n patch: {\n method: \"PATCH\",\n url: statics.API + \"/projects/{studyId}\"\n },\n trash: {\n method: \"POST\",\n url: statics.API + \"/projects/{studyId}:trash\"\n },\n untrash: {\n method: \"POST\",\n url: statics.API + \"/projects/{studyId}:untrash\"\n },\n delete: {\n method: \"DELETE\",\n url: statics.API + \"/projects/{studyId}\"\n },\n addNode: {\n useCache: false,\n method: \"POST\",\n url: statics.API + \"/projects/{studyId}/nodes\"\n },\n startNode: {\n useCache: false,\n method: \"POST\",\n url: statics.API + \"/projects/{studyId}/nodes/{nodeId}:start\"\n },\n stopNode: {\n useCache: false,\n method: \"POST\",\n url: statics.API + \"/projects/{studyId}/nodes/{nodeId}:stop\"\n },\n getNode: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/projects/{studyId}/nodes/{nodeId}\"\n },\n patchNode: {\n method: \"PATCH\",\n url: statics.API + \"/projects/{studyId}/nodes/{nodeId}\"\n },\n deleteNode: {\n useCache: false,\n method: \"DELETE\",\n url: statics.API + \"/projects/{studyId}/nodes/{nodeId}\"\n },\n getNodeErrors: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/projects/{studyId}/nodes/{nodeId}/errors\"\n },\n getPricingUnit: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/projects/{studyId}/nodes/{nodeId}/pricing-unit\"\n },\n putPricingUnit: {\n method: \"PUT\",\n url: statics.API + \"/projects/{studyId}/nodes/{nodeId}/pricing-plan/{pricingPlanId}/pricing-unit/{pricingUnitId}\"\n },\n checkShareePermissions: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/projects/{studyId}/nodes/-/services:access?for_gid={gid}\"\n },\n postAccessRights: {\n useCache: false,\n method: \"POST\",\n url: statics.API + \"/projects/{studyId}/groups/{gId}\"\n },\n deleteAccessRights: {\n useCache: false,\n method: \"DELETE\",\n url: statics.API + \"/projects/{studyId}/groups/{gId}\"\n },\n putAccessRights: {\n useCache: false,\n method: \"PUT\",\n url: statics.API + \"/projects/{studyId}/groups/{gId}\"\n },\n addTag: {\n useCache: false,\n method: \"POST\",\n url: statics.API + \"/projects/{studyId}/tags/{tagId}:add\"\n },\n removeTag: {\n useCache: false,\n method: \"POST\",\n url: statics.API + \"/projects/{studyId}/tags/{tagId}:remove\"\n },\n getInactivity: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/projects/{studyId}/inactivity\"\n },\n moveToFolder: {\n method: \"PUT\",\n url: statics.API + \"/projects/{studyId}/folders/{folderId}\"\n },\n moveToWorkspace: {\n method: \"POST\",\n url: statics.API + \"/projects/{studyId}/workspaces/{workspaceId}:move\"\n },\n }\n },\n \"studyComments\": {\n useCache: true,\n idField: \"uuid\",\n endpoints: {\n getPage: {\n method: \"GET\",\n url: statics.API + \"/projects/{studyId}/comments?offset={offset}&limit={limit}\"\n },\n addComment: {\n method: \"POST\",\n url: statics.API + \"/projects/{studyId}/comments\"\n }\n }\n },\n \"folders\": {\n useCache: true,\n idField: \"uuid\",\n endpoints: {\n getPage: {\n method: \"GET\",\n url: statics.API + \"/folders?workspace_id={workspaceId}&folder_id={folderId}&offset={offset}&limit={limit}&order_by={orderBy}\"\n },\n getOne: {\n method: \"GET\",\n url: statics.API + \"/folders/{folderId}\"\n },\n getPageSearch: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/folders:search?offset={offset}&limit={limit}&text={text}&order_by={orderBy}\"\n },\n getPageTrashed: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/folders:search?filters={%22trashed%22:%22true%22}&offset={offset}&limit={limit}&order_by={orderBy}\"\n },\n post: {\n method: \"POST\",\n url: statics.API + \"/folders\"\n },\n update: {\n method: \"PUT\",\n url: statics.API + \"/folders/{folderId}\"\n },\n delete: {\n method: \"DELETE\",\n url: statics.API + \"/folders/{folderId}\"\n },\n moveToWorkspace: {\n method: \"POST\",\n url: statics.API + \"/folders/{folderId}/workspaces/{workspaceId}:move\"\n },\n trash: {\n method: \"POST\",\n url: statics.API + \"/folders/{folderId}:trash\"\n },\n untrash: {\n method: \"POST\",\n url: statics.API + \"/folders/{folderId}:untrash\"\n },\n }\n },\n \"workspaces\": {\n endpoints: {\n getPage: {\n method: \"GET\",\n url: statics.API + \"/workspaces?&offset={offset}&limit={limit}\"\n },\n getOne: {\n method: \"GET\",\n url: statics.API + \"/workspaces/{workspaceId}\"\n },\n getPageSearch: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/workspaces?offset={offset}&limit={limit}&filters={filters}&order_by={orderBy}\"\n },\n getPageTrashed: {\n useCache: false,\n method: \"GET\",\n // url: statics.API + \"/workspaces:search?filters={%22trashed%22:%22true%22}&offset={offset}&limit={limit}&order_by={orderBy}\"\n url: statics.API + \"/workspaces?filters={%22trashed%22:%22true%22}&offset={offset}&limit={limit}&order_by={orderBy}\"\n },\n post: {\n method: \"POST\",\n url: statics.API + \"/workspaces\"\n },\n update: {\n method: \"PUT\",\n url: statics.API + \"/workspaces/{workspaceId}\"\n },\n delete: {\n method: \"DELETE\",\n url: statics.API + \"/workspaces/{workspaceId}\"\n },\n trash: {\n method: \"POST\",\n url: statics.API + \"/workspaces/{workspaceId}:trash\"\n },\n untrash: {\n method: \"POST\",\n url: statics.API + \"/workspaces/{workspaceId}:untrash\"\n },\n postAccessRights: {\n method: \"POST\",\n url: statics.API + \"/workspaces/{workspaceId}/groups/{groupId}\"\n },\n putAccessRights: {\n method: \"PUT\",\n url: statics.API + \"/workspaces/{workspaceId}/groups/{groupId}\"\n },\n deleteAccessRights: {\n method: \"DELETE\",\n url: statics.API + \"/workspaces/{workspaceId}/groups/{groupId}\"\n },\n }\n },\n \"resourceUsage\": {\n useCache: false,\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/services/-/resource-usages?offset={offset}&limit={limit}&filters={filters}&order_by={orderBy}\"\n },\n getWithWallet: {\n method: \"GET\",\n url: statics.API + \"/services/-/resource-usages?wallet_id={walletId}&offset={offset}&limit={limit}\"\n },\n getWithWalletFiltered: {\n method: \"GET\",\n url: statics.API + \"/services/-/resource-usages?wallet_id={walletId}&offset={offset}&limit={limit}&filters={filters}&order_by={orderBy}\"\n },\n getUsagePerService: {\n method: \"GET\",\n url: statics.API + \"/services/-/aggregated-usages?wallet_id={walletId}&aggregated_by=services&time_period={timePeriod}\"\n }\n }\n },\n /*\n * NODES\n */\n \"nodesInStudyResources\": {\n idField: [\"studyId\", \"nodeId\"],\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/projects/{studyId}/nodes/{nodeId}/resources\"\n },\n put: {\n method: \"PUT\",\n url: statics.API + \"/projects/{studyId}/nodes/{nodeId}/resources\"\n }\n }\n },\n\n /*\n * TRASH\n */\n \"trash\": {\n endpoints: {\n delete: {\n method: \"POST\",\n url: statics.API + \"/trash:empty\"\n }\n }\n },\n\n /*\n * SNAPSHOTS\n */\n \"snapshots\": {\n idField: \"uuid\",\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/repos/projects/{studyId}/checkpoints\"\n },\n getPage: {\n method: \"GET\",\n url: statics.API + \"/repos/projects/{studyId}/checkpoints?offset={offset}&limit={limit}\"\n },\n getOne: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/repos/projects/{studyId}/checkpoints/{snapshotId}\"\n },\n updateSnapshot: {\n method: \"PATCH\",\n url: statics.API + \"/repos/projects/{studyId}/checkpoints/{snapshotId}\"\n },\n currentCommit: {\n method: \"GET\",\n url: statics.API + \"/repos/projects/{studyId}/checkpoints/HEAD\"\n },\n checkout: {\n method: \"POST\",\n url: statics.API + \"/repos/projects/{studyId}/checkpoints/{snapshotId}:checkout\"\n },\n preview: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/repos/projects/{studyId}/checkpoints/{snapshotId}/workbench/view\"\n },\n getParameters: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/repos/projects/{studyId}/checkpoints/{snapshotId}/parameters\"\n },\n takeSnapshot: {\n method: \"POST\",\n url: statics.API + \"/repos/projects/{studyId}/checkpoints\"\n }\n }\n },\n /*\n * ITERATIONS\n */\n \"iterations\": {\n idField: \"uuid\",\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/projects/{studyId}/checkpoint/{snapshotId}/iterations\"\n },\n createIterations: {\n method: \"POST\",\n url: statics.API + \"/projects/{studyId}/checkpoint/{snapshotId}/iterations\"\n }\n }\n },\n /*\n * TEMPLATES (actually studies flagged as templates)\n */\n \"templates\": {\n useCache: true,\n idField: \"uuid\",\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/projects?type=template\"\n },\n getPage: {\n method: \"GET\",\n url: statics.API + \"/projects?type=template&offset={offset}&limit={limit}\"\n }\n }\n },\n /*\n * TASKS\n */\n \"tasks\": {\n useCache: false,\n idField: \"id\",\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/tasks\"\n }\n }\n },\n\n /*\n * SERVICES\n */\n \"services\": {\n useCache: true,\n idField: [\"key\", \"version\"],\n endpoints: {\n pricingPlans: {\n useCache: false,\n method: \"GET\",\n url: statics.API + \"/catalog/services/{key}/{version}/pricing-plan\"\n }\n }\n },\n\n /*\n * SERVICES V2 (web-api >=0.42.0)\n */\n \"servicesV2\": {\n useCache: false, // handled in osparc.store.Services\n idField: [\"key\", \"version\"],\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/catalog/services/-/latest\"\n },\n getPage: {\n method: \"GET\",\n url: statics.API + \"/catalog/services/-/latest?offset={offset}&limit={limit}\"\n },\n getOne: {\n method: \"GET\",\n url: statics.API + \"/catalog/services/{key}/{version}\"\n },\n patch: {\n method: \"PATCH\",\n url: statics.API + \"/catalog/services/{key}/{version}\"\n }\n }\n },\n\n /*\n * PORTS COMPATIBILITY\n */\n \"portsCompatibility\": {\n useCache: false, // It has its own cache handler\n endpoints: {\n matchInputs: {\n // get_compatible_inputs_given_source_output_handler\n method: \"GET\",\n url: statics.API + \"/catalog/services/{serviceKey2}/{serviceVersion2}/inputs:match?fromService={serviceKey1}&fromVersion={serviceVersion1}&fromOutput={portKey1}\"\n },\n matchOutputs: {\n useCache: false,\n // get_compatible_outputs_given_target_input_handler\n method: \"GET\",\n url: statics.API + \"/catalog/services/{serviceKey1}/{serviceVersion1}/outputs:match?fromService={serviceKey2}&fromVersion={serviceVersion2}&fromOutput={portKey2}\"\n }\n }\n },\n\n /*\n * SERVICE RESOURCES\n */\n \"serviceResources\": {\n idField: [\"key\", \"version\"],\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/catalog/services/{key}/{version}/resources\"\n }\n }\n },\n\n /*\n * ADMIN PRICING PLANS\n */\n \"adminPricingPlans\": {\n useCache: false, // handled in osparc.store.Pricing\n endpoints: {\n getPage: {\n method: \"GET\",\n url: statics.API + \"/admin/pricing-plans?offset={offset}&limit={limit}\"\n },\n getOne: {\n method: \"GET\",\n url: statics.API + \"/admin/pricing-plans/{pricingPlanId}\"\n },\n update: {\n method: \"PUT\",\n url: statics.API + \"/admin/pricing-plans/{pricingPlanId}\"\n },\n post: {\n method: \"POST\",\n url: statics.API + \"/admin/pricing-plans\"\n },\n }\n },\n\n /*\n * PRICING PLANS\n */\n \"pricingPlans\": {\n useCache: false, // handled in osparc.store.Pricing\n endpoints: {\n getPage: {\n method: \"GET\",\n url: statics.API + \"/pricing-plans?offset={offset}&limit={limit}\"\n },\n getOne: {\n method: \"GET\",\n url: statics.API + \"/pricing-plans/{pricingPlanId}\"\n },\n }\n },\n\n /*\n * PRICING UNITS\n */\n \"pricingUnits\": {\n useCache: false, // handled in osparc.store.Pricing\n endpoints: {\n getOne: {\n method: \"GET\",\n url: statics.API + \"/admin/pricing-plans/{pricingPlanId}/pricing-units/{pricingUnitId}\"\n },\n update: {\n method: \"PUT\",\n url: statics.API + \"/admin/pricing-plans/{pricingPlanId}/pricing-units/{pricingUnitId}\"\n },\n post: {\n method: \"POST\",\n url: statics.API + \"/admin/pricing-plans/{pricingPlanId}/pricing-units\"\n },\n }\n },\n\n /*\n * BILLABLE SERVICES\n */\n \"billableServices\": {\n useCache: true,\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/admin/pricing-plans/{pricingPlanId}/billable-services\"\n },\n post: {\n method: \"POST\",\n url: statics.API + \"/admin/pricing-plans/{pricingPlanId}/billable-services\"\n },\n }\n },\n\n /*\n * SCHEDULED MAINTENANCE\n * Example: {\"start\": \"2023-01-17T14:45:00.000Z\", \"end\": \"2023-01-17T23:00:00.000Z\", \"reason\": \"Release 1.0.4\"}\n */\n \"maintenance\": {\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/scheduled_maintenance\"\n }\n }\n },\n /*\n * ANNOUNCEMENTS\n */\n \"announcements\": {\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/announcements\"\n }\n }\n },\n /*\n * PROFILE\n */\n \"profile\": {\n useCache: true,\n endpoints: {\n getOne: {\n method: \"GET\",\n url: statics.API + \"/me\"\n },\n patch: {\n method: \"PATCH\",\n url: statics.API + \"/me\"\n },\n }\n },\n /*\n * PREFERENCES\n */\n \"preferences\": {\n endpoints: {\n patch: {\n method: \"PATCH\",\n url: statics.API + \"/me/preferences/{preferenceId}\"\n }\n }\n },\n /*\n * PERMISSIONS\n */\n \"permissions\": {\n useCache: true,\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/me/permissions\"\n }\n }\n },\n /*\n * API-KEYS\n */\n \"apiKeys\": {\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/auth/api-keys\"\n },\n post: {\n method: \"POST\",\n url: statics.API + \"/auth/api-keys\"\n },\n delete: {\n method: \"DELETE\",\n url: statics.API + \"/auth/api-keys/{apiKeyId}\"\n }\n }\n },\n /*\n * TOKENS\n */\n \"tokens\": {\n useCache: true,\n idField: \"service\",\n deleteId: \"service\",\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/me/tokens\"\n },\n post: {\n method: \"POST\",\n url: statics.API + \"/me/tokens\"\n },\n getOne: {\n method: \"GET\",\n url: statics.API + \"/me/tokens/{service}\"\n },\n delete: {\n method: \"DELETE\",\n url: statics.API + \"/me/tokens/{service}\"\n },\n put: {\n method: \"PUT\",\n url: statics.API + \"/me/tokens/{service}\"\n }\n }\n },\n /*\n * NOTIFICATIONS\n */\n \"notifications\": {\n useCache: false,\n idField: \"notification\",\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/me/notifications\"\n },\n post: {\n method: \"POST\",\n url: statics.API + \"/me/notifications\"\n },\n patch: {\n method: \"PATCH\",\n url: statics.API + \"/me/notifications/{notificationId}\"\n }\n }\n },\n /*\n * ORGANIZATIONS\n */\n \"organizations\": {\n useCache: false, // osparc.store.Groups handles the cache\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/groups\"\n },\n post: {\n method: \"POST\",\n url: statics.API + \"/groups\"\n },\n getOne: {\n method: \"GET\",\n url: statics.API + \"/groups/{gid}\"\n },\n delete: {\n method: \"DELETE\",\n url: statics.API + \"/groups/{gid}\"\n },\n patch: {\n method: \"PATCH\",\n url: statics.API + \"/groups/{gid}\"\n }\n }\n },\n /*\n * ORGANIZATION MEMBERS\n */\n \"organizationMembers\": {\n useCache: false, // osparc.store.Groups handles the cache\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/groups/{gid}/users\"\n },\n post: {\n method: \"POST\",\n url: statics.API + \"/groups/{gid}/users\"\n },\n getOne: {\n method: \"GET\",\n url: statics.API + \"/groups/{gid}/users/{uid}\"\n },\n delete: {\n method: \"DELETE\",\n url: statics.API + \"/groups/{gid}/users/{uid}\"\n },\n patch: {\n method: \"PATCH\",\n url: statics.API + \"/groups/{gid}/users/{uid}\"\n }\n }\n },\n /*\n * USERS\n */\n \"users\": {\n useCache: false, // osparc.store.Groups handles the cache\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/groups/{gid}/users\"\n },\n search: {\n method: \"POST\",\n url: statics.API + \"/users:search\"\n }\n }\n },\n /*\n * WALLETS\n */\n \"wallets\": {\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/wallets\"\n },\n post: {\n method: \"POST\",\n url: statics.API + \"/wallets\"\n },\n put: {\n method: \"PUT\",\n url: statics.API + \"/wallets/{walletId}\"\n },\n getAccessRights: {\n method: \"GET\",\n url: statics.API + \"/wallets/{walletId}/groups\"\n },\n putAccessRights: {\n method: \"PUT\",\n url: statics.API + \"/wallets/{walletId}/groups/{groupId}\"\n },\n postAccessRights: {\n method: \"POST\",\n url: statics.API + \"/wallets/{walletId}/groups/{groupId}\"\n },\n deleteAccessRights: {\n method: \"DELETE\",\n url: statics.API + \"/wallets/{walletId}/groups/{groupId}\"\n },\n getAutoRecharge: {\n method: \"GET\",\n url: statics.API + \"/wallets/{walletId}/auto-recharge\"\n },\n putAutoRecharge: {\n method: \"PUT\",\n url: statics.API + \"/wallets/{walletId}/auto-recharge\"\n },\n }\n },\n /*\n * PRODUCTS\n */\n \"creditPrice\": {\n useCache: false,\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/credits-price\"\n }\n }\n },\n \"productMetadata\": {\n useCache: true,\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/products/{productName}\"\n },\n updateEmailTemplate: {\n method: \"PUT\",\n url: statics.API + \"/products/{productName}/templates/{templateId}\"\n },\n getUiConfig: {\n method: \"GET\",\n url: statics.API + \"/products/current/ui\"\n },\n }\n },\n \"invitations\": {\n endpoints: {\n post: {\n method: \"POST\",\n url: statics.API + \"/invitation:generate\"\n }\n }\n },\n \"poUsers\": {\n endpoints: {\n search: {\n method: \"GET\",\n url: statics.API + \"/admin/users:search?email={email}\"\n },\n preRegister: {\n method: \"POST\",\n url: statics.API + \"/admin/users:pre-register\"\n }\n }\n },\n /*\n * PAYMENTS\n */\n \"payments\": {\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/wallets/-/payments?offset={offset}&limit={limit}\"\n },\n startPayment: {\n method: \"POST\",\n url: statics.API + \"/wallets/{walletId}/payments\"\n },\n cancelPayment: {\n method: \"POST\",\n url: statics.API + \"/wallets/{walletId}/payments/{paymentId}:cancel\"\n },\n payWithPaymentMethod: {\n method: \"POST\",\n url: statics.API + \"/wallets/{walletId}/payments-methods/{paymentMethodId}:pay\"\n },\n invoiceLink: {\n method: \"GET\",\n url: statics.API + \"/wallets/{walletId}/payments/{paymentId}/invoice-link\"\n }\n }\n },\n /*\n * PAYMENT METHODS\n */\n \"paymentMethods\": {\n useCache: false,\n endpoints: {\n init: {\n method: \"POST\",\n url: statics.API + \"/wallets/{walletId}/payments-methods:init\"\n },\n cancel: {\n method: \"POST\",\n url: statics.API + \"/wallets/{walletId}/payments-methods/{paymentMethodId}:cancel\"\n },\n get: {\n method: \"GET\",\n url: statics.API + \"/wallets/{walletId}/payments-methods\"\n },\n delete: {\n method: \"DELETE\",\n url: statics.API + \"/wallets/{walletId}/payments-methods/{paymentMethodId}\"\n }\n }\n },\n /*\n * AUTO RECHARGE\n */\n \"autoRecharge\": {\n useCache: false,\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/wallets/{walletId}/auto-recharge\"\n },\n put: {\n method: \"PUT\",\n url: statics.API + \"/wallets/{walletId}/auto-recharge\"\n }\n }\n },\n /*\n * CLASSIFIERS\n * Gets the json object containing sample classifiers\n */\n \"classifiers\": {\n useCache: false,\n idField: \"classifiers\",\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/groups/{gid}/classifiers\"\n },\n postRRID: {\n method: \"POST\",\n url: statics.API + \"/groups/sparc/classifiers/scicrunch-resources/{rrid}\"\n }\n }\n },\n\n /*\n * PASSWORD\n */\n \"password\": {\n useCache: false,\n endpoints: {\n post: {\n method: \"POST\",\n url: statics.API + \"/auth/change-password\"\n }\n }\n },\n /*\n * AUTH\n */\n \"auth\": {\n useCache: false,\n endpoints: {\n postRegister: {\n method: \"POST\",\n url: statics.API + \"/auth/register\"\n },\n postRequestAccount: {\n method: \"POST\",\n url: statics.API + \"/auth/request-account\"\n },\n captcha: {\n method: \"POST\",\n url: statics.API + \"/auth/captcha\"\n },\n checkInvitation: {\n method: \"POST\",\n url: statics.API + \"/auth/register/invitations:check\"\n },\n unregister: {\n method: \"POST\",\n url: statics.API + \"/auth/unregister\"\n },\n verifyPhoneNumber: {\n method: \"POST\",\n url: statics.API + \"/auth/verify-phone-number\"\n },\n validateCodeRegister: {\n method: \"POST\",\n url: statics.API + \"/auth/validate-code-register\"\n },\n resendCode: {\n method: \"POST\",\n url: statics.API + \"/auth/two_factor:resend\"\n },\n postLogin: {\n method: \"POST\",\n url: statics.API + \"/auth/login\"\n },\n validateCodeLogin: {\n method: \"POST\",\n url: statics.API + \"/auth/validate-code-login\"\n },\n postLogout: {\n method: \"POST\",\n url: statics.API + \"/auth/logout\"\n },\n postRequestResetPassword: {\n method: \"POST\",\n url: statics.API + \"/auth/reset-password\"\n },\n postResetPassword: {\n method: \"POST\",\n url: statics.API + \"/auth/reset-password/{code}\"\n },\n changeEmail: {\n method: \"POST\",\n url: statics.API + \"/auth/change-email\"\n },\n }\n },\n /*\n * STORAGE LOCATIONS\n */\n \"storageLocations\": {\n useCache: true,\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/storage/locations\"\n }\n }\n },\n /*\n * STORAGE DATASETS\n */\n \"storageDatasets\": {\n useCache: false,\n endpoints: {\n getByLocation: {\n method: \"GET\",\n url: statics.API + \"/storage/locations/{locationId}/datasets\"\n }\n }\n },\n /*\n * STORAGE FILES\n */\n \"storageFiles\": {\n useCache: false,\n endpoints: {\n getByLocationAndDataset: {\n method: \"GET\",\n url: statics.API + \"/storage/locations/{locationId}/datasets/{datasetId}/metadata\"\n },\n getByNode: {\n method: \"GET\",\n url: statics.API + \"/storage/locations/0/files/metadata?uuid_filter={nodeId}\"\n },\n put: {\n method: \"PUT\",\n url: statics.API + \"/storage/locations/{toLoc}/files/{fileName}?extra_location={fromLoc}&extra_source={fileUuid}\"\n },\n delete: {\n method: \"DELETE\",\n url: statics.API + \"/storage/locations/{locationId}/files/{fileUuid}\"\n }\n }\n },\n /*\n * STORAGE LINK\n */\n \"storageLink\": {\n useCache: false,\n endpoints: {\n getOne: {\n method: \"GET\",\n url: statics.API + \"/storage/locations/{locationId}/files/{fileUuid}\"\n },\n put: {\n method: \"PUT\",\n url: statics.API + \"/storage/locations/{locationId}/files/{fileUuid}?file_size={fileSize}\"\n }\n }\n },\n /*\n * ACTIVITY\n */\n \"activity\": {\n useCache: false,\n endpoints: {\n getOne: {\n method: \"GET\",\n url: statics.API + \"/activity/status\"\n }\n }\n },\n\n /*\n * Test/Diagnostic entrypoint\n */\n \"checkEP\": {\n useCache: false,\n endpoints: {\n postFail: {\n method: \"POST\",\n url: statics.API + \"/check/fail\"\n },\n postEcho: {\n method: \"POST\",\n url: statics.API + \"/check/echo\"\n }\n }\n },\n\n /*\n * TAGS\n */\n \"tags\": {\n useCache: true,\n idField: \"id\",\n deleteId: \"tagId\",\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/tags\"\n },\n post: {\n method: \"POST\",\n url: statics.API + \"/tags\"\n },\n patch: {\n method: \"PATCH\",\n url: statics.API + \"/tags/{tagId}\"\n },\n delete: {\n method: \"DELETE\",\n url: statics.API + \"/tags/{tagId}\"\n },\n getAccessRights: {\n method: \"GET\",\n url: statics.API + \"/tags/{tagId}/groups\"\n },\n putAccessRights: {\n method: \"PUT\",\n url: statics.API + \"/tags/{tagId}/groups/{groupId}\"\n },\n postAccessRights: {\n method: \"POST\",\n url: statics.API + \"/tags/{tagId}/groups/{groupId}\"\n },\n deleteAccessRights: {\n method: \"DELETE\",\n url: statics.API + \"/tags/{tagId}/groups/{groupId}\"\n },\n }\n },\n\n /*\n * LICENSED ITEMS\n */\n \"licensedItems\": {\n useCache: true,\n endpoints: {\n get: {\n method: \"GET\",\n url: statics.API + \"/catalog/licensed-items\"\n },\n getPage: {\n method: \"GET\",\n url: statics.API + \"/catalog/licensed-items?offset={offset}&limit={limit}\"\n },\n purchases: {\n method: \"GET\",\n url: statics.API + \"/wallets/{walletId}/licensed-items-purchases?offset={offset}&limit={limit}\"\n },\n purchase: {\n method: \"POST\",\n url: statics.API + \"/catalog/licensed-items/{licensedItemId}:purchase\"\n },\n checkouts: {\n method: \"GET\",\n url: statics.API + \"/wallets/{walletId}/licensed-items-checkouts?offset={offset}&limit={limit}\"\n },\n }\n }\n };\n },\n\n members: {\n /**\n * @param {String} resource Name of the resource as defined in the static property 'resources'.\n * @param {String} endpoint Name of the endpoint. Several endpoints can be defined for each resource.\n * @param {Object} urlParams Object containing only the parameters for the url of the request.\n */\n replaceUrlParams: function(resource, endpoint, urlParams) {\n const resourceDefinition = this.self().resources[resource];\n const res = new osparc.io.rest.Resource(resourceDefinition.endpoints);\n // Use qooxdoo's Get request configuration\n // eslint-disable-next-line no-underscore-dangle\n const getReqConfig = res._resource._getRequestConfig(endpoint, urlParams);\n return getReqConfig;\n },\n\n /**\n * Method to fetch resources from the server. If configured properly, the resources in the response will be cached in {osparc.store.Store}.\n * @param {String} resource Name of the resource as defined in the static property 'resources'.\n * @param {String} endpoint Name of the endpoint. Several endpoints can be defined for each resource.\n * @param {Object} params Object containing the parameters for the url and for the body of the request, under the properties 'url' and 'data', respectively.\n * @param {Object} options Collections of options (pollTask, resolveWResponse, timeout, timeoutRetries)\n */\n fetch: function(resource, endpoint, params = {}, options = {}) {\n if (params === null) {\n params = {};\n }\n if (options === null) {\n options = {};\n }\n return new Promise((resolve, reject) => {\n if (this.self().resources[resource] == null) {\n reject(Error(`Error while fetching ${resource}: the resource is not defined`));\n }\n\n const resourceDefinition = this.self().resources[resource];\n const res = new osparc.io.rest.Resource(resourceDefinition.endpoints, options.timeout);\n if (!res.includesRoute(endpoint)) {\n reject(Error(`Error while fetching ${resource}: the endpoint is not defined`));\n }\n\n const sendRequest = () => {\n res[endpoint](params.url || null, params.data || null);\n }\n\n const successCB = e => {\n const response = e.getRequest().getResponse();\n const endpointDef = resourceDefinition.endpoints[endpoint];\n const data = endpointDef.isJsonFile ? response : response.data;\n // OM: Temporary solution until the quality object is better defined\n if (data && endpoint.includes(\"get\") && [\"studies\", \"templates\"].includes(resource)) {\n if (Array.isArray(data)) {\n data.forEach(std => {\n osparc.metadata.Quality.attachQualityToObject(std);\n });\n } else {\n osparc.metadata.Quality.attachQualityToObject(data);\n }\n }\n\n const useCache = (\"useCache\" in endpointDef) ? endpointDef.useCache : resourceDefinition.useCache;\n if (useCache) {\n if (endpoint.includes(\"delete\") && resourceDefinition[\"deleteId\"] && resourceDefinition[\"deleteId\"] in params.url) {\n const deleteId = params.url[resourceDefinition[\"deleteId\"]];\n this.__removeCached(resource, deleteId);\n } else if (endpointDef.method === \"POST\" && options.pollTask !== true) {\n this.__addCached(resource, data);\n } else if (endpointDef.method === \"GET\") {\n if (endpoint.includes(\"getPage\")) {\n this.__addCached(resource, data);\n } else {\n this.__setCached(resource, data);\n }\n }\n }\n\n res.dispose();\n\n if (\"resolveWResponse\" in options && options.resolveWResponse) {\n response.params = params;\n resolve(response);\n } else {\n resolve(data);\n }\n };\n\n const errorCB = e => {\n if (e.getPhase() === \"timeout\") {\n if (options.timeout && options.timeoutRetries) {\n options.timeoutRetries--;\n sendRequest();\n return;\n }\n }\n\n let message = null;\n let status = null;\n if (e.getData().error) {\n const errorData = e.getData().error;\n if (errorData.message) {\n message = errorData.message;\n }\n const logs = errorData.logs || null;\n if (message === null && logs && logs.length) {\n message = logs[0].message;\n }\n const errors = errorData.errors || [];\n if (message === null && errors && errors.length) {\n message = errors[0].message;\n }\n status = errorData.status;\n } else {\n const req = e.getRequest();\n message = req.getResponse();\n status = req.getStatus();\n }\n res.dispose();\n\n // If a 401 is received, make a call to the /me endpoint.\n // If the backend responds with yet another 401, assume that the backend logged the user out\n if (status === 401 && resource !== \"profile\" && osparc.auth.Manager.getInstance().isLoggedIn()) {\n console.warn(\"Checking if user is logged in the backend\");\n this.fetch(\"profile\", \"getOne\")\n .catch(err => {\n if (\"status\" in err && err.status === 401) {\n // Unauthorized again, the cookie might have expired.\n // We can assume that all calls after this will respond with 401, so bring the user ot the login page.\n qx.core.Init.getApplication().logout(qx.locale.Manager.tr(\"You were logged out. Your cookie might have expired.\"));\n }\n });\n }\n\n if ([404, 503].includes(status)) {\n message += \"
\n * var description = {\n * \"get\": { method: \"GET\", url: \"/photo/{id}\" },\n * \"put\": { method: \"PUT\", url: \"/photo/{id}\"},\n * \"post\": { method: \"POST\", url: \"/photos/\"}\n * };\n * var photo = new qx.io.rest.Resource(description);\n * // Can also be written: photo.invoke(\"get\", {id: 1});\n * photo.get({id: 1});\n *\n * // Additionally sets request data (provide it as string or set the content type)\n * // In a RESTful environment this creates a new resource with the given 'id'\n * photo.configureRequest(function(req) {\n * req.setRequestHeader(\"Content-Type\", \"application/json\");\n * });\n * photo.put({id: 1}, {title: \"Monkey\"});\n *\n * // Additionally sets request data (provide it as string or set the content type)\n * // In a RESTful environment this adds a new resource to the resource collection 'photos'\n * photo.configureRequest(function(req) {\n * req.setRequestHeader(\"Content-Type\", \"application/json\");\n * });\n * photo.post(null, {title: \"Monkey\"});\n *\n *\n * To check for existence of URL parameters or constrain them to a certain format, you\n * can add a
check
property to the description. See {@link #map} for details.\n *\n * \n * var description = {\n * \"get\": { method: \"GET\", url: \"/photo/{id}\", check: { id: /\\d+/ } }\n * };\n * var photo = new qx.io.rest.Resource(description);\n * // photo.get({id: \"FAIL\"});\n * // -- Error: \"Parameter 'id' is invalid\"\n *\n *\n * If your description happens to use the same action more than once, consider\n * defining another resource.\n *\n *
\n * var description = {\n * \"get\": { method: \"GET\", url: \"/photos\"},\n * };\n * // Distinguish \"photo\" (singular) and \"photos\" (plural) resource\n * var photos = new qx.io.rest.Resource(description);\n * photos.get();\n *\n *\n * Basically, all routes of a resource should point to the same URL (resource in\n * terms of HTTP). One acceptable exception of this constraint are resources where\n * required parameters are part of the URL (
/photos/1/
) or filter\n * resources. For instance:\n *\n * \n * var description = {\n * \"get\": { method: \"GET\", url: \"/photos/{tag}\" }\n * };\n * var photos = new qx.io.rest.Resource(description);\n * photos.get();\n * photos.get({tag: \"wildlife\"})\n *\n *\n * Strictly speaking, the
photos
instance represents two distinct resources\n * and could therefore just as well mapped to two distinct resources (for instance,\n * named photos and photosTagged). What style to choose depends on the kind of data\n * returned. For instance, it seems sensible to stick with one resource if the filter\n * only limits the result set (i.e. the individual results have the same properties).\n *\n * In order to respond to successful (or erroneous) invocations of actions,\n * either listen to the generic \"success\" or \"error\" event and get the action\n * from the event data, or listen to action specific events defined at runtime.\n * Action specific events follow the pattern \"<action>Success\" and\n * \"<action>Error\", e.g. \"indexSuccess\".\n * \n * NOTE: Instances of this class must be disposed of after use\n *\n */\nqx.Class.define(\"qx.io.rest.Resource\",\n{\n extend: qx.core.Object,\n implement : [ qx.core.IDisposable ],\n\n /**\n * @param description {Map?} Each key of the map is interpreted as\n * action
name. The value associated to the key must be a map\n * with the properties method
and url
.\n * check
is optional. Also see {@link #map}.\n *\n * For example:\n *\n * \n * { get: {method: \"GET\", url: \"/photos/{id}\", check: { id: /\\d+/ }} }\n *\n *\n * @see qx.bom.rest\n * @see qx.io.rest\n */\n construct: function(description)\n {\n this.base(arguments);\n\n this.__longPollHandlers = {};\n this.__pollTimers = {};\n this.__routes = {};\n\n this._resource = this._tailorResource(this._getResource());\n\n try {\n if (typeof description !== \"undefined\") {\n if (qx.core.Environment.get(\"qx.debug\")) {\n qx.core.Assert.assertMap(description);\n }\n this.__mapFromDescription(description);\n }\n } catch(e) {\n this.dispose();\n throw e;\n }\n },\n\n events:\n {\n /**\n * Fired when any request was successful.\n *\n * The action the successful request is associated to, as well as the\n * request itself, can be retrieved from the event’s properties.\n * Additionally, an action specific event is fired that follows the pattern\n * \"
index()
was\n * successful.\n */\n \"actionSuccess\": \"qx.event.type.Rest\",\n\n /**\n * Fired when any request fails.\n *\n * The action the failed request is associated to, as well as the\n * request itself, can be retrieved from the event’s properties.\n * Additionally, an action specific event is fired that follows the pattern\n * \"index()
failed.\n */\n \"actionError\": \"qx.event.type.Rest\"\n },\n\n statics:\n {\n /**\n * Number of milliseconds below a long-poll request is considered immediate and\n * subject to throttling checks.\n */\n POLL_THROTTLE_LIMIT: 100,\n\n /**\n * Number of immediate long-poll responses accepted before throttling takes place.\n */\n POLL_THROTTLE_COUNT: 30,\n\n /**\n * A symbol used in checks to declare required parameter.\n */\n REQUIRED: true,\n\n /**\n * Get placeholders from URL.\n *\n * @param url {String} The URL to parse for placeholders.\n * @return {Array} Array of placeholders without the placeholder prefix.\n */\n placeholdersFromUrl: function(url) {\n return qx.bom.rest.Resource.placeholdersFromUrl(url);\n }\n },\n\n members:\n {\n _resource: null,\n __longPollHandlers: null,\n __pollTimers: null,\n __routes: null,\n\n /**\n * Get resource.\n *\n * May be overridden to change type of resource.\n * @param description {Map?} See construct.\n * @return {qx.bom.rest.Resource} Resource implementation which does the heavy lifting.\n */\n _getResource: function(description) {\n return new qx.bom.rest.Resource(description);\n },\n\n /**\n * Tailors (apply dependency injection) the given resource to fit our needs.\n *\n * @param resource {qx.bom.rest.Resource} Resource.\n * @return {qx.bom.rest.Resource} Tailored resource.\n */\n _tailorResource: function(resource) {\n // inject different request implementation\n resource.setRequestFactory(this._getRequest);\n\n // inject different request handling\n resource.setRequestHandler({\n onsuccess: {\n callback: function(req, action) {\n return function() {\n var props = [req.getResponse(), null, false, req, action, req.getPhase()];\n this.fireEvent(action + \"Success\", qx.event.type.Rest, props);\n this.fireEvent(\"success\", qx.event.type.Rest, props);\n };\n },\n context: this\n },\n onfail: {\n callback: function(req, action) {\n return function() {\n var props = [req.getResponse(), null, false, req, action, req.getPhase()];\n this.fireEvent(action + \"Error\", qx.event.type.Rest, props);\n this.fireEvent(\"error\", qx.event.type.Rest, props);\n };\n },\n context: this\n },\n onloadend: {\n callback: function(req, action) {\n return function() {\n req.dispose();\n };\n },\n context: this\n }\n });\n\n return resource;\n },\n\n //\n // Request\n //\n\n /**\n * Configure request.\n *\n * @param callback {Function} Function called before request is send.\n * Receives request, action, params and data.\n *\n * \n * res.configureRequest(function(req, action, params, data) {\n * if (action === \"index\") {\n * req.setAccept(\"application/json\");\n * }\n * });\n *\n */\n configureRequest: function(callback) {\n this._resource.configureRequest(callback);\n },\n\n /**\n * Get request.\n *\n * May be overridden to change type of request.\n * @return {qx.io.request.Xhr} Xhr object\n */\n _getRequest: function() {\n return new qx.io.request.Xhr();\n },\n\n //\n // Routes and actions\n //\n\n /**\n * Map action to combination of method and URL pattern.\n *\n *
\n * res.map(\"get\", \"GET\", \"/photos/{id}\", {id: /\\d+/});\n *\n * // GET /photos/123\n * res.get({id: \"123\"});\n *\n *\n * @param action {String} Action to associate to request.\n * @param method {String} Method to configure request with.\n * @param url {String} URL to configure request with. May contain positional\n * parameters (
{param}
) that are replaced by values given when the action\n * is invoked. Parameters are optional, unless a check is defined. A default\n * value can be provided ({param=default}
).\n * @param check {Map?} Map defining parameter constraints, where the key is\n * the URL parameter and the value a regular expression (to match string) or\n * qx.io.rest.Resource.REQUIRED
(to verify existence).\n */\n map: function(action, method, url, check) {\n // add dynamic methods also on ourself to allow 'invoke()' delegation\n this.__addAction(action, method, url, check);\n\n this._resource.map(action, method, url, check);\n },\n\n /**\n * Map actions to members.\n *\n * @param action {String} Action to associate to request.\n * @param method {String} Method to configure request with.\n * @param url {String} URL to configure request with. May contain positional\n * parameters ({param}
) that are replaced by values given when the action\n * is invoked. Parameters are optional, unless a check is defined. A default\n * value can be provided ({param=default}
).\n * @param check {Map?} Map defining parameter constraints, where the key is\n * the URL parameter and the value a regular expression (to match string) or\n * qx.io.rest.Resource.REQUIRED
(to verify existence).\n */\n __addAction: function(action, method, url, check) {\n this.__routes[action] = [method, url, check];\n\n // Undefine generic getter when action is named \"get\"\n if (action == \"get\") {\n this[action] = undefined;\n }\n\n // Do not overwrite existing \"non-action\" methods unless the method is\n // null (i.e. because it exists as a stub for documentation)\n if (typeof this[action] !== \"undefined\" && this[action] !== null &&\n this[action].action !== true)\n {\n throw new Error(\"Method with name of action (\"+action+\") already exists\");\n }\n\n this.__declareEvent(action + \"Success\");\n this.__declareEvent(action + \"Error\");\n\n this[action] = qx.lang.Function.bind(function() {\n Array.prototype.unshift.call(arguments, action);\n return this.invoke.apply(this, arguments);\n }, this);\n\n // Method is safe to overwrite\n this[action].action = true;\n\n },\n\n /**\n * Invoke action with parameters.\n *\n * Internally called by actions dynamically created.\n *\n * May be overridden to customize action and parameter handling.\n *\n * @lint ignoreUnused(successHandler, failHandler, loadEndHandler)\n *\n * @param action {String} Action to invoke.\n * @param params {Map} Map of parameters inserted into URL when a matching\n * positional parameter is found.\n * @param data {Map|String} Data to be send as part of the request.\n * See {@link qx.io.request.AbstractRequest#requestData}.\n * @return {Number} Id of the action's invocation.\n */\n invoke: function(action, params, data) {\n var params = (params == null) ? {} : params;\n\n // Cache parameters\n this.__routes[action].params = params;\n\n return this._resource.invoke(action, params, data);\n },\n\n /**\n * Set base URL.\n *\n * The base URL is prepended to the URLs given in the description.\n * Changes affect all future invocations.\n *\n * @param baseUrl {String} Base URL.\n */\n setBaseUrl: function(baseUrl) {\n this._resource.setBaseUrl(baseUrl);\n },\n\n /**\n * Abort action.\n *\n * Example:\n *\n * \n * // Abort all invocations of action\n * res.get({id: 1});\n * res.get({id: 2});\n * res.abort(\"get\");\n *\n * // Abort specific invocation of action (by id)\n * var actionId = res.get({id: 1});\n * res.abort(actionId);\n *\n *\n * @param varargs {String|Number} Action of which all invocations to abort\n * (when string), or a single invocation of an action to abort (when number)\n */\n abort: function(varargs) {\n this._resource.abort(varargs);\n },\n\n /**\n * Resend request associated to action.\n *\n * Replays parameters given when action was invoked originally.\n *\n * @param action {String} Action to refresh.\n */\n refresh: function(action) {\n this._resource.refresh(action);\n },\n\n /**\n * Periodically invoke action.\n *\n * Replays parameters given when action was invoked originally. When the\n * action was not yet invoked and requires parameters, parameters must be\n * given.\n *\n * Please note that IE tends to cache overly aggressive. One work-around is\n * to disable caching on the client side by configuring the request with\n *
setCache(false)
. If you control the server, a better\n * work-around is to include appropriate headers to explicitly control\n * caching. This way you still avoid requests that can be correctly answered\n * from cache (e.g. when nothing has changed since the last poll). Please\n * refer to \n * XMLHttpRequest Caching Test for available options.\n *\n * @lint ignoreUnused(intervalListener)\n *\n * @param action {String} Action to poll.\n * @param interval {Number} Interval in ms.\n * @param params {Map?} Map of parameters. See {@link #invoke}.\n * @param immediately {Boolean?false} true
, if the poll should\n * invoke a call immediately.\n * @return {qx.event.Timer} Timer that periodically invokes action. Use to\n * stop or resume. Is automatically disposed on disposal of object.\n */\n poll: function(action, interval, params, immediately) {\n // Dispose timer previously created for action\n if (this.__pollTimers[action]) {\n this.__pollTimers[action].dispose();\n }\n\n // Fallback to previous params\n if (typeof params == \"undefined\") {\n params = this.__routes[action].params;\n }\n\n // Invoke immediately\n if (immediately) {\n this.invoke(action, params);\n }\n\n var intervalListener = function() {\n var reqs = this.getRequestsByAction(action),\n req = (reqs) ? reqs[0] : null;\n\n if (!immediately && !req) {\n this.invoke(action, params);\n return;\n }\n if (req && (req.isDone() || req.isDisposed())) {\n this.refresh(action);\n }\n };\n\n var timer = this.__pollTimers[action] = new qx.event.Timer(interval);\n timer.addListener(\"interval\", intervalListener, this._resource);\n timer.start();\n return timer;\n },\n\n /**\n * Long-poll action.\n *\n * Use Ajax long-polling to continuously fetch a resource as soon as the\n * server signals new data. The server determines when new data is available,\n * while the client keeps open a request. Requires configuration on the\n * server side. Basically, the server must not close a connection until\n * new data is available. For a high level introduction to long-polling,\n * refer to \n * Ajax with long polling.\n *\n * Uses {@link #refresh} internally. Make sure you understand the\n * implications of IE's tendency to cache overly aggressive.\n *\n * Note no interval is given on the client side.\n *\n * @lint ignoreUnused(longPollHandler)\n *\n * @param action {String} Action to poll.\n * @return {String} Id of handler responsible for long-polling. To stop\n * polling, remove handler using {@link qx.core.Object#removeListenerById}.\n */\n longPoll: function(action) {\n var res = this,\n lastResponse, // Keep track of last response\n immediateResponseCount = 0; // Count immediate responses\n\n // Throttle to prevent high load on server and client\n function throttle() {\n var isImmediateResponse =\n lastResponse &&\n ((new Date()) - lastResponse) < res._getThrottleLimit();\n\n if (isImmediateResponse) {\n immediateResponseCount += 1;\n if (immediateResponseCount > res._getThrottleCount()) {\n if (qx.core.Environment.get(\"qx.debug\")) {\n res.debug(\"Received successful response more than \" +\n res._getThrottleCount() + \" times subsequently, each within \" +\n res._getThrottleLimit() + \" ms. Throttling.\");\n }\n return true;\n }\n }\n\n // Reset counter on delayed response\n if (!isImmediateResponse) {\n immediateResponseCount = 0;\n }\n\n return false;\n }\n\n var handlerId = this.__longPollHandlers[action] =\n this.addListener(action + \"Success\", function longPollHandler() {\n if (res.isDisposed()) {\n return;\n }\n\n if (!throttle()) {\n lastResponse = new Date();\n res.refresh(action);\n }\n });\n\n this.invoke(action);\n return handlerId;\n },\n\n /**\n * Get request configuration for action and parameters.\n *\n * This is were placeholders are replaced with parameters.\n *\n * @param action {String} Action associated to request.\n * @param params {Map} Parameters to embed in request.\n * @return {Map} Map of configuration settings. Has the properties\n * method
, url
and check
.\n */\n _getRequestConfig: function(action, params) {\n return this._resource._getRequestConfig(action, params);\n },\n\n /**\n * Override to adjust the throttle limit.\n * @return {Integer} Throttle limit in milliseconds\n */\n _getThrottleLimit: function() {\n return qx.io.rest.Resource.POLL_THROTTLE_LIMIT;\n },\n\n /**\n * Override to adjust the throttle count.\n * @return {Integer} Throttle count\n */\n _getThrottleCount: function() {\n return qx.io.rest.Resource.POLL_THROTTLE_COUNT;\n },\n\n /**\n * Map actions from description.\n *\n * Allows to decoratively define routes.\n *\n * @param description {Map} Map that defines the routes.\n */\n __mapFromDescription: function(description) {\n Object.keys(description).forEach(function(action) {\n var route = description[action],\n method = route.method,\n url = route.url,\n check = route.check;\n\n if (qx.core.Environment.get(\"qx.debug\")) {\n qx.core.Assert.assertString(method, \"Method must be string for route '\" + action + \"'\");\n qx.core.Assert.assertString(url, \"URL must be string for route '\" + action + \"'\");\n }\n\n this.map(action, method, url, check);\n }, this);\n },\n\n /**\n * Declare event at runtime.\n *\n * @param type {String} Type of event.\n */\n __declareEvent: function(type) {\n if (!this.constructor.$$events) {\n this.constructor.$$events = {};\n }\n\n if (!this.constructor.$$events[type]) {\n this.constructor.$$events[type] = \"qx.event.type.Rest\";\n }\n }\n },\n\n /**\n * Destructs the Resource.\n *\n * All created requests, routes and pollTimers will be disposed.\n */\n destruct: function() {\n var action;\n\n if (this.__pollTimers) {\n for (action in this.__pollTimers) {\n var timer = this.__pollTimers[action];\n timer.stop();\n timer.dispose();\n }\n }\n\n if (this.__longPollHandlers) {\n for (action in this.__longPollHandlers) {\n var id = this.__longPollHandlers[action];\n this.removeListenerById(id);\n }\n }\n\n this._resource.destruct();\n this._resource = this.__routes = this.__pollTimers = this.__longPollHandlers = null;\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Pedro Crespo (pcrespov)\n\n************************************************************************ */\n\n/**\n * Base class for RESTful resources\n */\nqx.Class.define(\"osparc.io.rest.Resource\", {\n extend: qx.io.rest.Resource,\n\n construct: function(description, timeout = 0) {\n this.base(arguments, description);\n\n this.configureRequest(request => {\n const headers = [{\n key: \"Accept\",\n value: \"application/json\"\n }, {\n key: \"Content-Type\",\n value: \"application/json\"\n }, {\n key: \"X-Simcore-Products-Name\",\n value: qx.core.Environment.get(\"product.name\")\n }];\n\n if (this.AUTHENTICATION !== undefined && this.AUTHENTICATION !== null) {\n headers.concat(this.AUTHENTICATION.getAuthHeaders());\n }\n\n headers.forEach(item => request.setRequestHeader(item.key, item.value));\n\n if (timeout) {\n request.setTimeout(timeout);\n }\n });\n },\n\n statics: {\n AUTHENTICATION: null,\n\n setAutheticationHeader: function(usernameOrToken, password=null) {\n osparc.io.rest.Resource.AUTHENTICATION = new qx.io.request.authentication.Basic(usernameOrToken, password);\n }\n },\n\n members: {\n includesRoute: function(route) {\n return Object.keys(this.__routes).includes(route);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.metadata.Quality\", {\n type: \"static\",\n\n statics: {\n attachQualityToObject: function(obj) {\n if (!(\"quality\" in obj)) {\n obj[\"quality\"] = {};\n }\n if (!(\"enabled\" in obj[\"quality\"])) {\n obj[\"quality\"][\"enabled\"] = true;\n }\n\n if (\"tsr\" in obj[\"quality\"]) {\n obj[\"quality\"][\"tsr_current\"] = obj[\"quality\"][\"tsr\"];\n delete obj[\"quality\"][\"tsr\"];\n }\n\n const defaultCurrentTSR = osparc.metadata.Quality.getDefaultCurrentQualityTSR();\n if (!(\"tsr_current\" in obj[\"quality\"])) {\n obj[\"quality\"][\"tsr_current\"] = defaultCurrentTSR;\n }\n Object.keys(defaultCurrentTSR).forEach(sectionKey => {\n if (!(sectionKey in obj[\"quality\"][\"tsr_current\"])) {\n obj[\"quality\"][\"tsr_current\"][sectionKey] = defaultCurrentTSR[sectionKey];\n }\n });\n\n const defaultTargetTSR = osparc.metadata.Quality.getDefaultTargetQualityTSR();\n if (!(\"tsr_target\" in obj[\"quality\"])) {\n obj[\"quality\"][\"tsr_target\"] = defaultTargetTSR;\n }\n Object.keys(defaultTargetTSR).forEach(sectionKey => {\n if (!(sectionKey in obj[\"quality\"][\"tsr_target\"])) {\n obj[\"quality\"][\"tsr_target\"][sectionKey] = defaultTargetTSR[sectionKey];\n }\n });\n\n if ((\"annotations\" in obj[\"quality\"])) {\n delete obj[\"quality\"][\"annotations\"];\n }\n },\n\n isEnabled: function(quality) {\n return quality && \"enabled\" in quality && quality[\"enabled\"];\n },\n\n getConformanceLevel: function() {\n const conformanceLevel = {\n \"l00\": {\n \"title\": \"Insufficient\",\n \"description\": \"Missing or grossly incomplete information to properly evaluate \\\nthe conformance with the rule\",\n \"level\": 0,\n \"outreach\": \"None or very limited\"\n },\n \"l01\": {\n \"title\": \"Partial\",\n \"description\": \"Unclear to the M&S practitioners familiar with the application \\\ndomain and the intended context of use\",\n \"level\": 1,\n \"outreach\": \"Outreach to application-domain specific M&S practitioners\"\n },\n \"l02\": {\n \"title\": \"Adequate\",\n \"description\": \"Can be understood by M&S practitioners familiar with the application \\\ndomain and the intended context of use\",\n \"level\": 2,\n \"outreach\": \"Outreach to application-domain specific M&S practitioners\"\n },\n \"l03\": {\n \"title\": \"Extensive\",\n \"description\": \"Can be understood by M&S practitioners not familiar with the application \\\ndomain and the intended context of use\",\n \"level\": 3,\n \"outreach\": \"Outreach to practitioners who may not be application-domain experts\"\n },\n \"l04\": {\n \"title\": \"Comprehensive\",\n \"description\": \"Can be understood by non-M&S practitioners familiar with the application \\\ndomain and the intended context of use\",\n \"level\": 4,\n \"outreach\": \"Outreach to application-domain experts who may not be M&S practitioners\"\n }\n };\n return conformanceLevel;\n },\n\n findConformanceLevel: function(level) {\n let confLevel = null;\n const conformanceLevels = osparc.metadata.Quality.getConformanceLevel();\n Object.values(conformanceLevels).forEach(conformanceLevel => {\n if (conformanceLevel.level === level) {\n confLevel = conformanceLevel;\n }\n });\n return confLevel;\n },\n\n getDefaultCurrentQualityTSR: function() {\n const defaultCurrentTSR = {\n \"r01\": {\n \"level\": 0,\n \"references\": \"\"\n },\n \"r02\": {\n \"level\": 0,\n \"references\": \"\"\n },\n \"r03\": {\n \"level\": 0,\n \"references\": \"\"\n },\n \"r03b\": {\n \"references\": \"\"\n },\n \"r03c\": {\n \"references\": \"\"\n },\n \"r04\": {\n \"level\": 0,\n \"references\": \"\"\n },\n \"r05\": {\n \"level\": 0,\n \"references\": \"\"\n },\n \"r06\": {\n \"level\": 0,\n \"references\": \"\"\n },\n \"r07\": {\n \"level\": 0,\n \"references\": \"\"\n },\n \"r07b\": {\n \"references\": \"\"\n },\n \"r07c\": {\n \"references\": \"\"\n },\n \"r07d\": {\n \"references\": \"\"\n },\n \"r07e\": {\n \"references\": \"\"\n },\n \"r08\": {\n \"level\": 0,\n \"references\": \"\"\n },\n \"r08b\": {\n \"references\": \"\"\n },\n \"r09\": {\n \"level\": 0,\n \"references\": \"\"\n },\n \"r10\": {\n \"level\": 0,\n \"references\": \"\"\n },\n \"r10b\": {\n \"references\": \"\"\n }\n };\n return defaultCurrentTSR;\n },\n\n getDefaultTargetQualityTSR: function() {\n const defaultTargetTSR = {\n \"r01\": {\n \"level\": 4,\n \"references\": \"\"\n },\n \"r02\": {\n \"level\": 4,\n \"references\": \"\"\n },\n \"r03\": {\n \"level\": 4,\n \"references\": \"\"\n },\n \"r03b\": {\n \"references\": \"\"\n },\n \"r03c\": {\n \"references\": \"\"\n },\n \"r04\": {\n \"level\": 4,\n \"references\": \"\"\n },\n \"r05\": {\n \"level\": 4,\n \"references\": \"\"\n },\n \"r06\": {\n \"level\": 4,\n \"references\": \"\"\n },\n \"r07\": {\n \"level\": 4,\n \"references\": \"\"\n },\n \"r07b\": {\n \"references\": \"\"\n },\n \"r07c\": {\n \"references\": \"\"\n },\n \"r07d\": {\n \"references\": \"\"\n },\n \"r07e\": {\n \"references\": \"\"\n },\n \"r08\": {\n \"level\": 4,\n \"references\": \"\"\n },\n \"r08b\": {\n \"references\": \"\"\n },\n \"r09\": {\n \"level\": 4,\n \"references\": \"\"\n },\n \"r10\": {\n \"level\": 4,\n \"references\": \"\"\n },\n \"r10b\": {\n \"references\": \"\"\n }\n };\n return defaultTargetTSR;\n },\n\n computeTSRScore: function(currentTSR, targetTSR) {\n let score = 0;\n let targetScore = 0;\n let maxScore = 0;\n Object.entries(currentTSR).forEach(([tsrKey, cTSR]) => {\n if (\"level\" in cTSR && \"level\" in targetTSR[tsrKey] && targetTSR[tsrKey][\"level\"] !== 0) {\n score += cTSR.level;\n targetScore += targetTSR[tsrKey].level;\n maxScore += 4;\n }\n });\n return {\n score,\n targetScore,\n maxScore\n };\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Pedro Crespo (pcrespov)\n\n************************************************************************ */\n\n/** Authentication data\n *\n * - Keeps data and state of current authenticated (logged in) user\n*/\n\nqx.Class.define(\"osparc.auth.Data\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n properties: {\n /**\n * Basic authentification with a token\n */\n auth: {\n init: null,\n nullable: true,\n check: \"osparc.io.request.authentication.Token\",\n apply: \"__applyAuth\"\n },\n\n role: {\n check: [\"anonymous\", \"guest\", \"user\", \"tester\", \"product_owner\", \"admin\"],\n init: null,\n nullable: false,\n event: \"changeRole\",\n apply: \"__applyRole\"\n },\n\n guest: {\n check: \"Boolean\",\n init: true,\n nullable: false,\n event: \"changeGuest\"\n },\n\n loggedIn: {\n check: \"Boolean\",\n nullable: false,\n init: false,\n event: \"changeLoggedIn\",\n },\n\n /**\n * User Id\n */\n userId: {\n init: null,\n nullable: false,\n check: \"Number\"\n },\n\n /**\n * Group ID\n */\n groupId: {\n init: null,\n nullable: false,\n check: \"Number\"\n },\n\n username: {\n check: \"String\",\n init: null,\n nullable: false,\n event: \"changeUsername\",\n },\n\n email: {\n init: null,\n nullable: true, // email of logged in user, otherwise null\n check: \"String\"\n },\n\n firstName: {\n init: \"\",\n nullable: true,\n check: \"String\",\n event: \"changeFirstName\"\n },\n\n lastName: {\n init: \"\",\n nullable: true,\n check: \"String\",\n event: \"changeLastName\"\n },\n\n expirationDate: {\n init: null,\n nullable: true,\n check: \"Date\",\n event: \"changeExpirationDate\"\n },\n },\n\n members: {\n __applyAuth: function(auth) {\n this.setLoggedIn(auth !== null && auth instanceof osparc.io.request.authentication.Token);\n },\n\n __applyRole: function(role) {\n if (role && [\"user\", \"tester\", \"product_owner\", \"admin\"].includes(role)) {\n this.setGuest(false);\n } else {\n this.setGuest(true);\n }\n },\n\n setToken: function(token) {\n if (token) {\n osparc.utils.Utils.cookie.setCookie(\"user\", token);\n this.setAuth(new osparc.io.request.authentication.Token(token));\n }\n },\n\n resetToken: function() {\n osparc.utils.Utils.cookie.setCookie(\"user\", \"logout\");\n this.resetAuth();\n },\n\n isLogout: function() {\n return osparc.utils.Utils.cookie.getCookie(\"user\") === \"logout\";\n },\n\n getFriendlyUsername: function() {\n const firstName = this.getFirstName();\n if (firstName) {\n return firstName;\n }\n return this.getUsername();\n },\n\n getFullName: function() {\n let name = \"\";\n if (this.getFirstName()) {\n name += this.getFirstName();\n }\n if (this.getLastName()) {\n name += \" \" + this.getLastName();\n }\n return name;\n },\n\n getFriendlyRole: function() {\n const role = this.getRole();\n let friendlyRole = role.replace(/_/g, \" \");\n friendlyRole = osparc.utils.Utils.firstsUp(friendlyRole);\n return friendlyRole;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\n/**\n * Singleton class that pops up a window showing a log message. The time the window is visible depends\n * on the length of the message. Also if a second message is added will be stacked to the previous one.\n *\n * Depending on the log level (\"DEBUG\", \"INFO\", \"WARNING\", \"ERROR\") the background color of the window\n * will be different.\n *\n * *Example*\n *\n * Here is a little example of how to use the class.\n *\n * \n * osparc.FlashMessenger.getInstance().logAs(log);\n *\n */\n\nqx.Class.define(\"osparc.FlashMessenger\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n construct: function() {\n this.base(arguments);\n this.__messages = new qx.data.Array();\n\n this.__messageContainer = new qx.ui.container.Composite(new qx.ui.layout.VBox(10)).set({\n zIndex: osparc.utils.Utils.FLOATING_Z_INDEX\n });\n const root = qx.core.Init.getApplication().getRoot();\n root.add(this.__messageContainer, {\n top: 10\n });\n\n this.__displayedMessagesCount = 0;\n\n this.__attachEventHandlers();\n },\n\n statics: {\n MAX_DISPLAYED: 3,\n logAs: function(message, level, duration) {\n return this.getInstance().logAs(message, level, duration);\n }\n },\n\n members: {\n __messages: null,\n __messageContainer: null,\n __displayedMessagesCount: null,\n\n /**\n * Public function to log a FlashMessage to the user.\n *\n * @param {String} message Message that the message will show.\n * @param {String=\"INFO\",\"DEBUG\",\"WARNING\",\"ERROR\"} level Level of the warning. The color of the badge will change accordingly.\n * @param {Number} duration\n */\n logAs: function(message, level=\"INFO\", duration=null) {\n return this.log({\n message,\n level: level.toUpperCase(),\n duration\n });\n },\n\n log: function(logMessage) {\n const message = osparc.utils.Utils.isObject(logMessage.message) && \"message\" in logMessage.message ?\n logMessage.message.message :\n logMessage.message;\n\n const level = logMessage.level.toUpperCase(); // \"DEBUG\", \"INFO\", \"WARNING\", \"ERROR\"\n\n const flashMessage = new osparc.ui.message.FlashMessage(message, level, logMessage.duration);\n flashMessage.addListener(\"closeMessage\", () => this.removeMessage(flashMessage), this);\n this.__messages.push(flashMessage);\n\n return flashMessage;\n },\n\n /**\n * Private method to show a message to the user. It will stack it on the previous ones.\n *\n * @param {osparc.ui.message.FlashMessage} flashMessage FlashMessage element to show.\n */\n __showMessage: function(flashMessage) {\n if (!flashMessage.getMessage()) {\n flashMessage.setMessage(qx.locale.Manager.tr(\"No message\"));\n }\n\n this.__messages.remove(flashMessage);\n this.__messageContainer.resetDecorator();\n this.__messageContainer.add(flashMessage);\n const {\n width\n } = flashMessage.getSizeHint();\n if (this.__displayedMessagesCount === 0 || width > this.__messageContainer.getWidth()) {\n this.__updateContainerPosition(width);\n }\n this.__displayedMessagesCount++;\n\n let duration = flashMessage.getDuration();\n if (duration === null) {\n const message = flashMessage.getMessage();\n const wordCount = message.split(\" \").length;\n duration = Math.max(5500, wordCount*500); // An average reader takes 300ms to read a word\n }\n if (duration !== 0) {\n qx.event.Timer.once(() => this.removeMessage(flashMessage), this, duration);\n }\n },\n\n /**\n * Private method to remove a message. If there are still messages in the queue, it will show the next available one.\n *\n * @param {osparc.ui.message.FlashMessage} flashMessage FlashMessage element to remove.\n */\n removeMessage: function(flashMessage) {\n if (this.__messageContainer.indexOf(flashMessage) > -1) {\n this.__displayedMessagesCount--;\n this.__messageContainer.setDecorator(\"flash-container-transitioned\");\n this.__messageContainer.remove(flashMessage);\n qx.event.Timer.once(() => {\n if (this.__messages.length) {\n // There are still messages to show\n this.__showMessage(this.__messages.getItem(0));\n }\n }, this, 200);\n }\n },\n\n /**\n * Function to re-position the message container according to the next message size, or its own size, if the previous is missing.\n *\n * @param {Integer} messageWidth Size of the next message to add in pixels.\n */\n __updateContainerPosition: function(messageWidth) {\n const width = messageWidth || this.__messageContainer.getSizeHint().width;\n const root = qx.core.Init.getApplication().getRoot();\n if (root && root.getBounds()) {\n this.__messageContainer.setLayoutProperties({\n left: Math.round((root.getBounds().width - width) / 2)\n });\n }\n },\n\n __attachEventHandlers: function() {\n this.__messages.addListener(\"change\", e => {\n const data = e.getData();\n if (data.type === \"add\") {\n if (this.__displayedMessagesCount < this.self().MAX_DISPLAYED) {\n this.__showMessage(data.added[0]);\n }\n }\n }, this);\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2009 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Fabian Jakobs (fjakobs)\n\n************************************************************************ */\n\n/**\n * A helper class for accessing the property system directly.\n *\n * This class is rather to be used internally. For all regular usage of the\n * property system the default API should be sufficient.\n */\nqx.Class.define(\"qx.util.PropertyUtil\",\n{\n statics :\n {\n /**\n * Get the property map of the given class\n *\n * @param clazz {Class} a qooxdoo class\n * @return {Map} A properties map as defined in {@link qx.Class#define}\n * including the properties of included mixins and not including refined\n * properties.\n */\n getProperties : function(clazz) {\n return clazz.$$properties;\n },\n\n\n /**\n * Get the property map of the given class including the properties of all\n * superclasses!\n *\n * @param clazz {Class} a qooxdoo class\n * @return {Map} The properties map as defined in {@link qx.Class#define}\n * including the properties of included mixins of the current class and\n * all superclasses.\n */\n getAllProperties : function(clazz)\n {\n\n var properties = {};\n var superclass = clazz;\n // go threw the class hierarchy\n while (superclass != qx.core.Object) {\n var currentProperties = this.getProperties(superclass);\n for (var property in currentProperties) {\n properties[property] = currentProperties[property];\n }\n superclass = superclass.superclass;\n }\n return properties;\n },\n\n\n\n /*\n -------------------------------------------------------------------------\n USER VALUES\n -------------------------------------------------------------------------\n */\n\n /**\n * Returns the user value of the given property\n *\n * @param object {Object} The object to access\n * @param propertyName {String} The name of the property\n * @return {var} The user value\n */\n getUserValue : function(object, propertyName) {\n return object[\"$$user_\" + propertyName];\n },\n\n /**\n * Sets the user value of the given property\n *\n * @param object {Object} The object to access\n * @param propertyName {String} The name of the property\n * @param value {var} The value to set\n */\n setUserValue : function(object, propertyName, value) {\n object[\"$$user_\" + propertyName] = value;\n },\n\n /**\n * Deletes the user value of the given property\n *\n * @param object {Object} The object to access\n * @param propertyName {String} The name of the property\n */\n deleteUserValue : function(object, propertyName) {\n delete(object[\"$$user_\" + propertyName]);\n },\n\n\n /*\n -------------------------------------------------------------------------\n INIT VALUES\n -------------------------------------------------------------------------\n */\n\n /**\n * Returns the init value of the given property\n *\n * @param object {Object} The object to access\n * @param propertyName {String} The name of the property\n * @return {var} The init value\n */\n getInitValue : function(object, propertyName) {\n return object[\"$$init_\" + propertyName];\n },\n\n /**\n * Sets the init value of the given property\n *\n * @param object {Object} The object to access\n * @param propertyName {String} The name of the property\n * @param value {var} The value to set\n */\n setInitValue : function(object, propertyName, value) {\n object[\"$$init_\" + propertyName] = value;\n },\n\n /**\n * Deletes the init value of the given property\n *\n * @param object {Object} The object to access\n * @param propertyName {String} The name of the property\n */\n deleteInitValue : function(object, propertyName) {\n delete(object[\"$$init_\" + propertyName]);\n },\n\n\n /*\n -------------------------------------------------------------------------\n THEME VALUES\n -------------------------------------------------------------------------\n */\n\n /**\n * Returns the theme value of the given property\n *\n * @param object {Object} The object to access\n * @param propertyName {String} The name of the property\n * @return {var} The theme value\n */\n getThemeValue : function(object, propertyName) {\n return object[\"$$theme_\" + propertyName];\n },\n\n /**\n * Sets the theme value of the given property\n *\n * @param object {Object} The object to access\n * @param propertyName {String} The name of the property\n * @param value {var} The value to set\n */\n setThemeValue : function(object, propertyName, value) {\n object[\"$$theme_\" + propertyName] = value;\n },\n\n /**\n * Deletes the theme value of the given property\n *\n * @param object {Object} The object to access\n * @param propertyName {String} The name of the property\n */\n deleteThemeValue : function(object, propertyName) {\n delete(object[\"$$theme_\" + propertyName]);\n },\n\n\n /*\n -------------------------------------------------------------------------\n THEMED PROPERTY\n -------------------------------------------------------------------------\n */\n\n /**\n * Sets a themed property\n *\n * @param object {Object} The object to access\n * @param propertyName {String} The name of the property\n * @param value {var} The value to set\n */\n setThemed : function(object, propertyName, value)\n {\n var styler = qx.core.Property.$$method.setThemed;\n object[styler[propertyName]](value);\n },\n\n /**\n * Resets a themed property\n *\n * @param object {Object} The object to access\n * @param propertyName {String} The name of the property\n */\n resetThemed : function(object, propertyName)\n {\n var unstyler = qx.core.Property.$$method.resetThemed;\n object[unstyler[propertyName]]();\n }\n }\n});","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.Preferences\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n properties: {\n preferredWalletId: {\n nullable: false,\n init: null,\n check: \"Number\",\n event: \"changePreferredWalletId\"\n },\n\n themeName: {\n nullable: false,\n init: {},\n check: \"String\",\n apply: \"__applyThemeName\"\n },\n\n // ---------------------------\n\n autoConnectPorts: {\n nullable: false,\n init: true,\n check: \"Boolean\",\n event: \"changeAutoConnectPorts\",\n apply: \"__patchPreference\"\n },\n\n confirmBackToDashboard: {\n nullable: false,\n init: true,\n check: \"Boolean\",\n event: \"changeConfirmBackToDashboard\",\n apply: \"__patchPreference\"\n },\n\n confirmDeleteStudy: {\n nullable: false,\n init: true,\n check: \"Boolean\",\n event: \"changeConfirmDeleteStudy\",\n apply: \"__patchPreference\"\n },\n\n confirmDeleteNode: {\n nullable: false,\n init: true,\n check: \"Boolean\",\n event: \"changeConfirmDeleteNode\",\n apply: \"__patchPreference\"\n },\n\n confirmStopNode: {\n nullable: false,\n init: true,\n check: \"Boolean\",\n event: \"changeConfirmStopNode\",\n apply: \"__patchPreference\"\n },\n\n snapNodeToGrid: {\n nullable: false,\n init: true,\n check: \"Boolean\",\n event: \"changeSnapNodeToGrid\",\n apply: \"__patchPreference\"\n },\n\n creditsWarningThreshold: {\n check: \"Number\",\n nullable: false,\n init: 200,\n event: \"changeCreditsWarningThreshold\",\n apply: \"__patchPreference\"\n },\n\n walletIndicatorVisibility: {\n check: [\"always\", \"warning\"],\n nullable: false,\n init: \"warning\",\n event: \"changeWalletIndicatorVisibility\",\n apply: \"__patchPreference\"\n },\n\n userInactivityThreshold: {\n check: \"Number\",\n nullable: false,\n init: 1800,\n event: \"changeUserInactivityThreshold\",\n apply: \"__patchPreference\"\n },\n\n lowDiskSpaceThreshold: {\n check: \"Number\",\n nullable: true,\n init: null,\n event: \"changeLowDiskSpaceThreshold\",\n apply: \"__patchPreference\"\n },\n\n jobConcurrencyLimit: {\n check: \"Number\",\n nullable: false,\n init: 4,\n event: \"changeJobConcurrencyLimit\",\n apply: \"__patchPreference\"\n },\n\n allowMetricsCollection: {\n nullable: false,\n init: true,\n check: \"Boolean\",\n event: \"changeAllowMetricsCollection\",\n apply: \"__patchPreference\"\n },\n\n twoFAPreference: {\n nullable: true,\n check: [\"SMS\", \"EMAIL\", \"DISABLED\"],\n init: \"SMS\",\n event: \"changeTwoFAPreference\",\n apply: \"__patchPreference\"\n },\n\n billingCenterUsageColumnOrder: {\n nullable: true,\n check: \"Array\",\n event: \"changeBillingCenterUsageColumnOrder\",\n apply: \"__patchPreference\"\n }\n },\n\n statics: {\n patchPreference: function(preferenceId, value) {\n const params = {\n url: {\n preferenceId\n },\n data: {\n value\n }\n };\n return osparc.data.Resources.fetch(\"preferences\", \"patch\", params);\n },\n\n patchPreferenceField: function(preferenceId, preferenceField, newValue) {\n const preferencesSettings = osparc.Preferences.getInstance();\n\n const oldValue = preferencesSettings.get(preferenceId);\n if (newValue === oldValue) {\n return;\n }\n\n preferenceField.setEnabled(false);\n osparc.Preferences.patchPreference(preferenceId, newValue)\n .then(() => preferencesSettings.set(preferenceId, newValue))\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n preferenceField.setValue(oldValue);\n })\n .finally(() => preferenceField.setEnabled(true));\n }\n },\n\n members: {\n __applyThemeName: function(themeName) {\n if (themeName && themeName !== qx.theme.manager.Meta.getInstance().getTheme().name) {\n const preferredTheme = qx.Theme.getByName(themeName);\n const themes = qx.Theme.getAll();\n if (preferredTheme && Object.keys(themes).includes(preferredTheme.name)) {\n qx.theme.manager.Meta.getInstance().setTheme(preferredTheme);\n\n if (osparc.auth.Manager.getInstance().isLoggedIn()) {\n this.self().patchPreference(\"themeName\", preferredTheme.name);\n }\n }\n }\n },\n\n requestChangePreferredWalletId: function(walletId) {\n this.self().patchPreference(\"preferredWalletId\", walletId)\n .then(() => {\n const store = osparc.store.Store.getInstance();\n const wallets = store.getWallets();\n const walletFound = wallets.find(wallet => wallet.getWalletId() === walletId);\n if (walletFound) {\n store.setPreferredWallet(walletFound);\n }\n wallets.forEach(wallet => wallet.setPreferredWallet(wallet.getWalletId() === walletId));\n this.setPreferredWalletId(walletId);\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n });\n },\n\n __patchPreference: function(value, _, propName) {\n this.self().patchPreference(propName, value);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.MainPageDesktop\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(null, null, \"separator-vertical\"));\n\n this._add(osparc.notification.RibbonNotifications.getInstance());\n\n const navBar = new osparc.navigation.NavigationBar();\n navBar.populateLayout();\n // exclude some items from the navigation bar\n navBar.getChildControl(\"dashboard-label\").exclude();\n navBar.getChildControl(\"dashboard-button\").exclude();\n navBar.getChildControl(\"notifications-button\").exclude();\n navBar.getChildControl(\"help\").exclude();\n\n // exclude all the menu entries except \"log-out\" from user menu\n const userMenuButton = navBar.getChildControl(\"user-menu\");\n const userMenu = userMenuButton.getMenu();\n // eslint-disable-next-line no-underscore-dangle\n const userMenuEntries = userMenu._getCreatedChildControls();\n Object.entries(userMenuEntries).forEach(([id, userMenuEntry]) => {\n if (![\"mini-profile-view\", \"po-center\", \"log-out\"].includes(id)) {\n userMenuEntry.exclude();\n }\n });\n // exclude also the separators\n userMenu.getChildren().forEach(child => {\n if (child.classname === \"qx.ui.menu.Separator\") {\n child.exclude();\n }\n });\n this._add(navBar);\n\n osparc.MaintenanceTracker.getInstance().startTracker();\n\n const store = osparc.store.Store.getInstance();\n const preloadPromises = [];\n const walletsEnabled = osparc.desktop.credits.Utils.areWalletsEnabled();\n if (walletsEnabled) {\n preloadPromises.push(store.reloadCreditPrice());\n preloadPromises.push(store.reloadWallets());\n }\n preloadPromises.push(store.getAllClassifiers(true));\n preloadPromises.push(osparc.store.Tags.getInstance().fetchTags());\n Promise.all(preloadPromises)\n .then(() => {\n const desktopCenter = new osparc.desktop.credits.DesktopCenter();\n this._add(desktopCenter, {\n flex: 1\n });\n\n this.__listenToWalletSocket();\n });\n },\n\n members: {\n __listenToWalletSocket: function() {\n const socket = osparc.wrapper.WebSocket.getInstance();\n if (!socket.slotExists(\"walletOsparcCreditsUpdated\")) {\n socket.on(\"walletOsparcCreditsUpdated\", data => {\n osparc.desktop.credits.Utils.creditsUpdated(data[\"wallet_id\"], data[\"osparc_credits\"]);\n }, this);\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n/**\n * @ignore(fetch)\n */\n\n/**\n * Widget managing the layout once the user is logged in.\n *\n * It offers a:\n * - NavigationBar\n * - Main Stack\n * - Dashboard Stack\n * - StudyBrowser\n * - TemplateBrowser\n * - ServiceBrowser\n * - DataManager\n * - StudyEditor\n *\n *
\n * let mainPage = new osparc.desktop.MainPage();\n * this.getRoot().add(mainPage);\n *\n */\n\nqx.Class.define(\"osparc.desktop.MainPage\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox());\n\n this._add(osparc.notification.RibbonNotifications.getInstance());\n\n const navBar = this.__navBar = new osparc.navigation.NavigationBar();\n navBar.populateLayout();\n navBar.addListener(\"backToDashboardPressed\", () => this.__backToDashboardPressed(), this);\n navBar.addListener(\"openLogger\", () => this.__openLogger(), this);\n this._add(navBar);\n\n // Some resources request before building the main stack\n osparc.MaintenanceTracker.getInstance().startTracker();\n osparc.CookieExpirationTracker.getInstance().startTracker();\n // osparc.NewUITracker.getInstance().startTracker();\n\n const store = osparc.store.Store.getInstance();\n const preloadPromises = [];\n const walletsEnabled = osparc.desktop.credits.Utils.areWalletsEnabled();\n if (walletsEnabled) {\n preloadPromises.push(store.reloadCreditPrice());\n preloadPromises.push(store.reloadWallets());\n }\n preloadPromises.push(store.getAllClassifiers(true));\n preloadPromises.push(osparc.store.Tags.getInstance().fetchTags());\n preloadPromises.push(osparc.store.Products.getInstance().fetchUiConfig());\n Promise.all(preloadPromises)\n .then(() => {\n const mainStack = this.__createMainStack();\n this._add(mainStack, {\n flex: 1\n });\n\n this.__listenToWalletSocket();\n this.__attachHandlers();\n });\n },\n\n members: {\n __navBar: null,\n __dashboard: null,\n __loadingPage: null,\n __studyEditor: null,\n\n __listenToWalletSocket: function() {\n const socket = osparc.wrapper.WebSocket.getInstance();\n if (!socket.slotExists(\"walletOsparcCreditsUpdated\")) {\n socket.on(\"walletOsparcCreditsUpdated\", data => {\n osparc.desktop.credits.Utils.creditsUpdated(data[\"wallet_id\"], data[\"osparc_credits\"]);\n }, this);\n }\n },\n\n __backToDashboardPressed: function() {\n if (!osparc.data.Permissions.getInstance().canDo(\"studies.user.create\", true)) {\n return;\n }\n if (this.__studyEditor) {\n const isReadOnly = this.__studyEditor.getStudy().isReadOnly();\n const preferencesSettings = osparc.Preferences.getInstance();\n if (!isReadOnly && preferencesSettings.getConfirmBackToDashboard()) {\n const studyName = this.__studyEditor.getStudy().getName();\n const win = new osparc.ui.window.Confirmation();\n if (osparc.product.Utils.getProductName().includes(\"s4l\")) {\n let msg = this.tr(\"Do you want to close \") + \"\" + studyName + \"?\";\n msg += \"
\n * // a simple text label without wrapping and markup support\n * var label1 = new qx.ui.basic.Label(\"Simple text label\");\n * this.getRoot().add(label1, {left:20, top:10});\n *\n * // a HTML label with automatic line wrapping\n * var label2 = new qx.ui.basic.Label().set({\n * value: \"A long label text with auto-wrapping. This also may contain rich HTML markup.\",\n * rich : true,\n * width: 120\n * });\n * this.getRoot().add(label2, {left:20, top:50});\n *\n *\n * The first label in this example is a basic text only label. As such no\n * automatic wrapping is supported. The second label is a long label containing\n * HTML markup with automatic line wrapping.\n *\n * *External Documentation*\n *\n * \n * Documentation of this widget in the qooxdoo manual.\n * \n * NOTE: Instances of this class must be disposed of after use\n *\n */\nqx.Class.define(\"qx.ui.basic.Label\",\n{\n extend : qx.ui.core.Widget,\n implement : [qx.ui.form.IStringForm],\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param value {String} Text or HTML content to use\n */\n construct : function(value)\n {\n this.base(arguments);\n\n if (value != null) {\n this.setValue(value);\n }\n\n if (qx.core.Environment.get(\"qx.dynlocale\")) {\n qx.locale.Manager.getInstance().addListener(\"changeLocale\", this._onChangeLocale, this);\n }\n },\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n /**\n * Switches between rich HTML and text content. The text mode (
false
) supports\n * advanced features like ellipsis when the available space is not\n * enough. HTML mode (true
) supports multi-line content and all the\n * markup features of HTML content.\n */\n rich :\n {\n check : \"Boolean\",\n init : false,\n event : \"changeRich\",\n apply : \"_applyRich\"\n },\n\n\n /**\n * Controls whether text wrap is activated or not. But please note, that\n * this property works only in combination with the property {@link #rich}.\n * The {@link #wrap} has only an effect if the {@link #rich} property is\n * set to true
, otherwise {@link #wrap} has no effect.\n */\n wrap :\n {\n check : \"Boolean\",\n init : true,\n apply : \"_applyWrap\"\n },\n \n \n /**\n * Controls whether line wrapping can occur in the middle of a word; this is\n * typically only useful when there is a restricted amount of horizontal space\n * and words would otherwise overflow beyond the width of the element. Words\n * are typically considered as separated by spaces, so \"abc/def/ghi\" is a 11 \n * character word that would not be split without `breakWithWords` set to true. \n */\n breakWithinWords :\n {\n check : \"Boolean\",\n init : false,\n apply : \"_applyBreakWithinWords\"\n },\n\n\n /**\n * Contains the HTML or text content. Interpretation depends on the value\n * of {@link #rich}. In text mode entities and other HTML special content\n * is not supported. But it is possible to use unicode escape sequences\n * to insert symbols and other non ASCII characters.\n */\n value :\n {\n check : \"String\",\n apply : \"_applyValue\",\n event : \"changeValue\",\n nullable : true\n },\n\n\n /**\n * The buddy property can be used to connect the label to another widget.\n * That causes two things:\n * width
and height
keys\n */\n __computeContentSize : function(width)\n {\n var Label = qx.bom.Label;\n var font = this.getFont();\n\n var styles = font ? this.__font.getStyles() : qx.bom.Font.getDefaultStyles();\n var content = this.getValue() || \"A\";\n var rich = this.getRich();\n\n if (this.__webfontListenerId) {\n this.__fixEllipsis();\n }\n if (rich && this.getBreakWithinWords()) {\n styles.wordBreak = \"break-all\";\n }\n\n return rich ?\n Label.getHtmlSize(content, styles, width) :\n Label.getTextSize(content, styles);\n },\n\n\n\n /**\n * Firefox > 9 on OS X will draw an ellipsis on top of the label content even\n * though there is enough space for the text. Re-applying the content forces\n * a recalculation and fixes the problem. See qx bug #6293\n */\n __fixEllipsis : function()\n {\n if (!this.getContentElement()) {\n return;\n }\n if (qx.core.Environment.get(\"os.name\") == \"osx\" &&\n qx.core.Environment.get(\"engine.name\") == \"gecko\" &&\n parseInt(qx.core.Environment.get(\"engine.version\"), 10) < 16 &&\n parseInt(qx.core.Environment.get(\"engine.version\"), 10) > 9)\n {\n var domEl = this.getContentElement().getDomElement();\n if (domEl) {\n domEl.innerHTML = domEl.innerHTML;\n }\n }\n },\n\n\n\n /*\n ---------------------------------------------------------------------------\n PROPERTY APPLIER\n ---------------------------------------------------------------------------\n */\n\n // property apply\n _applyBuddy : function(value, old)\n {\n if (old != null)\n {\n this.removeRelatedBindings(old);\n this.removeListenerById(this.__tapListenerId);\n this.__tapListenerId = null;\n }\n\n if (value != null)\n {\n value.bind(\"enabled\", this, \"enabled\");\n this.__tapListenerId = this.addListener(\"tap\", function() {\n // only focus focusable elements [BUG #3555]\n if (value.isFocusable()) {\n value.focus.apply(value);\n }\n // furthermore toggle if possible [BUG #6881]\n if (\"toggleValue\" in value && typeof value.toggleValue === \"function\") {\n value.toggleValue();\n }\n }, this);\n }\n },\n\n\n // property apply\n _applyRich : function(value)\n {\n // Sync with content element\n this.getContentElement().setRich(value);\n\n // Mark text size cache as invalid\n this.__invalidContentSize = true;\n\n // Update layout\n qx.ui.core.queue.Layout.add(this);\n },\n\n\n // property apply\n _applyWrap : function(value, old)\n {\n if (value && !this.isRich())\n {\n if (qx.core.Environment.get(\"qx.debug\")) {\n this.warn(\"Only rich labels support wrap.\");\n }\n }\n\n if (this.isRich()) {\n // apply the white space style to the label to force it not\n // to wrap if wrap is set to false [BUG #3732]\n var whiteSpace = value ? \"normal\" : \"nowrap\";\n this.getContentElement().setStyle(\"whiteSpace\", whiteSpace);\n }\n },\n \n // property apply\n _applyBreakWithinWords : function(value, old) {\n if (this.isRich()) {\n this.getContentElement().setStyle(\"wordBreak\", value ? \"break-all\" : \"normal\");\n }\n },\n\n\n /**\n * Locale change event handler\n *\n * @signature function(e)\n * @param e {Event} the change event\n */\n _onChangeLocale : qx.core.Environment.select(\"qx.dynlocale\",\n {\n \"true\" : function(e)\n {\n var content = this.getValue();\n if (content && content.translate) {\n this.setValue(content.translate());\n }\n },\n\n \"false\" : null\n }),\n\n\n /**\n * Triggers layout recalculation after a web font was loaded\n *\n * @param ev {qx.event.type.Data} \"changeStatus\" event\n */\n _onWebFontStatusChange : function(ev)\n {\n if (ev.getData().valid === true) {\n\n // safari has trouble resizing, adding it again fixed the issue [BUG #8786]\n if (qx.core.Environment.get(\"browser.name\") == \"safari\" &&\n parseFloat(qx.core.Environment.get(\"browser.version\")) >= 8) {\n window.setTimeout(function() {\n this.__invalidContentSize = true;\n qx.ui.core.queue.Layout.add(this);\n }.bind(this), 0);\n }\n\n this.__invalidContentSize = true;\n qx.ui.core.queue.Layout.add(this);\n }\n },\n\n\n // property apply\n _applyValue : qx.core.Environment.select(\"qx.dynlocale\", {\n \"true\" : function(value, old)\n {\n // Sync with content element\n if (value && value.translate) {\n this.getContentElement().setValue(value.translate());\n }\n else {\n this.getContentElement().setValue(value);\n }\n\n // Mark text size cache as invalid\n this.__invalidContentSize = true;\n\n // Update layout\n qx.ui.core.queue.Layout.add(this);\n },\n\n \"false\" : function(value, old)\n {\n this.getContentElement().setValue(value);\n\n // Mark text size cache as invalid\n this.__invalidContentSize = true;\n\n // Update layout\n qx.ui.core.queue.Layout.add(this);\n }\n })\n },\n\n\n\n /*\n *****************************************************************************\n DESTRUCTOR\n *****************************************************************************\n */\n\n destruct : function()\n {\n if (qx.core.Environment.get(\"qx.dynlocale\")) {\n qx.locale.Manager.getInstance().removeListener(\"changeLocale\", this._onChangeLocale, this);\n }\n\n if (this.__font && this.__webfontListenerId) {\n this.__font.removeListenerById(this.__webfontListenerId);\n }\n\n this.__font = null;\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * A Label with low optical impact presenting as a simple weblink\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * const link = new osparc.ui.basic.LinkLabel(this.tr(\"oSparc\"),\"https://osparc.io\");\n * this.getRoot().add(link);\n *\n */\n\nqx.Class.define(\"osparc.ui.basic.LinkLabel\", {\n extend: qx.ui.basic.Label,\n\n construct: function(label, url) {\n this.base(arguments, label);\n\n this.set({\n rich: true,\n allowGrowX: true\n });\n\n if (url) {\n this.setUrl(url);\n }\n },\n\n properties: {\n url: {\n check: \"String\",\n nullable: true,\n apply: \"__applyUrl\"\n }\n },\n\n members: {\n __applyUrl: function(url) {\n if (url) {\n this.set({\n cursor: \"pointer\",\n font: \"link-label-12\",\n });\n this.addListener(\"click\", this.__onClick);\n } else {\n this.resetCursor();\n this.resetFont();\n }\n },\n\n __onClick: function() {\n const link = this.getUrl();\n if (link) {\n window.open(link);\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.store.VendorInfo\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n members: {\n __getFromStaticInfo: function(key, defaultValue) {\n const staticValue = osparc.store.StaticInfo.getInstance().getValue(key);\n if (staticValue) {\n return staticValue;\n }\n return defaultValue;\n },\n\n getSupportEmail: function() {\n return this.__getFromStaticInfo(\"supportEmail\", \"support@osparc.io\");\n },\n\n getVendor: function() {\n /*\n {\n \"name\": \"ACME\",\n \"copyright\": \"\\u00a9 ACME correcaminos\",\n \"url\": \"https://acme.com\",\n \"license_url\": \"http://docs.osparc.io/#/docs/support/license\"\n }\n */\n return this.__getFromStaticInfo(\"vendor\", {});\n },\n\n getManuals: function() {\n /*\n [{\n \"label\": \"main\",\n \"url\": \"doc.acme.com\"\n }]\n */\n return this.__getFromStaticInfo(\"manuals\", []);\n },\n\n getIssues: function() {\n /*\n [{\n \"label\": \"github\",\n \"login_url\": \"https://github.com/ITISFoundation/osparc-simcore\",\n \"new_url\": \"https://github.com/ITISFoundation/osparc-simcore/issues/new/choose\"\n }]\n */\n return this.__getFromStaticInfo(\"issues\", []);\n },\n\n getSupports: function() {\n /*\n [{\n \"kind\": \"forum\", // \"web\", \"email\", \"forum\"\n \"label\": \"forum\",\n \"url\": \"forum.acme.com\"\n }]\n */\n return this.__getFromStaticInfo(\"support\", []);\n }\n }\n});\n","\nqx.Class.define(\"osparc.store.Support\", {\n type: \"static\",\n\n statics: {\n getLicenseURL: function() {\n const vendor = osparc.store.VendorInfo.getInstance().getVendor();\n if (vendor) {\n if (\"license_url\" in vendor) {\n return vendor[\"license_url\"];\n } else if (\"url\" in vendor) {\n return vendor[\"url\"];\n }\n }\n return \"\";\n },\n\n getManuals: function() {\n return osparc.store.VendorInfo.getInstance().getManuals();\n },\n\n addQuickStartToMenu: function(menu) {\n const quickStart = osparc.product.quickStart.Utils.getQuickStart();\n if (quickStart) {\n const qsButton = new qx.ui.menu.Button(qx.locale.Manager.tr(\"Quick Start\"), \"@FontAwesome5Solid/graduation-cap/14\");\n qsButton.getChildControl(\"label\").set({\n rich: true\n });\n qsButton.addListener(\"execute\", () => {\n const tutorialWindow = quickStart.tutorial();\n tutorialWindow.center();\n tutorialWindow.open();\n });\n menu.add(qsButton);\n }\n },\n\n addGuidedToursToMenu: function(menu) {\n const guidedToursButton = new qx.ui.menu.Button(qx.locale.Manager.tr(\"Guided Tours\"), \"@FontAwesome5Solid/graduation-cap/14\");\n guidedToursButton.exclude();\n menu.add(guidedToursButton);\n const fetchTours = osparc.product.tours.Tours.getTours();\n if (fetchTours) {\n fetchTours\n .then(tours => {\n if (tours) {\n guidedToursButton.show();\n guidedToursButton.addListener(\"execute\", () => {\n const toursManager = new osparc.tours.Manager();\n toursManager.setTours(tours);\n toursManager.start();\n });\n }\n });\n }\n },\n\n addManualButtonsToMenu: function(menu, menuButton) {\n const manuals = osparc.store.Support.getManuals();\n if (menuButton) {\n menuButton.setVisibility(manuals && manuals.length ? \"visible\" : \"excluded\");\n }\n manuals.forEach(manual => {\n const manualBtn = new qx.ui.menu.Button(manual.label, \"@FontAwesome5Solid/book/14\");\n manualBtn.getChildControl(\"label\").set({\n rich: true\n });\n manualBtn.addListener(\"execute\", () => window.open(manual.url), this);\n menu.add(manualBtn);\n });\n },\n\n addSupportButtonsToMenu: function(menu, menuButton) {\n const issues = osparc.store.VendorInfo.getInstance().getIssues();\n const supports = osparc.store.VendorInfo.getInstance().getSupports();\n if (menuButton) {\n menuButton.setVisibility(issues.length || supports.length ? \"visible\" : \"excluded\");\n }\n issues.forEach(issueInfo => {\n const label = issueInfo[\"label\"];\n const issueButton = new qx.ui.menu.Button(label, \"@FontAwesome5Solid/comments/14\");\n issueButton.getChildControl(\"label\").set({\n rich: true\n });\n issueButton.addListener(\"execute\", () => {\n const issueConfirmationWindow = new osparc.ui.window.Dialog(label + \" \" + qx.locale.Manager.tr(\"Information\"), null,\n qx.locale.Manager.tr(\"To create an issue, you must have an account and be already logged-in.\")\n );\n const contBtn = new qx.ui.form.Button(qx.locale.Manager.tr(\"Continue\"), \"@FontAwesome5Solid/external-link-alt/14\");\n contBtn.addListener(\"execute\", () => {\n window.open(issueInfo[\"new_url\"]);\n issueConfirmationWindow.close();\n }, this);\n const loginBtn = new qx.ui.form.Button(qx.locale.Manager.tr(\"Log in in \") + label, \"@FontAwesome5Solid/external-link-alt/14\");\n loginBtn.addListener(\"execute\", () => window.open(issueInfo[\"login_url\"]), this);\n issueConfirmationWindow.addButton(contBtn);\n issueConfirmationWindow.addButton(loginBtn);\n issueConfirmationWindow.addCancelButton();\n issueConfirmationWindow.open();\n }, this);\n menu.add(issueButton);\n });\n\n if (issues.length && supports.length) {\n menu.addSeparator();\n }\n\n supports.forEach(supportInfo => {\n const supportBtn = new qx.ui.menu.Button(supportInfo[\"label\"]);\n supportBtn.getChildControl(\"label\").set({\n rich: true\n });\n let icon = null;\n let cb = null;\n switch (supportInfo[\"kind\"]) {\n case \"web\":\n icon = \"@FontAwesome5Solid/link/14\";\n cb = () => window.open(supportInfo[\"url\"]);\n break;\n case \"forum\":\n icon = \"@FontAwesome5Solid/comments/14\";\n cb = () => window.open(supportInfo[\"url\"]);\n break;\n case \"email\":\n icon = \"@FontAwesome5Solid/envelope/14\";\n cb = () => this.__openSendEmailFeedbackDialog(supportInfo[\"email\"]);\n break;\n }\n supportBtn.setIcon(icon);\n supportBtn.addListener(\"execute\", () => cb(), this);\n menu.add(supportBtn);\n });\n },\n\n addReleaseNotesToMenu: function(menu) {\n const releaseTag = osparc.utils.Utils.getReleaseTag();\n const releaseLink = osparc.utils.Utils.getReleaseLink();\n const releaseBtn = new qx.ui.menu.Button(qx.locale.Manager.tr(\"Release Notes\") + \" \" + releaseTag, \"@FontAwesome5Solid/book/14\");\n releaseBtn.addListener(\"execute\", () => window.open(releaseLink), this);\n menu.add(releaseBtn);\n },\n\n mailToLink: function(email, subject, centered = true) {\n const color = qx.theme.manager.Color.getInstance().resolve(\"text\");\n let textLink = `${email}`;\n if (centered) {\n textLink = `
transparent
keyword.\n */\n EXTENDED :\n {\n transparent : [ -1, -1, -1 ],\n aliceblue : [ 240, 248, 255 ],\n antiquewhite : [ 250, 235, 215 ],\n aqua : [ 0, 255, 255 ],\n aquamarine : [ 127, 255, 212 ],\n azure : [ 240, 255, 255 ],\n beige : [ 245, 245, 220 ],\n bisque : [ 255, 228, 196 ],\n black : [ 0, 0, 0 ],\n blanchedalmond : [ 255, 235, 205 ],\n blue : [ 0, 0, 255 ],\n blueviolet : [ 138, 43, 226 ],\n brown : [ 165, 42, 42 ],\n burlywood : [ 222, 184, 135 ],\n cadetblue : [ 95, 158, 160 ],\n chartreuse : [ 127, 255, 0 ],\n chocolate : [ 210, 105, 30 ],\n coral : [ 255, 127, 80 ],\n cornflowerblue : [ 100, 149, 237 ],\n cornsilk : [ 255, 248, 220 ],\n crimson : [ 220, 20, 60 ],\n cyan : [ 0, 255, 255 ],\n darkblue : [ 0, 0, 139 ],\n darkcyan : [ 0, 139, 139 ],\n darkgoldenrod : [ 184, 134, 11 ],\n darkgray : [ 169, 169, 169 ],\n darkgreen : [ 0, 100, 0 ],\n darkgrey : [ 169, 169, 169 ],\n darkkhaki : [ 189, 183, 107 ],\n darkmagenta : [ 139, 0, 139 ],\n darkolivegreen : [ 85, 107, 47 ],\n darkorange : [ 255, 140, 0 ],\n darkorchid : [ 153, 50, 204 ],\n darkred : [ 139, 0, 0 ],\n darksalmon : [ 233, 150, 122 ],\n darkseagreen : [ 143, 188, 143 ],\n darkslateblue : [ 72, 61, 139 ],\n darkslategray : [ 47, 79, 79 ],\n darkslategrey : [ 47, 79, 79 ],\n darkturquoise : [ 0, 206, 209 ],\n darkviolet : [ 148, 0, 211 ],\n deeppink : [ 255, 20, 147 ],\n deepskyblue : [ 0, 191, 255 ],\n dimgray : [ 105, 105, 105 ],\n dimgrey : [ 105, 105, 105 ],\n dodgerblue : [ 30, 144, 255 ],\n firebrick : [ 178, 34, 34 ],\n floralwhite : [ 255, 250, 240 ],\n forestgreen : [ 34, 139, 34 ],\n fuchsia : [ 255, 0, 255 ],\n gainsboro : [ 220, 220, 220 ],\n ghostwhite : [ 248, 248, 255 ],\n gold : [ 255, 215, 0 ],\n goldenrod : [ 218, 165, 32 ],\n gray : [ 128, 128, 128 ],\n green : [ 0, 128, 0 ],\n greenyellow : [ 173, 255, 47 ],\n grey : [ 128, 128, 128 ],\n honeydew : [ 240, 255, 240 ],\n hotpink : [ 255, 105, 180 ],\n indianred : [ 205, 92, 92 ],\n indigo : [ 75, 0, 130 ],\n ivory : [ 255, 255, 240 ],\n khaki : [ 240, 230, 140 ],\n lavender : [ 230, 230, 250 ],\n lavenderblush : [ 255, 240, 245 ],\n lawngreen : [ 124, 252, 0 ],\n lemonchiffon : [ 255, 250, 205 ],\n lightblue : [ 173, 216, 230 ],\n lightcoral : [ 240, 128, 128 ],\n lightcyan : [ 224, 255, 255 ],\n lightgoldenrodyellow : [ 250, 250, 210 ],\n lightgray : [ 211, 211, 211 ],\n lightgreen : [ 144, 238, 144 ],\n lightgrey : [ 211, 211, 211 ],\n lightpink : [ 255, 182, 193 ],\n lightsalmon : [ 255, 160, 122 ],\n lightseagreen : [ 32, 178, 170 ],\n lightskyblue : [ 135, 206, 250 ],\n lightslategray : [ 119, 136, 153 ],\n lightslategrey : [ 119, 136, 153 ],\n lightsteelblue : [ 176, 196, 222 ],\n lightyellow : [ 255, 255, 224 ],\n lime : [ 0, 255, 0 ],\n limegreen : [ 50, 205, 50 ],\n linen : [ 250, 240, 230 ],\n magenta : [ 255, 0, 255 ],\n maroon : [ 128, 0, 0 ],\n mediumaquamarine : [ 102, 205, 170 ],\n mediumblue : [ 0, 0, 205 ],\n mediumorchid : [ 186, 85, 211 ],\n mediumpurple : [ 147, 112, 219 ],\n mediumseagreen : [ 60, 179, 113 ],\n mediumslateblue : [ 123, 104, 238 ],\n mediumspringgreen : [ 0, 250, 154 ],\n mediumturquoise : [ 72, 209, 204 ],\n mediumvioletred : [ 199, 21, 133 ],\n midnightblue : [ 25, 25, 112 ],\n mintcream : [ 245, 255, 250 ],\n mistyrose : [ 255, 228, 225 ],\n moccasin : [ 255, 228, 181 ],\n navajowhite : [ 255, 222, 173 ],\n navy : [ 0, 0, 128 ],\n oldlace : [ 253, 245, 230 ],\n olive : [ 128, 128, 0 ],\n olivedrab : [ 107, 142, 35 ],\n orange : [ 255, 165, 0 ],\n orangered : [ 255, 69, 0 ],\n orchid : [ 218, 112, 214 ],\n palegoldenrod : [ 238, 232, 170 ],\n palegreen : [ 152, 251, 152 ],\n paleturquoise : [ 175, 238, 238 ],\n palevioletred : [ 219, 112, 147 ],\n papayawhip : [ 255, 239, 213 ],\n peachpuff : [ 255, 218, 185 ],\n peru : [ 205, 133, 63 ],\n pink : [ 255, 192, 203 ],\n plum : [ 221, 160, 221 ],\n powderblue : [ 176, 224, 230 ],\n purple : [ 128, 0, 128 ],\n red : [ 255, 0, 0 ],\n rosybrown : [ 188, 143, 143 ],\n royalblue : [ 65, 105, 225 ],\n saddlebrown : [ 139, 69, 19 ],\n salmon : [ 250, 128, 114 ],\n sandybrown : [ 244, 164, 96 ],\n seagreen : [ 46, 139, 87 ],\n seashell : [ 255, 245, 238 ],\n sienna : [ 160, 82, 45 ],\n silver : [ 192, 192, 192 ],\n skyblue : [ 135, 206, 235 ],\n slateblue : [ 106, 90, 205 ],\n slategray : [ 112, 128, 144 ],\n slategrey : [ 112, 128, 144 ],\n snow : [ 255, 250, 250 ],\n springgreen : [ 0, 255, 127 ],\n steelblue : [ 70, 130, 180 ],\n tan : [ 210, 180, 140 ],\n teal : [ 0, 128, 128 ],\n thistle : [ 216, 191, 216 ],\n tomato : [ 255, 99, 71 ],\n turquoise : [ 64, 224, 208 ],\n violet : [ 238, 130, 238 ],\n wheat : [ 245, 222, 179 ],\n white : [ 255, 255, 255 ],\n whitesmoke : [ 245, 245, 245 ],\n yellow : [ 255, 255, 0 ],\n yellowgreen : [ 154, 205, 50 ]\n },\n\n\n /**\n * Whether the incoming value is an extended named color.\n *\n * @param value {String} the color value to test\n * @return {Boolean} true if the color is an extended named color\n */\n isExtendedColor : function(value) {\n return this.EXTENDED[value] !== undefined;\n },\n\n\n /**\n * Converts an extended color to the RGB value\n *\n * @param value {String} The incoming string\n * @return {Array} the resulting RGB array\n */\n toRgb : function(value)\n {\n var ret = this.EXTENDED[value];\n\n if (ret) {\n return ret;\n }\n\n throw new Error(\"Could not convert other than extended colors to RGB: \" + value);\n },\n\n /**\n * Converts an extended color to a CSS RGB string\n *\n * @param value {String} The incoming string\n * @return {String} the resulting RGB string\n */\n toRgbString : function(value)\n {\n return qx.util.ColorUtil.rgbToRgbString(this.toRgb(value));\n }\n\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Singleton class that is used as entrypoint to the webserver.\n *\n * All data transfer communication goes through the osparc.store.Store.\n */\n\nqx.Class.define(\"osparc.store.Data\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n construct: function() {\n this.resetCache();\n\n this.getLocations();\n },\n\n events: {\n \"fileCopied\": \"qx.event.type.Data\",\n },\n\n members: {\n __locationsCached: null,\n __datasetsByLocationCached: null,\n __filesByLocationAndDatasetCached: null,\n\n resetCache: function() {\n this.__locationsCached = [];\n this.__datasetsByLocationCached = {};\n this.__filesByLocationAndDatasetCached = {};\n\n osparc.store.Store.getInstance().reset(\"storageLocations\");\n },\n\n getLocationsCached: function() {\n const cache = this.__locationsCached;\n if (cache && cache.length) {\n return cache;\n }\n return null;\n },\n\n getLocations: function() {\n return new Promise((resolve, reject) => {\n const cachedData = this.getLocationsCached();\n if (cachedData) {\n resolve(cachedData);\n } else {\n // Get available storage locations\n osparc.data.Resources.get(\"storageLocations\")\n .then(locations => {\n // Add them to cache\n this.__locationsCached = locations;\n resolve(locations);\n })\n .catch(err => {\n console.error(err);\n reject([]);\n });\n }\n });\n },\n\n getDatasetsByLocationCached: function(locationId) {\n const cache = this.__datasetsByLocationCached;\n if (locationId in cache && cache[locationId] && cache[locationId].length) {\n const data = {\n location: locationId,\n datasets: cache[locationId]\n };\n return data;\n }\n return null;\n },\n\n getDatasetsByLocation: function(locationId) {\n const emptyData = {\n location: locationId,\n datasets: []\n };\n return new Promise((resolve, reject) => {\n // Get list of datasets\n if (locationId === 1 && !osparc.data.Permissions.getInstance().canDo(\"storage.datcore.read\")) {\n reject(emptyData);\n }\n\n const cachedData = this.getDatasetsByLocationCached(locationId);\n if (cachedData) {\n resolve(cachedData);\n } else {\n const params = {\n url: {\n locationId\n }\n };\n osparc.data.Resources.fetch(\"storageDatasets\", \"getByLocation\", params)\n .then(datasets => {\n const data = {\n location: locationId,\n datasets: []\n };\n if (datasets && datasets.length>0) {\n data.datasets = datasets;\n }\n // Add it to cache\n this.__datasetsByLocationCached[locationId] = data.datasets;\n resolve(data);\n })\n .catch(err => {\n console.error(err);\n reject(emptyData);\n });\n }\n });\n },\n\n getFilesByLocationAndDatasetCached: function(locationId, datasetId) {\n const cache = this.__filesByLocationAndDatasetCached;\n if (locationId in cache && datasetId in cache[locationId]) {\n const data = {\n location: locationId,\n dataset: datasetId,\n files: cache[locationId][datasetId]\n };\n return data;\n }\n return null;\n },\n\n getFilesByLocationAndDataset: function(locationId, datasetId) {\n const emptyData = {\n location: locationId,\n dataset: datasetId,\n files: []\n };\n return new Promise((resolve, reject) => {\n // Get list of file meta data\n if (locationId === 1 && !osparc.data.Permissions.getInstance().canDo(\"storage.datcore.read\")) {\n reject(emptyData);\n }\n\n const cachedData = this.getFilesByLocationAndDatasetCached(locationId, datasetId);\n if (cachedData) {\n resolve(cachedData);\n } else {\n const params = {\n url: {\n locationId,\n datasetId\n }\n };\n osparc.data.Resources.fetch(\"storageFiles\", \"getByLocationAndDataset\", params)\n .then(files => {\n const data = {\n location: locationId,\n dataset: datasetId,\n files: files && files.length>0 ? files : []\n };\n // Add it to cache\n if (!(locationId in this.__filesByLocationAndDatasetCached)) {\n this.__filesByLocationAndDatasetCached[locationId] = {};\n }\n this.__filesByLocationAndDatasetCached[locationId][datasetId] = data.files;\n resolve(data);\n })\n .catch(err => {\n console.error(err);\n reject(emptyData);\n });\n }\n });\n },\n\n getNodeFiles: function(nodeId) {\n return new Promise((resolve, reject) => {\n const params = {\n url: {\n nodeId: encodeURIComponent(nodeId)\n }\n };\n osparc.data.Resources.fetch(\"storageFiles\", \"getByNode\", params)\n .then(files => {\n console.log(\"Node Files\", files);\n if (files && files.length>0) {\n resolve(files);\n } else {\n resolve([]);\n }\n })\n .catch(err => {\n console.error(err);\n reject([]);\n });\n });\n },\n\n getPresignedLink: function(download = true, locationId, fileUuid, fileSize) {\n return new Promise((resolve, reject) => {\n if (download && !osparc.data.Permissions.getInstance().canDo(\"study.node.data.pull\", true)) {\n reject();\n }\n if (!download && !osparc.data.Permissions.getInstance().canDo(\"study.node.data.push\", true)) {\n reject();\n }\n\n // GET: Returns download link for requested file\n // PUT: Returns upload object link(s)\n const params = {\n url: {\n locationId,\n fileUuid: encodeURIComponent(fileUuid)\n }\n };\n if (!download && fileSize) {\n params.url[\"fileSize\"] = fileSize;\n }\n osparc.data.Resources.fetch(\"storageLink\", download ? \"getOne\" : \"put\", params)\n .then(data => {\n const presignedLinkData = {\n resp: data,\n locationId,\n fileUuid,\n fileSize\n };\n resolve(presignedLinkData);\n })\n .catch(err => {\n console.error(err);\n reject(err);\n });\n });\n },\n\n copyFile: function(fromLoc, fileUuid, toLoc, pathId) {\n if (!osparc.data.Permissions.getInstance().canDo(\"study.node.data.push\", true)) {\n return false;\n }\n\n // \"/v0/locations/1/files/{}?user_id={}&extra_location={}&extra_source={}\".format(quote(datcore_uuid, safe=''),\n let fileName = fileUuid.split(\"/\");\n fileName = fileName[fileName.length-1];\n\n const params = {\n url: {\n toLoc,\n fileName: encodeURIComponent(pathId + \"/\" + fileName),\n fromLoc,\n fileUuid: encodeURIComponent(fileUuid)\n }\n };\n osparc.data.Resources.fetch(\"storageFiles\", \"put\", params)\n .then(files => {\n const data = {\n data: files,\n locationId: toLoc,\n fileUuid: pathId + \"/\" + fileName\n };\n this.fireDataEvent(\"fileCopied\", data);\n })\n .catch(err => {\n console.error(err);\n console.error(\"Failed copying file\", fileUuid, \"to\", pathId);\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Failed copying file\"), \"ERROR\");\n this.fireDataEvent(\"fileCopied\", null);\n });\n\n return true;\n },\n\n // if folder path is provided as fileUuid, it can also be deleted\n deleteFile: function(locationId, fileUuid) {\n if (!osparc.data.Permissions.getInstance().canDo(\"study.node.data.delete\", true)) {\n return null;\n }\n\n // Deletes File\n const params = {\n url: {\n locationId,\n fileUuid: encodeURIComponent(fileUuid)\n }\n };\n return osparc.data.Resources.fetch(\"storageFiles\", \"delete\", params)\n .then(files => {\n const data = {\n data: files,\n locationId: locationId,\n fileUuid: fileUuid\n };\n return data;\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Failed deleting file\"), \"ERROR\");\n });\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2016 Visionet GmbH, http://www.visionet.de\n 2016 OETIKER+PARTNER AG, https://www.oetiker.ch\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Dietrich Streifert (level420)\n * Tobias Oetiker (oetiker)\n\n************************************************************************ */\n\n\n/**\n * Dynamically load non qx scripts. This class is aware of all scripts that have\n * been loaded using its instances, so if two instances load jquery, it will only\n * be loaded once, and the second instance will wait for the jquery to be loaded\n * before continuing to load additional scripts.\n *\n * Usage example:\n *\n * \n * ... assets ...\n * /**\n * * @asset(myapp/jquery/*)\n * * @asset(myapp/highcharts/*)\n * *\n * * @ignore(jQuery.*)\n * * @ignore(Highcharts.*)\n * ...\n *\n *\n * // in debug mode load the uncompressed unobfuscated scripts\n * var src = '';\n * var min = '.min';\n * if (qx.core.Environment.get(\"qx.debug\")) {\n * src = '.src';\n * min = '';\n * }\n *\n * // initialize the script loading\n * var dynLoader = new qx.util.DynamicScriptLoader([\n * \"myapp/jquery/jquery\"+min+\".js\",\n * \"myapp/highcharts/highcharts\"+src+\".js\",\n * \"myapp/highcharts/highcharts-more\"+src+\".js\",\n * \"myapp/highcharts/highcharts-modifications.js\"\n * ]);\n *\n *\n * dynLoader.addListenerOnce('ready',function(e){\n * console.log(\"all scripts have been loaded!\");\n * });\n *\n * dynLoader.addListener('failed',function(e){\n * var data = e.getData();\n * console.log(\"failed to load \"+data.script);\n * });\n *\n * dynLoader.start();\n * \n *\n */\nqx.Class.define(\"qx.util.DynamicScriptLoader\", {\n extend: qx.core.Object,\n\n /**\n * Create a loader for the given scripts.\n *\n * @param scriptArr {Array|String} the uri name(s) of the script(s) to load \n */\n\n construct: function (scriptArr) {\n this.base(arguments);\n this.__started = false;\n this.__QUEUE = (qx.lang.Type.isString(scriptArr)\n ? [ scriptArr ]\n : qx.lang.Array.clone(scriptArr));\n },\n\n /*\n *****************************************************************************\n EVENTS\n *****************************************************************************\n */\n\n events: {\n /**\n * fired when a script is loaded successfully. The data contains 'script' and 'status' keys.\n */\n loaded: 'qx.event.type.Data',\n\n /**\n * fired when a specific script fails loading. The data contains 'script' and 'status' keys.\n */\n failed: 'qx.event.type.Data',\n\n /**\n * fired when all given scripts are loaded, each time loadScriptsDynamic is called.\n */\n ready: 'qx.event.type.Event'\n },\n\n statics: {\n /**\n * Map of scripts being added at the present time. Key is script name; value is instance of this class which\n * is loading it.\n */\n __IN_PROGRESS: {},\n /**\n * Map of scripts that have fully loaded. Key is script name; value is true\n */\n __LOADED: {}\n },\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n\n members: {\n\n /**\n * Array of the scripts to be loaded\n */\n __QUEUE: null,\n\n /**\n * True if start has been called.\n */\n __started: null,\n\n\n\n /**\n * Start loading scripts. This may only be called once!\n * @return {Promise?} a promise which will be resolved after load of all scripts if promise support is enabled; nothing (undefined) if promises are not enabled.\n */\n start: qx.core.Environment.select('qx.promise', {\n \"true\": function() {\n return new qx.Promise(function (resolve, reject) {\n this.addListenerOnce(\"ready\", resolve, this);\n this.addListenerOnce(\"failed\", function (e) {\n reject(new Error(e.getData()));\n }, this);\n if (this.isDisposed()) {\n reject(new Error('disposed'));\n }\n if (this.__started) {\n reject(new Error('you can only call start once per instance'));\n }\n this.__started = true;\n this.__loadScripts();\n }, this);\n },\n \"false\": function () {\n if (this.isDisposed()) {\n return;\n }\n if (this.__started) {\n throw new Error('you can only call start once per instance');\n }\n this.__started = true;\n this.__loadScripts();\n }\n }),\n\n\n /**\n * Chain loading scripts.\n *\n * Recursively called until the array of scripts is consumed\n *\n */\n __loadScripts: function () {\n var DynamicScriptLoader = qx.util.DynamicScriptLoader;\n var script;\n var dynLoader;\n var id1, id2;\n var uri;\n var loader;\n\n script = this.__QUEUE.shift();\n if (!script){\n this.fireEvent(\"ready\")\n return;\n }\n\n if (DynamicScriptLoader.__LOADED[script]){\n this.fireDataEvent('loaded',{\n script: script,\n status: 'preloaded'\n });\n this.__loadScripts();\n return;\n } \n\n dynLoader = DynamicScriptLoader.__IN_PROGRESS[script];\n if (dynLoader){\n\n id1 = dynLoader.addListener('loaded',function (e) {\n if (this.isDisposed()) {\n return;\n }\n var data = e.getData();\n if (data.script === script){\n dynLoader.removeListenerById(id2);\n dynLoader.removeListenerById(id1);\n this.fireDataEvent('loaded',data);\n this.__loadScripts();\n }\n },this);\n\n id2 = dynLoader.addListener('failed',function (e) {\n if (this.isDisposed()) {\n return;\n }\n var data = e.getData();\n dynLoader.removeListenerById(id1);\n dynLoader.removeListenerById(id2); \n this.fireDataEvent('failed',{\n script: script,\n status: 'loading of ' + data.script + ' failed while waiting for ' + script\n });\n },this);\n\n return;\n }\n\n uri = qx.util.ResourceManager.getInstance().toUri(script);\n\n loader = new qx.bom.request.Script();\n\n loader.on(\"load\", function(request) {\n if (this.isDisposed()) {\n return;\n }\n DynamicScriptLoader.__LOADED[script] = true;\n delete DynamicScriptLoader.__IN_PROGRESS[script];\n this.fireDataEvent('loaded', {\n script: script,\n status: request.status\n });\n this.__loadScripts();\n },this);\n\n var onError = function(request) {\n if (this.isDisposed()) {\n return;\n }\n delete DynamicScriptLoader.__IN_PROGRESS[script];\n this.fireDataEvent('failed', {\n script: script,\n status: request.status\n });\n };\n\n loader.on(\"error\", onError,this);\n loader.on(\"timeout\", onError,this);\n\n // this.debug(\"Loading \" + script + \" started\");\n loader.open(\"GET\", uri);\n DynamicScriptLoader.__IN_PROGRESS[script] = this;\n loader.send();\n }\n },\n destruct : function() {\n var DynamicScriptLoader = qx.util.DynamicScriptLoader;\n for (var key in DynamicScriptLoader.__IN_PROGRESS){\n if (DynamicScriptLoader.__IN_PROGRESS[key] === this) {\n delete DynamicScriptLoader.__IN_PROGRESS[key];\n }\n }\n this.__QUEUE = undefined;\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.announcement.AnnouncementUIFactory\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n events: {\n \"changeAnnouncements\": \"qx.event.type.Event\",\n },\n\n statics: {\n createLoginAnnouncement: function(title, description) {\n const loginAnnouncement = new qx.ui.container.Composite(new qx.ui.layout.VBox(5)).set({\n backgroundColor: \"strong-main\",\n alignX: \"center\",\n padding: 12,\n allowGrowX: true,\n maxWidth: osparc.auth.core.BaseAuthPage.FORM_WIDTH,\n decorator: \"rounded\",\n });\n\n if (title) {\n const titleLabel = new qx.ui.basic.Label().set({\n value: title,\n font: \"text-16\",\n alignX: \"center\",\n textAlign: \"center\",\n rich: true\n });\n loginAnnouncement.add(titleLabel);\n }\n\n if (description) {\n const descriptionLabel = new qx.ui.basic.Label().set({\n value: description,\n font: \"text-14\",\n alignX: \"center\",\n textAlign: \"center\",\n rich: true\n });\n loginAnnouncement.add(descriptionLabel);\n }\n\n return loginAnnouncement;\n },\n\n isValid: function(announcement, widgetType) {\n if (announcement) {\n const now = new Date();\n const validPeriod = now > announcement.getStart() && now < announcement.getEnd();\n const validProduct = announcement.getProducts().includes(osparc.product.Utils.getProductName());\n const validWidgetType = widgetType ? announcement.getWidgets().includes(widgetType) : true;\n return validPeriod && validProduct && validWidgetType;\n }\n return false;\n },\n },\n\n members: {\n __announcements: null,\n __ribbonAnnouncements: null,\n\n setAnnouncementsData: function(announcementsData) {\n this.__announcements = [];\n announcementsData.forEach(announcementData => {\n const announcement = new osparc.announcement.Announcement(announcementData);\n this.__announcements.push(announcement);\n });\n this.fireEvent(\"changeAnnouncements\");\n\n this.__addToRibbon();\n },\n\n __addToRibbon: function() {\n if (this.__ribbonAnnouncements && this.__ribbonAnnouncements.length) {\n this.__ribbonAnnouncements.forEach(ribbonAnnouncement => {\n osparc.notification.RibbonNotifications.getInstance().removeNotification(ribbonAnnouncement);\n });\n }\n this.__ribbonAnnouncements = [];\n this.__announcements.forEach(announcement => {\n if (this.self().isValid(announcement, \"ribbon\")) {\n const ribbonAnnouncement = this.__addRibbonAnnouncement(announcement);\n if (ribbonAnnouncement) {\n this.__ribbonAnnouncements.push(ribbonAnnouncement);\n }\n }\n });\n },\n\n hasLoginAnnouncement: function() {\n return this.__announcements && this.__announcements.some(announcement => this.self().isValid(announcement, \"login\"));\n },\n\n hasUserMenuAnnouncement: function() {\n return this.__announcements && this.__announcements.some(announcement => this.self().isValid(announcement, \"ribbon\") && announcement.getLink());\n },\n\n createLoginAnnouncements: function() {\n const loginAnnouncements = [];\n this.__announcements.forEach(announcement => {\n if (this.self().isValid(announcement, \"login\")) {\n const loginAnnouncement = this.self().createLoginAnnouncement(announcement.getTitle(), announcement.getDescription())\n loginAnnouncement.setWidth(osparc.auth.core.BaseAuthPage.FORM_WIDTH-5); // show 1-2 pixel of the nearby announcement\n loginAnnouncements.push(loginAnnouncement);\n }\n });\n if (loginAnnouncements.length === 1) {\n return loginAnnouncements[0];\n }\n const slideBar = new osparc.widget.SlideBar().set({\n allowGrowX: true,\n });\n slideBar.getChildControl(\"button-backward\").set({\n backgroundColor: \"transparent\"\n });\n slideBar.getChildControl(\"button-forward\").set({\n backgroundColor: \"transparent\"\n });\n loginAnnouncements.forEach(loginAnnouncement => slideBar.add(loginAnnouncement));\n return slideBar;\n },\n\n __addRibbonAnnouncement: function(announcement) {\n if (osparc.utils.Utils.localCache.isDontShowAnnouncement(announcement.getId())) {\n return null;\n }\n\n let text = \"\";\n if (announcement.getTitle()) {\n text += announcement.getTitle();\n }\n if (announcement.getTitle() && announcement.getDescription()) {\n text += \": \";\n }\n if (announcement.getDescription()) {\n text += announcement.getDescription();\n }\n const ribbonAnnouncement = new osparc.notification.RibbonNotification(text, \"announcement\", true);\n ribbonAnnouncement.announcementId = announcement.getId();\n osparc.notification.RibbonNotifications.getInstance().addNotification(ribbonAnnouncement);\n return ribbonAnnouncement;\n },\n\n createUserMenuAnnouncements: function() {\n const userMenuAnnouncements = [];\n this.__announcements.forEach(announcement => {\n if (this.self().isValid(announcement, \"user-menu\")) {\n const link = announcement.getLink();\n const userMenuAnnouncement = new qx.ui.menu.Button(announcement.getTitle() + \"...\");\n userMenuAnnouncement.addListener(\"execute\", () => window.open(link));\n userMenuAnnouncements.push(userMenuAnnouncement);\n }\n });\n return userMenuAnnouncements;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.notification.RibbonNotification\", {\n extend: qx.core.Object,\n\n construct: function(text, type = \"maintenance\", closable = false) {\n this.base(arguments);\n\n if (text) {\n this.setText(text);\n }\n\n this.setType(type);\n this.setClosable(closable);\n },\n\n properties: {\n type: {\n check: [\"maintenance\", \"smallWindow\", \"announcement\"],\n init: null,\n nullable: false\n },\n\n text: {\n check: \"String\",\n init: \"\",\n nullable: false\n },\n\n closable: {\n check: \"Boolean\",\n init: true,\n nullable: false\n }\n },\n\n members: {\n getFullText: function(wLineBreak = false) {\n let fullText = \"\";\n switch (this.getType()) {\n case \"maintenance\": {\n fullText += qx.locale.Manager.tr(\"Maintenance scheduled.\");\n fullText += wLineBreak ? \"
+
or -
character.\n * Examples: Alt+F1, Control+C, Control+Alt+Delete\n */\n construct : function(shortcut)\n {\n this.base(arguments);\n this._shortcut = new qx.bom.Shortcut(shortcut);\n this._shortcut.addListener(\"execute\", this.execute, this);\n\n if (shortcut !== undefined) {\n this.setShortcut(shortcut);\n }\n },\n\n\n events :\n {\n /**\n * Fired when the command is executed. Sets the \"data\" property of the\n * event to the object that issued the command.\n */\n \"execute\" : \"qx.event.type.Data\"\n },\n\n\n properties :\n {\n /** Whether the command should be activated. If 'false' execute event\n * wouldn't fire. This property will be used by command groups when\n * activating/deactivating all commands of the group.*/\n active :\n {\n init : true,\n check : \"Boolean\",\n event : \"changeActive\",\n apply : \"_applyActive\"\n },\n\n\n /** Whether the command should be respected/enabled. If 'false' execute event\n * wouldn't fire. If value of property {@link qx.ui.command.Command#active}\n * is 'false', enabled value can be set but has no effect until\n * {@link qx.ui.command.Command#active} will be set to 'true'.*/\n enabled :\n {\n init : true,\n check : \"Boolean\",\n event : \"changeEnabled\",\n apply : \"_applyEnabled\"\n },\n\n\n /** The command shortcut as a string */\n shortcut :\n {\n check : \"String\",\n apply : \"_applyShortcut\",\n nullable : true\n },\n\n\n /** The label, which will be set in all connected widgets (if available) */\n label :\n {\n check : \"String\",\n nullable : true,\n event : \"changeLabel\"\n },\n\n\n /** The icon, which will be set in all connected widgets (if available) */\n icon :\n {\n check : \"String\",\n nullable : true,\n event : \"changeIcon\"\n },\n\n\n /**\n * The tooltip text, which will be set in all connected\n * widgets (if available)\n */\n toolTipText :\n {\n check : \"String\",\n nullable : true,\n event : \"changeToolTipText\"\n },\n\n\n /** The value of the connected widgets */\n value :\n {\n nullable : true,\n event : \"changeValue\"\n },\n\n\n /** The menu, which will be set in all connected widgets (if available) */\n menu :\n {\n check : \"qx.ui.menu.Menu\",\n nullable : true,\n event : \"changeMenu\"\n }\n },\n\n\n members :\n {\n _shortcut : null,\n\n\n // property apply\n _applyActive : function(value)\n {\n if (value === false) {\n this._shortcut.setEnabled(false);\n } else {\n // synchronize value with current \"enabled\" value of this command\n this._shortcut.setEnabled(this.getEnabled());\n }\n },\n\n\n // property apply\n _applyEnabled : function(value)\n {\n if (this.getActive()) {\n this._shortcut.setEnabled(value);\n }\n },\n\n\n // property apply\n _applyShortcut : function(value) {\n this._shortcut.setShortcut(value);\n },\n\n\n /**\n * Fire the \"execute\" event on this command. If property\n * active
and enabled
set to\n * true
.\n * @param target {Object?} Object which issued the execute event\n */\n execute : function(target)\n {\n if (this.getActive() && this.getEnabled()) {\n this.fireDataEvent(\"execute\", target);\n }\n },\n\n\n /**\n * Returns the used shortcut as string using the currently selected locale.\n *\n * @return {String} shortcut\n */\n toString : function()\n {\n if (this._shortcut) {\n return this._shortcut.toString();\n }\n return this.base(arguments);\n }\n },\n\n\n destruct : function()\n {\n this._shortcut.removeListener(\"execute\", this.execute, this);\n this._disposeObjects(\"_shortcut\");\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2019 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * A singleton window is a type of window that can only have one instance.\n */\nqx.Class.define(\"osparc.ui.window.SingletonWindow\", {\n extend: osparc.ui.window.Window,\n\n construct: function(id, caption, icon) {\n this.setId(id);\n const singletonWindows = qx.core.Init.getApplication().getRoot()\n .getChildren()\n .filter(child => child.classname === this.classname);\n const thisWindow = singletonWindows.find(win => win.getId() === id);\n if (thisWindow) {\n thisWindow.dispose();\n }\n this.base(arguments, caption, icon);\n },\n\n properties: {\n id: {\n check: \"String\",\n nullable: false\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.TooSmallDialog\", {\n extend: osparc.ui.window.SingletonWindow,\n\n construct: function() {\n this.base(arguments, \"too-small-logout\", this.tr(\"Window too small\"));\n\n this.set({\n layout: new qx.ui.layout.VBox(10),\n contentPadding: 15,\n modal: true,\n showMaximize: false,\n showMinimize: false,\n });\n\n this.__buildLayout();\n },\n\n statics: {\n openWindow: function() {\n const orgsWindow = new osparc.TooSmallDialog();\n orgsWindow.center();\n orgsWindow.open();\n return orgsWindow;\n }\n },\n\n members: {\n __buildLayout: function() {\n const message = this.__createMessage();\n this.add(message);\n\n // if the user is logged in, let them log out, the user menu might be unreachable\n const logoutButton = this.__createLogoutButton();\n this.add(logoutButton);\n },\n\n __createMessage: function() {\n const introText = this.tr(\"The application can't perform in such a small window.\");\n const introLabel = new qx.ui.basic.Label(introText);\n return introLabel;\n },\n\n __createLogoutButton: function() {\n const layout = new qx.ui.container.Composite(new qx.ui.layout.HBox().set({\n alignX: \"right\"\n }));\n\n const button = new qx.ui.form.Button().set({\n allowGrowX: false\n });\n button.addListener(\"execute\", () => qx.core.Init.getApplication().logout());\n layout.add(button);\n\n const authData = osparc.auth.Data.getInstance();\n authData.bind(\"loggedIn\", layout, \"visibility\", {\n converter: isLoggedIn => isLoggedIn ? \"visible\" : \"excluded\"\n });\n authData.bind(\"guest\", button, \"label\", {\n converter: isGuest => isGuest ? this.tr(\"Exit\") : this.tr(\"Log out\")\n });\n\n return layout;\n },\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Fabian Jakobs (fjakobs)\n * Christian Hagendorn (chris_schmidt)\n * Adrian Olaru (adrianolaru)\n\n************************************************************************ */\n\n/**\n * The stack container puts its child widgets on top of each other and only the\n * topmost widget is visible.\n *\n * This is used e.g. in the tab view widget. Which widget is visible can be\n * controlled by using the {@link #getSelection} method.\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * // create stack container\n * var stack = new qx.ui.container.Stack();\n *\n * // add some children\n * stack.add(new qx.ui.core.Widget().set({\n * backgroundColor: \"red\"\n * }));\n * stack.add(new qx.ui.core.Widget().set({\n * backgroundColor: \"green\"\n * }));\n * stack.add(new qx.ui.core.Widget().set({\n * backgroundColor: \"blue\"\n * }));\n *\n * // select green widget\n * stack.setSelection([stack.getChildren()[1]]);\n *\n * this.getRoot().add(stack);\n *\n *\n * This example creates an stack with three children. Only the selected \"green\"\n * widget is visible.\n *\n * *External Documentation*\n *\n * \n * Documentation of this widget in the qooxdoo manual.\n */\nqx.Class.define(\"qx.ui.container.Stack\",\n{\n extend : qx.ui.core.Widget,\n implement : [\n qx.ui.form.IField,\n qx.ui.core.ISingleSelection\n ],\n include : [\n qx.ui.core.MSingleSelectionHandling,\n qx.ui.core.MChildrenHandling\n ],\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n\n construct : function()\n {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.Grow);\n\n this.addListener(\"changeSelection\", this.__onChangeSelection, this);\n },\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n /**\n * Whether the size of the widget depends on the selected child. When\n * disabled (default) the size is configured to the largest child.\n */\n dynamic :\n {\n check : \"Boolean\",\n init : false,\n apply : \"_applyDynamic\"\n }\n },\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n\n members :\n {\n // property apply\n _applyDynamic : function(value)\n {\n var children = this._getChildren();\n var selected = this.getSelection()[0];\n var child;\n\n for (var i=0, l=children.length; i
false
otherwise.\n */\n _isAllowEmptySelection : function() {\n return true;\n },\n\n /**\n * Returns whether the given item is selectable.\n *\n * @param item {qx.ui.core.Widget} The item to be checked\n * @return {Boolean} Whether the given item is selectable\n */\n _isItemSelectable : function(item) {\n return true;\n },\n\n /**\n * Event handler for changeSelection
.\n *\n * Shows the new selected widget and hide the old one.\n *\n * @param e {qx.event.type.Data} Data event.\n */\n __onChangeSelection : function(e)\n {\n var old = e.getOldData()[0];\n var value = e.getData()[0];\n\n if (old)\n {\n if (this.isDynamic()) {\n old.exclude();\n } else {\n old.hide();\n }\n }\n\n if (value) {\n value.show();\n }\n },\n\n\n //overridden\n _afterAddChild : function(child) {\n var selected = this.getSelection()[0];\n\n if (!selected) {\n this.setSelection([child]);\n } else if (selected !== child) {\n if (this.isDynamic()) {\n child.exclude();\n } else {\n child.hide();\n }\n }\n },\n\n\n //overridden\n _afterRemoveChild : function(child) {\n if (this.getSelection()[0] === child) {\n var first = this._getChildren()[0];\n\n if (first) {\n this.setSelection([first]);\n } else {\n this.resetSelection();\n }\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n PUBLIC API\n ---------------------------------------------------------------------------\n */\n\n /**\n * Go to the previous child in the children list.\n */\n previous : function()\n {\n var selected = this.getSelection()[0];\n var go = this._indexOf(selected)-1;\n var children = this._getChildren();\n\n if (go < 0) {\n go = children.length - 1;\n }\n\n var prev = children[go];\n this.setSelection([prev]);\n },\n\n /**\n * Go to the next child in the children list.\n */\n next : function()\n {\n var selected = this.getSelection()[0];\n var go = this._indexOf(selected)+1;\n var children = this._getChildren();\n\n var next = children[go] || children[0];\n\n this.setSelection([next]);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Singleton that contains a stack of two logos.\n *\n * If online the white logo will be selected, if the webserver gets disconnected, the logo will turn red\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let logo = osparc.navigation.LogoOnOff.getInstance();\n logo.online(true/false);\n *\n */\n\nqx.Class.define(\"osparc.navigation.LogoOnOff\", {\n extend: qx.ui.container.Stack,\n type: \"singleton\",\n\n construct: function() {\n this.base(arguments);\n\n this.getChildControl(\"off-logo\");\n this.getChildControl(\"on-logo\");\n },\n\n properties: {\n online: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n apply: \"__applyOnline\"\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"off-logo-container\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox().set({\n alignX: \"center\"\n }));\n control.add(new qx.ui.core.Spacer(null, 8));\n this.add(control);\n break;\n }\n case \"off-logo\": {\n control = new qx.ui.basic.Image(\"osparc/offline.svg\");\n osparc.utils.Utils.setAltToImage(control, \"offline\");\n const container = this.getChildControl(\"off-logo-container\");\n container.add(control, {\n flex: 1\n });\n break;\n }\n case \"on-logo\": {\n control = new osparc.ui.basic.LogoWPlatform();\n control.setFont(\"text-9\");\n this.add(control);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __applyOnline: function(value) {\n this.setSelection([this.getSelectables()[value ? 1 : 0]]);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.credits.Utils\", {\n type: \"static\",\n\n statics: {\n DANGER_ZONE: 25, // one hour consumption\n CREDITS_ICON: \"@FontAwesome5Solid/database/\",\n\n creditsUpdated: function(walletId, credits) {\n const store = osparc.store.Store.getInstance();\n const walletFound = store.getWallets().find(wallet => wallet.getWalletId() === parseInt(walletId));\n if (walletFound) {\n walletFound.setCreditsAvailable(parseFloat(credits));\n }\n },\n\n openBuyCredits: function(paymentMethods = []) {\n const buyView = new osparc.desktop.credits.BuyCreditsStepper(\n paymentMethods.map(({idr, cardHolderName, cardNumberMasked}) => ({\n label: `${cardHolderName} ${cardNumberMasked}`,\n id: idr\n }))\n );\n const win = osparc.ui.window.Window.popUpInWindow(buyView, \"Buy credits\", 400, 600).set({\n resizable: false,\n movable: false\n });\n buyView.addListener(\"completed\", () => win.close());\n buyView.addListener(\"cancelled\", () => win.close());\n win.addListener(\"close\", () => buyView.cancelPayment())\n return {\n window: win,\n buyCreditsWidget: buyView,\n };\n },\n\n\n areWalletsEnabled: function() {\n const statics = osparc.store.Store.getInstance().get(\"statics\");\n return Boolean(statics && statics[\"isPaymentEnabled\"]);\n },\n\n getNoWriteAccessInformationLabel: function() {\n return new qx.ui.basic.Label().set({\n value: qx.locale.Manager.tr(\"You can't access this information\"),\n font: \"text-14\",\n allowGrowX: true\n });\n },\n\n getNoWriteAccessOperationsLabel: function() {\n return new qx.ui.basic.Label().set({\n value: qx.locale.Manager.tr(\"You can't access these operations\"),\n font: \"text-14\",\n allowGrowX: true\n });\n },\n\n creditsToColor: function(credits, defaultColor = \"text\") {\n const preferencesSettings = osparc.Preferences.getInstance();\n let color = defaultColor;\n const dangerZone = this.DANGER_ZONE;\n if (credits <= dangerZone) {\n color = \"danger-red\";\n } else if (credits <= preferencesSettings.getCreditsWarningThreshold()) {\n color = \"warning-yellow\";\n }\n return color;\n },\n\n normalizeCredits: function(credits) {\n const logBase = (n, base) => Math.log(n) / Math.log(base);\n\n let normalized = logBase(credits, 10000) + 0.01;\n normalized = Math.min(Math.max(normalized, 0), 1);\n return normalized * 100;\n },\n\n creditsToFixed: function(credits) {\n if (credits < 10) {\n return (credits).toFixed(1);\n }\n return parseInt(credits);\n },\n\n createWalletSelector: function(accessRight = \"read\") {\n const store = osparc.store.Store.getInstance();\n\n const walletSelector = new qx.ui.form.SelectBox().set({\n maxWidth: 250\n });\n\n const populateSelectBox = selectBox => {\n selectBox.removeAll();\n\n const wallets = store.getWallets();\n wallets.forEach(wallet => {\n const found = wallet.getMyAccessRights();\n if (found && found[accessRight]) {\n const sbItem = new qx.ui.form.ListItem(`${wallet.getName()} (${wallet.getCreditsAvailable()} credits)`);\n sbItem.walletId = wallet.getWalletId();\n selectBox.add(sbItem);\n }\n });\n };\n\n populateSelectBox(walletSelector);\n store.addListener(\"changeWallets\", () => populateSelectBox(walletSelector));\n\n return walletSelector;\n },\n\n autoSelectActiveWallet: function(walletSelector) {\n // If there is only one active wallet, select it\n const store = osparc.store.Store.getInstance();\n const wallets = store.getWallets();\n const activeWallets = wallets.filter(wallet => wallet.getStatus() === \"ACTIVE\");\n if (activeWallets.length === 1) {\n const found = walletSelector.getSelectables().find(sbItem => sbItem.walletId === activeWallets[0].getWalletId());\n if (found) {\n walletSelector.setSelection([found]);\n return true;\n }\n }\n return false;\n },\n\n populatePaymentMethodSelector: function(wallet, paymentMethodSB) {\n paymentMethodSB.removeAll();\n return new Promise(resolve => {\n osparc.desktop.credits.Utils.getPaymentMethods(wallet.getWalletId())\n .then(paymentMethods => {\n paymentMethods.forEach(paymentMethod => {\n let label = paymentMethod.cardHolderName;\n label += \" \";\n label += paymentMethod.cardNumberMasked.substr(paymentMethod.cardNumberMasked.length - 9);\n const lItem = new qx.ui.form.ListItem(label, null, paymentMethod.idr);\n paymentMethodSB.add(lItem);\n });\n })\n .finally(() => resolve());\n });\n },\n\n getWallet: function(walletId) {\n const store = osparc.store.Store.getInstance();\n const wallets = store.getWallets();\n const foundWallet = wallets.find(wallet => wallet.getWalletId() === walletId);\n if (foundWallet) {\n return foundWallet;\n }\n return null;\n },\n\n getMyWallets: function() {\n const store = osparc.store.Store.getInstance();\n const wallets = store.getWallets();\n const myWallets = wallets.filter(wallet => wallet.getMyAccessRights()[\"write\"]);\n if (myWallets) {\n return myWallets;\n }\n return [];\n },\n\n getPaymentMethods: function(walletId) {\n return new Promise(resolve => {\n const promises = [];\n if (walletId) {\n const params = {\n url: {\n walletId\n }\n };\n promises.push(osparc.data.Resources.fetch(\"paymentMethods\", \"get\", params));\n } else {\n const myWallets = this.getMyWallets();\n myWallets.forEach(myWallet => {\n const params = {\n url: {\n walletId: myWallet.getWalletId()\n }\n };\n promises.push(osparc.data.Resources.fetch(\"paymentMethods\", \"get\", params));\n });\n }\n Promise.all(promises)\n .then(values => {\n let paymentMethods = [];\n values.forEach(value => paymentMethods = paymentMethods.concat(value));\n resolve(paymentMethods);\n });\n });\n },\n\n getPaymentMethod: function(paymentMethodId) {\n return new Promise(resolve => {\n this.getPaymentMethods()\n .then(paymentMethods => {\n const paymentMethodFound = paymentMethods.find(paymentMethod => paymentMethod[\"idr\"] === paymentMethodId);\n resolve(paymentMethodFound);\n });\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.share.Collaborators\", {\n extend: qx.ui.core.Widget,\n type: \"abstract\",\n\n /**\n * @param serializedDataCopy {Object} Object containing the Serialized Data\n */\n construct: function(serializedDataCopy) {\n this.base(arguments);\n\n this._serializedDataCopy = serializedDataCopy;\n\n this._setLayout(new qx.ui.layout.VBox(15));\n\n this.set({\n padding: 5\n });\n\n this.__buildLayout();\n\n this._reloadCollaboratorsList();\n },\n\n events: {\n \"updateAccessRights\": \"qx.event.type.Data\"\n },\n\n statics: {\n sortByAccessRights: function(aAccessRights, bAccessRights) {\n if (aAccessRights[\"delete\"] !== bAccessRights[\"delete\"]) {\n return bAccessRights[\"delete\"] - aAccessRights[\"delete\"];\n }\n if (aAccessRights[\"write\"] !== bAccessRights[\"write\"]) {\n return bAccessRights[\"write\"] - aAccessRights[\"write\"];\n }\n if (aAccessRights[\"read\"] !== bAccessRights[\"read\"]) {\n return bAccessRights[\"read\"] - aAccessRights[\"read\"];\n }\n return 0;\n },\n\n sortStudyOrServiceCollabs: function(a, b) {\n const aAccessRights = a[\"accessRights\"];\n const bAccessRights = b[\"accessRights\"];\n let sorted = null;\n if (\"delete\" in aAccessRights) {\n // studies\n sorted = this.self().sortByAccessRights(aAccessRights, bAccessRights);\n } else if (\"execute\" in aAccessRights) {\n // services\n if (aAccessRights[\"write\"] !== bAccessRights[\"write\"]) {\n sorted = bAccessRights[\"write\"] - aAccessRights[\"write\"];\n } else if (aAccessRights[\"execute\"] !== bAccessRights[\"execute\"]) {\n sorted = bAccessRights[\"execute\"] - aAccessRights[\"execute\"];\n }\n }\n return sorted;\n },\n\n createStudyLinkSection: function(serializedData) {\n const vBox = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n\n const label = new qx.ui.basic.Label().set({\n value: qx.locale.Manager.tr(\"Any logged-in user with access to the \") + osparc.product.Utils.getStudyAlias() + qx.locale.Manager.tr(\" can open it\"),\n rich: true\n });\n vBox.add(label);\n\n const hBox = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignY: \"middle\"\n }));\n vBox.add(hBox, {\n flex: 1\n });\n\n const link = window.location.href + \"#/study/\" + serializedData[\"uuid\"];\n const linkField = new qx.ui.form.TextField(link);\n hBox.add(linkField, {\n flex: 1\n });\n\n const copyLinkBtn = new qx.ui.form.Button(qx.locale.Manager.tr(\"Copy link\"));\n copyLinkBtn.addListener(\"execute\", () => {\n if (osparc.utils.Utils.copyTextToClipboard(link)) {\n copyLinkBtn.setIcon(\"@FontAwesome5Solid/check/12\");\n }\n });\n hBox.add(copyLinkBtn);\n\n return vBox;\n },\n\n createTemplateLinkSection: function(serializedData) {\n const vBox = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n\n if (\"permalink\" in serializedData) {\n const permalink = serializedData[\"permalink\"];\n\n const label = new qx.ui.basic.Label().set({\n rich: true\n });\n if (permalink[\"is_public\"]) {\n label.setValue(qx.locale.Manager.tr(\"Anyone on the internet with the link can open this \") + osparc.product.Utils.getTemplateAlias());\n } else {\n label.setValue(qx.locale.Manager.tr(\"Any logged-in user with the link can copy and open this \") + osparc.product.Utils.getTemplateAlias());\n }\n vBox.add(label);\n\n const hBox = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignY: \"middle\"\n }));\n vBox.add(hBox, {\n flex: 1\n });\n\n const link = permalink[\"url\"];\n const linkField = new qx.ui.form.TextField(link);\n hBox.add(linkField, {\n flex: 1\n });\n\n const copyLinkBtn = new qx.ui.form.Button(qx.locale.Manager.tr(\"Copy link\"));\n copyLinkBtn.addListener(\"execute\", () => {\n if (osparc.utils.Utils.copyTextToClipboard(link)) {\n copyLinkBtn.setIcon(\"@FontAwesome5Solid/check/12\");\n }\n });\n hBox.add(copyLinkBtn);\n }\n\n return vBox;\n }\n },\n\n members: {\n _serializedDataCopy: null,\n _resourceType: null,\n __addCollaborators: null,\n __collaboratorsModel: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"add-collaborator\":\n control = this.__createAddCollaboratorSection();\n this._add(control);\n break;\n case \"collaborators-list\":\n control = this.__createCollaboratorsListSection();\n this._add(control, {\n flex: 1\n });\n break;\n case \"study-link\":\n control = this.self().createStudyLinkSection(this._serializedDataCopy);\n this._add(control);\n // excluded by default\n control.exclude();\n break;\n case \"template-link\":\n control = this.self().createTemplateLinkSection(this._serializedDataCopy);\n this._add(control);\n // excluded by default\n control.exclude();\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __canIShare: function() {\n if (this._resourceType === \"study\" && this._serializedDataCopy[\"workspaceId\"]) {\n // Access Rights are set at workspace level\n return false;\n }\n\n let canIShare = false;\n switch (this._resourceType) {\n case \"study\":\n case \"template\":\n canIShare = osparc.data.model.Study.canIWrite(this._serializedDataCopy[\"accessRights\"]);\n break;\n case \"service\":\n canIShare = osparc.service.Utils.canIWrite(this._serializedDataCopy[\"accessRights\"]);\n break;\n case \"workspace\":\n canIShare = osparc.share.CollaboratorsWorkspace.canIDelete(this._serializedDataCopy[\"myAccessRights\"]);\n break;\n case \"tag\":\n canIShare = osparc.share.CollaboratorsTag.canIWrite(this._serializedDataCopy[\"myAccessRights\"]);\n break;\n }\n return canIShare;\n },\n\n __canIChangePermissions: function() {\n if (this._resourceType === \"study\" && this._serializedDataCopy[\"workspaceId\"]) {\n // Access Rights are set at workspace level\n return false;\n }\n let fullOptions = false;\n switch (this._resourceType) {\n case \"study\":\n case \"template\":\n fullOptions = osparc.data.model.Study.canIDelete(this._serializedDataCopy[\"accessRights\"]);\n break;\n case \"service\":\n fullOptions = osparc.service.Utils.canIWrite(this._serializedDataCopy[\"accessRights\"]);\n break;\n case \"workspace\":\n fullOptions = osparc.share.CollaboratorsWorkspace.canIDelete(this._serializedDataCopy[\"myAccessRights\"]);\n break;\n case \"tag\":\n fullOptions = osparc.share.CollaboratorsTag.canIDelete(this._serializedDataCopy[\"myAccessRights\"]);\n break;\n }\n return fullOptions;\n },\n\n __createRolesLayout: function() {\n let rolesLayout = null;\n switch (this._resourceType) {\n case \"study\":\n case \"template\":\n rolesLayout = osparc.data.Roles.createRolesStudyInfo();\n break;\n case \"service\":\n rolesLayout = osparc.data.Roles.createRolesServicesInfo();\n break;\n case \"workspace\":\n rolesLayout = osparc.data.Roles.createRolesWorkspaceInfo();\n break;\n case \"tag\":\n rolesLayout = osparc.data.Roles.createRolesStudyInfo();\n break;\n }\n return rolesLayout;\n },\n\n __buildLayout: function() {\n if (this.__canIShare()) {\n this.__addCollaborators = this._createChildControlImpl(\"add-collaborator\");\n }\n this._createChildControlImpl(\"collaborators-list\");\n this._createChildControlImpl(\"study-link\");\n this._createChildControlImpl(\"template-link\");\n },\n\n __createAddCollaboratorSection: function() {\n const serializedDataCopy = osparc.utils.Utils.deepCloneObject(this._serializedDataCopy);\n // pass resourceType, so that, if it's a template testers can share it with product everyone\n serializedDataCopy[\"resourceType\"] = this._resourceType;\n const addCollaborators = new osparc.share.AddCollaborators(serializedDataCopy);\n addCollaborators.addListener(\"addCollaborators\", e => this._addEditors(e.getData()), this);\n return addCollaborators;\n },\n\n __createCollaboratorsListSection: function() {\n const vBox = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n\n const header = new qx.ui.container.Composite(new qx.ui.layout.HBox());\n\n const label = new qx.ui.basic.Label(this.tr(\"Shared with\"));\n label.set({allowGrowX: true});\n header.add(label, {\n flex: 1\n });\n\n const rolesLayout = this.__createRolesLayout();\n const leaveButton = this.__getLeaveStudyButton();\n if (leaveButton) {\n rolesLayout.addAt(leaveButton, 0);\n }\n header.add(rolesLayout);\n vBox.add(header);\n\n const collaboratorsUIList = new qx.ui.form.List().set({\n decorator: \"no-border\",\n spacing: 3,\n width: 150,\n padding: 0\n });\n\n const collaboratorsModel = this.__collaboratorsModel = new qx.data.Array();\n const collaboratorsCtrl = new qx.data.controller.List(collaboratorsModel, collaboratorsUIList, \"name\");\n collaboratorsCtrl.setDelegate({\n createItem: () => new osparc.ui.list.CollaboratorListItem(),\n bindItem: (ctrl, item, id) => {\n ctrl.bindProperty(\"gid\", \"model\", null, item, id);\n ctrl.bindProperty(\"gid\", \"key\", null, item, id);\n ctrl.bindProperty(\"collabType\", \"collabType\", null, item, id);\n ctrl.bindProperty(\"thumbnail\", \"thumbnail\", null, item, id);\n ctrl.bindProperty(\"label\", \"title\", null, item, id);\n ctrl.bindProperty(\"description\", \"subtitleMD\", null, item, id);\n ctrl.bindProperty(\"resourceType\", \"resourceType\", null, item, id); // Resource type\n ctrl.bindProperty(\"accessRights\", \"accessRights\", null, item, id);\n ctrl.bindProperty(\"showOptions\", \"showOptions\", null, item, id);\n },\n configureItem: item => {\n item.getChildControl(\"thumbnail\").getContentElement()\n .setStyles({\n \"border-radius\": \"16px\"\n });\n item.addListener(\"promoteToEditor\", e => {\n const orgMember = e.getData();\n this._promoteToEditor(orgMember, item);\n });\n item.addListener(\"promoteToOwner\", e => {\n const orgMember = e.getData();\n this._promoteToOwner(orgMember, item);\n });\n item.addListener(\"demoteToUser\", e => {\n const orgMember = e.getData();\n this._demoteToUser(orgMember, item);\n });\n item.addListener(\"demoteToEditor\", e => {\n const orgMember = e.getData();\n this._demoteToEditor(orgMember, item);\n });\n item.addListener(\"removeMember\", e => {\n const orgMember = e.getData();\n this._deleteMember(orgMember, item);\n });\n }\n });\n vBox.add(collaboratorsUIList, {\n flex: 1\n });\n\n return vBox;\n },\n\n __getLeaveStudyButton: function() {\n const myGid = osparc.auth.Data.getInstance().getGroupId();\n if (\n (this._resourceType === \"study\") &&\n // check if I'm part of the access rights (not through an organization)\n Object.keys(this._serializedDataCopy[\"accessRights\"]).includes(myGid.toString()) &&\n // check also user is not \"prjOwner\". Backend will silently not let the frontend remove that user.\n (this._serializedDataCopy[\"prjOwner\"] !== osparc.auth.Data.getInstance().getEmail())\n ) {\n const leaveText = this.tr(\"Leave\") + \" \" + osparc.product.Utils.getStudyAlias({\n firstUpperCase: true\n });\n const leaveButton = new qx.ui.form.Button(leaveText).set({\n allowGrowX: false,\n visibility: Object.keys(this._serializedDataCopy[\"accessRights\"]).includes(myGid.toString()) ? \"visible\" : \"excluded\"\n });\n leaveButton.addListener(\"execute\", () => {\n let msg = `\"${this._serializedDataCopy[\"name\"]}\" ` + this.tr(\"will no longer be listed.\");\n if (!osparc.share.CollaboratorsStudy.checkRemoveCollaborator(this._serializedDataCopy, myGid)) {\n msg += \"
\n * osparc.data.Permissions.getInstance().canDo(\"study.start\", true)\n *\n */\n\nqx.Class.define(\"osparc.data.Permissions\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n construct() {\n const initPermissions = this.self().getInitPermissions();\n for (const role in initPermissions) {\n if (Object.prototype.hasOwnProperty.call(initPermissions, role)) {\n initPermissions[role].forEach(action => {\n this.addAction(role, action);\n }, this);\n }\n }\n },\n\n statics: {\n ACTIONS: {},\n\n ROLES_APP: {\n anonymous: {\n can: [],\n inherits: []\n },\n guest: {\n can: [],\n inherits: [\"anonymous\"]\n },\n user: {\n can: [],\n inherits: [\"guest\"]\n },\n tester: {\n can: [],\n inherits: [\"user\"]\n },\n \"product_owner\": {\n can: [],\n inherits: [\"tester\"]\n },\n admin: {\n can: [],\n inherits: [\"product_owner\"]\n }\n },\n\n getInitPermissions: function() {\n const initPermissions = {\n \"anonymous\": [],\n \"guest\": [\n \"studies.templates.read\",\n \"study.node.data.pull\",\n \"study.start\",\n \"study.stop\",\n \"study.update\"\n ],\n \"user\": [\n \"dashboard.read\",\n \"dashboard.templates.read\",\n \"dashboard.services.read\",\n \"dashboard.data.read\",\n \"studies.user.read\",\n \"studies.user.create\",\n \"studies.template.create\",\n \"studies.template.update\",\n \"studies.template.delete\",\n \"storage.datcore.read\",\n \"user.user.update\",\n \"user.apikey.create\",\n \"user.apikey.delete\",\n \"user.token.create\",\n \"user.token.delete\",\n \"user.tag\",\n \"user.organizations.create\",\n \"study.node.create\",\n \"study.node.delete\",\n \"study.node.update\",\n \"study.node.rename\",\n \"study.node.start\",\n \"study.node.data.push\",\n \"study.node.data.delete\",\n \"study.node.export\",\n \"study.node.bootOptions.read\",\n \"study.edge.create\",\n \"study.edge.delete\",\n \"study.classifier\",\n \"study.tag\",\n \"study.slides.edit\",\n \"study.slides.stop\",\n \"usage.all.read\"\n ],\n \"tester\": [\n \"studies.template.create.all\",\n \"studies.template.create.productAll\",\n \"services.all.read\",\n \"services.all.reupdate\",\n \"services.filePicker.read.all\",\n \"user.wallets.create\",\n \"study.everyone.share\",\n \"study.snapshot.read\",\n \"study.snapshot.create\",\n \"study.nodestree.uuid.read\",\n \"study.filestree.uuid.read\",\n \"study.logger.debug.read\",\n ],\n \"product_owner\": [\n \"user.invitation.generate\",\n \"user.users.search\",\n \"user.users.pre-register\"\n ],\n \"admin\": []\n };\n let fromUserToTester = [];\n if (osparc.product.Utils.isProduct(\"tis\") || osparc.product.Utils.isProduct(\"tiplite\")) {\n // \"templates\" and \"services\" tabs only for testers\n // start/stop/edit app mode only for testers\n fromUserToTester = [\n \"dashboard.templates.read\",\n \"dashboard.services.read\",\n \"study.node.bootOptions.read\",\n \"study.slides.edit\",\n \"study.slides.stop\"\n ];\n } else if (osparc.product.Utils.isProduct(\"s4llite\")) {\n // \"services\" tabs only for testers\n fromUserToTester = [\n \"dashboard.services.read\"\n ];\n }\n fromUserToTester.forEach(onlyTester => {\n const idx = initPermissions.user.indexOf(onlyTester);\n if (idx > -1) {\n initPermissions.user.splice(idx, 1);\n }\n initPermissions.tester.push(onlyTester);\n });\n return initPermissions;\n }\n },\n\n properties: {\n role: {\n check: [\"anonymous\", \"guest\", \"user\", \"tester\", \"product_owner\", \"admin\"],\n init: null,\n nullable: false,\n event: \"changeRole\"\n }\n },\n\n members: {\n arePermissionsReady() {\n return this.getRole() !== null;\n },\n\n getChildrenRoles(role) {\n role = role.toLowerCase();\n const childrenRoles = [];\n if (!this.self().ROLES_APP[role]) {\n return childrenRoles;\n }\n if (!childrenRoles.includes(role)) {\n childrenRoles.unshift(role);\n }\n const children = this.self().ROLES_APP[role].inherits;\n for (let i=0; i
\n * var container = new qx.ui.container.Composite(new qx.ui.layout.HBox());\n * container.add(new qx.ui.core.Widget());\n * container.add(new qx.ui.core.Spacer(50));\n * container.add(new qx.ui.core.Widget());\n *\n *\n * This example places two widgets and a spacer into a container with a\n * horizontal box layout. In this scenario the spacer creates an empty area of\n * 50 pixel width between the two widgets.\n *\n * *External Documentation*\n *\n * \n * Documentation of this widget in the qooxdoo manual.\n */\nqx.Class.define(\"qx.ui.core.Spacer\",\n{\n extend : qx.ui.core.LayoutItem,\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param width {Integer?null} the initial width\n * @param height {Integer?null} the initial height\n */\n construct : function(width, height)\n {\n this.base(arguments);\n\n // Initialize dimensions\n this.setWidth(width != null ? width : 0);\n this.setHeight(height != null ? height : 0);\n },\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n /**\n * Helper method called from the visibility queue to detect outstanding changes\n * to the appearance.\n *\n * @internal\n */\n checkAppearanceNeeds : function() {\n // placeholder to improve compatibility with Widget.\n },\n\n\n /**\n * Recursively adds all children to the given queue\n *\n * @param queue {Map} The queue to add widgets to\n */\n addChildrenToQueue : function(queue) {\n // placeholder to improve compatibility with Widget.\n },\n\n\n /**\n * Removes this widget from its parent and dispose it.\n *\n * Please note that the widget is not disposed synchronously. The\n * real dispose happens after the next queue flush.\n *\n */\n destroy : function()\n {\n if (this.$$disposed) {\n return;\n }\n\n var parent = this.$$parent;\n if (parent) {\n parent._remove(this);\n }\n\n qx.ui.core.queue.Dispose.add(this);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * App/theme dependant logo\n */\nqx.Class.define(\"osparc.ui.basic.Logo\", {\n extend: qx.ui.basic.Image,\n\n construct: function() {\n this.base(arguments);\n\n this.set({\n scale: true,\n alignX: \"center\",\n padding: 3\n });\n\n this.__resetSourcePath();\n\n osparc.utils.Utils.setAltToImage(this, \"product-logo\");\n\n const themeManager = qx.theme.manager.Meta.getInstance();\n themeManager.addListener(\"changeTheme\", () => this.__resetSourcePath(), this);\n\n osparc.WindowSizeTracker.getInstance().addListener(\"changeCompactVersion\", () => this.__resetSourcePath(), this);\n },\n\n statics: {\n getHeightKeepingAspectRatio: function(logoPath, width) {\n const imgHeight = qx.util.ResourceManager.getInstance().getImageHeight(logoPath);\n const imgWidth = qx.util.ResourceManager.getInstance().getImageWidth(logoPath);\n const aspectRatio = imgWidth/imgHeight;\n return parseInt(width/aspectRatio);\n }\n },\n\n members: {\n __resetSourcePath: function() {\n const long = !osparc.WindowSizeTracker.getInstance().isCompactVersion();\n const sourcePath = osparc.product.Utils.getLogoPath(long);\n this.set({\n source: sourcePath\n });\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2019 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * Generic window to prompt the user with useful information. Provides functions to add buttons.\n * extends\n */\nqx.Class.define(\"osparc.ui.window.Dialog\", {\n extend: osparc.ui.window.Window,\n /**\n * Constructor takes the same parameters as the Qooxdoo window widget, only adding a message that will\n * be displayed to the user.\n * @extends osparc.ui.window.Window\n * @param {String} message Message that will be displayed to the user.\n */\n construct: function(caption, icon, message) {\n this.base(arguments, caption, icon);\n\n this.set({\n autoDestroy: true,\n layout: new qx.ui.layout.VBox(15),\n showMinimize: false,\n showMaximize: false,\n contentPadding: 15,\n maxWidth: 350,\n resizable: false,\n modal: true\n });\n\n this.__buildLayout();\n if (message) {\n this.setMessage(message);\n }\n this.center();\n },\n\n properties: {\n message: {\n check: \"String\",\n apply: \"_applyMessage\"\n }\n },\n\n members: {\n __messageLabel: null,\n __extraWidgetsLayout: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"buttons-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignX: \"right\"\n }));\n this.add(control);\n break;\n case \"cancel-button\": {\n const btnsLayout = this.getChildControl(\"buttons-layout\");\n control = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"form-button-text\"\n });\n btnsLayout.addAt(control, 0);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __buildLayout: function() {\n this.__messageLabel = new qx.ui.basic.Label().set({\n font: \"text-14\",\n selectable: true,\n rich: true\n });\n this.add(this.__messageLabel, {\n flex: 1\n });\n\n this.__extraWidgetsLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(15)).set({\n paddingTop: 10\n });\n this.__extraWidgetsLayout.exclude();\n this.add(this.__extraWidgetsLayout, {\n flex: 1\n });\n\n this.getChildControl(\"buttons-layout\");\n },\n\n _applyMessage: function(message) {\n this.__messageLabel.setValue(message);\n },\n\n addWidget: function(widget) {\n this.__extraWidgetsLayout.show();\n this.__extraWidgetsLayout.add(widget);\n },\n\n getExtraWidgetsLayout: function() {\n return this.__extraWidgetsLayout;\n },\n\n /**\n * Adds a button to the dialog.\n * @param {qx.ui.form.Button} button Button that will be added to the bottom bar of the dialog.\n */\n addButton: function(button) {\n const btnToolbar = this.getChildControl(\"buttons-layout\");\n button.set({\n appearance: \"form-button\"\n });\n btnToolbar.addAt(button, 1);\n },\n\n /**\n * Adds a default cancel button to the dialog.\n */\n addCancelButton: function() {\n const cancelButton = this.getChildControl(\"cancel-button\");\n cancelButton.set({\n center: true,\n minWidth: 100\n });\n cancelButton.addListener(\"execute\", () => this.close(), this);\n return cancelButton;\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Andreas Ecker (ecker)\n * Jonathan Weiß (jonathan_rass)\n * Tristan Koch (tristankoch)\n\n************************************************************************ */\n\n/**\n * The TextField is a multi-line text input field.\n */\nqx.Class.define(\"qx.ui.form.TextArea\",\n{\n extend : qx.ui.form.AbstractField,\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param value {String?\"\"} The text area's initial value\n */\n construct : function(value)\n {\n this.base(arguments, value);\n this.initWrap();\n\n this.addListener(\"roll\", this._onRoll, this);\n this.addListener(\"resize\", this._onResize, this);\n },\n\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n /** Controls whether text wrap is activated or not. */\n wrap :\n {\n check : \"Boolean\",\n init : true,\n apply : \"_applyWrap\"\n },\n\n // overridden\n appearance :\n {\n refine : true,\n init : \"textarea\"\n },\n\n /** Factor for scrolling the
TextArea
with the mouse wheel. */\n singleStep :\n {\n check : \"Integer\",\n init : 20\n },\n\n /** Minimal line height. On default this is set to four lines. */\n minimalLineHeight :\n {\n check : \"Integer\",\n apply : \"_applyMinimalLineHeight\",\n init : 4\n },\n\n /**\n * Whether the TextArea
should automatically adjust to\n * the height of the content.\n *\n * To set the initial height, modify {@link #minHeight}. If you wish\n * to set a minHeight below four lines of text, also set\n * {@link #minimalLineHeight}. In order to limit growing to a certain\n * height, set {@link #maxHeight} respectively. Please note that\n * autoSize is ignored when the {@link #height} property is in use.\n */\n autoSize :\n {\n check : \"Boolean\",\n apply : \"_applyAutoSize\",\n init : false\n }\n\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n __areaClone : null,\n __areaHeight : null,\n __originalAreaHeight : null,\n\n // overridden\n setValue : function(value)\n {\n value = this.base(arguments, value);\n this.__autoSize();\n\n return value;\n },\n\n /**\n * Handles the roll for scrolling the TextArea
.\n *\n * @param e {qx.event.type.Roll} roll event.\n */\n _onRoll : function(e) {\n // only wheel\n if (e.getPointerType() != \"wheel\") {\n return;\n }\n var contentElement = this.getContentElement();\n var scrollY = contentElement.getScrollY();\n\n contentElement.scrollToY(scrollY + (e.getDelta().y / 30) * this.getSingleStep());\n\n var newScrollY = contentElement.getScrollY();\n\n if (newScrollY != scrollY) {\n e.stop();\n }\n },\n\t\n\t\n /**\n * When the element resizes we throw away the clone and trigger autosize again, otherwise the clone would have\n * another width and the autosize calculation would be faulty.\n * \n * @param e {qx.event.type.Data} resize event.\n */\n _onResize : function(e) {\n if (this.__areaClone) {\n this.__areaClone.dispose();\n this.__areaClone = null;\n this.__autoSize();\n }\n },\n\n /*\n ---------------------------------------------------------------------------\n AUTO SIZE\n ---------------------------------------------------------------------------\n */\n\n /**\n * Adjust height of TextArea
so that content fits without scroll bar.\n *\n */\n __autoSize: function() {\n if (this.isAutoSize()) {\n var clone = this.__getAreaClone();\n\n if (clone && this.getBounds()) {\n\n // Remember original area height\n this.__originalAreaHeight = this.__originalAreaHeight || this._getAreaHeight();\n\n var scrolledHeight = this._getScrolledAreaHeight();\n\n // Show scroll-bar when above maxHeight, if defined\n if (this.getMaxHeight()) {\n var insets = this.getInsets();\n var innerMaxHeight = -insets.top + this.getMaxHeight() - insets.bottom;\n if (scrolledHeight > innerMaxHeight) {\n this.getContentElement().setStyle(\"overflowY\", \"auto\");\n } else {\n this.getContentElement().setStyle(\"overflowY\", \"hidden\");\n }\n }\n\n // Never shrink below original area height\n var desiredHeight = Math.max(scrolledHeight, this.__originalAreaHeight);\n\n // Set new height\n this._setAreaHeight(desiredHeight);\n\n // On init, the clone is not yet present. Try again on appear.\n } else {\n this.getContentElement().addListenerOnce(\"appear\", function() {\n this.__autoSize();\n }, this);\n }\n }\n },\n\n /**\n * Get actual height of TextArea
\n *\n * @return {Integer} Height of TextArea
\n */\n _getAreaHeight: function() {\n return this.getInnerSize().height;\n },\n\n /**\n * Set actual height of TextArea
\n *\n * @param height {Integer} Desired height of TextArea
\n */\n _setAreaHeight: function(height) {\n if (this._getAreaHeight() !== height) {\n this.__areaHeight = height;\n\n qx.ui.core.queue.Layout.add(this);\n\n // Apply height directly. This works-around a visual glitch in WebKit\n // browsers where a line-break causes the text to be moved upwards\n // for one line. Since this change appears instantly whereas the queue\n // is computed later, a flicker is visible.\n qx.ui.core.queue.Manager.flush();\n\n this.__forceRewrap();\n }\n },\n\n /**\n * Get scrolled area height. Equals the total height of the TextArea
,\n * as if no scroll-bar was visible.\n *\n * @return {Integer} Height of scrolled area\n */\n _getScrolledAreaHeight: function() {\n var clone = this.__getAreaClone();\n var cloneDom = clone.getDomElement();\n\n if (cloneDom) {\n\n // Clone created but not yet in DOM. Try again.\n if (!cloneDom.parentNode) {\n qx.html.Element.flush();\n return this._getScrolledAreaHeight();\n }\n\n // In WebKit and IE8, \"wrap\" must have been \"soft\" on DOM level before setting\n // \"off\" can disable wrapping. To fix, make sure wrap is toggled.\n // Otherwise, the height of an auto-size text area with wrapping\n // disabled initially is incorrectly computed as if wrapping was enabled.\n if (qx.core.Environment.get(\"engine.name\") === \"webkit\" ||\n (qx.core.Environment.get(\"engine.name\") == \"mshtml\")) {\n clone.setWrap(!this.getWrap(), true);\n }\n\n clone.setWrap(this.getWrap(), true);\n\n // Webkit needs overflow \"hidden\" in order to correctly compute height\n if (qx.core.Environment.get(\"engine.name\") === \"webkit\" ||\n (qx.core.Environment.get(\"engine.name\") == \"mshtml\")) {\n cloneDom.style.overflow = \"hidden\";\n }\n\n // IE >= 8 needs overflow \"visible\" in order to correctly compute height\n if (qx.core.Environment.get(\"engine.name\") == \"mshtml\" &&\n qx.core.Environment.get(\"browser.documentmode\") >= 8) {\n cloneDom.style.overflow = \"visible\";\n cloneDom.style.overflowX = \"hidden\";\n }\n\n // Update value\n clone.setValue(this.getValue() || \"\");\n\n // Force IE > 8 to update size measurements\n if (qx.core.Environment.get(\"engine.name\") == \"mshtml\") {\n cloneDom.style.height = \"auto\";\n qx.html.Element.flush();\n cloneDom.style.height = \"0\";\n }\n\n // Recompute\n this.__scrollCloneToBottom(clone);\n\n if (qx.core.Environment.get(\"engine.name\") == \"mshtml\" &&\n qx.core.Environment.get(\"browser.documentmode\") == 8) {\n // Flush required for scrollTop to return correct value\n // when initial value should be taken into consideration\n if (!cloneDom.scrollTop) {\n qx.html.Element.flush();\n }\n }\n\n return cloneDom.scrollTop;\n }\n },\n\n /**\n * Returns the area clone.\n *\n * @return {Element|null} DOM Element or null
if there is no\n * original element\n */\n __getAreaClone: function() {\n this.__areaClone = this.__areaClone || this.__createAreaClone();\n return this.__areaClone;\n },\n\n /**\n * Creates and prepares the area clone.\n *\n * @return {Element} Element\n */\n __createAreaClone: function() {\n var orig,\n clone,\n cloneDom,\n cloneHtml;\n\n orig = this.getContentElement();\n\n // An existing DOM element is required\n if (!orig.getDomElement()) {\n return null;\n }\n\n // Create DOM clone\n cloneDom = qx.bom.Element.clone(orig.getDomElement());\n\n // Convert to qx.html Element\n cloneHtml = new qx.html.Input(\"textarea\");\n cloneHtml.useElement(cloneDom);\n clone = cloneHtml;\n\n // Push out of view\n // Zero height (i.e. scrolled area equals height)\n clone.setStyles({\n position: \"absolute\",\n top: 0,\n left: \"-9999px\",\n height: 0,\n overflow: \"hidden\"\n }, true);\n\n // Fix attributes\n clone.removeAttribute('id');\n clone.removeAttribute('name');\n clone.setAttribute(\"tabIndex\", \"-1\");\n\n // Copy value\n clone.setValue(orig.getValue() || \"\");\n\n // Attach to DOM\n clone.insertBefore(orig);\n\n // Make sure scrollTop is actual height\n this.__scrollCloneToBottom(clone);\n\n return clone;\n },\n\n /**\n * Scroll TextArea
to bottom. That way, scrollTop reflects the height\n * of the TextArea
.\n *\n * @param clone {Element} The TextArea
to scroll\n */\n __scrollCloneToBottom: function(clone) {\n clone = clone.getDomElement();\n if (clone) {\n clone.scrollTop = 10000;\n }\n },\n\n /*\n ---------------------------------------------------------------------------\n FIELD API\n ---------------------------------------------------------------------------\n */\n\n // overridden\n _createInputElement : function()\n {\n return new qx.html.Input(\"textarea\", {\n overflowX: \"auto\",\n overflowY: \"auto\"\n });\n },\n\n\n /*\n ---------------------------------------------------------------------------\n APPLY ROUTINES\n ---------------------------------------------------------------------------\n */\n\n // property apply\n _applyWrap : function(value, old) {\n this.getContentElement().setWrap(value);\n if (this._placeholder) {\n var whiteSpace = value ? \"normal\" : \"nowrap\";\n this._placeholder.setStyle(\"whiteSpace\", whiteSpace);\n }\n this.__autoSize();\n },\n\n // property apply\n _applyMinimalLineHeight : function() {\n qx.ui.core.queue.Layout.add(this);\n },\n\n // property apply\n _applyAutoSize: function(value, old) {\n if (qx.core.Environment.get(\"qx.debug\")) {\n this.__warnAutoSizeAndHeight();\n }\n\n if (value) {\n this.__autoSize();\n this.addListener(\"input\", this.__autoSize, this);\n\n // This is done asynchronously on purpose. The style given would\n // otherwise be overridden by the DOM changes queued in the\n // property apply for wrap. See [BUG #4493] for more details.\n if (!this.getBounds()) {\n this.addListenerOnce(\"appear\", function() {\n this.getContentElement().setStyle(\"overflowY\", \"hidden\");\n });\n } else {\n this.getContentElement().setStyle(\"overflowY\", \"hidden\");\n }\n\n } else {\n this.removeListener(\"input\", this.__autoSize);\n this.getContentElement().setStyle(\"overflowY\", \"auto\");\n }\n },\n\n\n // property apply\n _applyDimension : function(value) {\n this.base(arguments);\n\n if (qx.core.Environment.get(\"qx.debug\")) {\n this.__warnAutoSizeAndHeight();\n }\n\n if (value === this.getMaxHeight()) {\n this.__autoSize();\n }\n },\n\n /**\n * Force rewrapping of text.\n *\n * The distribution of characters depends on the space available.\n * Unfortunately, browsers do not reliably (or not at all) rewrap text when\n * the size of the text area changes.\n *\n * This method is called on change of the area's size.\n */\n __forceRewrap : function() {\n var content = this.getContentElement();\n var element = content.getDomElement();\n\n // Temporarily increase width\n var width = content.getStyle(\"width\");\n content.setStyle(\"width\", parseInt(width, 10) + 1000 + \"px\", true);\n\n // Force browser to render\n if (element) {\n qx.bom.element.Dimension.getWidth(element);\n }\n\n // Restore width\n content.setStyle(\"width\", width, true);\n },\n\n /**\n * Warn when both autoSize and height property are set.\n *\n */\n __warnAutoSizeAndHeight: function() {\n if (this.isAutoSize() && this.getHeight()) {\n this.warn(\"autoSize is ignored when the height property is set. \" +\n \"If you want to set an initial height, use the minHeight \" +\n \"property instead.\");\n }\n },\n\n /*\n ---------------------------------------------------------------------------\n LAYOUT\n ---------------------------------------------------------------------------\n */\n\n // overridden\n _getContentHint : function()\n {\n var hint = this.base(arguments);\n\n // lines of text\n hint.height = hint.height * this.getMinimalLineHeight();\n\n // 20 character wide\n hint.width = this._getTextSize().width * 20;\n\n if (this.isAutoSize()) {\n hint.height = this.__areaHeight || hint.height;\n }\n\n return hint;\n }\n },\n\n\n destruct : function() {\n this.setAutoSize(false);\n if (this.__areaClone) {\n this.__areaClone.dispose();\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * A Qooxdoo generated form using JSONSchema specification.\n *\n * @asset(object-path/object-path-0-11-4.min.js)\n * @asset(ajv/ajv-6-11-0.min.js)\n * @ignore(Ajv)\n * @ignore(objectPath)\n * @ignore(fetch)\n */\nqx.Class.define(\"osparc.form.json.JsonSchemaForm\", {\n extend: qx.ui.core.Widget,\n construct: function(schemaUrl, data) {\n this.base(arguments);\n this._setLayout(new qx.ui.layout.VBox());\n const ajvLoader = new qx.util.DynamicScriptLoader([\n \"/resource/ajv/ajv-6-11-0.min.js\",\n \"/resource/object-path/object-path-0-11-4.min.js\"\n ]);\n ajvLoader.addListener(\"ready\", e => {\n this.__ajv = new Ajv();\n if (schemaUrl) {\n osparc.utils.Utils.fetchJSON(schemaUrl)\n .then(schema => {\n if (this.__validate(schema.$schema, schema)) {\n // If schema is valid\n this.__schema = schema;\n if (data && this.__validate(this.__schema, data)) {\n // Data is valid\n this.__data = data;\n }\n return this.__schema;\n }\n return null;\n })\n .then(this.__render)\n .catch(err => {\n console.error(err);\n });\n }\n if (data) {\n this.setData(data);\n }\n this.fireEvent(\"ajvReady\");\n }, this);\n ajvLoader.addListener(\"failed\", console.error, this);\n this.__render = this.__render.bind(this);\n ajvLoader.start();\n },\n events: {\n \"ready\": \"qx.event.type.Event\",\n \"ajvReady\": \"qx.event.type.Event\",\n \"submit\": \"qx.event.type.Data\"\n },\n members: {\n __inputItems: null,\n __data: null,\n __validationManager: null,\n /**\n * Main function to render a form. It uses the data to prefill the form if it is present.\n *\n * @param {Object} schema JSONSchema used for this form\n */\n __render: function(schema) {\n this._removeAll();\n if (schema) {\n // Render function\n this.__inputItems = [];\n this.__validationManager = new qx.ui.form.validation.Manager();\n this._add(this.__expand(null, schema, this.__data));\n // Buttons\n const buttonContainer = new qx.ui.container.Composite(new qx.ui.layout.HBox());\n this.__submitBtn = new osparc.ui.form.FetchButton(this.tr(\"Submit\"));\n this.__submitBtn.addListener(\"execute\", () => {\n if (this.__isValidData()) {\n const formData = this.toObject(schema);\n if (this.__validate(schema, formData.json)) {\n this.fireDataEvent(\"submit\", formData);\n }\n }\n }, this);\n buttonContainer.add(this.__submitBtn);\n this._add(buttonContainer);\n } else {\n // Validation failed\n this._add(new qx.ui.basic.Label().set({\n value: this.tr(\"There was an error generating the form or one or more schemas failed to validate. Check your Javascript console for more details.\"),\n font: \"title-16\",\n textColor: \"service-window-hint\",\n rich: true,\n backgroundColor: \"material-button-background\",\n padding: 10,\n textAlign: \"center\"\n }));\n }\n this.fireEvent(\"ready\");\n },\n /**\n * Uses Ajv library to validate data against a schema.\n *\n * @param {Object} schema JSONSchema to validate against\n * @param {Object} data Data to be validated\n * @param {Boolean} showMessage Determines whether an error message is displayed to the user\n */\n __validate: function(schema, data, showMessage=true) {\n this.__ajv.validate(schema, data);\n const errors = this.__ajv.errors;\n if (errors) {\n console.error(errors);\n if (showMessage) {\n let message = `${errors[0].dataPath} ${errors[0].message}`;\n osparc.FlashMessenger.logAs(message, \"ERROR\");\n }\n return false;\n }\n return true;\n },\n /**\n * Function in charge of recursively building the form.\n *\n * @param {String} key Key of the entry in the schema. == null -> root / == -1 -> array item\n * @param {Object} schema Current schema being expanded.\n * @param {Integer} depth Increases as we go deeper into the schema.\n */\n __expand: function(key, schema, data, depth=0, validation) {\n const isArrayItem = key === -1;\n const container = new osparc.form.json.JsonSchemaFormItem(key, schema, depth);\n if (schema.type === \"object\" && schema.properties) {\n // Expanding object's properties\n container.add(this.__expandObject(schema, data, depth, isArrayItem));\n } else if (schema.type === \"array\") {\n // Arrays allow to create new items with a button\n const arrayContainer = this.__expandArray(schema, data, depth);\n container.add(arrayContainer);\n const addButton = new qx.ui.form.Button(`Add ${objectPath.get(schema, \"items.title\", schema.title || key)}`, \"@FontAwesome5Solid/plus-circle/14\");\n addButton.addListener(\"execute\", () => {\n // key = -1 for an array item. we let JsonSchemaFormArray manage the array keys\n arrayContainer.add(this.__expand(-1, schema.items, null, depth+1));\n }, this);\n container.getHeader().add(addButton);\n } else {\n // Leaf\n const input = container.addInput(validation, this.__validationManager);\n if (data) {\n const isNumber = [\"number\", \"integer\"].includes(schema.type);\n input.setValue(isNumber ? String(data) : data);\n }\n this.__inputItems.push(container);\n }\n return container;\n },\n /**\n * Function that expands an array if any data was provided.\n *\n * @param {Object} schema Schema for the array.\n * @param {Object} data Array's given data.\n * @param {Integer} depth Current depth into the schema (could be used for styling purposes).\n */\n __expandArray: function(schema, data, depth) {\n const container = new osparc.form.json.JsonSchemaFormArray();\n // Add array items\n if (data) {\n data.forEach(item => container.add(this.__expand(-1, schema.items, item, depth+1)));\n }\n return container;\n },\n /**\n * Expands an object property changing its style depending on certain parameters.\n *\n * @param {Object} schema Object's schema to be expanded.\n * @param {Integer} depth Current depth into the schema.\n * @param {Boolean} isArrayItem Used for different styling.\n */\n __expandObject: function(schema, data, depth, isArrayItem) {\n const container = new qx.ui.container.Composite();\n const layoutOptions = {};\n if (isArrayItem) {\n container.setLayout(new qx.ui.layout.Flow(10));\n layoutOptions.flex = 1;\n } else {\n container.setLayout(new qx.ui.layout.VBox());\n }\n Object.entries(schema.properties).forEach(([key, value], index) => {\n // const allProps = Object.values(schema.properties);\n // const nextProp = index < allProps.length - 1 ? allProps[index+1] : null;\n container.add(this.__expand(key, value, data ? data[key] : data, depth+1, {\n required: schema.required && schema.required.includes(key)\n }), {\n // \"lineBreak\" and \"stretch\" are not VBox's properties\n // lineBreak: nextProp && nextProp.type === \"array\" || value.type === \"array\",\n // stretch: value.type === \"array\"\n });\n });\n return container;\n },\n /**\n * Uses objectPath library to construct a JS object with the values from the inputs.\n */\n toObject: function(schema) {\n const obj = {\n json: schema.type === \"array\" ? [] : {}\n };\n const inputMap = {};\n // Retrieve paths\n this.__inputItems.forEach(item => {\n const path = item.getPath();\n if (!path.includes(\"orphan.osparc.form\")) {\n // Don't add orphans (from deleted array items)\n inputMap[path] = item;\n }\n });\n // Clean orphans\n this.__inputItems = this.__inputItems.filter(item => Object.values(inputMap).includes(item));\n // Construct object\n Object.entries(inputMap).forEach(([path, item]) => {\n const input = item.getInput();\n const type = item.getType();\n if (input instanceof osparc.ui.form.FileInput) {\n obj.files = obj.files || [];\n if (input.getFile()) {\n obj.files.push(input.getFile());\n }\n }\n const value = input.getValue();\n if (typeof value !== \"undefined\" && value !== null) {\n const isNumber = [\"number\", \"integer\"].includes(type);\n objectPath.set(obj.json, path, isNumber ? Number(input.getValue()) : input.getValue());\n }\n });\n return obj;\n },\n /**\n * Function that returns an appropriate widget fot the given type.\n *\n * @param {String} type Type of the input that will be used to determine the render behavior\n */\n __getInput: function(type) {\n let input;\n switch (type) {\n default:\n input = new qx.ui.form.TextField();\n }\n return input;\n },\n /**\n * Function for setting the fetching state of the submit button.\n */\n setFetching: function(isFetching) {\n this.__submitBtn.setFetching(isFetching);\n },\n /**\n * Validates fields' data and returns the result.\n */\n __isValidData: function() {\n // Clean garbage from validator (deleted inputs)\n const validatedItems = this.__validationManager.getItems();\n validatedItems.forEach(item => {\n if (!this.getContentElement().getDomElement().contains(item.getContentElement().getDomElement())) {\n this.__validationManager.remove(item);\n }\n });\n return this.__validationManager.validate();\n },\n setSchema: function(schema) {\n if (this.__validate(schema.$schema, schema)) {\n // If schema is valid\n this.__schema = schema;\n if (this.__data && !this.__validate(this.__schema, this.__data)) {\n // Data is invalid\n this.__data = null;\n }\n } else {\n this.__schema = null;\n }\n this.__render(this.__schema);\n },\n setData: function(data) {\n if (data && this.__validate(this.__schema, data)) {\n // Data is valid\n this.__data = data;\n this.__render(this.__schema);\n return;\n }\n if (this.__validate(this.__schema, this.__data)) {\n this.__render(this.__schema);\n }\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Fabian Jakobs (fjakobs)\n\n************************************************************************ */\n\n/**\n * Container, which allows vertical and horizontal scrolling if the contents is\n * larger than the container.\n *\n * Note that this class can only have one child widget. This container has a\n * fixed layout, which cannot be changed.\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * // create scroll container\n * var scroll = new qx.ui.container.Scroll().set({\n * width: 300,\n * height: 200\n * });\n *\n * // add a widget which is larger than the container\n * scroll.add(new qx.ui.core.Widget().set({\n * width: 600,\n * minWidth: 600,\n * height: 400,\n * minHeight: 400\n * }));\n *\n * this.getRoot().add(scroll);\n *\n *\n * This example creates a scroll container and adds a widget, which is larger\n * than the container. This will cause the container to display vertical\n * and horizontal toolbars.\n *\n * *External Documentation*\n *\n * \n * Documentation of this widget in the qooxdoo manual.\n */\nqx.Class.define(\"qx.ui.container.Scroll\",\n{\n extend : qx.ui.core.scroll.AbstractScrollArea,\n include : [qx.ui.core.MContentPadding],\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param content {qx.ui.core.LayoutItem?null} The content widget of the scroll\n * container.\n */\n construct : function(content)\n {\n this.base(arguments);\n\n if (content) {\n this.add(content);\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n /**\n * Sets the content of the scroll container. Scroll containers\n * may only have one child, so it always replaces the current\n * child with the given one.\n *\n * @param widget {qx.ui.core.Widget} Widget to insert\n */\n add : function(widget) {\n this.getChildControl(\"pane\").add(widget);\n },\n\n\n /**\n * Returns the content of the scroll area.\n *\n * @param widget {qx.ui.core.Widget} Widget to remove\n */\n remove : function(widget) {\n this.getChildControl(\"pane\").remove(widget);\n },\n\n\n /**\n * Returns the content of the scroll container.\n *\n * Scroll containers may only have one child. This\n * method returns an array containing the child or an empty array.\n *\n * @return {Object[]} The child array\n */\n getChildren : function() {\n return this.getChildControl(\"pane\").getChildren();\n },\n\n\n /**\n * Returns the element, to which the content padding should be applied.\n *\n * @return {qx.ui.core.Widget} The content padding target.\n */\n _getContentPaddingTarget : function() {\n return this.getChildControl(\"pane\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2025 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * @asset(osparc/ui_config.json\")\n * @asset(schemas/product-ui.json)\n * @asset(object-path/object-path-0-11-4.min.js)\n * @asset(ajv/ajv-6-11-0.min.js)\n * @ignore(Ajv)\n */\n\nqx.Class.define(\"osparc.store.Products\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n members: {\n __uiConfig: null,\n\n fetchUiConfig: function() {\n return new Promise(resolve => {\n if (osparc.auth.Data.getInstance().isGuest()) {\n this.__uiConfig = {};\n resolve(this.__uiConfig);\n }\n\n Promise.all([\n osparc.data.Resources.fetch(\"productMetadata\", \"getUiConfig\"),\n osparc.utils.Utils.fetchJSON(\"/resource/osparc/ui_config.json\"),\n osparc.utils.Utils.fetchJSON(\"/resource/schemas/product-ui.json\"),\n ])\n .then(values => {\n let uiConfig = {};\n const beUiConfig = values[0];\n const feUiConfig = values[1];\n const schema = values[2];\n if (beUiConfig && beUiConfig[\"ui\"] && Object.keys(beUiConfig[\"ui\"]).length) {\n uiConfig = beUiConfig[\"ui\"];\n } else {\n const product = osparc.product.Utils.getProductName();\n if (feUiConfig && product in feUiConfig) {\n uiConfig = feUiConfig[product];\n }\n }\n const ajvLoader = new qx.util.DynamicScriptLoader([\n \"/resource/ajv/ajv-6-11-0.min.js\",\n \"/resource/object-path/object-path-0-11-4.min.js\"\n ]);\n ajvLoader.addListener(\"ready\", () => {\n const ajv = new Ajv({\n allErrors: true,\n strictDefaults: true,\n useDefaults: true,\n strictTypes: true,\n });\n const validate = ajv.compile(schema);\n const valid = validate(uiConfig);\n if (valid) {\n this.__uiConfig = uiConfig;\n resolve(this.__uiConfig);\n } else {\n osparc.FlashMessenger.getInstance().logAs(\"Wrong product.ui config\", \"ERROR\");\n validate.errors.forEach(err => {\n console.error(`Error at ${err.dataPath}: ${err.message}`);\n });\n }\n });\n ajvLoader.addListener(\"failed\", console.error, this);\n ajvLoader.start();\n })\n .catch(console.error);\n });\n },\n\n getPlusButtonUiConfig: function() {\n return this.__uiConfig[\"plusButton\"];\n },\n\n getNewStudiesUiConfig: function() {\n return this.__uiConfig[\"newStudies\"];\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Collection of methods for studies\n */\n\nqx.Class.define(\"osparc.utils.DisabledPlugins\", {\n type: \"static\",\n\n statics: {\n EXPORT: \"WEBSERVER_EXPORTER\",\n IMPORT: \"WEBSERVER_EXPORTER\",\n SCICRUNCH: \"WEBSERVER_SCICRUNCH\",\n VERSION_CONTROL: \"WEBSERVER_VERSION_CONTROL\",\n META_MODELING: \"WEBSERVER_META_MODELING\",\n LICENSES: \"WEBSERVER_LICENSES\",\n\n isExportDisabled: function() {\n return this.__isPluginDisabled(this.EXPORT);\n },\n\n isImportDisabled: function() {\n // Import is disabled until an Export (full not cMIS only) function is implemented\n return true;\n // return this.__isPluginDisabled(this.EXPORT);\n },\n\n isVersionControlDisabled: function() {\n return this.__isPluginDisabled(this.VERSION_CONTROL);\n },\n\n isMetaModelingDisabled: function() {\n return this.__isPluginDisabled(this.META_MODELING);\n },\n\n isLicensesDisabled: function() {\n return this.__isPluginDisabled(this.LICENSES);\n },\n\n __isPluginDisabled: function(key) {\n const statics = osparc.store.Store.getInstance().get(\"statics\");\n if (statics) {\n if (\"pluginsDisabled\" in statics) {\n return statics[\"pluginsDisabled\"].includes(key);\n }\n }\n return false;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.store.AppSummary\", {\n type: \"static\",\n\n statics: {\n getLatestUIFromBE: async function() {\n const params = {\n url: {\n productName: osparc.product.Utils.getProductName()\n }\n };\n const appSummary = await osparc.data.Resources.fetch(\"appSummary\", \"get\", params);\n if (appSummary && \"environment\" in appSummary && \"osparc.vcsRefClient\" in appSummary[\"environment\"]) {\n return appSummary[\"environment\"][\"osparc.vcsRefClient\"];\n }\n return null;\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2009 1&1 Internet AG, Germany, http://www.1und1.de\n 2017 Martijn Evers, The Netherlands\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Martin Wittemann (martinwittemann)\n * Martijn Evers (mever)\n\n************************************************************************ */\n/**\n * The resetter is responsible for managing a set of fields and resetting these\n * fields on a {@link #reset} call. It can handle all form field implementing IField.\n */\nqx.Class.define(\"qx.ui.form.Resetter\",\n{\n extend : qx.core.Object,\n\n\n construct : function()\n {\n this.base(arguments);\n\n this.__items = [];\n },\n\n members :\n {\n __items : null,\n\n /**\n * Adding a field to the resetter will get its current value and store\n * it for resetting.\n *\n * @param field {qx.ui.form.IField} The field which should be added.\n * @throws {TypeError} When given argument is not a field.\n */\n add : function(field) {\n this.__typeCheck(field);\n this.__items.push({item: field, init: field.getValue()});\n },\n\n\n /**\n * Removes a field from the resetter.\n *\n * @param field {qx.ui.form.IField} The field which should be removed.\n * @throws {TypeError} When given argument is not a field.\n * @return {Boolean}
true
, if the field has been removed.\n */\n remove : function(field) {\n this.__typeCheck(field);\n for (var i = 0; i < this.__items.length; i++) {\n var storedItem = this.__items[i];\n if (storedItem.item === field) {\n this.__items.splice(i, 1);\n return true;\n }\n }\n return false;\n },\n\n\n /**\n * Resets all added fields to their initial value. The initial value\n * is the value in the widget during the {@link #add}.\n *\n * @return {null|Error} Returns an error when some fields could not be reset.\n */\n reset: function() {\n var dataEntry, e, errors = [];\n for (var i = 0; i < this.__items.length; i++) {\n dataEntry = this.__items[i];\n e = dataEntry.item.setValue(dataEntry.init);\n if (e && e instanceof Error) {\n errors.push(e);\n }\n }\n\n if (errors.length) {\n return new Error(errors.join(', '));\n } else {\n return null;\n }\n },\n\n\n /**\n * Resets a single given field. The field has to be added to the resetter\n * instance before. Otherwise, an error is thrown.\n *\n * @param field {qx.ui.form.IField} The field, which should be reset.\n * @throws {TypeError} When given argument is not a field.\n * @return {null|Error} Returns an error when the field value could not be set.\n */\n resetItem : function(field) {\n this.__typeCheck(field);\n for (var i = 0; i < this.__items.length; i++) {\n var dataEntry = this.__items[i];\n if (dataEntry.item === field) {\n return field.setValue(dataEntry.init);\n }\n }\n\n throw new Error(\"The given field has not been added.\");\n },\n\n\n /**\n * Takes the current values of all added fields and uses these values as\n * init values for resetting.\n */\n redefine: function() {\n // go threw all added items\n for (var i = 0; i < this.__items.length; i++) {\n var item = this.__items[i].item;\n // set the new init value for the item\n this.__items[i].init = item.getValue();\n }\n },\n\n\n /**\n * Takes the current value of the given field and stores this value as init\n * value for resetting.\n *\n * @param field {qx.ui.form.IField} The field to redefine.\n * @throws {TypeError} When given argument is not a field.\n */\n redefineItem : function(field) {\n this.__typeCheck(field);\n\n // get the data entry\n var dataEntry;\n for (var i = 0; i < this.__items.length; i++) {\n if (this.__items[i].item === field) {\n dataEntry = this.__items[i];\n dataEntry.init = dataEntry.item.getValue();\n return;\n }\n }\n\n throw new Error(\"The given field has not been added.\");\n },\n\n\n /**\n * Assert when given argument is not a field.\n *\n * @param field {qx.ui.form.IField|var} Any argument that should be a field.\n * @throws {TypeError} When given argument is not a field.\n * @private\n */\n __typeCheck : function(field) {\n if (!qx.Class.hasInterface(field.constructor, qx.ui.form.IField)) {\n throw new TypeError(\"Field \" + field + \" not supported for resetting.\");\n }\n }\n },\n\n\n /*\n *****************************************************************************\n DESTRUCTOR\n *****************************************************************************\n */\n destruct : function()\n {\n // holding references to widgets --> must set to null\n this.__items = null;\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * App/Theme dependant logo with platform name\n */\nqx.Class.define(\"osparc.ui.basic.LogoWPlatform\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(-5));\n\n this.set({\n alignX: \"center\",\n alignY: \"middle\",\n padding: 3\n });\n\n this.getChildControl(\"logo\");\n this.getChildControl(\"platform\");\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"logo\": {\n control = new osparc.ui.basic.Logo();\n\n const logoContainer = new qx.ui.container.Composite(new qx.ui.layout.HBox().set({\n alignY: \"middle\"\n }));\n logoContainer.add(control);\n\n this._add(logoContainer);\n break;\n }\n case \"platform\": {\n control = new qx.ui.basic.Label().set({\n alignX: \"right\",\n font: \"text-9\"\n });\n\n let platformName = osparc.store.StaticInfo.getInstance().getPlatformName();\n platformName = platformName.toUpperCase();\n if (osparc.utils.Utils.isInZ43()) {\n platformName = \"Z43 \" + platformName;\n }\n control.setValue(platformName);\n control.bind(\"value\", this, \"paddingTop\", {\n converter: value => value ? 3 : 7\n });\n this._add(control);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n setSize: function(size) {\n this.set({\n maxWidth: size.width,\n maxHeight: size.height\n });\n this.getChildControl(\"logo\").set({\n width: size.width,\n height: parseInt(size.height*0.8)\n });\n },\n\n setFont: function(font) {\n const platform = this.getChildControl(\"platform\");\n platform.setFont(font);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Pedro Crespo (pcrespov)\n\n************************************************************************ */\n\n/** Login page\n *\n * - Form with fields necessary to login\n * - Form data validation\n * - Adds links to register and reset pages. Transitions are fired as events.\n * - To execute login, it delegates on the auth.manager\n * - Minimal layout and appearance is delegated to the selected theme\n */\n\nqx.Class.define(\"osparc.auth.ui.LoginView\", {\n extend: osparc.auth.core.BaseAuthPage,\n\n construct: function() {\n this.__hideableItems = [];\n\n this.base(arguments);\n },\n\n events: {\n \"toRegister\": \"qx.event.type.Event\",\n \"toRequestAccount\": \"qx.event.type.Event\",\n \"toReset\": \"qx.event.type.Event\",\n \"toVerifyPhone\": \"qx.event.type.Data\",\n \"to2FAValidationCode\": \"qx.event.type.Data\"\n },\n\n members: {\n __loginBtn: null,\n __loginAnnouncements: null,\n __hideableItems: null,\n\n // overrides base\n _buildPage: function() {\n this.__addAnnouncements();\n this.__addLoginForms();\n this.__addExtraWidgets();\n },\n\n __addAnnouncements: function() {\n const announcementUIFactory = osparc.announcement.AnnouncementUIFactory.getInstance();\n const addAnnouncements = () => {\n if (this.__loginAnnouncements) {\n this.remove(this.__loginAnnouncements);\n }\n this.__loginAnnouncements = announcementUIFactory.createLoginAnnouncements();\n this.addAt(this.__loginAnnouncements, 0);\n };\n if (announcementUIFactory.hasLoginAnnouncement()) {\n addAnnouncements();\n } else {\n announcementUIFactory.addListenerOnce(\"changeAnnouncements\", () => addAnnouncements());\n }\n },\n\n __addLoginForms: function() {\n const email = new qx.ui.form.TextField().set({\n required: true\n });\n email.getContentElement().setAttribute(\"autocomplete\", \"username\");\n osparc.utils.Utils.setIdToWidget(email, \"loginUserEmailFld\");\n this._form.add(email, \" Your email address\", qx.util.Validate.email(), \"email\");\n this.addListener(\"appear\", () => {\n email.focus();\n email.activate();\n });\n\n const pass = new osparc.ui.form.PasswordField().set({\n required: true\n });\n pass.getChildControl(\"passwordField\").getContentElement().setAttribute(\"autocomplete\", \"current-password\");\n osparc.utils.Utils.setIdToWidget(pass.getChildControl(\"passwordField\"), \"loginPasswordFld\");\n this._form.add(pass, \" Your password\", null, \"password\");\n\n this.beautifyFormFields();\n const formRenderer = new qx.ui.form.renderer.SinglePlaceholder(this._form);\n this.add(formRenderer);\n\n // buttons\n const loginBtn = this.__loginBtn = new osparc.ui.form.FetchButton(this.tr(\"Sign in\")).set({\n center: true,\n appearance: \"strong-button\"\n });\n loginBtn.addListener(\"execute\", () => this.__login(), this);\n osparc.utils.Utils.setIdToWidget(loginBtn, \"loginSubmitBtn\");\n this.add(loginBtn);\n\n\n // (create account/request account) | forgot password? links\n const grp = new qx.ui.container.Composite(new qx.ui.layout.HBox(20));\n\n const createAccountBtn = new osparc.ui.form.LinkButton(this.tr(\"Create Account\"));\n const createAccountAction = osparc.product.Utils.getCreateAccountAction();\n if ([\"REQUEST_ACCOUNT_FORM\", \"REQUEST_ACCOUNT_INSTRUCTIONS\"].includes(createAccountAction)) {\n createAccountBtn.setLabel(this.tr(\"Request Account\"));\n }\n createAccountBtn.addListener(\"execute\", () => {\n if (window.location.hostname === \"tip.itis.swiss\") {\n this.__openTipItisPhaseOutDialog();\n } else if (createAccountAction === \"REGISTER\") {\n this.fireEvent(\"toRegister\");\n } else if (createAccountAction === \"REQUEST_ACCOUNT_FORM\") {\n this.fireEvent(\"toRequestAccount\");\n } else if (createAccountAction === \"REQUEST_ACCOUNT_INSTRUCTIONS\") {\n osparc.store.Support.openInvitationRequiredDialog();\n }\n }, this);\n osparc.utils.Utils.setIdToWidget(createAccountBtn, \"loginCreateAccountBtn\");\n\n const forgotBtn = new osparc.ui.form.LinkButton(this.tr(\"Forgot Password?\"));\n forgotBtn.addListener(\"execute\", () => this.fireEvent(\"toReset\"), this);\n osparc.utils.Utils.setIdToWidget(forgotBtn, \"loginForgotPasswordBtn\");\n\n [createAccountBtn, forgotBtn].forEach(btn => {\n grp.add(btn.set({\n center: true,\n allowGrowX: true\n }), {\n width: \"50%\"\n });\n });\n\n this.add(grp);\n },\n\n __addExtraWidgets: function() {\n if (osparc.product.Utils.isProduct(\"tis\") || osparc.product.Utils.isProduct(\"tiplite\")) {\n let text = \"\";\n if (osparc.product.Utils.isProduct(\"tiplite\")) {\n text = \"The TIP tool is designed for research purposes only and is not intended for clinical use.\"\n } else {\n text = `\n 1) The TIP tool is designed for research purposes only and is not intended for clinical use.\n \n \n 2) Users are responsible for ensuring the anonymization and privacy protection of personal data.\n \n \n 3) The development, maintenance and usage of the TIP tool is fully sponsored by the IT’IS Foundation, with the exception of the 61 complex 3D electromagnetic simulations on the AWS cluster required for the personalized plans.\n `;\n }\n const disclaimer = osparc.announcement.AnnouncementUIFactory.createLoginAnnouncement(this.tr(\"Disclaimer\"), text);\n disclaimer.getChildren()[0].setFont(\"text-14\"); // title\n disclaimer.getChildren()[1].setFont(\"text-12\"); // description\n this.add(disclaimer);\n\n const poweredByLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox()).set({\n alignX: \"center\",\n allowGrowX: false,\n cursor: \"pointer\"\n });\n poweredByLayout.addListener(\"tap\", () => window.open(\"https://sim4life.swiss/\"));\n const label = new qx.ui.basic.Label(this.tr(\"powered by\"));\n poweredByLayout.add(label);\n const s4lLogo = new qx.ui.basic.Image(\"osparc/Sim4Life_full_logo_white.svg\");\n s4lLogo.set({\n width: osparc.auth.LoginWithDecorators.LOGO_WIDTH/2,\n height: osparc.auth.LoginWithDecorators.LOGO_HEIGHT/2,\n scale: true,\n alignX: \"center\"\n });\n poweredByLayout.add(s4lLogo);\n this.add(poweredByLayout);\n this.__hideableItems.push(poweredByLayout);\n }\n },\n\n getHideableItems: function() {\n return this.__hideableItems;\n },\n\n __openTipItisPhaseOutDialog: function() {\n const createAccountWindow = new osparc.ui.window.Dialog(this.tr(\"Request Account\")).set({\n maxWidth: 380\n });\n let message = \"This version of the planning tool will be phased out soon and no longer accepts new users.\";\n message += \"\n * let navBar = new osparc.navigation.NavigationBar();\n * this.getRoot().add(navBar);\n *\n */\n\nqx.Class.define(\"osparc.navigation.NavigationBar\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.HBox(20).set({\n alignY: \"middle\"\n }));\n\n this.set({\n paddingLeft: 10,\n paddingRight: 10,\n height: this.self().HEIGHT,\n backgroundColor: \"background-main-1\",\n });\n\n osparc.utils.Utils.setIdToWidget(this, \"navigationBar\");\n },\n\n events: {\n \"backToDashboardPressed\": \"qx.event.type.Event\",\n \"openLogger\": \"qx.event.type.Event\"\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n nullable: true,\n init: null,\n event: \"changeStudy\",\n apply: \"__applyStudy\"\n }\n },\n\n statics: {\n HEIGHT: 50,\n SMALL_SCREEN_BREAKPOINT: 800,\n\n BUTTON_OPTIONS: {\n font: \"text-14\",\n allowGrowY: false,\n minWidth: 30,\n minHeight: 30\n },\n },\n\n members: {\n __tabButtons: null,\n\n populateLayout: function() {\n this.__buildLayout();\n osparc.WindowSizeTracker.getInstance().addListener(\"changeCompactVersion\", () => this.__navBarResized(), this);\n },\n\n __buildLayout: function() {\n this.getChildControl(\"left-items\");\n this.getChildControl(\"center-items\");\n this.getChildControl(\"right-items\");\n\n // left-items\n this.getChildControl(\"logo\");\n if (!osparc.product.Utils.isProduct(\"osparc\")) {\n this.getChildControl(\"logo-powered\");\n }\n\n const dashboardBtn = this.getChildControl(\"dashboard-button\");\n this.bind(\"study\", dashboardBtn, \"visibility\", {\n converter: s => s ? \"visible\" : \"excluded\"\n });\n\n const studyTitleOptions = this.getChildControl(\"study-title-options\");\n this.bind(\"study\", studyTitleOptions, \"visibility\", {\n converter: s => s ? \"visible\" : \"excluded\"\n });\n\n // center-items\n this.getChildControl(\"read-only-info\");\n\n // right-items\n this.getChildControl(\"tasks-button\");\n this.getChildControl(\"notifications-button\");\n this.getChildControl(\"expiration-icon\");\n this.getChildControl(\"help\");\n if (osparc.desktop.credits.Utils.areWalletsEnabled()) {\n this.getChildControl(\"credits-button\");\n }\n this.getChildControl(\"log-in-button\");\n this.getChildControl(\"user-menu\");\n },\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"left-items\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(20).set({\n alignY: \"middle\",\n alignX: \"left\"\n }));\n this._addAt(control, 0);\n break;\n case \"center-items\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignY: \"middle\",\n alignX: \"center\"\n }));\n this._addAt(control, 1, {\n flex: 1\n });\n break;\n case \"right-items\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignY: \"middle\",\n alignX: \"right\"\n }));\n this._addAt(control, 2);\n break;\n case \"logo\":\n control = osparc.navigation.LogoOnOff.getInstance().set({\n alignY: \"middle\"\n });\n control.getChildControl(\"off-logo\").set({\n width: 92,\n height: 35,\n scale: true\n })\n control.getChildControl(\"on-logo\").setSize({\n width: osparc.product.Utils.isS4LProduct() ? 150 : 100,\n height: osparc.navigation.NavigationBar.HEIGHT\n });\n if (osparc.product.Utils.isProduct(\"tiplite\")) {\n control.set({\n cursor: \"pointer\",\n toolTipText: this.tr(\"This is TIP.lite, a light version of TIP.
beforeChangeSelection
.\n *\n * @param e {qx.event.type.Event} Data event.\n */\n _onBeforeChangeSelection : function(e)\n {\n if (!this.fireNonBubblingEvent(\"beforeChangeSelection\",\n qx.event.type.Event, [false, true])) {\n e.preventDefault();\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n EVENT LISTENERS\n ---------------------------------------------------------------------------\n */\n\n\n /**\n * Event handler for the change of the selected item of the radio group.\n * @param e {qx.event.type.Data} The data event\n */\n _onRadioChangeSelection : function(e) {\n var element = e.getData()[0];\n if (element) {\n this.setSelection([element.getUserData(\"page\")]);\n } else {\n this.resetSelection();\n }\n },\n\n\n /**\n * Removes the Page widget on which the close button was tapped.\n *\n * @param e {qx.event.type.Pointer} pointer event\n */\n _onPageClose : function(e)\n {\n // reset the old close button states, before remove page\n // see http://bugzilla.qooxdoo.org/show_bug.cgi?id=3763 for details\n var page = e.getTarget();\n var closeButton = page.getButton().getChildControl(\"close-button\");\n closeButton.reset();\n\n this.remove(page);\n }\n },\n\n\n /*\n *****************************************************************************\n DESTRUCTOR\n *****************************************************************************\n */\n\n\n destruct : function() {\n this._disposeObjects(\"__radioGroup\");\n this.__barPositionToState = null;\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget containing a TabView including:\n * - StudyBrowser\n * - TemplateBrowser\n * - ServiceBrowser\n * - DataBrowser\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let dashboard = new osparc.dashboard.Dashboard();\n * this.getRoot().add(dashboard);\n *\n */\n\nqx.Class.define(\"osparc.dashboard.Dashboard\", {\n extend: qx.ui.tabview.TabView,\n\n construct: function() {\n this.base(arguments);\n\n osparc.utils.Utils.setIdToWidget(this.getChildControl(\"bar\"), \"dashboardTabs\");\n osparc.utils.Utils.setIdToWidget(this, \"dashboard\");\n\n this.set({\n contentPadding: this.self().PADDING,\n contentPaddingBottom: 0,\n barPosition: \"top\"\n });\n\n // osparc.wrapper.Plotly.getInstance().init();\n // osparc.wrapper.Three.getInstance().init();\n osparc.wrapper.Svg.getInstance().init();\n osparc.wrapper.JsonDiffPatch.getInstance().init();\n osparc.wrapper.JsonTreeViewer.getInstance().init();\n osparc.wrapper.DOMPurify.getInstance().init();\n osparc.wrapper.RadialMenu.getInstance().init()\n .then(loaded => {\n if (loaded) {\n // hack to trigger fonts loading\n const menu = osparc.wrapper.RadialMenu.getInstance().createMenu();\n menu.show();\n menu.hide();\n }\n });\n this.__createMainViewLayout();\n },\n\n properties: {\n appearance: {\n init: \"dashboard\",\n refine: true\n }\n },\n\n statics: {\n PADDING: 15\n },\n\n members: {\n __studyBrowser: null,\n __templateBrowser: null,\n __serviceBrowser: null,\n __dataBrowser: null,\n\n getStudyBrowser: function() {\n return this.__studyBrowser;\n },\n\n getTemplateBrowser: function() {\n return this.__templateBrowser;\n },\n\n getServiceBrowser: function() {\n return this.__serviceBrowser;\n },\n\n __createMainViewLayout: function() {\n const permissions = osparc.data.Permissions.getInstance();\n const tabIconSize = 20;\n const tabs = [{\n id: \"studiesTab\",\n buttonId: \"studiesTabBtn\",\n label: osparc.product.Utils.getStudyAlias({\n plural: true,\n allUpperCase: true\n }),\n icon: \"@FontAwesome5Solid/file/\"+tabIconSize,\n buildLayout: this.__createStudyBrowser\n }];\n if (permissions.canDo(\"dashboard.templates.read\")) {\n tabs.push({\n id: \"templatesTab\",\n buttonId: \"templatesTabBtn\",\n label: osparc.product.Utils.getTemplateAlias({\n plural: true,\n allUpperCase: true\n }),\n icon: \"@FontAwesome5Solid/copy/\"+tabIconSize,\n buildLayout: this.__createTemplateBrowser\n });\n }\n if (permissions.canDo(\"dashboard.services.read\")) {\n tabs.push({\n id: \"servicesTab\",\n buttonId: \"servicesTabBtn\",\n label: this.tr(\"SERVICES\"),\n icon: \"@FontAwesome5Solid/cogs/\"+tabIconSize,\n buildLayout: this.__createServiceBrowser\n });\n }\n if (permissions.canDo(\"dashboard.data.read\") && osparc.product.Utils.isProduct(\"osparc\")) {\n tabs.push({\n id: \"dataTab\",\n buttonId: \"dataTabBtn\",\n label: this.tr(\"DATA\"),\n icon: \"@FontAwesome5Solid/folder/\"+tabIconSize,\n buildLayout: this.__createDataBrowser\n });\n }\n tabs.forEach(({id, buttonId, label, icon, buildLayout}) => {\n const tabPage = new qx.ui.tabview.Page(label, icon).set({\n appearance: \"dashboard-page\"\n });\n tabPage.id = id;\n const tabButton = tabPage.getChildControl(\"button\");\n tabButton.set({\n minWidth: 50,\n maxHeight: 36,\n });\n tabButton.ttt = label;\n tabButton.getChildControl(\"label\").set({\n font: \"text-16\"\n });\n tabButton.getChildControl(\"icon\").set({\n visibility: \"excluded\"\n });\n osparc.utils.Utils.centerTabIcon(tabPage);\n osparc.utils.Utils.setIdToWidget(tabButton, buttonId);\n tabPage.setLayout(new qx.ui.layout.Grow());\n\n const viewLayout = buildLayout.call(this);\n tabButton.addListener(\"execute\", () => {\n if (viewLayout.resetSelection) {\n viewLayout.resetSelection();\n }\n }, this);\n viewLayout.addListener(\"changeTab\", e => {\n const activeTab = e.getData();\n const tabFound = this.getSelectables().find(s => s.id === activeTab);\n if (tabFound) {\n this.setSelection([tabFound]);\n }\n }, this);\n const scrollerMainView = new qx.ui.container.Scroll();\n scrollerMainView.add(viewLayout);\n tabPage.add(scrollerMainView);\n\n this.add(tabPage);\n }, this);\n\n const preResourcePromises = [];\n const groupsStore = osparc.store.Groups.getInstance();\n preResourcePromises.push(groupsStore.fetchGroupsAndMembers());\n preResourcePromises.push(osparc.store.Services.getServicesLatest(false));\n Promise.all(preResourcePromises)\n .then(() => {\n [\n this.__studyBrowser,\n this.__templateBrowser,\n this.__serviceBrowser,\n this.__dataBrowser\n ].forEach(resourceBrowser => {\n if (resourceBrowser) {\n resourceBrowser.initResources();\n }\n });\n })\n .catch(err => console.error(err));\n },\n\n __createStudyBrowser: function() {\n const studiesView = this.__studyBrowser = new osparc.dashboard.StudyBrowser();\n return studiesView;\n },\n\n __createTemplateBrowser: function() {\n const templatesView = this.__templateBrowser = new osparc.dashboard.TemplateBrowser();\n return templatesView;\n },\n\n __createServiceBrowser: function() {\n const servicesView = this.__serviceBrowser = new osparc.dashboard.ServiceBrowser();\n return servicesView;\n },\n\n __createDataBrowser: function() {\n const dataManagerView = this.__dataBrowser = new osparc.dashboard.DataBrowser();\n return dataManagerView;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2025 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.store.Study\", {\n type: \"static\",\n\n statics: {\n patchStudyData: function(studyData, fieldKey, value) {\n if (osparc.data.model.Study.OwnPatch.includes(fieldKey)) {\n console.error(fieldKey, \"has it's own PATCH path\");\n return null;\n }\n\n const patchData = {};\n patchData[fieldKey] = value;\n const params = {\n url: {\n \"studyId\": studyData[\"uuid\"]\n },\n data: patchData\n };\n return osparc.data.Resources.fetch(\"studies\", \"patch\", params)\n .then(() => {\n studyData[fieldKey] = value;\n // A bit hacky, but it's not sent back to the backend\n studyData[\"lastChangeDate\"] = new Date().toISOString();\n });\n },\n\n patchNodeData: function(studyData, nodeId, patchData) {\n const params = {\n url: {\n \"studyId\": studyData[\"uuid\"],\n \"nodeId\": nodeId\n },\n data: patchData\n };\n return osparc.data.Resources.fetch(\"studies\", \"patchNode\", params)\n .then(() => {\n Object.keys(patchData).forEach(key => {\n studyData[\"workbench\"][nodeId][key] = patchData[key];\n });\n // A bit hacky, but it's not sent back to the backend\n studyData[\"lastChangeDate\"] = new Date().toISOString();\n });\n },\n\n addCollaborators: function(studyData, newCollaborators) {\n const promises = [];\n Object.keys(newCollaborators).forEach(gid => {\n const params = {\n url: {\n \"studyId\": studyData[\"uuid\"],\n \"gId\": gid\n },\n data: newCollaborators[gid]\n };\n promises.push(osparc.data.Resources.fetch(\"studies\", \"postAccessRights\", params));\n });\n return Promise.all(promises)\n .then(() => {\n Object.keys(newCollaborators).forEach(gid => {\n studyData[\"accessRights\"][gid] = newCollaborators[gid];\n });\n studyData[\"lastChangeDate\"] = new Date().toISOString();\n })\n .catch(err => osparc.FlashMessenger.logAs(err.message, \"ERROR\"));\n },\n\n removeCollaborator: function(studyData, gid) {\n const params = {\n url: {\n \"studyId\": studyData[\"uuid\"],\n \"gId\": gid\n }\n };\n return osparc.data.Resources.fetch(\"studies\", \"deleteAccessRights\", params)\n .then(() => {\n delete studyData[\"accessRights\"][gid];\n studyData[\"lastChangeDate\"] = new Date().toISOString();\n })\n .catch(err => osparc.FlashMessenger.logAs(err.message, \"ERROR\"));\n },\n\n updateCollaborator: function(studyData, gid, newPermissions) {\n const params = {\n url: {\n \"studyId\": studyData[\"uuid\"],\n \"gId\": gid\n },\n data: newPermissions\n };\n return osparc.data.Resources.fetch(\"studies\", \"putAccessRights\", params)\n .then(() => {\n studyData[\"accessRights\"][gid] = newPermissions;\n studyData[\"lastChangeDate\"] = new Date().toISOString();\n })\n .catch(err => osparc.FlashMessenger.logAs(err.message, \"ERROR\"));\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Abstract widget that handles the loading page + main widget\n */\nqx.Class.define(\"osparc.ui.basic.LoadingPageHandler\", {\n extend: qx.ui.core.Widget,\n type: \"abstract\",\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox());\n\n const stack = this.__stack = new qx.ui.container.Stack();\n this._add(stack, {\n flex: 1\n });\n\n this._loadingPage = new osparc.ui.message.Loading();\n stack.add(this._loadingPage);\n\n this.__mainLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox())\n stack.add(this.__mainLayout);\n },\n\n members: {\n __stack: null,\n _loadingPage: null,\n __mainLayout: null,\n\n _showLoadingPage: function(label) {\n if (label) {\n this._loadingPage.setHeader(label);\n }\n this.__stack.setSelection([this._loadingPage]);\n },\n\n _showMainLayout: function() {\n this.__stack.setSelection([this.__mainLayout]);\n },\n\n _hideLoadingPage: function() {\n this._showMainLayout();\n },\n\n _addToMainLayout: function(widget, props = {}) {\n this.__mainLayout.add(widget, props);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.StudyEditor\", {\n extend: osparc.ui.basic.LoadingPageHandler,\n\n construct: function() {\n this.base(arguments);\n\n const viewsStack = this.__viewsStack = new qx.ui.container.Stack();\n const workbenchView = this.__workbenchView = new osparc.desktop.WorkbenchView();\n viewsStack.add(workbenchView);\n const slideshowView = this.__slideshowView = new osparc.desktop.SlideshowView();\n viewsStack.add(slideshowView);\n\n [\n \"collapseNavBar\",\n \"expandNavBar\",\n \"backToDashboardPressed\"\n ].forEach(signalName => {\n workbenchView.addListener(signalName, () => this.fireEvent(signalName));\n slideshowView.addListener(signalName, () => this.fireEvent(signalName));\n });\n\n workbenchView.addListener(\"slidesEdit\", () => this.__editSlides(), this);\n\n workbenchView.addListener(\"takeSnapshot\", () => this.__takeSnapshot(), this);\n workbenchView.addListener(\"takeSnapshot\", () => this.__takeSnapshot(), this);\n workbenchView.addListener(\"showSnapshots\", () => this.__showSnapshots(), this);\n workbenchView.addListener(\"createIterations\", () => this.__createIterations(), this);\n workbenchView.addListener(\"showIterations\", () => this.__showIterations(), this);\n\n workbenchView.addListener(\"changeSelectedNode\", e => {\n if (this.__nodesSlidesTree) {\n const nodeId = e.getData();\n this.__nodesSlidesTree.changeSelectedNode(nodeId);\n }\n });\n\n\n const wbAppear = new Promise(resolve => workbenchView.addListenerOnce(\"appear\", resolve, false));\n const ssAppear = new Promise(resolve => slideshowView.addListenerOnce(\"appear\", resolve, false));\n Promise.all([wbAppear, ssAppear]).then(() => {\n // both are ready\n workbenchView.getCollapseWithUserMenu().bind(\"collapsed\", slideshowView.getCollapseWithUserMenu(), \"collapsed\");\n slideshowView.getCollapseWithUserMenu().bind(\"collapsed\", workbenchView.getCollapseWithUserMenu(), \"collapsed\");\n });\n\n slideshowView.addListener(\"startPartialPipeline\", e => {\n const partialPipeline = e.getData();\n this.__startPipeline(partialPipeline);\n }, this);\n slideshowView.addListener(\"stopPipeline\", this.__stopPipeline, this);\n\n\n const startStopButtons = workbenchView.getStartStopButtons();\n startStopButtons.addListener(\"startPipeline\", () => this.__startPipeline([]), this);\n startStopButtons.addListener(\"startPartialPipeline\", () => {\n const partialPipeline = this.getStudy().getUi().getMode() === \"app\" ? this.__slideshowView.getSelectedNodeIDs() : this.__workbenchView.getSelectedNodeIDs();\n this.__startPipeline(partialPipeline);\n }, this);\n startStopButtons.addListener(\"stopPipeline\", () => this.__stopPipeline(), this);\n\n\n this._addToMainLayout(viewsStack, {\n flex: 1\n });\n\n this.__updatingStudy = 0;\n },\n\n events: {\n \"forceBackToDashboard\": \"qx.event.type.Event\",\n \"backToDashboardPressed\": \"qx.event.type.Event\",\n \"userIdled\": \"qx.event.type.Event\",\n \"collapseNavBar\": \"qx.event.type.Event\",\n \"expandNavBar\": \"qx.event.type.Event\",\n \"startSnapshot\": \"qx.event.type.Data\",\n \"startIteration\": \"qx.event.type.Data\"\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n init: null,\n nullable: true,\n apply: \"__applyStudy\",\n event: \"changeStudy\"\n },\n },\n\n statics: {\n AUTO_SAVE_INTERVAL: 3000,\n READ_ONLY_TEXT: qx.locale.Manager.tr(\"You do not have writing permissions.
\n * const study = new osparc.data.model.Study(studyData);\n * const studyEditor = new osparc.desktop.StudyEditor();\n * studyEditor.setStudy(study);\n *\n */\n\nqx.Class.define(\"osparc.data.model.Study\", {\n extend: qx.core.Object,\n\n /**\n * @param studyData {Object} Object containing the serialized Study Data\n */\n construct: function(studyData) {\n this.base(arguments);\n\n this.set({\n uuid: studyData.uuid || this.getUuid(),\n workspaceId: studyData.workspaceId || null,\n folderId: studyData.folderId || null,\n name: studyData.name || this.getName(),\n description: studyData.description || this.getDescription(),\n thumbnail: studyData.thumbnail || this.getThumbnail(),\n prjOwner: studyData.prjOwner || this.getPrjOwner(),\n accessRights: studyData.accessRights || this.getAccessRights(),\n creationDate: studyData.creationDate ? new Date(studyData.creationDate) : this.getCreationDate(),\n lastChangeDate: studyData.lastChangeDate ? new Date(studyData.lastChangeDate) : this.getLastChangeDate(),\n classifiers: studyData.classifiers || this.getClassifiers(),\n tags: studyData.tags || this.getTags(),\n state: studyData.state || this.getState(),\n quality: studyData.quality || this.getQuality(),\n permalink: studyData.permalink || this.getPermalink(),\n dev: studyData.dev || this.getDev(),\n trashedAt: studyData.trashedAt ? new Date(studyData.trashedAt) : this.getTrashedAt(),\n trashedBy: studyData.trashedBy || null,\n });\n\n const wbData = studyData.workbench || this.getWorkbench();\n const workbench = new osparc.data.model.Workbench(wbData, studyData.ui);\n this.setWorkbench(workbench);\n workbench.setStudy(this);\n\n const workbenchUi = new osparc.data.model.StudyUI(studyData.ui);\n this.setUi(workbenchUi);\n\n this.getWorkbench().buildWorkbench();\n },\n\n properties: {\n uuid: {\n check: \"String\",\n nullable: false,\n event: \"changeUuid\",\n init: \"\"\n },\n\n workspaceId: {\n check: \"Number\",\n init: null,\n nullable: true,\n event: \"changeWorkspaceId\"\n },\n\n folderId: {\n check: \"Number\",\n init: null,\n nullable: true,\n event: \"changeFolderId\"\n },\n\n name: {\n check: \"String\",\n nullable: false,\n event: \"changeName\",\n init: \"New Study\"\n },\n\n description: {\n check: \"String\",\n nullable: true,\n event: \"changeDescription\",\n init: null\n },\n\n prjOwner: {\n check: \"String\",\n nullable: false,\n event: \"changePrjOwner\",\n init: \"\"\n },\n\n accessRights: {\n check: \"Object\",\n nullable: false,\n event: \"changeAccessRights\",\n apply: \"__applyAccessRights\",\n init: {}\n },\n\n creationDate: {\n check: \"Date\",\n nullable: false,\n event: \"changeCreationDate\",\n init: new Date()\n },\n\n lastChangeDate: {\n check: \"Date\",\n nullable: false,\n event: \"changeLastChangeDate\",\n init: new Date()\n },\n\n thumbnail: {\n check: \"String\",\n nullable: false,\n event: \"changeThumbnail\",\n init: \"\"\n },\n\n workbench: {\n check: \"osparc.data.model.Workbench\",\n nullable: false,\n event: \"changeWorkbench\",\n init: {}\n },\n\n ui: {\n check: \"osparc.data.model.StudyUI\",\n nullable: true\n },\n\n tags: {\n check: \"Array\",\n init: [],\n event: \"changeTags\",\n nullable: true\n },\n\n classifiers: {\n check: \"Array\",\n init: [],\n event: \"changeClassifiers\",\n nullable: true\n },\n\n quality: {\n check: \"Object\",\n init: {},\n event: \"changeQuality\",\n nullable: true\n },\n\n permalink: {\n check: \"Object\",\n nullable: true,\n init: {}\n },\n\n dev: {\n check: \"Object\",\n nullable: true,\n init: {}\n },\n\n // ------ ignore for serializing ------\n state: {\n check: \"Object\",\n nullable: true,\n event: \"changeState\",\n apply: \"__applyState\"\n },\n\n pipelineRunning: {\n check: \"Boolean\",\n nullable: true,\n init: false,\n event: \"changePipelineRunning\"\n },\n\n readOnly: {\n check: \"Boolean\",\n nullable: true,\n event: \"changeReadOnly\",\n init: true\n },\n\n trashedAt: {\n check: \"Date\",\n nullable: true,\n init: null,\n },\n\n trashedBy: {\n check: \"Number\",\n nullable: true,\n init: null,\n event: \"changeTrashedBy\",\n },\n // ------ ignore for serializing ------\n },\n\n statics: {\n IgnoreSerializationProps: [\n \"permalink\",\n \"state\",\n \"pipelineRunning\",\n \"readOnly\",\n \"trashedAt\",\n ],\n\n IgnoreModelizationProps: [\n \"dev\"\n ],\n\n OwnPatch: [\n \"accessRights\",\n \"workbench\"\n ],\n\n createMinStudyObject: function() {\n let myNewStudyObject = {};\n const props = qx.util.PropertyUtil.getProperties(osparc.data.model.Study);\n for (let key in props) {\n const prop = props[key];\n if (!prop.nullable) {\n if (typeof prop.init === \"object\") {\n myNewStudyObject[key] = osparc.utils.Utils.deepCloneObject(prop.init);\n } else {\n myNewStudyObject[key] = prop.init;\n }\n }\n }\n return myNewStudyObject;\n },\n\n getProperties: function() {\n return Object.keys(qx.util.PropertyUtil.getProperties(osparc.data.model.Study));\n },\n\n // deep clones object with study-only properties\n deepCloneStudyObject: function(obj, ignoreExtra = false) {\n const studyObject = osparc.utils.Utils.deepCloneObject(obj);\n const studyPropKeys = osparc.data.model.Study.getProperties();\n Object.keys(studyObject).forEach(key => {\n if (!studyPropKeys.includes(key)) {\n delete studyObject[key];\n }\n if (ignoreExtra && osparc.data.model.Study.IgnoreSerializationProps.includes(key)) {\n delete studyObject[key];\n }\n });\n return studyObject;\n },\n\n canIWrite: function(studyAccessRights) {\n const groupsStore = osparc.store.Groups.getInstance();\n const orgIDs = groupsStore.getOrganizationIds();\n orgIDs.push(groupsStore.getMyGroupId());\n if (orgIDs.length) {\n return osparc.share.CollaboratorsStudy.canGroupsWrite(studyAccessRights, (orgIDs));\n }\n return false;\n },\n\n canIDelete: function(studyAccessRights) {\n const groupsStore = osparc.store.Groups.getInstance();\n const orgIDs = groupsStore.getOrganizationIds();\n orgIDs.push(groupsStore.getMyGroupId());\n if (orgIDs.length) {\n return osparc.share.CollaboratorsStudy.canGroupsDelete(studyAccessRights, (orgIDs));\n }\n return false;\n },\n\n getOutputValue: function(studyData, nodeId, portId) {\n if (\"workbench\" in studyData &&\n nodeId in studyData[\"workbench\"] &&\n \"outputs\" in studyData[\"workbench\"][nodeId] &&\n portId in studyData[\"workbench\"][nodeId][\"outputs\"]\n ) {\n return studyData[\"workbench\"][nodeId][\"outputs\"][portId];\n }\n return null;\n },\n\n computeStudyProgress: function(studyData) {\n const nodes = studyData[\"workbench\"];\n let nCompNodes = 0;\n let overallProgress = 0;\n Object.values(nodes).forEach(node => {\n const metadata = osparc.store.Services.getMetadata(node[\"key\"], node[\"version\"]);\n if (metadata && osparc.data.model.Node.isComputational(metadata)) {\n const progress = \"progress\" in node ? node[\"progress\"] : 0;\n overallProgress += progress;\n nCompNodes++;\n }\n });\n if (nCompNodes === 0) {\n return null;\n }\n return overallProgress/nCompNodes;\n },\n\n isRunning: function(state) {\n return [\n \"PUBLISHED\",\n \"PENDING\",\n \"WAITING_FOR_RESOURCES\",\n \"WAITING_FOR_CLUSTER\",\n \"STARTED\",\n \"RETRY\"\n ].includes(state);\n },\n },\n\n members: {\n serialize: function(clean = true) {\n let jsonObject = {};\n const propertyKeys = this.self().getProperties();\n propertyKeys.forEach(key => {\n if (this.self().IgnoreSerializationProps.includes(key)) {\n return;\n }\n if (key === \"workbench\") {\n jsonObject[key] = this.getWorkbench().serialize(clean);\n return;\n }\n if (key === \"ui\") {\n jsonObject[key] = this.getUi().serialize();\n return;\n }\n jsonObject[key] = this.get(key);\n });\n return jsonObject;\n },\n\n initStudy: function() {\n this.getWorkbench().initWorkbench();\n },\n\n isSnapshot: function() {\n return false;\n },\n\n getSnapshots: function() {\n return new Promise((resolve, reject) => {\n if (!osparc.data.Permissions.getInstance().canDo(\"study.snapshot.read\")) {\n reject();\n return;\n }\n const params = {\n url: {\n \"studyId\": this.getUuid()\n }\n };\n osparc.data.Resources.getInstance().getAllPages(\"snapshots\", params)\n .then(snapshots => {\n resolve(snapshots);\n })\n .catch(err => {\n console.error(err);\n reject(err);\n });\n });\n },\n\n getCurrentSnapshot: function() {\n return new Promise((resolve, reject) => {\n const params = {\n url: {\n \"studyId\": this.getUuid()\n }\n };\n osparc.data.Resources.fetch(\"snapshots\", \"currentCommit\", params)\n .then(currentSnapshot => {\n resolve(currentSnapshot);\n })\n .catch(err => {\n console.error(err);\n reject(err);\n });\n });\n },\n\n getIterations: function() {\n return new Promise((resolve, reject) => {\n if (!osparc.data.Permissions.getInstance().canDo(\"study.snapshot.read\")) {\n reject();\n return;\n }\n this.getCurrentSnapshot()\n .then(snapshot => {\n const params = {\n url: {\n studyId: this.getUuid(),\n snapshotId: snapshot[\"id\"]\n }\n };\n osparc.data.Resources.get(\"iterations\", params)\n .then(iterations => {\n resolve(iterations);\n })\n .catch(err => {\n console.error(err);\n reject(err);\n });\n })\n .catch(err => {\n console.error(err);\n reject(err);\n });\n });\n },\n\n __getFoldersPath: function(childId, foldersPath = []) {\n foldersPath.unshift(childId);\n const childFolder = osparc.store.Folders.getInstance().getFolder(childId);\n if (childFolder) {\n const parentFolder = osparc.store.Folders.getInstance().getFolder(childFolder.getParentFolderId());\n if (parentFolder) {\n this.__getFoldersPath(parentFolder.getFolderId(), foldersPath);\n }\n }\n return foldersPath;\n },\n\n getLocationString: function() {\n const location = [];\n\n if (this.getWorkspaceId()) {\n const workspace = osparc.store.Workspaces.getInstance().getWorkspace(this.getWorkspaceId());\n location.push(workspace.getName());\n } else {\n location.push(qx.locale.Manager.tr(\"My Workspace\"));\n }\n\n const foldersPathIds = this.__getFoldersPath(this.getFolderId());\n foldersPathIds.forEach(folderId => {\n const folder = osparc.store.Folders.getInstance().getFolder(folderId);\n if (folder) {\n location.push(folder.getName());\n }\n });\n\n return location.join(\" / \");\n },\n\n // Used for updating some node data through the \"nodeUpdated\" websocket event\n nodeUpdated: function(nodeUpdatedData) {\n const studyId = nodeUpdatedData[\"project_id\"];\n if (studyId !== this.getUuid()) {\n return;\n }\n const nodeId = nodeUpdatedData[\"node_id\"];\n const nodeData = nodeUpdatedData[\"data\"];\n const workbench = this.getWorkbench();\n const node = workbench.getNode(nodeId);\n // Do not listen to output related backend updates if the node is a frontend node.\n // The frontend controls its output values, progress and states.\n // If a File Picker is uploading a file, the backend could override the current state with some older state.\n if (node && nodeData && !osparc.data.model.Node.isFrontend(node.getMetaData())) {\n node.setOutputData(nodeData.outputs);\n if (\"progress\" in nodeData) {\n const progress = Number.parseInt(nodeData[\"progress\"]);\n node.getStatus().setProgress(progress);\n }\n node.populateStates(nodeData);\n }\n if (node && \"errors\" in nodeUpdatedData) {\n const errors = nodeUpdatedData[\"errors\"];\n node.setErrors(errors);\n } else {\n node.setErrors([]);\n }\n },\n\n nodeNodeProgressSequence: function(nodeProgressData) {\n const studyId = nodeProgressData[\"project_id\"];\n if (studyId !== this.getUuid()) {\n return;\n }\n const nodeId = nodeProgressData[\"node_id\"];\n const workbench = this.getWorkbench();\n const node = workbench.getNode(nodeId);\n if (node) {\n const progressType = nodeProgressData[\"progress_type\"];\n const progressReport = nodeProgressData[\"progress_report\"];\n node.setNodeProgressSequence(progressType, progressReport);\n }\n },\n\n isLocked: function() {\n if (this.getState() && \"locked\" in this.getState()) {\n return this.getState()[\"locked\"][\"value\"];\n }\n return false;\n },\n\n isPipelineEmpty: function() {\n return Object.keys(this.getWorkbench().getNodes()).length === 0;\n },\n\n isPipelineMononode: function() {\n return Object.keys(this.getWorkbench().getNodes()).length === 1;\n },\n\n __applyAccessRights: function(accessRights) {\n if (this.isSnapshot()) {\n this.setReadOnly(true);\n } else {\n const canIWrite = osparc.data.model.Study.canIWrite(accessRights);\n this.setReadOnly(!canIWrite);\n }\n },\n\n __applyState: function(value) {\n if (value && \"state\" in value) {\n const isRunning = this.self().isRunning(value[\"state\"][\"value\"]);\n this.setPipelineRunning(isRunning);\n } else {\n this.setPipelineRunning(false);\n }\n },\n\n getDisableServiceAutoStart: function() {\n if (\"disableServiceAutoStart\" in this.getDev()) {\n return this.getDev()[\"disableServiceAutoStart\"];\n }\n return null;\n },\n\n openStudy: function() {\n const params = {\n url: {\n \"studyId\": this.getUuid()\n },\n data: osparc.utils.Utils.getClientSessionID()\n };\n if (this.getDisableServiceAutoStart() !== null) {\n params[\"url\"][\"disableServiceAutoStart\"] = this.getDisableServiceAutoStart();\n return osparc.data.Resources.fetch(\"studies\", \"openDisableAutoStart\", params);\n }\n return osparc.data.Resources.fetch(\"studies\", \"open\", params);\n },\n\n stopStudy: function() {\n this.__stopRequestingStatus();\n this.__stopFileUploads();\n this.__removeIFrames();\n },\n\n __stopRequestingStatus: function() {\n const nodes = this.getWorkbench().getNodes();\n for (const node of Object.values(nodes)) {\n node.stopRequestingStatus();\n }\n },\n\n __stopFileUploads: function() {\n const nodes = this.getWorkbench().getNodes();\n for (const node of Object.values(nodes)) {\n if (node.isFilePicker()) {\n node.requestFileUploadAbort();\n }\n }\n },\n\n __removeIFrames: function() {\n const nodes = this.getWorkbench().getNodes();\n for (const node of Object.values(nodes)) {\n node.removeIFrame();\n }\n },\n\n getParameters: function() {\n const parameters = [];\n const nodes = this.getWorkbench().getNodes();\n Object.values(nodes).forEach(node => {\n if (node.isParameter()) {\n parameters.push(node);\n }\n });\n return parameters;\n },\n\n getNonFrontendNodes: function() {\n const nodes = this.getWorkbench().getNodes();\n return Object.values(nodes).filter(node => node.isComputational() || node.isDynamic());\n },\n\n isOnlyNodeDynamic: function() {\n const validNodes = this.getNonFrontendNodes();\n if (validNodes.length === 1) {\n return validNodes[0].isDynamic();\n }\n return null;\n },\n\n hasSlideshow: function() {\n return !this.getUi().getSlideshow().isEmpty();\n },\n\n sendMessageToIframe: function(nodeId, msg) {\n if (nodeId) {\n const node = this.getWorkbench().getNode(nodeId);\n if (node && node.getIFrame()) {\n node.getIFrame().sendMessageToIframe(msg);\n return true;\n }\n }\n return false;\n },\n\n patchStudy: function(studyChanges) {\n const matches = this.self().OwnPatch.filter(el => Object.keys(studyChanges).indexOf(el) !== -1);\n if (matches.length) {\n console.error(matches, \"has it's own PATCH path\");\n return null;\n }\n\n return new Promise((resolve, reject) => {\n const params = {\n url: {\n \"studyId\": this.getUuid()\n },\n data: studyChanges\n };\n osparc.data.Resources.fetch(\"studies\", \"patch\", params)\n .then(() => {\n Object.keys(studyChanges).forEach(fieldKey => {\n const upKey = qx.lang.String.firstUp(fieldKey);\n const setter = \"set\" + upKey;\n this[setter](studyChanges[fieldKey]);\n })\n // A bit hacky, but it's not sent back to the backend\n this.set({\n lastChangeDate: new Date()\n });\n const studyData = this.serialize();\n resolve(studyData);\n })\n .catch(err => reject(err));\n });\n },\n\n /**\n * Call patch Study, but the changes were already applied on the frontend\n * @param studyDiffs {Object} Diff Object coming from the JsonDiffPatch lib. Use only the keys, not the changes.\n */\n patchStudyDelayed: function(studyDiffs) {\n const promises = [];\n let workbenchDiffs = {};\n if (\"workbench\" in studyDiffs) {\n workbenchDiffs = studyDiffs[\"workbench\"];\n promises.push(this.getWorkbench().patchWorkbenchDelayed(workbenchDiffs));\n delete studyDiffs[\"workbench\"];\n }\n const fieldKeys = Object.keys(studyDiffs);\n if (fieldKeys.length) {\n const patchData = {};\n const params = {\n url: {\n \"studyId\": this.getUuid()\n },\n data: patchData\n };\n fieldKeys.forEach(fieldKey => {\n if (fieldKey === \"ui\") {\n patchData[fieldKey] = this.getUi().serialize();\n } else {\n const upKey = qx.lang.String.firstUp(fieldKey);\n const getter = \"get\" + upKey;\n patchData[fieldKey] = this[getter](studyDiffs[fieldKey]);\n }\n promises.push(osparc.data.Resources.fetch(\"studies\", \"patch\", params))\n });\n }\n return Promise.all(promises)\n .then(() => {\n // A bit hacky, but it's not sent back to the backend\n this.set({\n lastChangeDate: new Date()\n });\n const studyData = this.serialize();\n return studyData;\n });\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2023 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n * Odei Maiz (odeimaiz)\n */\n\n/**\n * @asset(hint/hint.css)\n */\n\nqx.Class.define(\"osparc.ui.basic.FloatingHelper\", {\n extend: qx.ui.core.Widget,\n include: [qx.ui.core.MRemoteChildrenHandling, qx.ui.core.MRemoteLayoutHandling],\n\n construct: function(element, caretSize) {\n this.base(arguments);\n this.set({\n backgroundColor: \"transparent\",\n visibility: \"excluded\",\n zIndex: osparc.utils.Utils.FLOATING_Z_INDEX\n });\n\n if (caretSize) {\n this.setCaretSize(caretSize);\n }\n\n const hintCssUri = qx.util.ResourceManager.getInstance().toUri(\"hint/hint.css\");\n qx.module.Css.includeStylesheet(hintCssUri);\n\n this.__buildWidget();\n qx.core.Init.getApplication().getRoot().add(this);\n\n if (element) {\n if (element.getContentElement().getDomElement() == null) {\n element.addListenerOnce(\"appear\", () => this.setElement(element), this);\n } else {\n this.setElement(element);\n }\n }\n\n this.setLayout(new qx.ui.layout.Basic());\n },\n\n statics: {\n ORIENTATION: {\n TOP: 0,\n RIGHT: 1,\n BOTTOM: 2,\n LEFT: 3\n },\n\n textToOrientation: function(text) {\n if (Object.keys(osparc.ui.basic.FloatingHelper.ORIENTATION).includes(text.toUpperCase())) {\n return osparc.ui.basic.FloatingHelper.ORIENTATION[text.toUpperCase()];\n }\n return null;\n }\n },\n\n properties: {\n element: {\n check: \"qx.ui.core.Widget\",\n init: null,\n apply: \"__applyElement\"\n },\n\n orientation: {\n check: \"Integer\",\n nullable: false,\n init: 2,\n apply: \"__applyOrientation\"\n },\n\n caretSize: {\n check: [\"small\", \"large\"],\n nullable: false,\n init: \"small\"\n },\n\n active: {\n check: \"Boolean\",\n nullable: false,\n init: false\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"hint-container\":\n control = new qx.ui.container.Composite().set({\n appearance: \"hint\"\n });\n break;\n case \"caret\": {\n control = new qx.ui.container.Composite().set({\n backgroundColor: \"transparent\"\n });\n const classPrefix = this.getCaretSize() === \"large\" ? \"hint-large\" : \"hint-small\";\n control.getContentElement().addClass(classPrefix);\n const colorManager = qx.theme.manager.Color.getInstance();\n // override the css defined caret color depending on theme\n const overrideCaretColor = () => {\n const hintBg = colorManager.resolve(\"hint-background\");\n document.documentElement.style.setProperty(\"--hint-caret-color\", hintBg);\n };\n colorManager.addListener(\"changeTheme\", () => overrideCaretColor(), this);\n overrideCaretColor();\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __buildWidget: function() {\n this._removeAll();\n\n const classPrefix = this.getCaretSize() === \"large\" ? \"hint-large\" : \"hint-small\";\n\n const hintContainer = this.getChildControl(\"hint-container\");\n const caret = this.getChildControl(\"caret\");\n caret.getContentElement().removeClass(classPrefix+\"-top\");\n caret.getContentElement().removeClass(classPrefix+\"-right\");\n caret.getContentElement().removeClass(classPrefix+\"-bottom\");\n caret.getContentElement().removeClass(classPrefix+\"-left\");\n let caretClass = null;\n switch (this.getOrientation()) {\n case this.self().ORIENTATION.TOP:\n case this.self().ORIENTATION.LEFT: {\n caretClass = this.getOrientation() === this.self().ORIENTATION.LEFT ? classPrefix+\"-left\" : classPrefix+\"-top\";\n this._setLayout(this.getOrientation() === this.self().ORIENTATION.LEFT ? new qx.ui.layout.HBox() : new qx.ui.layout.VBox());\n this._add(hintContainer, {\n flex: 1\n });\n this._add(caret);\n break;\n }\n case this.self().ORIENTATION.RIGHT:\n case this.self().ORIENTATION.BOTTOM: {\n caretClass = this.getOrientation() === this.self().ORIENTATION.RIGHT ? classPrefix+\"-right\" : classPrefix+\"-bottom\";\n this._setLayout(this.getOrientation() === this.self().ORIENTATION.RIGHT ? new qx.ui.layout.HBox() : new qx.ui.layout.VBox());\n this._add(caret);\n this._add(hintContainer, {\n flex: 1\n });\n break;\n }\n }\n caret.getContentElement().addClass(caretClass);\n const caretSize = this.getCaretSize() === \"large\" ? 10 : 5;\n switch (this.getOrientation()) {\n case this.self().ORIENTATION.RIGHT:\n case this.self().ORIENTATION.LEFT:\n caret.setHeight(0);\n caret.setWidth(caretSize);\n break;\n case this.self().ORIENTATION.TOP:\n case this.self().ORIENTATION.BOTTOM:\n caret.setWidth(0);\n caret.setHeight(caretSize);\n break;\n }\n },\n\n updatePosition: function() {\n if (this.getElement() && this.getElement().getContentElement()) {\n const element = this.getElement().getContentElement()\n .getDomElement();\n const {\n top,\n left\n } = qx.bom.element.Location.get(element);\n const {\n width,\n height\n } = qx.bom.element.Dimension.getSize(element);\n const selfBounds = this.getHintBounds();\n let properties = {};\n switch (this.getOrientation()) {\n case this.self().ORIENTATION.TOP:\n properties.top = top - selfBounds.height;\n properties.left = Math.floor(left + (width - selfBounds.width) / 2);\n break;\n case this.self().ORIENTATION.RIGHT:\n properties.top = Math.floor(top + (height - selfBounds.height) / 2);\n properties.left = left + width;\n break;\n case this.self().ORIENTATION.BOTTOM:\n properties.top = top + height;\n properties.left = Math.floor(left + (width - selfBounds.width) / 2);\n break;\n case this.self().ORIENTATION.LEFT:\n properties.top = Math.floor(top + (height - selfBounds.height) / 2);\n properties.left = left - selfBounds.width;\n break;\n }\n this.setLayoutProperties(properties);\n }\n },\n\n moveToTheCenter: function() {\n const properties = {};\n const selfBounds = this.getHintBounds();\n properties.top = Math.floor((window.innerHeight - selfBounds.height) / 2);\n properties.left = Math.floor((window.innerWidth - selfBounds.width) / 2);\n this.setLayoutProperties(properties);\n },\n\n getHintBounds: function() {\n return this.getBounds() || this.getSizeHint();\n },\n\n __applyOrientation: function() {\n this.__buildWidget();\n this.updatePosition();\n },\n\n // overwritten\n getChildrenContainer: function() {\n return this.getChildControl(\"hint-container\");\n },\n\n __applyElement: function(element, oldElement) {\n if (oldElement) {\n oldElement.removeListener(\"appear\", this._elementAppearDisappearHandler);\n oldElement.removeListener(\"disappear\", this._elementAppearDisappearHandler);\n this.__removeListeners([\"move\", \"resize\"]);\n this.__removeListeners([\"scrollX\", \"scrollY\"], true);\n }\n if (element) {\n const isElementVisible = qx.ui.core.queue.Visibility.isVisible(element);\n if (isElementVisible && this.isActive()) {\n this.show();\n }\n element.addListener(\"appear\", this._elementAppearDisappearHandler, this);\n element.addListener(\"disappear\", this._elementAppearDisappearHandler, this);\n this.__addListeners([\"move\", \"resize\"]);\n this.__addListeners([\"scrollX\", \"scrollY\"], true);\n } else {\n this.exclude();\n }\n },\n\n __addListeners: function(events, skipThis = false) {\n let widget = skipThis ? this.getElement().getLayoutParent() : this.getElement();\n while (widget && widget !== qx.core.Init.getApplication().getRoot()) {\n events.forEach(e => {\n if (qx.util.OOUtil.supportsEvent(widget, e)) {\n widget.addListener(e, this.__elementVisibilityHandler, this);\n }\n });\n widget = widget.getLayoutParent();\n }\n },\n\n __removeListeners: function(events, skipThis = false) {\n let widget = skipThis ? this.getElement().getLayoutParent() : this.getElement();\n while (widget && widget !== qx.core.Init.getApplication().getRoot()) {\n events.forEach(e => {\n if (qx.util.OOUtil.supportsEvent(widget, e)) {\n widget.removeListener(e, this.__elementVisibilityHandler);\n }\n });\n widget = widget.getLayoutParent();\n }\n },\n\n _elementAppearDisappearHandler: function(e) {\n this.__elementVisibilityHandler(e);\n },\n\n __elementVisibilityHandler: function(e) {\n switch (e.getType()) {\n case \"appear\":\n if (this.isActive()) {\n this.show();\n }\n this.updatePosition();\n break;\n case \"disappear\":\n this.exclude();\n break;\n case \"move\":\n case \"resize\":\n case \"scrollX\":\n case \"scrollY\":\n setTimeout(() => this.updatePosition(), 20); // Hacky: Execute async and give some time for the relevant properties to be set\n break;\n }\n },\n\n // overridden\n _applyVisibility: function(ne, old) {\n this.base(arguments, ne, old);\n this.updatePosition();\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Fabian Jakobs (fjakobs)\n\n************************************************************************ */\n\n/**\n * A basic layout, which supports positioning of child widgets by absolute\n * left/top coordinates. This layout is very simple but should also\n * perform best.\n *\n * *Features*\n *\n * * Basic positioning using
left
and top
properties\n * * Respects minimum and maximum dimensions without shrinking/growing\n * * Margins for top and left side (including negative ones)\n * * Respects right and bottom margins in the size hint\n * * Auto-sizing\n *\n * *Item Properties*\n *\n * left
and top
.\n *\n * *Example*\n *\n * Here is a little example of how to use the basic layout.\n *\n * \n * var container = new qx.ui.container.Composite(new qx.ui.layout.Basic());\n *\n * // simple positioning\n * container.add(new qx.ui.core.Widget(), {left: 10, top: 10});\n * container.add(new qx.ui.core.Widget(), {left: 100, top: 50});\n *\n *\n * *External Documentation*\n *\n * \n * Extended documentation and links to demos of this layout in the qooxdoo manual.\n */\nqx.Class.define(\"qx.ui.layout.Basic\",\n{\n extend : qx.ui.layout.Abstract,\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n /*\n ---------------------------------------------------------------------------\n LAYOUT INTERFACE\n ---------------------------------------------------------------------------\n */\n\n // overridden\n verifyLayoutProperty : qx.core.Environment.select(\"qx.debug\",\n {\n \"true\" : function(item, name, value)\n {\n this.assert(name == \"left\" || name == \"top\", \"The property '\"+name+\"' is not supported by the Basic layout!\");\n this.assertInteger(value);\n },\n\n \"false\" : null\n }),\n\n\n // overridden\n renderLayout : function(availWidth, availHeight, padding)\n {\n var children = this._getLayoutChildren();\n var child, size, props, left, top;\n\n // Render children\n for (var i=0, l=children.length; i
\n * let dataManager = new osparc.widget.StudyDataManager(null, nodeId);\n * this.getRoot().add(dataManager);\n *\n */\n\nqx.Class.define(\"osparc.widget.StudyDataManager\", {\n extend: qx.ui.core.Widget,\n\n /**\n * @param studyId {String} StudyId\n * @param nodeId {String} NodeId\n */\n construct: function(studyId, nodeId) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n if (studyId) {\n this.set({\n studyId\n });\n }\n\n if (nodeId) {\n this.set({\n nodeId\n });\n }\n\n this.__buildLayout();\n this.__reloadTree();\n },\n\n statics: {\n popUpInWindow: function(studyId, nodeId, title) {\n const studyDataManager = new osparc.widget.StudyDataManager(studyId, nodeId);\n if (!title) {\n title = osparc.product.Utils.getStudyAlias({firstUpperCase: true}) + qx.locale.Manager.tr(\" Files\");\n }\n return osparc.ui.window.Window.popUpInWindow(studyDataManager, title, osparc.dashboard.ResourceDetails.WIDTH, osparc.dashboard.ResourceDetails.HEIGHT);\n },\n },\n\n properties: {\n studyId: {\n check: \"String\",\n init: null,\n nullable: false\n },\n\n nodeId: {\n check: \"String\",\n init: null,\n nullable: false\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"tree-folder-view\":\n control = new osparc.file.TreeFolderView();\n this._add(control, {\n flex: 1\n });\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n __buildLayout: function() {\n const treeFolderView = this.getChildControl(\"tree-folder-view\");\n treeFolderView.getChildControl(\"folder-tree\").setBackgroundColor(\"window-popup-background\");\n\n const reloadButton = treeFolderView.getChildControl(\"reload-button\");\n reloadButton.addListener(\"execute\", () => this.__reloadTree(), this);\n\n const selectedFileLayout = treeFolderView.getChildControl(\"folder-viewer\").getChildControl(\"selected-file-layout\");\n selectedFileLayout.addListener(\"fileDeleted\", e => this.__fileDeleted(e.getData()), this);\n },\n\n __reloadTree: function() {\n const treeFolderView = this.getChildControl(\"tree-folder-view\");\n\n const foldersTree = treeFolderView.getChildControl(\"folder-tree\");\n foldersTree.resetCache();\n if (this.getStudyId()) {\n foldersTree.populateStudyTree(this.getStudyId());\n }\n if (this.getNodeId()) {\n foldersTree.populateNodeTree(this.getNodeId());\n }\n\n const folderViewer = treeFolderView.getChildControl(\"folder-viewer\");\n folderViewer.resetFolder();\n },\n\n __fileDeleted: function(fileMetadata) {\n // After deleting a file, try to keep the user in the same folder.\n // If the folder doesn't longer exist, open the closest available parent\n\n const path = fileMetadata[\"fileUuid\"].split(\"/\");\n\n const treeFolderView = this.getChildControl(\"tree-folder-view\");\n const foldersTree = treeFolderView.getChildControl(\"folder-tree\");\n foldersTree.resetCache();\n\n const openSameFolder = () => {\n if (!this.getStudyId()) {\n // drop first, which is the study id\n path.shift();\n }\n // drop last, which is the file\n path.pop();\n treeFolderView.openPath(path);\n };\n\n if (this.getStudyId()) {\n foldersTree.populateStudyTree(this.getStudyId())\n .then(() => openSameFolder())\n .catch(err => console.error(err));\n }\n if (this.getNodeId()) {\n foldersTree.populateNodeTree(this.getNodeId())\n .then(() => openSameFolder())\n .catch(err => console.error(err));\n }\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Fabian Jakobs (fjakobs)\n\n************************************************************************ */\n\n/**\n * Cross browser abstractions to work with labels.\n */\nqx.Bootstrap.define(\"qx.bom.Label\",\n{\n /*\n *****************************************************************************\n STATICS\n *****************************************************************************\n */\n\n statics :\n {\n /** @type {Map} Contains all supported styles */\n __styles :\n {\n fontFamily : 1,\n fontSize : 1,\n fontWeight : 1,\n fontStyle : 1,\n lineHeight : 1,\n wordBreak : 1\n },\n\n\n /**\n * Generates the helper DOM element for text measuring\n *\n * @return {Element} Helper DOM element\n */\n __prepareText : function()\n {\n var el = this.__createMeasureElement(false);\n document.body.insertBefore(el, document.body.firstChild);\n\n return this._textElement = el;\n },\n\n\n /**\n * Generates the helper DOM element for HTML measuring\n *\n * @return {Element} Helper DOM element\n */\n __prepareHtml : function()\n {\n var el = this.__createMeasureElement(true);\n document.body.insertBefore(el, document.body.firstChild);\n\n return this._htmlElement = el;\n },\n\n\n /**\n * Creates the measure element\n *\n * @param html {Boolean?false} Whether HTML markup should be used.\n * @return {Element} The measure element\n */\n __createMeasureElement : function(html)\n {\n var el = qx.dom.Element.create(\"div\");\n var style = el.style;\n\n style.width = style.height = \"auto\";\n style.left = style.top = \"-1000px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.overflow = \"visible\";\n style.display = \"block\";\n\n if (html)\n {\n style.whiteSpace = \"normal\";\n }\n else\n {\n style.whiteSpace = \"nowrap\";\n\n if (!qx.core.Environment.get(\"css.textoverflow\") &&\n qx.core.Environment.get(\"html.xul\"))\n {\n var inner = document.createElementNS(\"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul\", \"label\");\n\n // Force style inheritance for font styles to omit usage of\n // CSS \"label\" selector, See bug #1349 for details.\n var style = inner.style;\n style.padding = \"0\";\n style.margin = \"0\";\n style.width = \"auto\";\n\n for (var key in this.__styles) {\n style[key] = \"inherit\";\n }\n\n el.appendChild(inner);\n }\n }\n\n return el;\n },\n\n\n /**\n * Returns a map of all styles which should be applied as\n * a basic set.\n *\n * @param html {Boolean?false} Whether HTML markup should be used.\n * @return {Map} Initial styles which should be applied to a label element.\n */\n __getStyles : function(html)\n {\n var styles = {};\n\n styles.overflow = \"hidden\";\n if (html)\n {\n styles.whiteSpace = \"normal\";\n }\n else if (!qx.core.Environment.get(\"css.textoverflow\") &&\n qx.core.Environment.get(\"html.xul\"))\n {\n styles.display = \"block\";\n }\n else\n {\n styles.whiteSpace = \"nowrap\";\n styles[qx.core.Environment.get(\"css.textoverflow\")] = \"ellipsis\";\n }\n\n return styles;\n },\n\n\n /**\n * Creates a label.\n *\n * The default mode is 'text' which means that the overlapping text is cut off\n * using ellipsis automatically. Text wrapping is disabled in this mode\n * as well. Spaces are normalized. Umlauts and other special symbols are only\n * allowed in unicode mode as normal characters.\n *\n * In the HTML mode you can insert any HTML, but loose the capability to cut\n * of overlapping text. Automatic text wrapping is enabled by default.\n *\n * It is not possible to modify the mode afterwards.\n *\n * @param content {String} Content of the label\n * @param html {Boolean?false} Whether HTML markup should be used.\n * @param win {Window?null} Window to create the element for\n * @return {Element} The created iframe node\n */\n create : function(content, html, win)\n {\n if (!win) {\n win = window;\n }\n\n var el = win.document.createElement(\"div\");\n\n if (html)\n {\n el.useHtml = true;\n }\n\n if (!qx.core.Environment.get(\"css.textoverflow\") &&\n qx.core.Environment.get(\"html.xul\"))\n {\n // Gecko as of Firefox 2.x and 3.0 does not support ellipsis\n // for text overflow. We use this feature from XUL instead.\n var xulel = win.document.createElementNS(\"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul\", \"label\");\n\n var style = xulel.style;\n style.cursor = \"inherit\";\n style.color = \"inherit\";\n style.overflow = \"hidden\";\n style.maxWidth = \"100%\";\n style.padding = \"0\";\n style.margin = \"0\";\n style.width = \"auto\";\n\n // Force style inheritance for font styles to omit usage of\n // CSS \"label\" selector, See bug #1349 for details.\n for (var key in this.__styles) {\n xulel.style[key] = \"inherit\";\n }\n\n xulel.setAttribute(\"crop\", \"end\");\n\n el.appendChild(xulel);\n }\n else\n {\n qx.bom.element.Style.setStyles(el, this.__getStyles(html));\n }\n\n if (content) {\n this.setValue(el, content);\n }\n\n return el;\n },\n\n\n /** Sanitizer function */\n __sanitizer : null,\n\n\n /**\n * Sets a function to sanitize values. It will be used by {@link #setValue}.\n * The function to sanitize will get the
string
value and\n * should return a sanitized / cleared string
.\n *\n * @param func {Function | null} Function to sanitize / clean HTML code\n * from given string parameter\n */\n setSanitizer : function(func)\n {\n if (qx.core.Environment.get(\"qx.debug\")) {\n if (func) {\n qx.core.Assert.assertFunction(func);\n }\n }\n\n qx.bom.Label.__sanitizer = func;\n },\n\n\n /**\n * Sets the content of the element.\n *\n * The possibilities of the value depends on the mode\n * defined using {@link #create}.\n *\n * @param element {Element} DOM element to modify.\n * @param value {String} Content to insert.\n */\n setValue : function(element, value)\n {\n value = value || \"\";\n\n if (element.useHtml) {\n if (qx.bom.Label.__sanitizer && typeof(qx.bom.Label.__sanitizer) === \"function\") {\n value = qx.bom.Label.__sanitizer(value);\n }\n element.innerHTML = value;\n } else if (!qx.core.Environment.get(\"css.textoverflow\") &&\n qx.core.Environment.get(\"html.xul\"))\n {\n element.firstChild.setAttribute(\"value\", value);\n } else {\n qx.bom.element.Attribute.set(element, \"text\", value);\n }\n },\n\n\n /**\n * Returns the content of the element.\n *\n * @param element {Element} DOM element to query.\n * @return {String} Content stored in the element.\n */\n getValue : function(element)\n {\n if (element.useHtml) {\n return element.innerHTML;\n } else if (!qx.core.Environment.get(\"css.textoverflow\") &&\n qx.core.Environment.get(\"html.xul\"))\n {\n return element.firstChild.getAttribute(\"value\") || \"\";\n } else {\n return qx.bom.element.Attribute.get(element, \"text\");\n }\n },\n\n\n /**\n * Returns the preferred dimensions of the given HTML content.\n *\n * @param content {String} The HTML markup to measure\n * @param styles {Map?null} Optional styles to apply\n * @param width {Integer} To support width for height it is possible to limit the width\n * @return {Map} A map with preferred width
and height
.\n */\n getHtmlSize : function(content, styles, width)\n {\n var element = this._htmlElement || this.__prepareHtml();\n\n // apply width\n element.style.width = width != undefined ? width + \"px\" : \"auto\";\n // insert content\n element.innerHTML = content;\n\n return this.__measureSize(element, styles);\n },\n\n\n /**\n * Returns the preferred dimensions of the given text.\n *\n * @param text {String} The text to measure\n * @param styles {Map} Optional styles to apply\n * @return {Map} A map with preferred width
and height
.\n */\n getTextSize : function(text, styles)\n {\n var element = this._textElement || this.__prepareText();\n\n if (!qx.core.Environment.get(\"css.textoverflow\") &&\n qx.core.Environment.get(\"html.xul\"))\n {\n element.firstChild.setAttribute(\"value\", text);\n } else {\n qx.bom.element.Attribute.set(element, \"text\", text);\n }\n\n return this.__measureSize(element, styles);\n },\n\n\n /**\n * Measure the size of the given element\n *\n * @param element {Element} The element to measure\n * @param styles {Map?null} Optional styles to apply\n * @return {Map} A map with preferred width
and height
.\n */\n __measureSize : function(element, styles)\n {\n // sync styles\n var keys = this.__styles;\n\n if (!styles) {\n styles = {};\n }\n\n for (var key in keys) {\n element.style[key] = styles[key] || \"\";\n }\n\n // detect size\n var size = qx.bom.element.Dimension.getSize(element);\n\n // all modern browser are needing one more pixel for width\n size.width++;\n\n return size;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.Utils\", {\n type: \"static\",\n\n statics: {\n QUICK_START: {\n \"tis\": {\n localStorageStr: \"tiDontShowQuickStart\",\n tutorial: () => new osparc.product.quickStart.tis.Slides()\n },\n \"tiplite\": {\n localStorageStr: \"tipliteDontShowQuickStart\",\n tutorial: () => new osparc.product.quickStart.tis.Slides()\n },\n \"s4llite\": {\n localStorageStr: \"s4lliteDontShowQuickStart\",\n tutorial: () => new osparc.product.quickStart.s4llite.Slides()\n },\n \"s4l\": {\n localStorageStr: \"s4lDontShowQuickStart\",\n tutorial: () => new osparc.product.quickStart.s4l.Welcome()\n },\n \"s4lacad\": {\n localStorageStr: \"s4lacadDontShowQuickStart\",\n tutorial: () => new osparc.product.quickStart.s4lacad.Welcome()\n }\n },\n\n getQuickStart: function() {\n const quickStarts = this.QUICK_START;\n const pName = osparc.product.Utils.getProductName();\n if (Object.keys(quickStarts).includes(pName)) {\n return quickStarts[pName];\n }\n return null;\n },\n\n createTitle: function(title) {\n const label = new qx.ui.basic.Label(title).set({\n rich: true,\n font: \"text-14\"\n });\n if (title) {\n label.setValue(title);\n }\n return label;\n },\n\n createLabel: function(text) {\n const label = new qx.ui.basic.Label().set({\n rich: true,\n wrap: true,\n selectable: true,\n font: \"text-14\"\n });\n if (text) {\n label.setValue(text);\n }\n return label;\n },\n\n createDontShowAgain: function(localStorageStr) {\n const dontShowCB = new qx.ui.form.CheckBox(qx.locale.Manager.tr(\"Don't show again\")).set({\n value: osparc.utils.Utils.localCache.getLocalStorageItem(localStorageStr) === \"true\"\n });\n dontShowCB.addListener(\"changeValue\", e => {\n const dontShow = e.getData();\n osparc.utils.Utils.localCache.setLocalStorageItem(localStorageStr, Boolean(dontShow));\n });\n return dontShowCB;\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Fabian Jakobs (fjakobs)\n\n************************************************************************ */\n\n/**\n * The real menu button class which supports a command and an icon. All\n * other features are inherited from the {@link qx.ui.menu.AbstractButton}\n * class.\n */\nqx.Class.define(\"qx.ui.menu.Button\",\n{\n extend : qx.ui.menu.AbstractButton,\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param label {String} Initial label\n * @param icon {String} Initial icon\n * @param command {qx.ui.command.Command} Initial command (shortcut)\n * @param menu {qx.ui.menu.Menu} Initial sub menu\n */\n construct : function(label, icon, command, menu)\n {\n this.base(arguments);\n\n // Initialize with incoming arguments\n if (label != null) {\n this.setLabel(label);\n }\n\n if (icon != null) {\n this.setIcon(icon);\n }\n\n if (command != null) {\n this.setCommand(command);\n }\n\n if (menu != null) {\n this.setMenu(menu);\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n // overridden\n appearance :\n {\n refine : true,\n init : \"menu-button\"\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n /*\n ---------------------------------------------------------------------------\n EVENT HANDLER\n ---------------------------------------------------------------------------\n */\n\n\n // overridden\n _onTap : function(e)\n {\n if (e.isLeftPressed() && this.getMenu()) {\n this.execute();\n // don't close menus if the button is a sub menu button\n this.getMenu().open();\n return;\n }\n\n this.base(arguments, e);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * @asset(osparc/tours/s4llite_tours.json)\n * @asset(osparc/tours/s4l_tours.json)\n * @asset(osparc/tours/tis_tours.json)\n */\n\nqx.Class.define(\"osparc.product.tours.Tours\", {\n type: \"static\",\n\n statics: {\n TOURS: {\n \"osparc\": {\n fetchTours: () => osparc.product.tours.Tours.fetchTours(\"/resource/osparc/tours/osparc_tours.json\")\n },\n \"s4l\": {\n fetchTours: () => osparc.product.tours.Tours.fetchTours(\"/resource/osparc/tours/s4l_tours.json\")\n },\n \"s4lacad\": {\n fetchTours: () => osparc.product.tours.Tours.fetchTours(\"/resource/osparc/tours/s4l_tours.json\")\n },\n \"s4llite\": {\n fetchTours: () => osparc.product.tours.Tours.fetchTours(\"/resource/osparc/tours/s4llite_tours.json\")\n },\n \"tis\": {\n fetchTours: () => osparc.product.tours.Tours.fetchTours(\"/resource/osparc/tours/tis_tours.json\")\n },\n \"tiplite\": {\n fetchTours: () => osparc.product.tours.Tours.fetchTours(\"/resource/osparc/tours/tiplite_tours.json\")\n },\n },\n\n fetchTours: function(link) {\n return osparc.utils.Utils.fetchJSON(link)\n .then(Object.values)\n .catch(console.error);\n },\n\n // it returns a promise\n getTours: function() {\n const pName = osparc.product.Utils.getProductName();\n if (Object.keys(this.TOURS).includes(pName)) {\n return this.TOURS[pName].fetchTours();\n }\n return null;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.tours.Manager\", {\n extend: osparc.ui.window.SingletonWindow,\n\n construct: function() {\n this.base(arguments, \"guided-torus\", this.tr(\"Guided Tours\"));\n\n this.set({\n layout: new qx.ui.layout.VBox(20),\n contentPadding: 15,\n modal: true,\n width: 400,\n height: 300,\n showMaximize: false,\n showMinimize: false\n });\n\n this.__blankets = [];\n this.__buildLayout();\n },\n\n properties: {\n tours: {\n check: \"Array\",\n init: [],\n nullable: true,\n event: \"changeTours\"\n },\n\n tour: {\n check: \"Object\",\n init: null,\n nullable: true\n },\n\n steps: {\n check: \"Array\",\n init: [],\n nullable: true\n }\n },\n\n members: {\n __currentBubble: null,\n __currentIdx: null,\n __blankets: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"intro-text\":\n control = new qx.ui.basic.Label().set({\n value: this.tr(\"This collection of Guided Tours will show you how to use the platform:\"),\n rich: true,\n wrap: true,\n font: \"text-14\"\n });\n this.add(control);\n break;\n case \"guided-tours-list\": {\n control = new osparc.tours.List();\n control.addListener(\"tourSelected\", e => this.__selectTour(e.getData()));\n this.bind(\"tours\", control, \"tours\");\n this.add(control);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __buildLayout: function() {\n this.getChildControl(\"intro-text\");\n this.getChildControl(\"guided-tours-list\");\n },\n\n start: function() {\n this.center();\n this.open();\n },\n\n stop: function() {\n this.setTour(null);\n this.__removeCurrentBubble();\n this.__removeBlankets();\n },\n\n __removeCurrentBubble: function() {\n if (this.__currentBubble) {\n qx.core.Init.getApplication().getRoot().remove(this.__currentBubble);\n this.__currentBubble.exclude();\n this.__currentBubble = null;\n }\n },\n\n __addBlankets: function(targetWidget) {\n // the plan is to surround the targetWidget with dark blankets so it gets highlighted\n const element = targetWidget.getContentElement().getDomElement();\n const {\n top,\n left\n } = qx.bom.element.Location.get(element);\n const {\n width,\n height\n } = qx.bom.element.Dimension.getSize(element);\n const windowW = window.innerWidth;\n const windowH = window.innerHeight;\n\n const addBlanket = (w, h, l, t) => {\n const blanket = new qx.ui.core.Widget().set({\n width: w,\n height: h,\n backgroundColor: \"black\",\n opacity: 0.4,\n zIndex: osparc.utils.Utils.FLOATING_Z_INDEX-1\n });\n qx.core.Init.getApplication().getRoot().add(blanket, {\n left: l,\n top: t\n });\n return blanket;\n };\n this.__blankets.push(addBlanket(left, windowH, 0, 0)); // left\n this.__blankets.push(addBlanket(width, top, left, 0)); // top\n this.__blankets.push(addBlanket(windowW-left-width, windowH, left+width, 0)); // right\n this.__blankets.push(addBlanket(width, windowH-top-height, left, top+height)); // bottom\n },\n\n __removeBlankets: function() {\n const nBlankets = this.__blankets.length;\n for (let i=nBlankets-1; i>=0; i--) {\n const blanket = this.__blankets[i];\n qx.core.Init.getApplication().getRoot().remove(blanket);\n this.__blankets.splice(i, 1);\n }\n },\n\n __selectTour: function(tour) {\n this.close();\n if (\"steps\" in tour) {\n this.setTour(tour);\n this.setSteps(tour.steps);\n this.__toStepCheck(0);\n }\n },\n\n __getVisibleElement: function(selector) {\n // get all elements...\n const elements = document.querySelectorAll(`[${selector}]`);\n // ...and use the first on screen match\n const element = [...elements].find(el => osparc.utils.Utils.isElementOnScreen(el));\n return element;\n },\n\n __toStepCheck: function(idx = 0) {\n const steps = this.getSteps();\n if (idx >= steps.length) {\n return;\n }\n\n this.__removeCurrentBubble();\n this.__removeBlankets();\n this.__currentIdx = idx;\n const step = steps[idx];\n if (step.beforeClick && step.beforeClick.selector) {\n let targetWidget = null;\n const element = this.__getVisibleElement(step.beforeClick.selector);\n if (element) {\n targetWidget = qx.ui.core.Widget.getWidgetByElement(element);\n }\n if (targetWidget) {\n if (step.beforeClick.action) {\n targetWidget[step.beforeClick.action]();\n } else if (step.beforeClick.event) {\n targetWidget.fireEvent(step.beforeClick.event);\n } else {\n targetWidget.execute();\n }\n setTimeout(() => this.__toStep(steps, idx), 150);\n } else {\n // target not found, move to the next step\n this.__toStepCheck(this.__currentIdx+1);\n return;\n }\n } else {\n this.__toStep(steps, idx);\n }\n },\n\n __createStep: function() {\n const tour = this.getTour();\n const stepWidget = new osparc.tours.Step(tour[\"name\"]).set({\n maxWidth: 400\n });\n [\n \"skipPressed\",\n \"endPressed\"\n ].forEach(evName => stepWidget.addListener(evName, () => this.stop(), this));\n stepWidget.addListener(\"nextPressed\", () => this.__toStepCheck(this.__currentIdx+1), this);\n stepWidget.addListener(\"toTours\", () => {\n this.stop();\n this.start();\n }, this);\n return stepWidget;\n },\n\n __toStep: async function(steps, idx) {\n const step = steps[idx];\n const stepWidget = this.__currentBubble = this.__createStep();\n if (step.anchorEl) {\n let targetWidget = null;\n const element = this.__getVisibleElement(step.anchorEl);\n if (element) {\n targetWidget = qx.ui.core.Widget.getWidgetByElement(element);\n }\n if (targetWidget) {\n stepWidget.setElement(targetWidget);\n if (step.placement) {\n stepWidget.setOrientation(osparc.ui.basic.FloatingHelper.textToOrientation(step.placement));\n }\n this.__addBlankets(targetWidget);\n } else {\n // target not found, move to the next step\n this.__toStepCheck(this.__currentIdx+1);\n return;\n }\n } else {\n // intro text, it will be centered\n stepWidget.getChildControl(\"caret\").exclude();\n }\n\n if (step.title) {\n stepWidget.setTitle(step.title);\n }\n if (step.text) {\n stepWidget.setText(step.text);\n }\n if (steps.length > 1) {\n stepWidget.set({\n stepIndex: idx+1,\n nSteps: steps.length\n });\n }\n\n stepWidget.show();\n setTimeout(() => {\n if (stepWidget.getElement()) {\n stepWidget.updatePosition();\n } else {\n stepWidget.moveToTheCenter();\n }\n }, 10);\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2011 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Tristan Koch (tristankoch)\n\n************************************************************************ */\n\n/**\n * Script loader with interface similar to\n * XmlHttpRequest.\n *\n * The script loader can be used to load scripts from arbitrary sources.\n * \n * For JSONP requests, consider the {@link qx.bom.request.Jsonp} transport\n * that derives from the script loader.\n * \n *\n * \n * var req = new qx.bom.request.Script();\n * req.onload = function() {\n * // Script is loaded and parsed and\n * // globals set are available\n * }\n *\n * req.open(\"GET\", url);\n * req.send();\n *\n *
null
if the request\n * is disposed\n */\n getResponseHeader: function(key) {\n if (this.__disposed) {\n return null;\n }\n\n if (this.__environmentGet(\"qx.debug\")) {\n qx.Bootstrap.debug(\"Response header cannot be determined for \" +\n \"requests made with script transport.\");\n }\n return \"unknown\";\n },\n\n /**\n * Get all response headers from response.\n *\n * Note: This method exists for compatibility reasons. The script\n * transport does not receive response headers.\n * @return {String|null} Warning message or null
if the request\n * is disposed\n */\n getAllResponseHeaders: function() {\n if (this.__disposed) {\n return null;\n }\n\n if (this.__environmentGet(\"qx.debug\")) {\n qx.Bootstrap.debug(\"Response headers cannot be determined for\" +\n \"requests made with script transport.\");\n }\n\n return \"Unknown response headers\";\n },\n\n /**\n * Determine if loaded script has expected impact on global namespace.\n *\n * The function is called once the script was loaded and must return a\n * boolean indicating if the response is to be considered successful.\n *\n * @param check {Function} Function executed once the script was loaded.\n *\n */\n setDetermineSuccess: function(check) {\n this.__determineSuccess = check;\n },\n\n /**\n * Dispose object.\n */\n dispose: function() {\n var script = this.__scriptElement;\n\n if (!this.__disposed) {\n\n // Prevent memory leaks\n if (script) {\n script.onload = script.onreadystatechange = null;\n this.__disposeScriptElement();\n }\n\n if (this.__timeoutId) {\n window.clearTimeout(this.__timeoutId);\n }\n\n this.__disposed = true;\n }\n },\n\n\n /**\n * Check if the request has already beed disposed.\n * @return {Boolean} true
, if the request has been disposed.\n */\n isDisposed : function() {\n return !!this.__disposed;\n },\n\n\n /*\n ---------------------------------------------------------------------------\n PROTECTED\n ---------------------------------------------------------------------------\n */\n\n /**\n * Get URL of request.\n *\n * @return {String} URL of request.\n */\n _getUrl: function() {\n return this.__url;\n },\n\n /**\n * Get script element used for request.\n *\n * @return {Element} Script element.\n */\n _getScriptElement: function() {\n return this.__scriptElement;\n },\n\n /**\n * Handle timeout.\n */\n _onTimeout: function() {\n this.__failure();\n\n if (!this.__supportsErrorHandler()) {\n this._emit(\"error\");\n }\n\n this._emit(\"timeout\");\n\n if (!this.__supportsErrorHandler()) {\n this._emit(\"loadend\");\n }\n },\n\n /**\n * Handle native load.\n */\n _onNativeLoad: function() {\n var script = this.__scriptElement,\n determineSuccess = this.__determineSuccess,\n that = this;\n\n // Aborted request must not fire load\n if (this.__abort) {\n return;\n }\n\n // BUGFIX: IE < 9\n // When handling \"readystatechange\" event, skip if readyState\n // does not signal loaded script\n if (this.__environmentGet(\"engine.name\") === \"mshtml\" &&\n this.__environmentGet(\"browser.documentmode\") < 9) {\n if (!(/loaded|complete/).test(script.readyState)) {\n return;\n } else {\n if (this.__environmentGet(\"qx.debug.io\")) {\n qx.Bootstrap.debug(qx.bom.request.Script, \"Received native readyState: loaded\");\n }\n }\n }\n\n if (this.__environmentGet(\"qx.debug.io\")) {\n qx.Bootstrap.debug(qx.bom.request.Script, \"Received native load\");\n }\n\n // Determine status by calling user-provided check function\n if (determineSuccess) {\n\n // Status set before has higher precedence\n if (!this.status) {\n this.status = determineSuccess() ? 200 : 500;\n }\n\n }\n\n if (this.status === 500) {\n if (this.__environmentGet(\"qx.debug.io\")) {\n qx.Bootstrap.debug(qx.bom.request.Script, \"Detected error\");\n }\n }\n\n if (this.__timeoutId) {\n window.clearTimeout(this.__timeoutId);\n }\n\n window.setTimeout(function() {\n that._success();\n that._readyStateChange(4);\n that._emit(\"load\");\n that._emit(\"loadend\");\n });\n },\n\n /**\n * Handle native error.\n */\n _onNativeError: function() {\n this.__failure();\n this._emit(\"error\");\n this._emit(\"loadend\");\n },\n\n /*\n ---------------------------------------------------------------------------\n PRIVATE\n ---------------------------------------------------------------------------\n */\n\n /**\n * @type {Element} Script element\n */\n __scriptElement: null,\n\n /**\n * @type {Element} Head element\n */\n __headElement: null,\n\n /**\n * @type {String} URL\n */\n __url: \"\",\n\n /**\n * @type {Function} Bound _onNativeLoad handler.\n */\n __onNativeLoadBound: null,\n\n /**\n * @type {Function} Bound _onNativeError handler.\n */\n __onNativeErrorBound: null,\n\n /**\n * @type {Function} Bound _onTimeout handler.\n */\n __onTimeoutBound: null,\n\n /**\n * @type {Number} Timeout timer iD.\n */\n __timeoutId: null,\n\n /**\n * @type {Boolean} Whether request was aborted.\n */\n __abort: null,\n\n /**\n * @type {Boolean} Whether request was disposed.\n */\n __disposed: null,\n\n /*\n ---------------------------------------------------------------------------\n HELPER\n ---------------------------------------------------------------------------\n */\n\n /**\n * Initialize properties.\n */\n __initXhrProperties: function() {\n this.readyState = 0;\n this.status = 0;\n this.statusText = \"\";\n },\n\n /**\n * Change readyState.\n *\n * @param readyState {Number} The desired readyState\n */\n _readyStateChange: function(readyState) {\n this.readyState = readyState;\n this._emit(\"readystatechange\");\n },\n\n /**\n * Handle success.\n */\n _success: function() {\n this.__disposeScriptElement();\n this.readyState = 4;\n\n // By default, load is considered successful\n if (!this.status) {\n this.status = 200;\n }\n\n this.statusText = \"\" + this.status;\n },\n\n /**\n * Handle failure.\n */\n __failure: function() {\n this.__disposeScriptElement();\n this.readyState = 4;\n this.status = 0;\n this.statusText = null;\n },\n\n /**\n * Looks up whether browser supports error handler.\n *\n * @return {Boolean} Whether browser supports error handler.\n */\n __supportsErrorHandler: function() {\n var isLegacyIe = this.__environmentGet(\"engine.name\") === \"mshtml\" &&\n this.__environmentGet(\"browser.documentmode\") < 9;\n\n var isOpera = this.__environmentGet(\"engine.name\") === \"opera\";\n\n return !(isLegacyIe || isOpera);\n },\n\n /**\n * Create and configure script element.\n *\n * @return {Element} Configured script element.\n */\n __createScriptElement: function() {\n var script = this.__scriptElement = document.createElement(\"script\");\n\n script.src = this.__url;\n script.onerror = this.__onNativeErrorBound;\n script.onload = this.__onNativeLoadBound;\n\n // BUGFIX: IE < 9\n // Legacy IEs do not fire the \"load\" event for script elements.\n // Instead, they support the \"readystatechange\" event\n if (this.__environmentGet(\"engine.name\") === \"mshtml\" &&\n this.__environmentGet(\"browser.documentmode\") < 9) {\n script.onreadystatechange = this.__onNativeLoadBound;\n }\n\n return script;\n },\n\n /**\n * Remove script element from DOM.\n */\n __disposeScriptElement: function() {\n var script = this.__scriptElement;\n\n if (script && script.parentNode) {\n this.__headElement.removeChild(script);\n }\n },\n\n /**\n * Proxy Environment.get to guard against env not being present yet.\n *\n * @param key {String} Environment key.\n * @return {var} Value of the queried environment key\n * @lint environmentNonLiteralKey(key)\n */\n __environmentGet: function(key) {\n if (qx && qx.core && qx.core.Environment) {\n return qx.core.Environment.get(key);\n } else {\n if (key === \"engine.name\") {\n return qx.bom.client.Engine.getName();\n }\n\n if (key === \"browser.documentmode\") {\n return qx.bom.client.Browser.getDocumentMode();\n }\n\n if (key == \"qx.debug.io\") {\n return false;\n }\n\n throw new Error(\"Unknown environment key at this phase\");\n }\n }\n },\n\n defer: function() {\n if (qx && qx.core && qx.core.Environment) {\n qx.core.Environment.add(\"qx.debug.io\", false);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.announcement.Announcement\", {\n extend: qx.core.Object,\n\n construct: function(announcementData) {\n this.base(arguments);\n\n this.set({\n id: announcementData.id,\n products: announcementData.products,\n start: new Date(announcementData.start),\n end: new Date(announcementData.end),\n title: announcementData.title,\n description: announcementData.description,\n link: announcementData.link,\n widgets: announcementData.widgets\n });\n },\n\n properties: {\n id: {\n check: \"String\",\n init: null,\n nullable: false\n },\n\n products: {\n check: \"Array\",\n init: [],\n nullable: false\n },\n\n start: {\n check: \"Date\",\n init: null,\n nullable: false\n },\n\n end: {\n check: \"Date\",\n init: null,\n nullable: false\n },\n\n title: {\n check: \"String\",\n init: null,\n nullable: true\n },\n\n description: {\n check: \"String\",\n init: null,\n nullable: true\n },\n\n link: {\n check: \"String\",\n init: null,\n nullable: true\n },\n\n widgets: {\n check: \"Array\",\n init: [],\n nullable: true\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Fabian Jakobs (fjakobs)\n * Jonathan Weiß (jonathan_rass)\n\n************************************************************************ */\n\n/**\n * Container, which provides scrolling in one dimension (vertical or horizontal).\n *\n * @childControl button-forward {qx.ui.form.RepeatButton} button to step forward\n * @childControl button-backward {qx.ui.form.RepeatButton} button to step backward\n * @childControl content {qx.ui.container.Composite} container to hold the content\n * @childControl scrollpane {qx.ui.core.scroll.ScrollPane} the scroll pane holds the content to enable scrolling\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * // create slide bar container\n * slideBar = new qx.ui.container.SlideBar().set({\n * width: 300\n * });\n *\n * // set layout\n * slideBar.setLayout(new qx.ui.layout.HBox());\n *\n * // add some widgets\n * for (var i=0; i<10; i++)\n * {\n * slideBar.add((new qx.ui.core.Widget()).set({\n * backgroundColor : (i % 2 == 0) ? \"red\" : \"blue\",\n * width : 60\n * }));\n * }\n *\n * this.getRoot().add(slideBar);\n *\n *\n * This example creates a SlideBar and add some widgets with alternating\n * background colors. Since the content is larger than the container, two\n * scroll buttons at the left and the right edge are shown.\n *\n * *External Documentation*\n *\n * \n * Documentation of this widget in the qooxdoo manual.\n */\nqx.Class.define(\"qx.ui.container.SlideBar\",\n{\n extend : qx.ui.core.Widget,\n\n include :\n [\n qx.ui.core.MRemoteChildrenHandling,\n qx.ui.core.MRemoteLayoutHandling\n ],\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param orientation {String?\"horizontal\"} The slide bar orientation\n */\n construct : function(orientation)\n {\n this.base(arguments);\n\n var scrollPane = this.getChildControl(\"scrollpane\");\n this._add(scrollPane, {flex: 1});\n\n if (orientation != null) {\n this.setOrientation(orientation);\n } else {\n this.initOrientation();\n }\n\n this.addListener(\"roll\", this._onRoll, this);\n },\n\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n // overridden\n appearance :\n {\n refine : true,\n init : \"slidebar\"\n },\n\n /** Orientation of the bar */\n orientation :\n {\n check : [\"horizontal\", \"vertical\"],\n init : \"horizontal\",\n apply : \"_applyOrientation\"\n },\n\n /** The number of pixels to scroll if the buttons are pressed */\n scrollStep :\n {\n check : \"Integer\",\n init : 15,\n themeable : true\n }\n },\n\n\n /*\n *****************************************************************************\n EVENTS\n *****************************************************************************\n */\n\n events :\n {\n /** Fired on scroll animation end invoked by 'scroll*' methods. */\n scrollAnimationEnd : \"qx.event.type.Event\"\n },\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n /*\n ---------------------------------------------------------------------------\n WIDGET API\n ---------------------------------------------------------------------------\n */\n\n // overridden\n getChildrenContainer : function() {\n return this.getChildControl(\"content\");\n },\n\n\n // overridden\n _createChildControlImpl : function(id, hash)\n {\n var control;\n\n switch(id)\n {\n case \"button-forward\":\n control = new qx.ui.form.RepeatButton;\n control.addListener(\"execute\", this._onExecuteForward, this);\n control.setFocusable(false);\n this._addAt(control, 2);\n break;\n\n case \"button-backward\":\n control = new qx.ui.form.RepeatButton;\n control.addListener(\"execute\", this._onExecuteBackward, this);\n control.setFocusable(false);\n this._addAt(control, 0);\n break;\n\n case \"content\":\n control = new qx.ui.container.Composite();\n\n this.getChildControl(\"scrollpane\").add(control);\n break;\n\n case \"scrollpane\":\n control = new qx.ui.core.scroll.ScrollPane();\n control.addListener(\"update\", this._onResize, this);\n control.addListener(\"scrollX\", this._onScroll, this);\n control.addListener(\"scrollY\", this._onScroll, this);\n control.addListener(\"scrollAnimationEnd\", this._onScrollAnimationEnd, this);\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n // overridden\n /**\n * @lint ignoreReferenceField(_forwardStates)\n */\n _forwardStates :\n {\n barLeft : true,\n barTop : true,\n barRight : true,\n barBottom : true\n },\n\n /*\n ---------------------------------------------------------------------------\n PUBLIC SCROLL API\n ---------------------------------------------------------------------------\n */\n\n /**\n * Scrolls the element's content by the given amount.\n *\n * @param offset {Integer?0} Amount to scroll\n * @param duration {Number?} The time in milliseconds the scroll to should take.\n */\n scrollBy : function(offset, duration)\n {\n var pane = this.getChildControl(\"scrollpane\");\n if (this.getOrientation() === \"horizontal\") {\n pane.scrollByX(offset, duration);\n } else {\n pane.scrollByY(offset, duration);\n }\n },\n\n\n /**\n * Scrolls the element's content to the given coordinate\n *\n * @param value {Integer} The position to scroll to.\n * @param duration {Number?} The time in milliseconds the scroll to should take.\n */\n scrollTo : function(value, duration)\n {\n var pane = this.getChildControl(\"scrollpane\");\n if (this.getOrientation() === \"horizontal\") {\n pane.scrollToX(value, duration);\n } else {\n pane.scrollToY(value, duration);\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n PROPERTY APPLY ROUTINES\n ---------------------------------------------------------------------------\n */\n // overridden\n _applyEnabled : function(value, old, name) {\n this.base(arguments, value, old, name);\n this._updateArrowsEnabled();\n },\n\n\n // property apply\n _applyOrientation : function(value, old)\n {\n var oldLayouts = [this.getLayout(), this._getLayout()];\n var buttonForward = this.getChildControl(\"button-forward\");\n var buttonBackward = this.getChildControl(\"button-backward\");\n\n // old can also be null, so we have to check both explicitly to set\n // the states correctly.\n if (old == \"vertical\" && value == \"horizontal\")\n {\n buttonForward.removeState(\"vertical\");\n buttonBackward.removeState(\"vertical\");\n buttonForward.addState(\"horizontal\");\n buttonBackward.addState(\"horizontal\");\n }\n else if (old == \"horizontal\" && value == \"vertical\")\n {\n buttonForward.removeState(\"horizontal\");\n buttonBackward.removeState(\"horizontal\");\n buttonForward.addState(\"vertical\");\n buttonBackward.addState(\"vertical\");\n }\n\n\n if (value == \"horizontal\")\n {\n this._setLayout(new qx.ui.layout.HBox());\n this.setLayout(new qx.ui.layout.HBox());\n }\n else\n {\n this._setLayout(new qx.ui.layout.VBox());\n this.setLayout(new qx.ui.layout.VBox());\n }\n\n if (oldLayouts[0]) {\n oldLayouts[0].dispose();\n }\n\n if (oldLayouts[1]) {\n oldLayouts[1].dispose();\n }\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n EVENT LISTENERS\n ---------------------------------------------------------------------------\n */\n\n /**\n * Scrolls pane on roll events\n *\n * @param e {qx.event.type.Roll} the roll event\n */\n _onRoll : function(e)\n {\n // only wheel and touch\n if (e.getPointerType() == \"mouse\") {\n return;\n }\n\n var delta = 0;\n var pane = this.getChildControl(\"scrollpane\");\n if (this.getOrientation() === \"horizontal\") {\n delta = e.getDelta().x;\n\n var position = pane.getScrollX();\n var max = pane.getScrollMaxX();\n var steps = parseInt(delta);\n\n // pass the event to the parent if both scrollbars are at the end\n if (!(\n steps < 0 && position <= 0 ||\n steps > 0 && position >= max ||\n delta == 0)\n ) {\n e.stop();\n } else {\n e.stopMomentum();\n }\n } else {\n delta = e.getDelta().y;\n\n var position = pane.getScrollY();\n var max = pane.getScrollMaxY();\n var steps = parseInt(delta);\n\n // pass the event to the parent if both scrollbars are at the end\n if (!(\n steps < 0 && position <= 0 ||\n steps > 0 && position >= max ||\n delta == 0\n )) {\n e.stop();\n } else {\n e.stopMomentum();\n }\n }\n this.scrollBy(parseInt(delta, 10));\n\n // block all momentum scrolling\n if (e.getMomentum()) {\n e.stop();\n }\n },\n\n\n /**\n * Update arrow enabled state after scrolling\n */\n _onScroll : function() {\n this._updateArrowsEnabled();\n },\n\n\n /**\n * Handler to fire the 'scrollAnimationEnd' event.\n */\n _onScrollAnimationEnd : function() {\n this.fireEvent(\"scrollAnimationEnd\");\n },\n\n\n /**\n * Listener for resize event. This event is fired after the\n * first flush of the element which leads to another queuing\n * when the changes modify the visibility of the scroll buttons.\n *\n * @param e {Event} Event object\n */\n _onResize : function(e)\n {\n var content = this.getChildControl(\"scrollpane\").getChildren()[0];\n if (!content) {\n return;\n }\n\n var innerSize = this.getInnerSize();\n var contentSize = content.getBounds();\n\n var overflow = (this.getOrientation() === \"horizontal\") ?\n contentSize.width > innerSize.width :\n contentSize.height > innerSize.height;\n\n if (overflow) {\n this._showArrows();\n this._updateArrowsEnabled();\n } else {\n this._hideArrows();\n }\n },\n\n\n /**\n * Scroll handler for left scrolling\n *\n */\n _onExecuteBackward : function() {\n this.scrollBy(-this.getScrollStep());\n },\n\n\n /**\n * Scroll handler for right scrolling\n *\n */\n _onExecuteForward : function() {\n this.scrollBy(this.getScrollStep());\n },\n\n\n /*\n ---------------------------------------------------------------------------\n UTILITIES\n ---------------------------------------------------------------------------\n */\n\n /**\n * Update arrow enabled state\n */\n _updateArrowsEnabled : function()\n {\n // set the disables state directly because we are overriding the\n // inheritance\n if (!this.getEnabled()) {\n this.getChildControl(\"button-backward\").setEnabled(false);\n this.getChildControl(\"button-forward\").setEnabled(false);\n return;\n }\n\n var pane = this.getChildControl(\"scrollpane\");\n\n if (this.getOrientation() === \"horizontal\")\n {\n var position = pane.getScrollX();\n var max = pane.getScrollMaxX();\n }\n else\n {\n var position = pane.getScrollY();\n var max = pane.getScrollMaxY();\n }\n\n this.getChildControl(\"button-backward\").setEnabled(position > 0);\n this.getChildControl(\"button-forward\").setEnabled(position < max);\n },\n\n\n /**\n * Show the arrows (Called from resize event)\n *\n */\n _showArrows : function()\n {\n this._showChildControl(\"button-forward\");\n this._showChildControl(\"button-backward\");\n },\n\n\n /**\n * Hide the arrows (Called from resize event)\n *\n */\n _hideArrows : function()\n {\n this._excludeChildControl(\"button-forward\");\n this._excludeChildControl(\"button-backward\");\n\n this.scrollTo(0);\n }\n }\n\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/*\n * A SlideBar that has the backward/forward buttons ON the content container.\n * Some transparency is given to the buttons to make the background container still visible.\n */\n\nqx.Class.define(\"osparc.widget.SlideBar\", {\n extend: qx.ui.container.SlideBar,\n\n construct: function(spacing) {\n this.base(arguments);\n\n const layout = new qx.ui.layout.HBox(spacing ? spacing : 5);\n this.setLayout(layout);\n\n this.__pimpLayout();\n },\n\n properties: {\n buttonsWidth: {\n check: \"Integer\",\n init: 30,\n nullable: false,\n apply: \"__updateElementSizes\"\n }\n },\n\n members: {\n __pimpLayout: function() {\n const buttonBackward = this.getChildControl(\"button-backward\");\n const buttonForward = this.getChildControl(\"button-forward\");\n [\n buttonBackward,\n buttonForward\n ].forEach(button => {\n button.set({\n alignY: \"middle\",\n opacity: 0.7,\n backgroundColor: \"background-main\",\n allowGrowY: true\n });\n });\n buttonBackward.setIcon(\"@FontAwesome5Solid/chevron-left/16\");\n buttonBackward.getContentElement().setStyles({\n \"border-top-left-radius\": \"0px\",\n \"border-bottom-left-radius\": \"0px\"\n });\n buttonForward.setIcon(\"@FontAwesome5Solid/chevron-right/16\");\n buttonForward.getContentElement().setStyles({\n \"border-top-right-radius\": \"0px\",\n \"border-bottom-right-radius\": \"0px\"\n });\n },\n\n // override\n _onResize: function() {\n this.base(arguments);\n this.__updateElementSizes();\n },\n\n __updateElementSizes: function() {\n const btnWidth = this.getButtonsWidth();\n const contentPane = this.getChildControl(\"scrollpane\");\n const padding = 3;\n contentPane.set({\n marginLeft: -btnWidth + padding,\n marginRight: -btnWidth + padding\n });\n const size = this.getInnerSize();\n if (size) {\n this.set({\n scrollStep: size.width\n });\n }\n const buttonBackward = this.getChildControl(\"button-backward\");\n const buttonForward = this.getChildControl(\"button-forward\");\n [\n buttonBackward,\n buttonForward\n ].forEach(button => {\n button.getChildControl(\"icon\").set({\n opacity: 1\n });\n });\n },\n\n // override\n _updateArrowsEnabled: function() {\n this.base(arguments);\n\n const buttonBackward = this.getChildControl(\"button-backward\");\n const buttonForward = this.getChildControl(\"button-forward\");\n [\n buttonBackward,\n buttonForward\n ].forEach(button => {\n button.setVisibility(button.getEnabled() ? \"visible\" : \"hidden\");\n });\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Christian Hagendorn (chris_schmidt)\n\n************************************************************************ */\n\n/**\n * Responsible for the single selection management.\n *\n * The class manage a list of {@link qx.ui.core.Widget} which are returned from\n * {@link qx.ui.core.ISingleSelectionProvider#getItems}.\n *\n * @internal\n */\nqx.Class.define(\"qx.ui.core.SingleSelectionManager\",\n{\n extend : qx.core.Object,\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n\n /**\n * Construct the single selection manager.\n *\n * @param selectionProvider {qx.ui.core.ISingleSelectionProvider} The provider\n * for selection.\n */\n construct : function(selectionProvider) {\n this.base(arguments);\n\n if (qx.core.Environment.get(\"qx.debug\")) {\n qx.core.Assert.assertInterface(selectionProvider,\n qx.ui.core.ISingleSelectionProvider,\n \"Invalid selectionProvider!\");\n }\n\n this.__selectionProvider = selectionProvider;\n },\n\n\n /*\n *****************************************************************************\n EVENTS\n *****************************************************************************\n */\n\n\n events :\n {\n /** Fires after the selection was modified */\n \"changeSelected\" : \"qx.event.type.Data\"\n },\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n\n properties :\n {\n /**\n * If the value is
true
the manager allows an empty selection,\n * otherwise the first selectable element returned from the\n * qx.ui.core.ISingleSelectionProvider
will be selected.\n */\n allowEmptySelection :\n {\n check : \"Boolean\",\n init : true,\n apply : \"__applyAllowEmptySelection\"\n }\n },\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n\n members :\n {\n /** @type {qx.ui.core.Widget} The selected widget. */\n __selected : null,\n\n /** @type {qx.ui.core.ISingleSelectionProvider} The provider for selection management */\n __selectionProvider : null,\n\n\n /*\n ---------------------------------------------------------------------------\n PUBLIC API\n ---------------------------------------------------------------------------\n */\n\n\n /**\n * Returns the current selected element.\n *\n * @return {qx.ui.core.Widget | null} The current selected widget or\n * null
if the selection is empty.\n */\n getSelected : function() {\n return this.__selected;\n },\n\n /**\n * Selects the passed element.\n *\n * @param item {qx.ui.core.Widget} Element to select.\n * @throws {Error} if the element is not a child element.\n */\n setSelected : function(item) {\n if (!this.__isChildElement(item)) {\n throw new Error(\"Could not select \" + item +\n \", because it is not a child element!\");\n }\n\n this.__setSelected(item);\n },\n\n /**\n * Reset the current selection. If {@link #allowEmptySelection} is set to\n * true
the first element will be selected.\n */\n resetSelected : function(){\n this.__setSelected(null);\n },\n\n /**\n * Return true
if the passed element is selected.\n *\n * @param item {qx.ui.core.Widget} Element to check if selected.\n * @return {Boolean} true
if passed element is selected,\n * false
otherwise.\n * @throws {Error} if the element is not a child element.\n */\n isSelected : function(item) {\n if (!this.__isChildElement(item)) {\n throw new Error(\"Could not check if \" + item + \" is selected,\" +\n \" because it is not a child element!\");\n }\n return this.__selected === item;\n },\n\n /**\n * Returns true
if selection is empty.\n *\n * @return {Boolean} true
if selection is empty,\n * false
otherwise.\n */\n isSelectionEmpty : function() {\n return this.__selected == null;\n },\n\n /**\n * Returns all elements which are selectable.\n *\n * @param all {Boolean} true for all selectables, false for the\n * selectables the user can interactively select\n * @return {qx.ui.core.Widget[]} The contained items.\n */\n getSelectables : function(all)\n {\n var items = this.__selectionProvider.getItems();\n var result = [];\n\n for (var i = 0; i < items.length; i++)\n {\n if (this.__selectionProvider.isItemSelectable(items[i])) {\n result.push(items[i]);\n }\n }\n\n // in case of an user selectable list, remove the enabled items\n if (!all) {\n for (var i = result.length -1; i >= 0; i--) {\n if (!result[i].getEnabled()) {\n result.splice(i, 1);\n }\n };\n }\n\n return result;\n },\n\n\n /*\n ---------------------------------------------------------------------------\n APPLY METHODS\n ---------------------------------------------------------------------------\n */\n\n\n // apply method\n __applyAllowEmptySelection : function(value, old)\n {\n if (!value) {\n this.__setSelected(this.__selected);\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n HELPERS\n ---------------------------------------------------------------------------\n */\n\n /**\n * Set selected element.\n *\n * If passes value is null
, the selection will be reseted.\n *\n * @param item {qx.ui.core.Widget | null} element to select, or\n * null
to reset selection.\n */\n __setSelected : function(item) {\n var oldSelected = this.__selected;\n var newSelected = item;\n\n if (newSelected != null && oldSelected === newSelected) {\n return;\n }\n\n if (!this.isAllowEmptySelection() && newSelected == null) {\n var firstElement = this.getSelectables(true)[0];\n\n if (firstElement) {\n newSelected = firstElement;\n }\n }\n\n this.__selected = newSelected;\n this.fireDataEvent(\"changeSelected\", newSelected, oldSelected);\n },\n\n /**\n * Checks if passed element is a child element.\n *\n * @param item {qx.ui.core.Widget} Element to check if child element.\n * @return {Boolean} true
if element is child element,\n * false
otherwise.\n */\n __isChildElement : function(item)\n {\n var items = this.__selectionProvider.getItems();\n\n for (var i = 0; i < items.length; i++)\n {\n if (items[i] === item)\n {\n return true;\n }\n }\n return false;\n }\n },\n\n\n\n /*\n *****************************************************************************\n DESTRUCTOR\n *****************************************************************************\n */\n destruct : function() {\n if (this.__selectionProvider.toHashCode) {\n this._disposeObjects(\"__selectionProvider\");\n } else {\n this.__selectionProvider = null;\n }\n\n this._disposeObjects(\"__selected\");\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2023 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\nqx.Class.define(\"osparc.desktop.credits.BuyCreditsStepper\", {\n extend: qx.ui.container.Stack,\n construct(paymentMethods) {\n this.base(arguments);\n this.__paymentMethods = paymentMethods;\n const groupsStore = osparc.store.Groups.getInstance();\n const myGid = groupsStore.getMyGroupId()\n const store = osparc.store.Store.getInstance();\n this.__personalWallet = store.getWallets().find(wallet => wallet.getOwner() === myGid)\n this.__buildLayout()\n },\n events: {\n \"completed\": \"qx.event.type.Event\",\n \"cancelled\": \"qx.event.type.Event\",\n },\n properties: {\n paymentId: {\n check: \"String\",\n init: null,\n nullable: true\n }\n },\n members: {\n __buildLayout() {\n this.removeAll();\n this.__form = new osparc.desktop.credits.BuyCreditsForm(this.__paymentMethods);\n this.__form.addListener(\"submit\", e => {\n const {\n amountDollars: priceDollars,\n osparcCredits, paymentMethodId\n } = e.getData();\n const params = {\n url: {\n walletId: this.__personalWallet.getWalletId()\n },\n data: {\n priceDollars,\n osparcCredits\n }\n };\n this.__form.setFetching(true);\n if (paymentMethodId) {\n params.url.paymentMethodId = paymentMethodId;\n osparc.data.Resources.fetch(\"payments\", \"payWithPaymentMethod\", params)\n .then(data => {\n const { paymentId } = data\n osparc.wrapper.WebSocket.getInstance().getSocket().once(\"paymentCompleted\", paymentData => {\n if (paymentId === paymentData.paymentId) {\n this.__paymentCompleted(paymentData)\n this.__form.setFetching(false);\n }\n });\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n this.__form.setFetching(false);\n })\n } else {\n osparc.data.Resources.fetch(\"payments\", \"startPayment\", params)\n .then(data => {\n const { paymentId, paymentFormUrl } = data;\n this.setPaymentId(paymentId)\n this.__iframe = new qx.ui.embed.Iframe(paymentFormUrl).set({\n decorator: \"no-border-2\"\n });\n this.add(this.__iframe);\n this.setSelection([this.__iframe])\n osparc.wrapper.WebSocket.getInstance().getSocket().once(\"paymentCompleted\", paymentData => {\n if (paymentId === paymentData.paymentId) {\n this.__paymentCompleted(paymentData);\n }\n });\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n })\n .finally(() => this.__form.setFetching(false));\n }\n });\n this.__form.addListener(\"cancel\", () => this.fireEvent(\"cancelled\"));\n this.add(this.__form);\n this.setSelection([this.__form])\n },\n __paymentCompleted(paymentData) {\n if (paymentData && paymentData.completedStatus) {\n const msg = this.tr(\"Payment \") + osparc.utils.Utils.onlyFirstsUp(paymentData.completedStatus);\n switch (paymentData.completedStatus) {\n case \"SUCCESS\":\n osparc.FlashMessenger.getInstance().logAs(msg, \"INFO\");\n break;\n case \"PENDING\":\n osparc.FlashMessenger.getInstance().logAs(msg, \"WARNING\");\n break;\n case \"CANCELED\":\n case \"FAILED\":\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n break;\n default:\n console.error(\"completedStatus unknown\");\n break;\n }\n }\n this.fireEvent(\"completed\");\n },\n __isGatewaySelected() {\n const selection = this.getSelection()\n return selection.length === 1 && selection[0] === this.__iframe\n },\n cancelPayment: function() {\n if (this.__isGatewaySelected() && this.getPaymentId()) {\n osparc.data.Resources.fetch(\"payments\", \"cancelPayment\", {\n url: {\n walletId: this.__personalWallet.getWalletId(),\n paymentId: this.getPaymentId()\n }\n })\n }\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Andreas Ecker (ecker)\n * Fabian Jakobs (fjakobs)\n * Adrian Olaru (adrianolaru)\n\n************************************************************************ */\n\n/**\n * The TextField is a single-line text input field.\n */\nqx.Class.define(\"qx.ui.form.TextField\",\n{\n extend : qx.ui.form.AbstractField,\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n // overridden\n appearance :\n {\n refine : true,\n init : \"textfield\"\n },\n\n // overridden\n allowGrowY :\n {\n refine : true,\n init : false\n },\n\n // overridden\n allowShrinkY :\n {\n refine : true,\n init : false\n }\n },\n\n members : {\n\n // overridden\n _renderContentElement : function(innerHeight, element) {\n if ((qx.core.Environment.get(\"engine.name\") == \"mshtml\") &&\n (parseInt(qx.core.Environment.get(\"engine.version\"), 10) < 9\n || qx.core.Environment.get(\"browser.documentmode\") < 9))\n {\n element.setStyles({\n \"line-height\" : innerHeight + 'px'\n });\n }\n },\n\n\n // overridden\n _createContentElement : function() {\n var el = this.base(arguments);\n var deviceType = qx.core.Environment.get(\"device.type\");\n if (deviceType == \"tablet\" || deviceType == \"mobile\") {\n el.addListener(\"keypress\", this._onKeyPress, this);\n }\n\n return el;\n },\n\n\n /**\n * Close the virtual keyboard if the Enter key is pressed.\n * @param evt {qx.event.type.KeySequence} the keypress event.\n */\n _onKeyPress : function(evt) {\n // On return\n if (evt.getKeyIdentifier() == \"Enter\") {\n if (this.isFocusable()) {\n this.blur();\n }\n else {\n // When the text field is not focusable, blur() will raise an exception on\n // touch devices and the virtual keyboard is not closed. To work around this\n // issue, we're enabling the focus just for the blur() call.\n this.setFocusable(true);\n this.blur();\n this.setFocusable(false);\n }\n }\n }\n },\n\n destruct : function() {\n this.getContentElement().removeListener(\"keypress\", this._onKeyPress, this);\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Collection of methods for dealing with services data type conversions, extract\n * specific information.\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let latestSrv = osparc.service.Utils.getLatest(key);\n *\n */\n\nqx.Class.define(\"osparc.service.Utils\", {\n type: \"static\",\n\n statics: {\n TYPES: {\n parameter: {\n label: qx.locale.Manager.tr(\"Parameter\"),\n icon: \"@FontAwesome5Solid/sliders-h/\",\n sorting: 0\n },\n file: {\n label: qx.locale.Manager.tr(\"File\"),\n icon: \"@FontAwesome5Solid/file/\",\n sorting: 1\n },\n iterator: {\n label: qx.locale.Manager.tr(\"Iterator\"),\n icon: \"@FontAwesome5Solid/copy/\",\n sorting: 2\n },\n computational: {\n label: qx.locale.Manager.tr(\"Computational\"),\n icon: \"@FontAwesome5Solid/cogs/\",\n sorting: 3\n },\n dynamic: {\n label: qx.locale.Manager.tr(\"Interactive\"),\n icon: \"@FontAwesome5Solid/mouse-pointer/\",\n sorting: 4\n },\n probe: {\n label: qx.locale.Manager.tr(\"Probe\"),\n icon: \"@FontAwesome5Solid/thermometer/\",\n sorting: 5\n }\n },\n\n getTypes: function() {\n return Object.keys(this.TYPES);\n },\n\n getType: function(type) {\n return this.TYPES[type.trim().toLowerCase()];\n },\n\n getIcon: function(type) {\n const typeInfo = this.getType(type);\n if (typeInfo) {\n return typeInfo[\"icon\"];\n }\n return null;\n },\n\n getSorting: function(type) {\n const typeInfo = this.getType(type);\n if (typeInfo) {\n return typeInfo[\"sorting\"];\n }\n return 0;\n },\n\n sortObjectsBasedOn: function(servicesArray, basedOn) {\n if (basedOn === undefined) {\n basedOn = {\n \"sort\": \"hits\",\n \"order\": \"down\"\n };\n }\n servicesArray.sort((a, b) => {\n if (basedOn.sort === \"hits\") {\n if (a[basedOn.sort] !== b[basedOn.sort]) {\n if (basedOn.order === \"down\") {\n return b[basedOn.sort] - a[basedOn.sort];\n }\n return a[basedOn.sort] - b[basedOn.sort];\n }\n return a[\"name\"].localeCompare(b[\"name\"]);\n } else if (basedOn.sort === \"name\") {\n if (basedOn.order === \"down\") {\n return a[\"name\"].localeCompare(b[\"name\"]);\n }\n return b[\"name\"].localeCompare(a[\"name\"]);\n }\n return 0;\n });\n },\n\n convertArrayToObject: function(servicesArray) {\n let services = {};\n for (let i = 0; i < servicesArray.length; i++) {\n const service = servicesArray[i];\n if (!Object.prototype.hasOwnProperty.call(services, service.key)) {\n services[service.key] = {};\n }\n if (!Object.prototype.hasOwnProperty.call(services[service.key], service.version)) {\n services[service.key][service.version] = {};\n }\n services[service.key][service.version] = service;\n }\n return services;\n },\n\n getVersions: function(key, filterDeprecated = true) {\n const services = osparc.store.Services.servicesCached;\n let versions = [];\n if (key in services) {\n const serviceVersions = services[key];\n versions = versions.concat(Object.keys(serviceVersions));\n if (filterDeprecated) {\n versions = versions.filter(version => {\n if (services[key][version][\"retired\"]) {\n return false;\n }\n return true;\n });\n }\n versions.sort(osparc.utils.Utils.compareVersionNumbers);\n }\n return versions.reverse();\n },\n\n getLatest: function(key) {\n const services = osparc.store.Services.servicesCached;\n if (key in services) {\n const versions = this.getVersions(key, true);\n if (versions.length) {\n return services[key][versions[0]];\n }\n }\n return null;\n },\n\n getLatestCompatible: function(key, version) {\n const services = osparc.store.Services.servicesCached;\n if (key in services && version in services[key]) {\n const serviceMD = services[key][version];\n if (serviceMD[\"compatibility\"] && serviceMD[\"compatibility\"][\"canUpdateTo\"]) {\n const canUpdateTo = serviceMD[\"compatibility\"][\"canUpdateTo\"];\n return {\n key: \"key\" in canUpdateTo ? canUpdateTo[\"key\"] : key, // key is optional\n version: canUpdateTo[\"version\"]\n }\n }\n // the provided key/version itself is the latest compatible\n return {\n key,\n version\n }\n }\n return null;\n },\n\n getVersionDisplay: function(key, version) {\n const services = osparc.store.Services.servicesCached;\n if (key in services && version in services[key]) {\n return this.extractVersionDisplay(services[key][version]);\n }\n return null;\n },\n\n extractVersionDisplay: function(metadata) {\n return metadata[\"versionDisplay\"] ? metadata[\"versionDisplay\"] : metadata[\"version\"];\n },\n\n getReleasedDate: function(key, version) {\n const services = osparc.store.Services.servicesCached;\n if (\n key in services &&\n version in services[key] &&\n \"released\" in services[key][version]\n ) {\n return services[key][version][\"released\"];\n }\n return null;\n },\n\n versionToListItem: function(key, version) {\n const versionDisplay = this.getVersionDisplay(key, version);\n const listItem = new qx.ui.form.ListItem(versionDisplay);\n osparc.utils.Utils.setIdToWidget(listItem, \"serviceVersionItem_\" + versionDisplay);\n listItem.version = version;\n return listItem;\n },\n\n canIWrite: function(serviceAccessRights) {\n const groupsStore = osparc.store.Groups.getInstance();\n const orgIDs = groupsStore.getOrganizationIds();\n orgIDs.push(groupsStore.getMyGroupId());\n return osparc.share.CollaboratorsService.canGroupsWrite(serviceAccessRights, orgIDs);\n },\n\n DEPRECATED_SERVICE_TEXT: qx.locale.Manager.tr(\"Service deprecated\"),\n DEPRECATED_DYNAMIC_INSTRUCTIONS: qx.locale.Manager.tr(\"Please go back to the dashboard and Update the Service or download its data and upload it to an updated version\"),\n DEPRECATED_COMPUTATIONAL_INSTRUCTIONS: qx.locale.Manager.tr(\"Please instantiate an updated version\"),\n RETIRED_SERVICE_TEXT: qx.locale.Manager.tr(\"Service retired\"),\n RETIRED_DYNAMIC_INSTRUCTIONS: qx.locale.Manager.tr(\"Please download the Service data and upload it to an updated version\"),\n RETIRED_COMPUTATIONAL_INSTRUCTIONS: qx.locale.Manager.tr(\"Please instantiate an updated version\"),\n DEPRECATED_AUTOUPDATABLE_INSTRUCTIONS: qx.locale.Manager.tr(\"Please Stop the Service and then Update it\"),\n RETIRED_AUTOUPDATABLE_INSTRUCTIONS: qx.locale.Manager.tr(\"Please Update the Service\"),\n\n isUpdatable: function(metadata) {\n const latestCompatible = this.getLatestCompatible(metadata[\"key\"], metadata[\"version\"]);\n return latestCompatible && (metadata[\"key\"] !== latestCompatible[\"key\"] || metadata[\"version\"] !== latestCompatible[\"version\"]);\n },\n\n isDeprecated: function(metadata) {\n if (metadata && \"retired\" in metadata && ![null, undefined].includes(metadata[\"retired\"])) {\n const deprecationTime = new Date(metadata[\"retired\"]);\n const now = new Date();\n return deprecationTime.getTime() > now.getTime();\n }\n return false;\n },\n\n isRetired: function(metadata) {\n if (metadata && \"retired\" in metadata && ![null, undefined].includes(metadata[\"retired\"])) {\n const deprecationTime = new Date(metadata[\"retired\"]);\n const now = new Date();\n return deprecationTime.getTime() < now.getTime();\n }\n return false;\n },\n\n getDeprecationDateText: function(metadata) {\n const deprecationTime = new Date(metadata[\"retired\"]);\n return qx.locale.Manager.tr(\"It will be Retired: \") + osparc.utils.Utils.formatDate(deprecationTime);\n },\n\n getFilePicker: function() {\n return this.self().getLatest(\"simcore/services/frontend/file-picker\");\n },\n\n getParametersMetadata: function() {\n const parametersMetadata = [];\n const services = osparc.store.Services.servicesCached;\n for (const key in services) {\n if (key.includes(\"simcore/services/frontend/parameter/\")) {\n const latest = this.self().getLatest(key);\n if (latest) {\n parametersMetadata.push(latest);\n }\n }\n }\n return parametersMetadata;\n },\n\n getParameterMetadata: function(type) {\n return this.self().getLatest(\"simcore/services/frontend/parameter/\"+type);\n },\n\n getProbeMetadata: function(type) {\n return this.self().getLatest(\"simcore/services/frontend/iterator-consumer/probe/\"+type);\n },\n\n removeFileToKeyMap: function(service) {\n [\n \"inputs\",\n \"outputs\"\n ].forEach(inOut => {\n if (inOut in service) {\n for (const key in service[inOut]) {\n if (\"fileToKeyMap\" in service[inOut][key]) {\n delete service[inOut][key][\"fileToKeyMap\"];\n }\n }\n }\n });\n },\n\n getUniqueServicesFromWorkbench: function(workbench) {\n const services = [];\n Object.values(workbench).forEach(node => {\n const service = {\n key: node[\"key\"],\n version: node[\"version\"]\n };\n const idx = services.findIndex(existingSrv => existingSrv.key === service.key && existingSrv.version === service.version);\n if (idx === -1) {\n services.push(service);\n }\n });\n return services;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.share.CollaboratorsWorkspace\", {\n extend: osparc.share.Collaborators,\n\n /**\n * @param workspace {osparc.data.model.Workspace}\n */\n construct: function(workspace) {\n this.__workspace = workspace;\n this._resourceType = \"workspace\";\n\n const workspaceDataCopy = workspace.serialize();\n this.base(arguments, workspaceDataCopy, []);\n },\n\n statics: {\n canIDelete: function(myAccessRights) {\n return myAccessRights[\"delete\"];\n },\n\n getViewerAccessRight: function() {\n return {\n \"read\": true,\n \"write\": false,\n \"delete\": false\n };\n },\n\n getCollaboratorAccessRight: function() {\n return {\n \"read\": true,\n \"write\": true,\n \"delete\": false\n };\n },\n\n getOwnerAccessRight: function() {\n return {\n \"read\": true,\n \"write\": true,\n \"delete\": true\n };\n }\n },\n\n members: {\n __workspace: null,\n\n _addEditors: function(gids) {\n if (gids.length === 0) {\n return;\n }\n\n const newCollaborators = {};\n gids.forEach(gid => newCollaborators[gid] = this.self().getCollaboratorAccessRight());\n osparc.store.Workspaces.getInstance().addCollaborators(this.__workspace.getWorkspaceId(), newCollaborators)\n .then(() => {\n const text = this.tr(\"Workspace successfully shared\");\n osparc.FlashMessenger.getInstance().logAs(text);\n this.fireDataEvent(\"updateAccessRights\", this.__workspace.serialize());\n this._reloadCollaboratorsList();\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong sharing the Workspace\"), \"ERROR\");\n });\n },\n\n _deleteMember: function(collaborator, item) {\n if (item) {\n item.setEnabled(false);\n }\n\n osparc.store.Workspaces.getInstance().removeCollaborator(this.__workspace.getWorkspaceId(), collaborator[\"gid\"])\n .then(() => {\n this.fireDataEvent(\"updateAccessRights\", this.__workspace.serialize());\n osparc.FlashMessenger.getInstance().logAs(collaborator[\"name\"] + this.tr(\" successfully removed\"));\n this._reloadCollaboratorsList();\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong removing \") + collaborator[\"name\"], \"ERROR\");\n })\n .finally(() => {\n if (item) {\n item.setEnabled(true);\n }\n });\n },\n\n __make: function(collaboratorGId, newAccessRights, successMsg, failureMsg, item) {\n item.setEnabled(false);\n\n osparc.store.Workspaces.getInstance().updateCollaborator(this.__workspace.getWorkspaceId(), collaboratorGId, newAccessRights)\n .then(() => {\n this.fireDataEvent(\"updateAccessRights\", this.__workspace.serialize());\n osparc.FlashMessenger.getInstance().logAs(successMsg);\n this._reloadCollaboratorsList();\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(failureMsg, \"ERROR\");\n })\n .finally(() => {\n if (item) {\n item.setEnabled(true);\n }\n });\n },\n\n _promoteToEditor: function(collaborator, item) {\n this.__make(\n collaborator[\"gid\"],\n this.self().getCollaboratorAccessRight(),\n this.tr(`Successfully promoted to ${osparc.data.Roles.WORKSPACE[2].label}`),\n this.tr(`Something went wrong promoting to ${osparc.data.Roles.WORKSPACE[2].label}`),\n item\n );\n },\n\n _promoteToOwner: function(collaborator, item) {\n this.__make(\n collaborator[\"gid\"],\n this.self().getOwnerAccessRight(),\n this.tr(`Successfully promoted to ${osparc.data.Roles.WORKSPACE[3].label}`),\n this.tr(`Something went wrong promoting to ${osparc.data.Roles.WORKSPACE[3].label}`),\n item\n );\n },\n\n _demoteToUser: async function(collaborator, item) {\n const groupId = collaborator[\"gid\"];\n const demoteToUser = (gid, itm) => {\n this.__make(\n gid,\n this.self().getViewerAccessRight(),\n this.tr(`Successfully demoted to ${osparc.data.Roles.WORKSPACE[1].label}`),\n this.tr(`Something went wrong demoting to ${osparc.data.Roles.WORKSPACE[1].label}`),\n itm\n );\n };\n\n const group = osparc.store.Groups.getInstance().getOrganization(groupId);\n if (group) {\n const msg = this.tr(`Demoting to ${osparc.data.Roles.WORKSPACE[1].label} will remove write access to all the members of the Organization. Are you sure?`);\n const win = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Demote\"),\n confirmAction: \"delete\",\n confirmText: this.tr(\"Yes\")\n });\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n demoteToUser(groupId, item);\n }\n }, this);\n } else {\n demoteToUser(groupId, item);\n }\n },\n\n _demoteToEditor: function(collaborator, item) {\n this.__make(\n collaborator[\"gid\"],\n this.self().getCollaboratorAccessRight(),\n this.tr(`Successfully demoted to ${osparc.data.Roles.WORKSPACE[2].label}`),\n this.tr(`Something went wrong demoting to ${osparc.data.Roles.WORKSPACE[2].label}`),\n item\n );\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2025 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.share.CollaboratorsTag\", {\n extend: osparc.share.Collaborators,\n\n /**\n * @param tag {osparc.data.model.Tag}\n */\n construct: function(tag) {\n this.__tag = tag;\n this._resourceType = \"tag\";\n\n const tagDataCopy = tag.serialize();\n this.base(arguments, tagDataCopy, []);\n },\n\n statics: {\n canIWrite: function(myAccessRights) {\n return myAccessRights[\"write\"];\n },\n\n canIDelete: function(myAccessRights) {\n return myAccessRights[\"delete\"];\n },\n\n getViewerAccessRight: function() {\n return {\n \"read\": true,\n \"write\": false,\n \"delete\": false\n };\n },\n\n getCollaboratorAccessRight: function() {\n return {\n \"read\": true,\n \"write\": true,\n \"delete\": false\n };\n },\n\n getOwnerAccessRight: function() {\n return {\n \"read\": true,\n \"write\": true,\n \"delete\": true\n };\n }\n },\n\n members: {\n __tag: null,\n\n _addEditors: function(gids) {\n if (gids.length === 0) {\n return;\n }\n\n const newCollaborators = {};\n gids.forEach(gid => newCollaborators[gid] = this.self().getViewerAccessRight());\n osparc.store.Tags.getInstance().addCollaborators(this.__tag.getTagId(), newCollaborators)\n .then(() => {\n const text = this.tr(\"Tag successfully shared\");\n osparc.FlashMessenger.getInstance().logAs(text);\n this.fireDataEvent(\"updateAccessRights\", this.__tag.serialize());\n this._reloadCollaboratorsList();\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong sharing the Tag\"), \"ERROR\");\n });\n },\n\n _deleteMember: function(collaborator, item) {\n if (item) {\n item.setEnabled(false);\n }\n\n osparc.store.Tags.getInstance().removeCollaborator(this.__tag.getTagId(), collaborator[\"gid\"])\n .then(() => {\n this.fireDataEvent(\"updateAccessRights\", this.__tag.serialize());\n osparc.FlashMessenger.getInstance().logAs(collaborator[\"name\"] + this.tr(\" successfully removed\"));\n this._reloadCollaboratorsList();\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong removing \") + collaborator[\"name\"], \"ERROR\");\n })\n .finally(() => {\n if (item) {\n item.setEnabled(true);\n }\n });\n },\n\n __make: function(collaboratorGId, newAccessRights, successMsg, failureMsg, item) {\n item.setEnabled(false);\n\n osparc.store.Tags.getInstance().updateCollaborator(this.__tag.getTagId(), collaboratorGId, newAccessRights)\n .then(() => {\n this.fireDataEvent(\"updateAccessRights\", this.__tag.serialize());\n osparc.FlashMessenger.getInstance().logAs(successMsg);\n this._reloadCollaboratorsList();\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(failureMsg, \"ERROR\");\n })\n .finally(() => {\n if (item) {\n item.setEnabled(true);\n }\n });\n },\n\n _promoteToEditor: function(collaborator, item) {\n this.__make(\n collaborator[\"gid\"],\n this.self().getCollaboratorAccessRight(),\n this.tr(`Successfully promoted to ${osparc.data.Roles.STUDY[2].label}`),\n this.tr(`Something went wrong promoting to ${osparc.data.Roles.STUDY[2].label}`),\n item\n );\n },\n\n _promoteToOwner: function(collaborator, item) {\n this.__make(\n collaborator[\"gid\"],\n this.self().getOwnerAccessRight(),\n this.tr(`Successfully promoted to ${osparc.data.Roles.STUDY[3].label}`),\n this.tr(`Something went wrong promoting to ${osparc.data.Roles.STUDY[3].label}`),\n item\n );\n },\n\n _demoteToUser: async function(collaborator, item) {\n this.__make(\n collaborator[\"gid\"],\n this.self().getViewerAccessRight(),\n this.tr(`Successfully demoted to ${osparc.data.Roles.STUDY[1].label}`),\n this.tr(`Something went wrong demoting to ${osparc.data.Roles.STUDY[1].label}`),\n item\n );\n },\n\n _demoteToEditor: function(collaborator, item) {\n this.__make(\n collaborator[\"gid\"],\n this.self().getCollaboratorAccessRight(),\n this.tr(`Successfully demoted to ${osparc.data.Roles.STUDY[2].label}`),\n this.tr(`Something went wrong demoting to ${osparc.data.Roles.STUDY[2].label}`),\n item\n );\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.data.Roles\", {\n type: \"static\",\n\n statics: {\n ORG: {\n 0: {\n id: \"noRead\",\n label: qx.locale.Manager.tr(\"Restricted Member\"),\n longLabel: qx.locale.Manager.tr(\"Restricted member: no Read access\"),\n canDo: [\n qx.locale.Manager.tr(\"- can access content shared within the Organization\")\n ]\n },\n 1: {\n id: \"read\",\n label: qx.locale.Manager.tr(\"Member\"),\n longLabel: qx.locale.Manager.tr(\"Member: Read access\"),\n canDo: [\n qx.locale.Manager.tr(\"- can see other members\"),\n qx.locale.Manager.tr(\"- can share with other members\")\n ]\n },\n 2: {\n id: \"write\",\n label: qx.locale.Manager.tr(\"Manager\"),\n longLabel: qx.locale.Manager.tr(\"Manager: Read/Write access\"),\n canDo: [\n qx.locale.Manager.tr(\"- can Add/Delete members\"),\n qx.locale.Manager.tr(\"- can Promote/Demote members\"),\n qx.locale.Manager.tr(\"- can Edit Organization details\")\n ]\n },\n 3: {\n id: \"delete\",\n label: qx.locale.Manager.tr(\"Administrator\"),\n longLabel: qx.locale.Manager.tr(\"Admin: Read/Write/Delete access\"),\n canDo: [\n qx.locale.Manager.tr(\"- can Delete the Organization\")\n ]\n }\n },\n\n // study & templates\n STUDY: {\n 1: {\n id: \"read\",\n label: qx.locale.Manager.tr(\"User\"),\n longLabel: qx.locale.Manager.tr(\"User: Read access\"),\n canDo: [\n qx.locale.Manager.tr(\"- can open it\")\n ]\n },\n 2: {\n id: \"write\",\n label: qx.locale.Manager.tr(\"Editor\"),\n longLabel: qx.locale.Manager.tr(\"Editor: Read/Write access\"),\n canDo: [\n qx.locale.Manager.tr(\"- can make changes\"),\n qx.locale.Manager.tr(\"- can share it\")\n ]\n },\n 3: {\n id: \"delete\",\n label: qx.locale.Manager.tr(\"Owner\"),\n longLabel: qx.locale.Manager.tr(\"Owner: Read/Write/Delete access\"),\n canDo: [\n qx.locale.Manager.tr(\"- can delete it\")\n ]\n }\n },\n // services\n SERVICES: {\n 1: {\n id: \"read\",\n label: qx.locale.Manager.tr(\"User\"),\n longLabel: qx.locale.Manager.tr(\"User: Read access\"),\n canDo: [\n qx.locale.Manager.tr(\"- can use it\")\n ]\n },\n 2: {\n id: \"write\",\n label: qx.locale.Manager.tr(\"Editor\"),\n longLabel: qx.locale.Manager.tr(\"Editor: Read/Write access\"),\n canDo: [\n qx.locale.Manager.tr(\"- can make changes\"),\n qx.locale.Manager.tr(\"- can share it\")\n ]\n },\n 3: {\n id: \"delete\",\n label: qx.locale.Manager.tr(\"Owner\"),\n longLabel: qx.locale.Manager.tr(\"Owner: Read/Write/Delete access\"),\n canDo: [\n qx.locale.Manager.tr(\"- can delete it\")\n ]\n }\n },\n\n WALLET: {\n 1: {\n id: \"read\",\n label: qx.locale.Manager.tr(\"User\"),\n longLabel: qx.locale.Manager.tr(\"User: Read access\"),\n canDo: [\n qx.locale.Manager.tr(\"- can use the credits\")\n ]\n },\n 2: {\n id: \"write\",\n label: qx.locale.Manager.tr(\"Accountant\"),\n longLabel: qx.locale.Manager.tr(\"Accountant: Read/Write access\"),\n canDo: [\n qx.locale.Manager.tr(\"- can Add/Delete members\"),\n qx.locale.Manager.tr(\"- can Edit Credit Account details\")\n ]\n }\n },\n\n WORKSPACE: {\n 1: {\n id: \"read\",\n label: qx.locale.Manager.tr(\"Viewer\"),\n longLabel: qx.locale.Manager.tr(\"Viewer: Read access\"),\n canDo: [\n qx.locale.Manager.tr(\"- can inspect the content and open \") + osparc.product.Utils.getStudyAlias({plural: true})\n ]\n },\n 2: {\n id: \"write\",\n label: qx.locale.Manager.tr(\"Editor\"),\n longLabel: qx.locale.Manager.tr(\"Editor: Read/Write access\"),\n canDo: [\n qx.locale.Manager.tr(\"- can add \") + osparc.product.Utils.getStudyAlias({plural: true}),\n qx.locale.Manager.tr(\"- can add folders\"),\n ]\n },\n 3: {\n id: \"delete\",\n label: qx.locale.Manager.tr(\"Owner\"),\n longLabel: qx.locale.Manager.tr(\"Owner: Read/Write/Delete access\"),\n canDo: [\n qx.locale.Manager.tr(\"- can rename workspace\"),\n qx.locale.Manager.tr(\"- can share it\"),\n qx.locale.Manager.tr(\"- can delete it\")\n ]\n }\n },\n\n __createRolesLayout: function(roles, showWording = true) {\n const rolesLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5)).set({\n alignY: \"middle\",\n paddingRight: 10\n });\n rolesLayout.add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n\n if (showWording) {\n const rolesText = new qx.ui.basic.Label(qx.locale.Manager.tr(\"Roles\")).set({\n alignY: \"middle\",\n font: \"text-13\"\n });\n rolesLayout.add(rolesText);\n }\n\n let text = \"\";\n const values = Object.values(roles);\n values.forEach((role, idx) => {\n text += role.longLabel + \":
\n * tree.setDelegate({\n * createItem: () => new osparc.ui.list.ListItem(),\n * bindItem: (c, item, id) => {\n * c.bindProperty(\"key\", \"model\", null, item, id);\n * c.bindProperty(\"thumbnail\", \"thumbnail\", null, item, id);\n * c.bindProperty(\"name\", \"title\", null, item, id);\n * c.bindProperty(\"description\", \"subtitle\", null, item, id);\n * c.bindProperty(\"role\", \"role\", null, item, id);\n * }\n * });\n *\n */\n\nqx.Class.define(\"osparc.ui.list.ListItem\", {\n extend: qx.ui.core.Widget,\n implement : [qx.ui.form.IModel, osparc.filter.IFilterable],\n include : [qx.ui.form.MModelProperty, osparc.filter.MFilterable],\n\n construct: function() {\n this.base(arguments);\n\n const layout = new qx.ui.layout.Grid(8, 1);\n layout.setColumnWidth(0, 32);\n layout.setRowFlex(0, 1);\n layout.setColumnFlex(1, 1);\n layout.setColumnAlign(0, \"center\", \"middle\");\n layout.setColumnAlign(2, \"center\", \"middle\");\n this._setLayout(layout);\n\n this.set({\n padding: 5,\n minHeight: 48,\n alignY: \"middle\",\n });\n\n this.addListener(\"pointerover\", this._onPointerOver, this);\n this.addListener(\"pointerout\", this._onPointerOut, this);\n },\n\n events: {\n /** (Fired by {@link qx.ui.form.List}) */\n \"action\" : \"qx.event.type.Event\"\n },\n\n properties: {\n appearance: {\n refine : true,\n init : \"selectable\"\n },\n\n key: {\n check: \"String\",\n apply : \"__applyKey\"\n },\n\n thumbnail: {\n check : \"String\",\n apply : \"_applyThumbnail\",\n nullable : true\n },\n\n title: {\n check : \"String\",\n apply : \"__applyTitle\",\n nullable : true\n },\n\n subtitle: {\n check : \"String\",\n apply : \"__applySubtitle\",\n nullable : true\n },\n\n subtitleMD: {\n check : \"String\",\n apply : \"_applySubtitleMD\",\n nullable : true\n },\n\n role: {\n check : \"String\",\n apply : \"__applyRole\",\n nullable : true\n }\n },\n\n members: { // eslint-disable-line qx-rules/no-refs-in-members\n // overridden\n _forwardStates: {\n focused : true,\n hovered : true,\n selected : true,\n dragover : true\n },\n\n /**\n * Event handler for the pointer over event.\n */\n _onPointerOver: function() {\n this.addState(\"hovered\");\n },\n\n\n /**\n * Event handler for the pointer out event.\n */\n _onPointerOut : function() {\n this.removeState(\"hovered\");\n },\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"thumbnail\":\n control = new qx.ui.basic.Image().set({\n alignY: \"middle\",\n scale: true,\n allowGrowX: true,\n allowGrowY: true,\n allowShrinkX: true,\n allowShrinkY: true,\n maxWidth: 32,\n maxHeight: 32\n });\n this._add(control, {\n row: 0,\n column: 0,\n rowSpan: 2\n });\n break;\n case \"title\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\"\n });\n this._add(control, {\n row: 0,\n column: 1\n });\n break;\n case \"subtitle\":\n control = new qx.ui.basic.Label().set({\n font: \"text-13\",\n rich: true\n });\n this._add(control, {\n row: 1,\n column: 1\n });\n break;\n // or\n case \"subtitle-md\":\n control = new osparc.ui.markdown.Markdown().set({\n font: \"text-13\",\n noMargin: true,\n maxHeight: 18\n });\n this._add(control, {\n row: 1,\n column: 1\n });\n break;\n case \"role\":\n control = new qx.ui.basic.Label().set({\n font: \"text-13\",\n alignY: \"middle\"\n });\n this._add(control, {\n row: 0,\n column: 2,\n rowSpan: 2\n });\n break;\n }\n if (control) {\n control.set({\n anonymous: true\n });\n }\n\n return control || this.base(arguments, id);\n },\n\n __applyKey: function(value, old) {\n if (value === null) {\n return;\n }\n const parts = value.split(\"/\");\n const id = parts.pop();\n if (osparc.utils.Utils.getIdFromWidget(this) === null) {\n osparc.utils.Utils.setIdToWidget(this, \"listItem_\"+id);\n }\n },\n\n _applyThumbnail: function(value) {\n if (value === null) {\n return;\n }\n const thumbnail = this.getChildControl(\"thumbnail\");\n thumbnail.setSource(value);\n },\n\n __applyTitle: function(value) {\n if (value === null) {\n return;\n }\n const label = this.getChildControl(\"title\");\n label.setValue(value);\n },\n\n __applySubtitle: function(value) {\n if ([null, undefined, \"\"].includes(value)) {\n return;\n }\n const label = this.getChildControl(\"subtitle\");\n label.setValue(value);\n },\n\n _applySubtitleMD: function(value) {\n if ([null, undefined, \"\"].includes(value)) {\n return;\n }\n const label = this.getChildControl(\"subtitle-md\");\n label.setValue(value);\n },\n\n __applyRole: function(value) {\n if (value === null) {\n return;\n }\n const label = this.getChildControl(\"role\");\n label.setValue(value);\n },\n\n /**\n * Event handler for filtering events.\n */\n _filter: function() {\n this.exclude();\n },\n\n _unfilter: function() {\n this.show();\n },\n\n _shouldApplyFilter: function(data) {\n if (data.text) {\n const checks = [\n this.getTitle(),\n this.getSubtitle(),\n this.getSubtitleMD()\n ];\n if (checks.filter(check => check && check.toLowerCase().trim().includes(data.text)).length == 0) {\n return true;\n }\n }\n return false;\n },\n\n _shouldReactToFilter: function(data) {\n if (data.text && data.text.length > 1) {\n return true;\n }\n return false;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.ui.list.CollaboratorListItem\", {\n extend: osparc.ui.list.ListItem,\n\n properties: {\n collabType: {\n check: [0, 1, 2], // 0:all, 1:org, 2:user\n event: \"changeCollabType\",\n nullable: true\n },\n\n accessRights: {\n check: \"Object\",\n apply: \"__applyAccessRights\",\n event: \"changeAccessRights\",\n nullable: true\n },\n\n showOptions: {\n check: \"Boolean\",\n apply: \"__applyShowOptions\",\n event: \"changeShowOptions\",\n nullable: true\n },\n\n resourceType : {\n check: \"String\",\n event: \"changeResourceType\",\n nullable: false\n }\n },\n\n events: {\n \"promoteToEditor\": \"qx.event.type.Data\",\n \"promoteToOwner\": \"qx.event.type.Data\",\n \"demoteToUser\": \"qx.event.type.Data\",\n \"demoteToEditor\": \"qx.event.type.Data\",\n \"removeMember\": \"qx.event.type.Data\"\n },\n\n statics: {\n canDelete: function(accessRights) {\n const canDelete = accessRights.getDelete ? accessRights.getDelete() : false;\n return canDelete;\n },\n\n canWrite: function(accessRights) {\n let canWrite = accessRights.getWrite ? accessRights.getWrite() : false;\n canWrite = canWrite || (accessRights.getWriteAccess ? accessRights.getWriteAccess() : false);\n return canWrite;\n },\n\n canRead: function(accessRights) {\n let canRead = accessRights.getRead ? accessRights.getRead() : false;\n canRead = canRead || (accessRights.getExecuteAccess ? accessRights.getExecuteAccess() : false);\n return canRead;\n }\n },\n\n members: {\n __getRoleInfo: function(i) {\n const resource = this.getResourceType();\n if (resource === \"study\" || resource === \"template\") {\n return osparc.data.Roles.STUDY[i];\n } else if (resource === \"service\") {\n return osparc.data.Roles.SERVICES[i];\n } else if (resource === \"workspace\") {\n return osparc.data.Roles.WORKSPACE[i];\n } else if (resource === \"tag\") {\n return osparc.data.Roles.STUDY[i];\n }\n return undefined;\n },\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"options\": {\n const iconSize = 25;\n control = new qx.ui.form.MenuButton().set({\n maxWidth: iconSize,\n maxHeight: iconSize,\n alignX: \"center\",\n alignY: \"middle\",\n icon: \"@FontAwesome5Solid/ellipsis-v/\"+(iconSize-11),\n focusable: false\n });\n this._add(control, {\n row: 0,\n column: 3,\n rowSpan: 2\n });\n break;\n }\n }\n\n return control || this.base(arguments, id);\n },\n\n // overridden\n _applyThumbnail: function(value) {\n if (value === null) {\n const collabType = this.getCollabType();\n switch (collabType) {\n case 0:\n value = \"@FontAwesome5Solid/globe/28\";\n break;\n case 1:\n value = \"@FontAwesome5Solid/users/28\";\n break;\n case 2:\n value = \"@FontAwesome5Solid/user/28\";\n break;\n }\n }\n this.base(arguments, value);\n },\n\n // overridden\n _applySubtitleMD: function(value) {\n this.base(arguments, value);\n\n // highlight me\n const email = osparc.auth.Data.getInstance().getEmail();\n if (value && value.includes(email)) {\n this.addState(\"selected\");\n }\n },\n\n __applyAccessRights: function(value) {\n if (value === null) {\n return;\n }\n\n this.__setRole();\n\n const menu = this.__getOptionsMenu();\n const optionsMenu = this.getChildControl(\"options\");\n optionsMenu.setMenu(menu);\n },\n\n __setRole: function() {\n const accessRights = this.getAccessRights();\n const role = this.getChildControl(\"role\");\n if (this.self().canDelete(accessRights)) {\n role.setValue(this.__getRoleInfo(3).label);\n } else if (this.self().canWrite(accessRights)) {\n role.setValue(this.__getRoleInfo(2).label);\n } else {\n role.setValue(this.__getRoleInfo(1).label);\n }\n },\n\n __getOptionsMenu: function() {\n const menu = new qx.ui.menu.Menu().set({\n position: \"bottom-right\"\n });\n\n const accessRights = this.getAccessRights();\n let currentRole = this.__getRoleInfo(1);\n if (this.self().canDelete(accessRights)) {\n currentRole = this.__getRoleInfo(3);\n } else if (this.self().canWrite(accessRights)) {\n currentRole = this.__getRoleInfo(2);\n }\n\n // promote/demote actions\n switch (currentRole.id) {\n case \"read\": {\n const promoteButton = new qx.ui.menu.Button(this.tr(`Promote to ${this.__getRoleInfo(2).label}`));\n promoteButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"promoteToEditor\", {\n gid: this.getKey(),\n name: this.getTitle()\n });\n });\n menu.add(promoteButton);\n break;\n }\n case \"write\": {\n const resource = this.getResourceType();\n const promoteButton = new qx.ui.menu.Button(this.tr(`Promote to ${this.__getRoleInfo(3).label}`));\n promoteButton.setVisibility(resource === \"service\" ? \"excluded\" : \"visible\");\n promoteButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"promoteToOwner\", {\n gid: this.getKey(),\n name: this.getTitle()\n });\n });\n menu.add(promoteButton);\n const demoteButton = new qx.ui.menu.Button(this.tr(`Demote to ${this.__getRoleInfo(1).label}`));\n demoteButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"demoteToUser\", {\n gid: this.getKey(),\n name: this.getTitle()\n });\n });\n menu.add(demoteButton);\n break;\n }\n case \"delete\": {\n const demoteButton = new qx.ui.menu.Button(this.tr(`Demote to ${this.__getRoleInfo(2).label}`));\n demoteButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"demoteToEditor\", {\n gid: this.getKey(),\n name: this.getTitle()\n });\n });\n menu.add(demoteButton);\n break;\n }\n }\n\n if (menu.getChildren().length) {\n menu.addSeparator();\n }\n\n const removeButton = new qx.ui.menu.Button(this.tr(`Remove ${currentRole.label}`)).set({\n textColor: \"danger-red\"\n });\n removeButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"removeMember\", {\n gid: this.getKey(),\n name: this.getTitle()\n });\n });\n menu.add(removeButton);\n\n return menu;\n },\n\n __applyShowOptions: function(value) {\n const optionsMenu = this.getChildControl(\"options\");\n optionsMenu.setVisibility(value ? \"visible\" : \"excluded\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget for modifying Study permissions. This is the way for sharing studies\n * - Creates a copy of study data\n * - It allows changing study's access right, so that the study owners can:\n * - Share it with Organizations and/or Organization Members (Users)\n * - Make other Users Owner\n * - Remove users\n */\n\nqx.Class.define(\"osparc.share.CollaboratorsStudy\", {\n extend: osparc.share.Collaborators,\n\n /**\n * @param studyData {Object} Object containing the serialized Study Data\n */\n construct: function(studyData) {\n // this info is lost when we deepCloneStudyObject\n this._resourceType = studyData[\"resourceType\"]; // study or template\n const studyDataCopy = osparc.data.model.Study.deepCloneStudyObject(studyData);\n\n this.base(arguments, studyDataCopy);\n },\n\n statics: {\n canGroupsWrite: function(accessRights, gIds) {\n let canWrite = false;\n for (let i=0; i
\n * var marshaller = new qx.data.marshal.Json({\n * getJsonHash: qx.data.marshal.Json.legacyJsonHash\n * });\n *
\n */\n legacyJsonHash: function (data, includeBubbleEvents) {\n return Object.keys(data).sort().join('\"')\n + (includeBubbleEvents===true ? \"♥\" : \"\");\n }\n },\n\n\n members :\n {\n __delegate : null,\n\n\n /**\n * Converts a given object into a hash which will be used to identify the\n * classes under the namespace qx.data.model
.\n *\n * @param data {Object} The JavaScript object from which the hash is\n * required.\n * @param includeBubbleEvents {Boolean?false} Whether the model should\n * support the bubbling of change events or not.\n * @return {String} The hash representation of the given JavaScript object.\n */\n __jsonToHash : function (data, includeBubbleEvents)\n {\n if (this.__delegate && this.__delegate.getJsonHash) {\n return this.__delegate.getJsonHash(data, includeBubbleEvents);\n }\n return Object.keys(data).sort().join('|')\n + (includeBubbleEvents===true ? \"♥\" : \"\");\n },\n\n\n /**\n * Get the \"most enhanced\" hash for a given object. That is the hash for\n * the class that is most feature rich in respect of the bubble event\n * feature. If there are two equal classes available (defined), one with\n * and one without the bubble event feature, this method will return the\n * hash of the class that includes the bubble event.\n *\n * @param data {Object} The JavaScript object from which the hash is\n * required.\n * @param includeBubbleEvents {Boolean} Whether the preferred model should\n * support the bubbling of change events or not.\n * If null
, an automatic selection will take place which\n * selects the \"best\" model currently available.\n * @return {String} The hash representation of the given JavaScript object.\n */\n __jsonToBestHash : function (data, includeBubbleEvents)\n {\n // forced mode?\n //\n if (includeBubbleEvents === true) {\n return this.__jsonToHash(data, true);\n }\n if (includeBubbleEvents === false) {\n return this.__jsonToHash(data, false);\n }\n\n // automatic mode!\n //\n var hash = this.__jsonToHash(data); // without bubble event feature\n var bubbleClassHash = hash + \"♥\"; // with bubble event feature\n var bubbleClassName = \"qx.data.model.\" + bubbleClassHash;\n\n // In case there's a class with bubbling, we *always* prefer that one!\n return qx.Class.isDefined(bubbleClassName) ? bubbleClassHash : hash;\n },\n\n\n /**\n * Creates for the given data the needed classes. The classes contain for\n * every key in the data a property. The classname is always the prefix\n * qx.data.model
and the hash of the data created by\n * {@link #__jsonToHash}. Two objects containing the same keys will not\n * create two different classes. The class creation process also supports\n * the functions provided by its delegate.\n *\n * Important, please keep in mind that only valid JavaScript identifiers\n * can be used as keys in the data map. For convenience '-' in keys will\n * be removed (a-b will be ab in the end).\n *\n * @see qx.data.store.IStoreDelegate\n *\n * @param data {Object} The object for which classes should be created.\n * @param includeBubbleEvents {Boolean} Whether the model should support\n * the bubbling of change events or not.\n */\n toClass: function(data, includeBubbleEvents) {\n this.__toClass(data, includeBubbleEvents, null, 0);\n },\n\n\n /**\n * Implementation of {@link #toClass} used for recursion.\n *\n * @param data {Object} The object for which classes should be created.\n * @param includeBubbleEvents {Boolean} Whether the model should support\n * the bubbling of change events or not.\n * @param parentProperty {String|null} The name of the property the\n * data will be stored in.\n * @param depth {Number} The depth of the data relative to the data's root.\n */\n __toClass : function(data, includeBubbleEvents, parentProperty, depth) {\n // break on all primitive json types and qooxdoo objects\n if (\n !qx.lang.Type.isObject(data)\n || !!data.$$isString // check for localized strings\n || data instanceof qx.core.Object\n ) {\n // check for arrays\n if (data instanceof Array || qx.Bootstrap.getClass(data) == \"Array\") {\n for (var i = 0; i < data.length; i++) {\n this.__toClass(data[i], includeBubbleEvents, parentProperty + \"[\" + i + \"]\", depth+1);\n }\n }\n\n // ignore arrays and primitive types\n return;\n }\n\n var hash = this.__jsonToHash(data, includeBubbleEvents);\n\n // ignore rules\n if (this.__ignore(hash, parentProperty, depth)) {\n return;\n }\n\n // check for the possible child classes\n for (var key in data) {\n this.__toClass(data[key], includeBubbleEvents, key, depth+1);\n }\n\n // class already exists\n if (qx.Class.isDefined(\"qx.data.model.\" + hash)) {\n return;\n }\n\n // class is defined by the delegate\n if (\n this.__delegate\n && this.__delegate.getModelClass\n && this.__delegate.getModelClass(hash, data, parentProperty, depth) != null\n ) {\n return;\n }\n\n // create the properties map\n var properties = {};\n // include the disposeItem for the dispose process.\n var members = {__disposeItem : this.__disposeItem};\n for (var key in data) {\n // apply the property names mapping\n if (this.__delegate && this.__delegate.getPropertyMapping) {\n key = this.__delegate.getPropertyMapping(key, hash);\n }\n\n // strip the unwanted characters\n key = key.replace(/-|\\.|\\s+/g, \"\");\n // check for valid JavaScript identifier (leading numbers are ok)\n if (qx.core.Environment.get(\"qx.debug\")) {\n this.assertTrue((/^[$0-9A-Za-z_]*$/).test(key),\n \"The key '\" + key + \"' is not a valid JavaScript identifier.\");\n }\n\n properties[key] = {};\n properties[key].nullable = true;\n properties[key].event = \"change\" + qx.lang.String.firstUp(key);\n // bubble events\n if (includeBubbleEvents) {\n properties[key].apply = \"_applyEventPropagation\";\n }\n // validation rules\n if (this.__delegate && this.__delegate.getValidationRule) {\n var rule = this.__delegate.getValidationRule(hash, key);\n if (rule) {\n properties[key].validate = \"_validate\" + key;\n members[\"_validate\" + key] = rule;\n }\n }\n }\n\n // try to get the superclass, qx.core.Object as default\n if (this.__delegate && this.__delegate.getModelSuperClass) {\n var superClass =\n this.__delegate.getModelSuperClass(hash, parentProperty, depth) || qx.core.Object;\n } else {\n var superClass = qx.core.Object;\n }\n\n // try to get the mixins\n var mixins = [];\n if (this.__delegate && this.__delegate.getModelMixins) {\n var delegateMixins = this.__delegate.getModelMixins(hash, parentProperty, depth);\n // check if its an array\n if (!qx.lang.Type.isArray(delegateMixins)) {\n if (delegateMixins != null) {\n mixins = [delegateMixins];\n }\n } else {\n mixins = delegateMixins;\n }\n }\n\n // include the mixin for the event bubbling\n if (includeBubbleEvents) {\n mixins.push(qx.data.marshal.MEventBubbling);\n }\n\n // create the map for the class\n var newClass = {\n extend : superClass,\n include : mixins,\n properties : properties,\n members : members\n };\n\n qx.Class.define(\"qx.data.model.\" + hash, newClass);\n },\n\n\n /**\n * Helper for disposing items of the created class.\n *\n * @param item {var} The item to dispose.\n */\n __disposeItem : function(item) {\n if (!(item instanceof qx.core.Object)) {\n // ignore all non objects\n return;\n }\n // ignore already disposed items (could happen during shutdown)\n if (item.isDisposed()) {\n return;\n }\n item.dispose();\n },\n\n\n /**\n * Creates an instance for the given data hash.\n *\n * @param hash {String} The hash of the data for which an instance should\n * be created.\n * @param parentProperty {String|null} The name of the property the data\n * will be stored in.\n * @param depth {Number} The depth of the object relative to the data root.\n * @param data {Map} The data for which an instance should be created.\n * @return {qx.core.Object} An instance of the corresponding class.\n */\n __createInstance : function (hash, data, parentProperty, depth)\n {\n var delegateClass;\n // get the class from the delegate\n if (this.__delegate && this.__delegate.getModelClass) {\n delegateClass = this.__delegate.getModelClass(hash, data, parentProperty, depth);\n }\n if (delegateClass != null) {\n return (new delegateClass());\n } else {\n var className = \"qx.data.model.\" + hash;\n var clazz = qx.Class.getByName(className);\n if (!clazz)\n {\n // Extra check for possible bubble-event feature inconsistency\n var noBubbleClassName = className.replace(\"♥\", \"\");\n if (qx.Class.getByName(noBubbleClassName))\n {\n throw new Error( \"Class '\" + noBubbleClassName + \"' found, \" +\n \"but it does not support changeBubble event.\" );\n }\n throw new Error(\"Class '\" + className + \"' could not be found.\");\n }\n return (new clazz());\n }\n },\n\n\n /**\n * Helper to decide if the delegate decides to ignore a data set.\n * @param hash {String} The property names.\n * @param parentProperty {String|null} The name of the property the data\n * will be stored in.\n * @param depth {Number} The depth of the object relative to the data root.\n * @return {Boolean} true
if the set should be ignored\n */\n __ignore : function(hash, parentProperty, depth) {\n var del = this.__delegate;\n return del && del.ignore && del.ignore(hash, parentProperty, depth);\n },\n\n\n /**\n * Creates for the given data the needed models. Be sure to have the classes\n * created with {@link #toClass} before calling this method. The creation\n * of the class itself is delegated to the {@link #__createInstance} method,\n * which could use the {@link qx.data.store.IStoreDelegate} methods, if\n * given.\n *\n * @param data {Object} The object for which models should be created.\n * @param includeBubbleEvents {Boolean?null} Whether the model should\n * support the bubbling of change events or not.\n * If omitted or null
, an automatic selection will take place\n * which selects the \"best\" model currently available.\n * @return {qx.core.Object} The created model object.\n */\n toModel : function (data, includeBubbleEvents) {\n return this.__toModel(data, includeBubbleEvents, null, 0);\n },\n\n\n /**\n * Implementation of {@link #toModel} used for recursion.\n *\n * @param data {Object} The object for which models should be created.\n * @param includeBubbleEvents {Boolean|null} Whether the model should\n * support the bubbling of change events or not.\n * If null
, an automatic selection will take place which\n * selects the \"best\" model currently available.\n * @param parentProperty {String|null} The name of the property the\n * data will be stored in.\n * @param depth {Number} The depth of the data relative to the data's root.\n * @return {qx.core.Object} The created model object.\n */\n __toModel : function (data, includeBubbleEvents, parentProperty, depth)\n {\n var isObject = qx.lang.Type.isObject(data);\n var isArray = data instanceof Array || qx.Bootstrap.getClass(data) == \"Array\";\n\n if (\n (!isObject && !isArray)\n || !!data.$$isString // check for localized strings\n || data instanceof qx.core.Object\n ) {\n return data;\n\n // ignore rules\n } else if (this.__ignore(this.__jsonToBestHash(data, includeBubbleEvents), parentProperty, depth)) {\n return data;\n\n } else if (isArray) {\n var arrayClass = qx.data.Array;\n if (this.__delegate && this.__delegate.getArrayClass) {\n var customArrayClass = this.__delegate.getArrayClass(parentProperty, depth);\n arrayClass = customArrayClass || arrayClass;\n }\n\n var array = new arrayClass();\n // set the auto dispose for the array\n array.setAutoDisposeItems(true);\n\n for (var i = 0; i < data.length; i++) {\n array.push(this.__toModel(data[i], includeBubbleEvents, parentProperty + \"[\" + i + \"]\", depth+1));\n }\n return array;\n\n } else if (isObject) {\n // create an instance for the object\n var hash = this.__jsonToBestHash(data, includeBubbleEvents);\n var model = this.__createInstance(hash, data, parentProperty, depth);\n\n // go threw all element in the data\n for (var key in data) {\n // apply the property names mapping\n var propertyName = key;\n if (this.__delegate && this.__delegate.getPropertyMapping) {\n propertyName = this.__delegate.getPropertyMapping(key, hash);\n }\n var propertyNameReplaced = propertyName.replace(/-|\\.|\\s+/g, \"\");\n // warn if there has been a replacement\n if (\n (qx.core.Environment.get(\"qx.debug\")) &&\n qx.core.Environment.get(\"qx.debug.databinding\")\n ) {\n if (propertyNameReplaced != propertyName) {\n this.warn(\n \"The model contained an illegal name: '\" + key +\n \"'. Replaced it with '\" + propertyName + \"'.\"\n );\n }\n }\n propertyName = propertyNameReplaced;\n // only set the properties if they are available [BUG #5909]\n var setterName = \"set\" + qx.lang.String.firstUp(propertyName);\n if (model[setterName]) {\n model[setterName](this.__toModel(data[key], includeBubbleEvents, key, depth+1));\n }\n }\n return model;\n }\n\n throw new Error(\"Unsupported type!\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Pedro Crespo (pcrespov)\n\n************************************************************************ */\n\n/* eslint new-cap: [2, {capIsNewExceptions: [\"B\", \"D\", \"J\", \"K\", \"L\", \"MD5\"]}] */\n/* eslint operator-assignment: [\"off\"] */\n\n/**\n * Static class for getting the avatar related information for the given user/email.\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let image = osparc.utils.Avatar.emailToThumbnail(userEmail);\n *\n */\n\nqx.Class.define(\"osparc.utils.Avatar\", {\n type: \"static\",\n\n statics: {\n emailToThumbnail: function(email, username) {\n return this.__getUrl(email, username, 32);\n },\n\n __getUrl: function(email, username, size = 100) {\n email = email || \"\";\n // MD5 (Message-Digest Algorithm) by WebToolkit\n const MD5 = function(s) {\n function L(k, d) {\n return (k << d) | (k >>> (32 - d));\n }\n function K(G, k) {\n let I;\n let d;\n let F;\n let H;\n let x;\n F = (G & 2147483648);\n H = (k & 2147483648);\n I = (G & 1073741824);\n d = (k & 1073741824);\n x = (G & 1073741823) + (k & 1073741823);\n if (I & d) {\n return (x ^ 2147483648 ^ F ^ H);\n }\n if (I | d) {\n if (x & 1073741824) {\n return (x ^ 3221225472 ^ F ^ H);\n }\n return (x ^ 1073741824 ^ F ^ H);\n }\n return (x ^ F ^ H);\n }\n function r(d, F, k) {\n return (d & F) | ((~d) & k);\n }\n function q(d, F, k) {\n return (d & k) | (F & (~k));\n }\n function p(d, F, k) {\n return (d ^ F ^ k);\n }\n function n(d, F, k) {\n return (F ^ (d | (~k)));\n }\n function u(G, F, aa, Z, k, H, I) {\n G = K(G, K(K(r(F, aa, Z), k), I));\n return K(L(G, H), F);\n }\n function f(G, F, aa, Z, k, H, I) {\n G = K(G, K(K(q(F, aa, Z), k), I));\n return K(L(G, H), F);\n }\n function D(G, F, aa, Z, k, H, I) {\n G = K(G, K(K(p(F, aa, Z), k), I));\n return K(L(G, H), F);\n }\n function t(G, F, aa, Z, k, H, I) {\n G = K(G, K(K(n(F, aa, Z), k), I));\n return K(L(G, H), F);\n }\n function e(G) {\n let Z;\n let F = G.length;\n let x = F + 8;\n let k = (x - (x % 64)) / 64;\n let I = (k + 1) * 16;\n let aa = Array(I - 1);\n let d = 0;\n let H = 0;\n while (H < F) {\n Z = (H - (H % 4)) / 4;\n d = (H % 4) * 8;\n aa[Z] = (aa[Z] | (G.charCodeAt(H) << d));\n H++;\n }\n Z = (H - (H % 4)) / 4;\n d = (H % 4) * 8;\n aa[Z] = aa[Z] | (128 << d);\n aa[I - 2] = F << 3;\n aa[I - 1] = F >>> 29;\n return aa;\n }\n function B(x) {\n let k = \"\";\n let F = \"\";\n let G;\n let d;\n for (d = 0; d <= 3; d++) {\n G = (x >>> (d * 8)) & 255;\n F = \"0\" + G.toString(16);\n k += F.substr(F.length - 2, 2);\n }\n return k;\n }\n function J(k) {\n k = k.replace(/rn/g, \"n\");\n let d = \"\";\n for (let F = 0; F < k.length; F++) {\n let x = k.charCodeAt(F);\n if (x < 128) {\n d += String.fromCharCode(x);\n } else if ((x > 127) && (x < 2048)) {\n d += String.fromCharCode((x >> 6) | 192);\n d += String.fromCharCode((x & 63) | 128);\n } else {\n d += String.fromCharCode((x >> 12) | 224);\n d += String.fromCharCode(((x >> 6) & 63) | 128);\n d += String.fromCharCode((x & 63) | 128);\n }\n }\n return d;\n }\n // let C = Array();\n let C = [];\n let P;\n let h;\n let E;\n let v;\n let g;\n let Y;\n let X;\n let W;\n let V;\n let S = 7;\n let Q = 12;\n let N = 17;\n let M = 22;\n let A = 5;\n let z = 9;\n let y = 14;\n let w = 20;\n let o = 4;\n let m = 11;\n let l = 16;\n let j = 23;\n let U = 6;\n let T = 10;\n let R = 15;\n let O = 21;\n s = J(s);\n C = e(s);\n Y = 1732584193;\n X = 4023233417;\n W = 2562383102;\n V = 271733878;\n for (P = 0; P < C.length; P += 16) {\n h = Y;\n E = X;\n v = W;\n g = V;\n Y = u(Y, X, W, V, C[P + 0], S, 3614090360);\n V = u(V, Y, X, W, C[P + 1], Q, 3905402710);\n W = u(W, V, Y, X, C[P + 2], N, 606105819);\n X = u(X, W, V, Y, C[P + 3], M, 3250441966);\n Y = u(Y, X, W, V, C[P + 4], S, 4118548399);\n V = u(V, Y, X, W, C[P + 5], Q, 1200080426);\n W = u(W, V, Y, X, C[P + 6], N, 2821735955);\n X = u(X, W, V, Y, C[P + 7], M, 4249261313);\n Y = u(Y, X, W, V, C[P + 8], S, 1770035416);\n V = u(V, Y, X, W, C[P + 9], Q, 2336552879);\n W = u(W, V, Y, X, C[P + 10], N, 4294925233);\n X = u(X, W, V, Y, C[P + 11], M, 2304563134);\n Y = u(Y, X, W, V, C[P + 12], S, 1804603682);\n V = u(V, Y, X, W, C[P + 13], Q, 4254626195);\n W = u(W, V, Y, X, C[P + 14], N, 2792965006);\n X = u(X, W, V, Y, C[P + 15], M, 1236535329);\n Y = f(Y, X, W, V, C[P + 1], A, 4129170786);\n V = f(V, Y, X, W, C[P + 6], z, 3225465664);\n W = f(W, V, Y, X, C[P + 11], y, 643717713);\n X = f(X, W, V, Y, C[P + 0], w, 3921069994);\n Y = f(Y, X, W, V, C[P + 5], A, 3593408605);\n V = f(V, Y, X, W, C[P + 10], z, 38016083);\n W = f(W, V, Y, X, C[P + 15], y, 3634488961);\n X = f(X, W, V, Y, C[P + 4], w, 3889429448);\n Y = f(Y, X, W, V, C[P + 9], A, 568446438);\n V = f(V, Y, X, W, C[P + 14], z, 3275163606);\n W = f(W, V, Y, X, C[P + 3], y, 4107603335);\n X = f(X, W, V, Y, C[P + 8], w, 1163531501);\n Y = f(Y, X, W, V, C[P + 13], A, 2850285829);\n V = f(V, Y, X, W, C[P + 2], z, 4243563512);\n W = f(W, V, Y, X, C[P + 7], y, 1735328473);\n X = f(X, W, V, Y, C[P + 12], w, 2368359562);\n Y = D(Y, X, W, V, C[P + 5], o, 4294588738);\n V = D(V, Y, X, W, C[P + 8], m, 2272392833);\n W = D(W, V, Y, X, C[P + 11], l, 1839030562);\n X = D(X, W, V, Y, C[P + 14], j, 4259657740);\n Y = D(Y, X, W, V, C[P + 1], o, 2763975236);\n V = D(V, Y, X, W, C[P + 4], m, 1272893353);\n W = D(W, V, Y, X, C[P + 7], l, 4139469664);\n X = D(X, W, V, Y, C[P + 10], j, 3200236656);\n Y = D(Y, X, W, V, C[P + 13], o, 681279174);\n V = D(V, Y, X, W, C[P + 0], m, 3936430074);\n W = D(W, V, Y, X, C[P + 3], l, 3572445317);\n X = D(X, W, V, Y, C[P + 6], j, 76029189);\n Y = D(Y, X, W, V, C[P + 9], o, 3654602809);\n V = D(V, Y, X, W, C[P + 12], m, 3873151461);\n W = D(W, V, Y, X, C[P + 15], l, 530742520);\n X = D(X, W, V, Y, C[P + 2], j, 3299628645);\n Y = t(Y, X, W, V, C[P + 0], U, 4096336452);\n V = t(V, Y, X, W, C[P + 7], T, 1126891415);\n W = t(W, V, Y, X, C[P + 14], R, 2878612391);\n X = t(X, W, V, Y, C[P + 5], O, 4237533241);\n Y = t(Y, X, W, V, C[P + 12], U, 1700485571);\n V = t(V, Y, X, W, C[P + 3], T, 2399980690);\n W = t(W, V, Y, X, C[P + 10], R, 4293915773);\n X = t(X, W, V, Y, C[P + 1], O, 2240044497);\n Y = t(Y, X, W, V, C[P + 8], U, 1873313359);\n V = t(V, Y, X, W, C[P + 15], T, 4264355552);\n W = t(W, V, Y, X, C[P + 6], R, 2734768916);\n X = t(X, W, V, Y, C[P + 13], O, 1309151649);\n Y = t(Y, X, W, V, C[P + 4], U, 4149444226);\n V = t(V, Y, X, W, C[P + 11], T, 3174756917);\n W = t(W, V, Y, X, C[P + 2], R, 718787259);\n X = t(X, W, V, Y, C[P + 9], O, 3951481745);\n Y = K(Y, h);\n X = K(X, E);\n W = K(W, v);\n V = K(V, g);\n }\n let i = B(Y) + B(X) + B(W) + B(V);\n return i.toLowerCase();\n };\n\n const emailHash = MD5(email);\n const defaultImageUrl = `https://ui-avatars.com/api/${username}/${size}`;\n return `https://www.gravatar.com/avatar/${emailHash}?d=${defaultImageUrl}&s=${size}&r=g`;\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Class that stores Group data.\n */\n\nqx.Class.define(\"osparc.data.model.Group\", {\n extend: qx.core.Object,\n\n /**\n * @param groupData {Object} Object containing the serialized Group Data\n */\n construct: function(groupData) {\n this.base(arguments);\n\n this.set({\n groupId: groupData.gid,\n label: groupData.label,\n description: groupData.description,\n accessRights: groupData.accessRights,\n thumbnail: groupData.thumbnail,\n groupMembers: {},\n });\n },\n\n properties: {\n groupId: {\n check: \"Number\",\n nullable: false,\n init: null,\n event: \"changeGroupId\",\n },\n\n label: {\n check: \"String\",\n nullable: false,\n init: null,\n event: \"changeLabel\",\n },\n\n description: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeDescription\",\n },\n\n accessRights: {\n check: \"Object\",\n nullable: false,\n init: null,\n event: \"changeAccessRights\",\n },\n\n thumbnail: {\n check: \"String\",\n nullable: true,\n init: \"\",\n event: \"changeThumbnail\",\n },\n\n groupMembers: {\n check: \"Object\",\n nullable: true,\n init: null,\n event: \"changeGroupMembers\",\n },\n\n groupType: {\n check: [\"me\", \"organization\", \"productEveryone\", \"everyone\"],\n nullable: false,\n init: null,\n },\n },\n\n events: {\n \"memberAdded\": \"qx.event.type.Event\",\n \"memberRemoved\": \"qx.event.type.Event\",\n },\n\n statics: {\n getProperties: function() {\n return Object.keys(qx.util.PropertyUtil.getProperties(osparc.data.model.Group));\n }\n },\n\n members: {\n getGroupMemberByUserId: function(userId) {\n return Object.values(this.getGroupMembers()).find(user => user.getUserId() === userId);\n },\n\n getGroupMemberByUsername: function(username) {\n return Object.values(this.getGroupMembers()).find(user => user.getUsername() === username);\n },\n\n getGroupMemberByLogin: function(userEmail) {\n return Object.values(this.getGroupMembers()).find(user => user.getEmail() === userEmail);\n },\n\n addGroupMember: function(user) {\n this.getGroupMembers()[user.getGroupId()] = user;\n this.fireEvent(\"memberAdded\");\n },\n\n removeGroupMember: function(userId) {\n const groupMember = this.getGroupMemberByUserId(userId);\n if (groupMember) {\n delete this.getGroupMembers()[groupMember.getGroupId()];\n this.fireEvent(\"memberRemoved\");\n }\n },\n\n serialize: function() {\n const jsonObject = {};\n const propertyKeys = this.self().getProperties();\n propertyKeys.forEach(key => {\n jsonObject[key] = this.get(key);\n });\n return jsonObject;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Class that stores User data.\n */\n\nqx.Class.define(\"osparc.data.model.User\", {\n extend: qx.core.Object,\n\n /**\n * @param userData {Object} Object containing the serialized User Data\n */\n construct: function(userData) {\n this.base(arguments);\n\n const userId = (\"id\" in userData) ? parseInt(userData[\"id\"]) : parseInt(userData[\"userId\"]);\n const groupId = (\"gid\" in userData) ? parseInt(userData[\"gid\"]) : parseInt(userData[\"groupId\"]);\n const username = userData[\"userName\"];\n const email = (\"login\" in userData) ? userData[\"login\"] : userData[\"email\"];\n let firstName = \"\";\n if (userData[\"first_name\"]) {\n firstName = userData[\"first_name\"];\n } else if (userData[\"firstName\"]) {\n firstName = userData[\"firstName\"];\n }\n let lastName = \"\";\n if (userData[\"last_name\"]) {\n lastName = userData[\"last_name\"];\n } else if (userData[\"lastName\"]) {\n lastName = userData[\"lastName\"];\n }\n let description = [firstName, lastName].join(\" \").trim(); // the null values will be replaced by empty strings\n if (email) {\n if (description) {\n description += \" - \"\n }\n description += email;\n }\n const thumbnail = osparc.utils.Avatar.emailToThumbnail(email, username);\n this.set({\n userId,\n groupId,\n username,\n firstName,\n lastName,\n email,\n thumbnail,\n label: username,\n description,\n });\n },\n\n properties: {\n userId: {\n check: \"Number\",\n nullable: false,\n init: null,\n event: \"changeUserId\",\n },\n\n groupId: {\n check: \"Number\",\n nullable: false,\n init: null,\n event: \"changeGroupId\",\n },\n\n label: {\n check: \"String\",\n nullable: false,\n init: null,\n event: \"changeLabel\",\n },\n\n description: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeDescription\",\n },\n\n username: {\n check: \"String\",\n nullable: false,\n init: null,\n event: \"changeUsername\",\n },\n\n firstName: {\n check: \"String\",\n nullable: true,\n init: \"\",\n event: \"changeFirstName\"\n },\n\n lastName: {\n check: \"String\",\n nullable: true,\n init: \"\",\n event: \"changeLastName\"\n },\n\n email: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeEmail\",\n },\n\n thumbnail: {\n check: \"String\",\n nullable: true,\n init: \"\",\n event: \"changeThumbnail\",\n },\n },\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Class that stores User data + access rights to the resource.\n */\n\nqx.Class.define(\"osparc.data.model.UserMember\", {\n extend: osparc.data.model.User,\n\n /**\n * @param userData {Object} Object containing the serialized User Data\n */\n construct: function(userData) {\n this.base(arguments, userData);\n\n this.set({\n accessRights: userData[\"accessRights\"],\n });\n },\n\n properties: {\n accessRights: {\n check: \"Object\",\n nullable: false,\n init: null,\n event: \"changeAccessRights\",\n },\n },\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Fabian Jakobs (fjakobs)\n\n************************************************************************ */\n\n/**\n * A Input wrap any valid HTML input element and make it accessible\n * through the normalized qooxdoo element interface.\n */\nqx.Class.define(\"qx.html.Input\",\n{\n extend : qx.html.Element,\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param type {String} The type of the input field. Valid values are\n *
text
, textarea
, select
,\n * checkbox
, radio
, password
,\n * hidden
, submit
, image
,\n * file
, search
, reset
,\n * select
and textarea
.\n * @param styles {Map?null} optional map of CSS styles, where the key is the name\n * of the style and the value is the value to use.\n * @param attributes {Map?null} optional map of element attributes, where the\n * key is the name of the attribute and the value is the value to use.\n */\n construct : function(type, styles, attributes)\n {\n // Update node name correctly\n if (type === \"select\" || type === \"textarea\") {\n var nodeName = type;\n } else {\n nodeName = \"input\";\n }\n\n this.base(arguments, nodeName, styles, attributes);\n\n this.__type = type;\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n\n __type : null,\n // used for webkit only\n __selectable : null,\n __enabled : null,\n\n /*\n ---------------------------------------------------------------------------\n ELEMENT API\n ---------------------------------------------------------------------------\n */\n\n //overridden\n _createDomElement : function() {\n return qx.bom.Input.create(this.__type);\n },\n\n\n // overridden\n _applyProperty : function(name, value)\n {\n this.base(arguments, name, value);\n var element = this.getDomElement();\n\n if (name === \"value\") {\n qx.bom.Input.setValue(element, value);\n } else if (name === \"wrap\") {\n qx.bom.Input.setWrap(element, value);\n\n // qx.bom.Input#setWrap has the side-effect that the CSS property\n // overflow is set via DOM methods, causing queue and DOM to get\n // out of sync. Mirror all overflow properties to handle the case\n // when group and x/y property differ.\n this.setStyle(\"overflow\", element.style.overflow, true);\n this.setStyle(\"overflowX\", element.style.overflowX, true);\n this.setStyle(\"overflowY\", element.style.overflowY, true);\n }\n },\n\n\n /**\n * Set the input element enabled / disabled.\n * Webkit needs a special treatment because the set color of the input\n * field changes automatically. Therefore, we use\n * -webkit-user-modify: read-only
and\n * -webkit-user-select: none
\n * for disabling the fields in webkit. All other browsers use the disabled\n * attribute.\n *\n * @param value {Boolean} true, if the input element should be enabled.\n */\n setEnabled : function(value)\n {\n this.__enabled = value;\n\n this.setAttribute(\"disabled\", value===false);\n\n if (qx.core.Environment.get(\"engine.name\") == \"webkit\") {\n if (!value) {\n this.setStyles({\n \"userModify\": \"read-only\",\n \"userSelect\": \"none\"\n });\n } else {\n this.setStyles({\n \"userModify\": null,\n \"userSelect\": this.__selectable ? null : \"none\"\n });\n }\n }\n },\n\n\n /**\n * Set whether the element is selectable. It uses the qooxdoo attribute\n * qxSelectable with the values 'on' or 'off'.\n * In webkit, a special css property will be used and checks for the\n * enabled state.\n *\n * @param value {Boolean} True, if the element should be selectable.\n */\n setSelectable : qx.core.Environment.select(\"engine.name\",\n {\n \"webkit\" : function(value)\n {\n this.__selectable = value;\n\n // Only apply the value when it is enabled\n this.base(arguments, this.__enabled && value);\n },\n\n \"default\" : function(value)\n {\n this.base(arguments, value);\n }\n }),\n\n\n\n /*\n ---------------------------------------------------------------------------\n INPUT API\n ---------------------------------------------------------------------------\n */\n\n /**\n * Sets the value of the input element.\n *\n * @param value {var} the new value\n * @return {qx.html.Input} This instance for for chaining support.\n */\n setValue : function(value)\n {\n var element = this.getDomElement();\n\n if (element)\n {\n // Do not overwrite when already correct (on input events)\n // This is needed to keep caret position while typing.\n if (element.value != value) {\n qx.bom.Input.setValue(element, value);\n }\n } else {\n this._setProperty(\"value\", value);\n }\n\n return this;\n },\n\n\n /**\n * Get the current value.\n *\n * @return {String} The element's current value.\n */\n getValue : function()\n {\n var element = this.getDomElement();\n\n if (element) {\n return qx.bom.Input.getValue(element);\n }\n\n return this._getProperty(\"value\") || \"\";\n },\n\n\n /**\n * Sets the text wrap behavior of a text area element.\n *\n * This property uses the style property \"wrap\" (IE) respectively \"whiteSpace\"\n *\n * @param wrap {Boolean} Whether to turn text wrap on or off.\n * @param direct {Boolean?false} Whether the execution should be made\n * directly when possible\n * @return {qx.html.Input} This instance for for chaining support.\n */\n setWrap : function(wrap, direct)\n {\n if (this.__type === \"textarea\") {\n this._setProperty(\"wrap\", wrap, direct);\n } else {\n throw new Error(\"Text wrapping is only support by textareas!\");\n }\n\n return this;\n },\n\n\n /**\n * Gets the text wrap behavior of a text area element.\n *\n * This property uses the style property \"wrap\" (IE) respectively \"whiteSpace\"\n *\n * @return {Boolean} Whether wrapping is enabled or disabled.\n */\n getWrap : function()\n {\n if (this.__type === \"textarea\") {\n return this._getProperty(\"wrap\");\n } else {\n throw new Error(\"Text wrapping is only support by textareas!\");\n }\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * Common code for fetch buttons used in both toolbar.FetchButton and form.FetchButton\n */\nqx.Mixin.define(\"osparc.ui.mixin.FetchButton\", {\n properties: {\n fetching: {\n check: \"Boolean\",\n nullable: false,\n init: false,\n apply: \"_applyFetching\"\n }\n },\n members: {\n __icon: null,\n _applyFetching: function(isFetching, old) {\n if (isFetching) {\n this.__icon = this.getIcon();\n this.setIcon(\"@FontAwesome5Solid/circle-notch/12\");\n this.getChildControl(\"icon\").getContentElement().addClass(\"rotate\");\n } else {\n if (isFetching !== old) {\n this.setIcon(this.__icon);\n }\n if (this.getChildControl(\"icon\")) {\n this.getChildControl(\"icon\").getContentElement().removeClass(\"rotate\");\n }\n }\n // Might have been destroyed already\n if (this.getLayoutParent()) {\n this.setEnabled(!isFetching);\n }\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * A button that serves to fetch or load some data from the server. To indicate that some processing is being done, and\n * that the user has to wait, a rotating special icon is shown meanwhile.\n */\nqx.Class.define(\"osparc.ui.form.FetchButton\", {\n extend: qx.ui.form.Button,\n include: osparc.ui.mixin.FetchButton\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * A generic form item to be used inside JsonSchemaForm.\n * It generates an appropriate header than can dynamically change for array items (if the user deletes one element).\n * Manages this dynamic keys to update the header and generate a consistent output data object.\n */\nqx.Class.define(\"osparc.form.json.JsonSchemaFormItem\", {\n extend: qx.ui.container.Composite,\n construct: function(key, schema, depth) {\n this.base(arguments, new qx.ui.layout.VBox());\n this.setMarginBottom(10);\n if (key !== null) {\n this.setKey(key);\n }\n this.__isArrayItem = key === -1;\n this.__schema = schema;\n this.__header = new osparc.form.json.JsonSchemaFormHeader(schema, depth, this.__isArrayItem);\n this.add(this.__header);\n this.bind(\"key\", this.__header, \"key\");\n },\n properties: {\n key: {\n event: \"changeKey\",\n init: \"\"\n }\n },\n members: {\n __header: null,\n __isArrayItem: null,\n __input: null,\n /**\n * Makes this item a final input (leaf).\n */\n addInput: function(validation, validationManager) {\n const input = this.__input = this.__getInputElement(validation, validationManager);\n this.__header.getLabel().setBuddy(input);\n this.add(input);\n if (this.__schema.description) {\n this.add(new qx.ui.basic.Label(this.__schema.description).set({\n font: \"text-11-italic\",\n marginTop: 3,\n rich: true\n }));\n }\n return input;\n },\n /**\n * Gets the generated header\n */\n getHeader: function() {\n return this.__header;\n },\n /**\n * Gets the input field\n */\n getInput: function() {\n return this.__input;\n },\n /**\n * Returns the type of this input\n */\n getType: function() {\n return this.__schema.type;\n },\n /**\n * Function that recursively constructs the path of this form item.\n */\n getPath: function() {\n const isForm = layoutItem => layoutItem instanceof osparc.form.json.JsonSchemaForm;\n const isFormItem = layoutItem => layoutItem instanceof osparc.form.json.JsonSchemaFormItem;\n let parent = this.getLayoutParent();\n // Search for its parent FormItem\n while (!isFormItem(parent) && !isForm(parent) && parent) {\n parent = parent.getLayoutParent();\n }\n if (isFormItem(parent)) {\n const parentPath = parent.getPath();\n return parentPath ? `${parentPath}.${this.getKey()}` : `${this.getKey()}`;\n }\n if (isForm(parent)) {\n return null;\n }\n return \"orphan.osparc.form\";\n },\n /**\n * Function that returns an appropriate widget for the given type.\n *\n * @param {String} type Type of the input that will be used to determine the render behavior\n */\n __getInputElement: function(validation, validationManager) {\n let input;\n switch (this.__schema.type) {\n case \"boolean\":\n input = new qx.ui.form.CheckBox();\n break;\n case \"string\":\n if (this.__schema.contentMediaType) {\n const splitted = this.__schema.contentMediaType.split(\"/\");\n let extension = null;\n if (splitted.length === 2 && splitted[1] !== \"*\") {\n extension = splitted[1];\n }\n input = new osparc.ui.form.FileInput([extension]);\n break;\n }\n if (this.__schema.enum && this.__schema.enum.length) {\n input = new osparc.ui.form.ListItemSelectBox();\n this.__schema.enum.forEach(element => input.add(element));\n break;\n }\n // falls through\n default:\n input = new qx.ui.form.TextField().set({\n appearance: \"form-input\",\n required: Boolean(validation && validation.required)\n });\n if (this.__schema.pattern) {\n validationManager.add(input, osparc.utils.Validators.regExp(RegExp(this.__schema.pattern)));\n } else if (validation) {\n validationManager.add(input);\n }\n }\n return input;\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * A Qooxdoo generated form array to be used inside JsonSchemaForm.\n */\nqx.Class.define(\"osparc.form.json.JsonSchemaFormArray\", {\n extend: qx.ui.container.Composite,\n construct: function() {\n this.base(arguments, new qx.ui.layout.VBox());\n },\n members: {\n // overwritten\n add: function(child, options) {\n this.base(arguments, child, options);\n if (this.getChildren().length === 1) {\n this.setAppearance(\"form-array-container\");\n }\n child.setKey(this.getChildren().length - 1);\n },\n // overwritten\n remove(child) {\n this.base(arguments, child);\n if (!this.hasChildren()) {\n this.resetAppearance();\n }\n const children = this.getChildren();\n for (let i=0; itrue
\n * a forced line break will happen after this child widget.\n * true
\n * the widget will be stretched to the remaining line width. This requires\n * lineBreak to be true.\n * \n * var flowlayout = new qx.ui.layout.Flow();\n *\n * flowlayout.setAlignX( \"center\" ); // Align children to the X axis of the container (left|center|right)\n *\n * var container = new qx.ui.container.Composite(flowlayout);\n * this.getRoot().add(container, {edge: 0});\n *\n * var button1 = new qx.ui.form.Button(\"1. First Button\", \"flowlayout/test.png\");\n * container.add(button1);\n *\n * var button2 = new qx.ui.form.Button(\"2. Second longer Button...\", \"flowlayout/test.png\");\n * // Have this child create a break in the current Line (next child will always start a new Line)\n * container.add(button2, {lineBreak: true});\n *\n * var button3 = new qx.ui.form.Button(\"3rd really, really, really long Button\", \"flowlayout/test.png\");\n * button3.setHeight(100); // tall button\n * container.add(button3);\n *\n * var button4 = new qx.ui.form.Button(\"Number 4\", \"flowlayout/test.png\");\n * button4.setAlignY(\"bottom\");\n * container.add(button4);\n *\n * var button5 = new qx.ui.form.Button(\"20px Margins around the great big 5th button!\");\n * button5.setHeight(100); // tall button\n * button5.setMargin(20);\n * container.add(button5, {lineBreak: true}); // Line break after this button.\n *\n * var button6 = new qx.ui.form.Button(\"Number 6\", \"flowlayout/test.png\");\n * button6.setAlignY(\"middle\"); // Align this child to the vertical center of this line.\n * container.add(button6);\n *\n * var button7 = new qx.ui.form.Button(\"7th a wide, short button\", \"flowlayout/test.png\");\n * button7.setMaxHeight(20); // short button\n * container.add(button7);\n *\n *\n * *External Documentation*\n *\n * \n * Extended documentation and links to demos of this layout in the qooxdoo manual.\n */\nqx.Class.define(\"qx.ui.layout.Flow\",\n{\n extend : qx.ui.layout.Abstract,\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param spacingX {Integer?0} The spacing between child widgets {@link #spacingX}.\n * @param spacingY {Integer?0} The spacing between the lines {@link #spacingY}.\n * @param alignX {String?\"left\"} Horizontal alignment of the whole children\n * block {@link #alignX}.\n */\n construct : function(spacingX, spacingY, alignX)\n {\n this.base(arguments);\n\n if (spacingX) {\n this.setSpacingX(spacingX);\n }\n\n if (spacingY) {\n this.setSpacingY(spacingY);\n }\n\n if (alignX) {\n this.setAlignX(alignX);\n }\n },\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n /**\n * Horizontal alignment of the whole children block. The horizontal\n * alignment of the child is completely ignored in HBoxes (\n * {@link qx.ui.core.LayoutItem#alignX}).\n */\n alignX :\n {\n check : [ \"left\", \"center\", \"right\" ],\n init : \"left\",\n apply : \"_applyLayoutChange\"\n },\n\n /**\n * Vertical alignment of each child. Can be overridden through\n * {@link qx.ui.core.LayoutItem#alignY}.\n */\n alignY :\n {\n check : [ \"top\", \"middle\", \"bottom\"],\n init : \"top\",\n apply : \"_applyLayoutChange\"\n },\n\n /** Horizontal spacing between two children */\n spacingX :\n {\n check : \"Integer\",\n init : 0,\n apply : \"_applyLayoutChange\"\n },\n\n /**\n * The vertical spacing between the lines.\n */\n spacingY :\n {\n check : \"Integer\",\n init : 0,\n apply : \"_applyLayoutChange\"\n },\n\n /** Whether the actual children list should be laid out in reversed order. */\n reversed :\n {\n check : \"Boolean\",\n init : false,\n apply : \"_applyLayoutChange\"\n }\n\n },\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n /*\n ---------------------------------------------------------------------------\n LAYOUT INTERFACE\n ---------------------------------------------------------------------------\n */\n\n // overridden\n verifyLayoutProperty : qx.core.Environment.select(\"qx.debug\",\n {\n \"true\" : function(item, name, value) {\n var validProperties = [\"lineBreak\", \"stretch\"];\n this.assertInArray(name, validProperties, \"The property '\"+name+\"' is not supported by the flow layout!\" );\n },\n\n \"false\" : null\n }),\n\n\n // overridden\n connectToWidget : function(widget)\n {\n this.base(arguments, widget);\n\n // Necessary to be able to calculate the lines for the flow layout.\n // Otherwise the layout calculates the needed width and height by using\n // only one line of items which is leading to the wrong height. This\n // wrong height does e.g. suppress scrolling since the scroll pane does\n // not know about the correct needed height.\n if (widget) {\n widget.setAllowShrinkY(false);\n }\n },\n\n\n /**\n * The FlowLayout tries to add as many Children as possible to the current 'Line'\n * and when it sees that the next Child won't fit, it starts on a new Line, continuing\n * until all the Children have been added.\n * To enable alignX \"left\", \"center\", \"right\" renderLayout has to calculate the positions\n * of all a Line's children before it draws them.\n *\n * @param availWidth {Integer} Final width available for the content (in pixel)\n * @param availHeight {Integer} Final height available for the content (in pixel)\n * @param padding {Map} Map containing the padding values. Keys:\n *
top
, bottom
, left
, right
\n */\n renderLayout : function(availWidth, availHeight, padding)\n {\n var children = this._getLayoutChildren();\n\n if (this.getReversed()) {\n children = children.concat().reverse();\n }\n\n var lineCalculator = new qx.ui.layout.LineSizeIterator(\n children,\n this.getSpacingX()\n );\n\n var lineTop = padding.top;\n while (lineCalculator.hasMoreLines())\n {\n var line = lineCalculator.computeNextLine(availWidth);\n this.__renderLine(line, lineTop, availWidth, padding);\n lineTop += line.height + this.getSpacingY();\n }\n },\n\n\n /**\n * Render a line in the flow layout\n *\n * @param line {Map} A line configuration as returned by\n * {@link LineSizeIterator#computeNextLine}.\n * @param lineTop {Integer} The line's top position\n * @param availWidth {Integer} The available line width\n * @param padding {Map} Map containing the padding values. Keys:\n * top
, bottom
, left
, right
\n */\n __renderLine : function(line, lineTop, availWidth, padding)\n {\n var util = qx.ui.layout.Util;\n\n var left = padding.left;\n if (this.getAlignX() != \"left\") {\n left = padding.left + availWidth - line.width;\n if (this.getAlignX() == \"center\") {\n left = padding.left + Math.round((availWidth - line.width) / 2);\n }\n }\n\n for (var i=0; i\n * const link = new osparc.ui.basic.LinkLabel(this.tr(\"oSparc\"),\"https://osparc.io\");\n * this.getRoot().add(link);\n *\n */\n\nqx.Class.define(\"osparc.ui.form.LinkButton\", {\n extend: osparc.ui.form.FetchButton,\n\n /**\n * @param label {String} Label to use\n * @param icon {String} Icon to use\n * @param url {String} Url to point to\n */\n construct: function(label, icon, url) {\n this.base(arguments, label);\n\n this.set({\n iconPosition: \"right\",\n allowGrowX: false,\n appearance: \"link-button\"\n });\n\n if (url) {\n this.setIcon(\"@FontAwesome5Solid/external-link-alt/12\");\n this.addListener(\"execute\", () => {\n window.open(url);\n }, this);\n }\n if (icon) {\n this.setIcon(icon);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Based on the double column renderer for {@link qx.ui.form.Form}.\n * This custom class shows the buddy over the field and supports fields taking the double space\n */\nqx.Class.define(\"osparc.ui.form.renderer.DoubleV\", {\n extend: qx.ui.form.renderer.AbstractRenderer,\n\n construct: function(form, doubleSpacedItems) {\n const layout = new qx.ui.layout.Grid();\n layout.setSpacing(15);\n layout.setColumnAlign(0, \"left\", \"bottom\");\n layout.setColumnAlign(1, \"left\", \"bottom\");\n layout.setColumnFlex(0, 1);\n layout.setColumnFlex(1, 1);\n this._setLayout(layout);\n\n this.__doubleSpacedItems = doubleSpacedItems || [];\n\n this.base(arguments, form);\n },\n\n members: {\n __doubleSpacedItems: null,\n __row: 0,\n __buttonRow: null,\n\n // overridden\n _onFormChange : function() {\n if (this.__buttonRow) {\n this.__buttonRow.destroy();\n this.__buttonRow = null;\n }\n this.__row = 0;\n this.base(arguments);\n },\n\n /**\n * Add a group of form items with the corresponding names. The names are\n * displayed as label.\n * The title is optional and is used as grouping for the given form\n * items.\n *\n * @param items {qx.ui.core.Widget[]} An array of form items to render.\n * @param names {String[]} An array of names for the form items.\n * @param title {String?} A title of the group you are adding.\n */\n addItems : function(items, names, title) {\n // add the header\n if (title != null) {\n this._add(this._createHeader(title), {\n row: this.__row,\n column: 0,\n colSpan: 2\n });\n this.__row++;\n }\n\n // add the items\n let i = null;\n let col = 0;\n for (i = 0; i < items.length; i++) {\n const name = names[i];\n const item = items[i];\n const takeDouble = this.__doubleSpacedItems.includes(item);\n if (takeDouble && col === 1) {\n col = 0;\n this.__row++;\n }\n\n const itemLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox());\n const label = this._createLabel(name, item).set({\n font: \"text-12\",\n allowGrowX: true\n });\n label.setBuddy(item);\n itemLayout.add(label);\n item.setBackgroundColor(\"transparent\");\n itemLayout.add(item);\n this._add(itemLayout, {\n row: this.__row,\n column: takeDouble ? 0 : col,\n colSpan: takeDouble ? 2 : 1\n });\n\n this._connectVisibility(item, label);\n\n if (takeDouble || col === 1) {\n col = 0;\n this.__row++;\n } else {\n col = 1;\n }\n\n // store the names for translation\n if (qx.core.Environment.get(\"qx.dynlocale\")) {\n this._names.push({\n name,\n label,\n item\n });\n }\n }\n\n if (i % 2 == 1) {\n this.__row++;\n }\n },\n\n /**\n * Adds a button the form renderer. All buttons will be added in a\n * single row at the bottom of the form.\n *\n * @param button {qx.ui.form.Button} The button to add.\n */\n addButton : function(button) {\n if (this.__buttonRow == null) {\n // create button row\n this.__buttonRow = new qx.ui.container.Composite();\n this.__buttonRow.setMarginTop(5);\n const hBox = new qx.ui.layout.HBox();\n hBox.setAlignX(\"right\");\n hBox.setSpacing(5);\n this.__buttonRow.setLayout(hBox);\n // add the button row\n this._add(this.__buttonRow, {\n row: this.__row,\n column: 0,\n colSpan: 2\n });\n // increase the row\n this.__row++;\n }\n\n // add the button\n this.__buttonRow.add(button);\n },\n\n /**\n * Returns the set layout for configuration.\n *\n * @return {qx.ui.layout.Grid} The grid layout of the widget.\n */\n getLayout : function() {\n return this._getLayout();\n },\n\n /**\n * Creates a label for the given form item.\n *\n * @param name {String} The content of the label without the\n * trailing * and :\n * @param item {qx.ui.core.Widget} The item, which has the required state.\n * @return {qx.ui.basic.Label} The label for the given item.\n */\n _createLabel: function(name, item) {\n const label = new qx.ui.basic.Label(this._createLabelText(name, item));\n // store labels for disposal\n this._labels.push(label);\n label.setRich(true);\n return label;\n },\n\n /**\n * Creates a header label for the form groups.\n *\n * @param title {String} Creates a header label.\n * @return {qx.ui.basic.Label} The header for the form groups.\n */\n _createHeader : function(title) {\n const header = new qx.ui.basic.Label(title);\n // store labels for disposal\n this._labels.push(header);\n header.setFont(\"bold\");\n if (this.__row != 0) {\n header.setMarginTop(10);\n }\n header.setAlignX(\"left\");\n return header;\n }\n },\n\n /*\n *****************************************************************************\n DESTRUCTOR\n *****************************************************************************\n */\n destruct : function() {\n // first, remove all buttons from the bottom row because they\n // should not be disposed\n if (this.__buttonRow) {\n this.__buttonRow.removeAll();\n this._disposeObjects(\"__buttonRow\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/* global intlTelInput */\n\n/**\n * @ignore(intlTelInput)\n */\n\nqx.Class.define(\"osparc.widget.IntlTelInput\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.HBox(5));\n\n this.getContentElement().setStyles({\n \"overflow\": \"visible\" // needed for countries dropdown menu\n });\n\n const randId = Math.floor(Math.random() * 100);\n const html = ``;\n const phoneNumber = new qx.ui.embed.Html(html).set({\n marginTop: 2,\n marginLeft: 2,\n marginRight: 2,\n minWidth: 185,\n maxHeight: 25\n });\n this._add(phoneNumber);\n phoneNumber.addListenerOnce(\"appear\", () => {\n const convertInputToPhoneInput = () => {\n const domElement = document.querySelector(`#phone-${randId}`);\n this.__itiInput = this.__inputToPhoneInput(domElement);\n phoneNumber.getContentElement().setStyles({\n \"overflow\": \"visible\" // needed for countries dropdown menu\n });\n };\n const intlTelInputLib = osparc.wrapper.IntlTelInput.getInstance();\n if (intlTelInputLib.getLibReady()) {\n convertInputToPhoneInput();\n } else {\n intlTelInputLib.addListenerOnce(\"changeLibReady\", e => {\n if (e.getData()) {\n convertInputToPhoneInput();\n }\n });\n }\n });\n\n const feedbackCheck = this.__feedbackCheck = new qx.ui.basic.Image().set({\n paddingTop: 3\n });\n feedbackCheck.exclude();\n this._add(feedbackCheck);\n },\n\n statics: {\n updateStyle: function(itiInput, checkIcon) {\n itiInput.a.style[\"width\"] = checkIcon && checkIcon.isVisible() ? \"185px\" : \"215px\";\n itiInput.a.style[\"height\"] = \"26px\";\n itiInput.a.style[\"borderWidth\"] = \"0px\";\n itiInput.a.style[\"backgroundColor\"] = qx.theme.manager.Color.getInstance().resolve(\"input_background\");\n itiInput.a.style[\"color\"] = qx.theme.manager.Color.getInstance().resolve(\"text\");\n }\n },\n\n members: {\n __itiInput: null,\n __feedbackCheck: null,\n\n getNumber: function() {\n return this.__itiInput.getNumber();\n },\n\n isValidNumber: function() {\n return this.__itiInput.isValidNumber();\n },\n\n verifyPhoneNumber: function() {\n const isValid = this.isValidNumber();\n this.__feedbackCheck.set({\n toolTipText: \"E.164: \" + this.getNumber(),\n source: isValid ? \"@FontAwesome5Solid/check/18\" : \"@FontAwesome5Solid/exclamation-triangle/18\",\n textColor: isValid ? \"text\" : \"failed-red\"\n });\n this.__feedbackCheck.show();\n if (!isValid) {\n const validationError = this.__itiInput.getValidationError();\n const errorMap = {\n 0: this.tr(\"Invalid number\"),\n 1: this.tr(\"Invalid country code\"),\n 2: this.tr(\"Number too short\"),\n 3: this.tr(\"Number too long\")\n };\n const errorMsg = validationError in errorMap ? errorMap[validationError] : \"Invalid number\";\n this.__feedbackCheck.set({\n toolTipText: errorMsg + \". \" + this.__feedbackCheck.getToolTipText()\n });\n }\n this.self().updateStyle(this.__itiInput, this.__feedbackCheck);\n },\n\n __inputToPhoneInput: function(input) {\n const iti = intlTelInput(input, {\n initialCountry: \"auto\",\n geoIpLookup: callback => {\n fetch(\"https://ipapi.co/json\")\n .then(res => res.json())\n .then(data => callback(data.country_code))\n .catch(() => callback(\"ch\"));\n },\n preferredCountries: []\n });\n const themeManager = qx.theme.manager.Meta.getInstance();\n themeManager.addListener(\"changeTheme\", () => this.self().updateStyle(iti));\n this.self().updateStyle(iti);\n return iti;\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Adrian Olaru (adrianolaru)\n\n************************************************************************ */\n\n/**\n * Base64 encoder\n */\nqx.Class.define(\"qx.util.Base64\", {\n statics : {\n /** Characters allowed in a Base 64 encoded string */\n __base64Chars : [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' ],\n\n\n /**\n * Encode a string using base64 encoding (http://en.wikipedia.org/wiki/Base64).\n *\n * @param input {String} the input string to encode\n *\n * @param is8bit {Boolean?} Whether the character set is 8-bit, not\n * multi-byte. If this parameter is not provided, the character set is\n * determined from the 'document' object.\n *\n * @return {String} The base64 encoded input string.\n */\n encode : function(input, is8bit)\n {\n var isMultiByte;\n\n if (typeof is8bit == \"undefined\")\n {\n var charSet = document.characterSet || document.charset;\n isMultiByte = charSet.toLowerCase().indexOf('utf') != -1;\n\n if (!isMultiByte && window.btoa instanceof Function) {\n return btoa(input);\n }\n }\n else\n {\n isMultiByte = ! is8bit;\n }\n\n var padding = '=';\n var base64Chars = this.__base64Chars;\n var length = input.length;\n var output = [];\n var result = [];\n var i = 0;\n\n var translateUTF8 = this.__translateUTF8;\n\n while (i < length) {\n translateUTF8(input.charCodeAt(i++), output, !isMultiByte);\n }\n\n for (var k=0, l=output.length; k
true */\n blockBackground :\n {\n check : \"Boolean\",\n themeable : true,\n init : false\n }\n },\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n\n __scheduledOpen : null,\n __onAfterSlideBarAdd : null,\n\n /** @type {qx.ui.core.Blocker} blocker for background blocking */\n _blocker : null,\n\n /*\n ---------------------------------------------------------------------------\n PUBLIC API\n ---------------------------------------------------------------------------\n */\n\n /**\n * Opens the menu and configures the opener\n */\n open : function()\n {\n if (this.getOpener() != null)\n {\n var isPlaced = this.placeToWidget(this.getOpener(), true);\n if(isPlaced) {\n this.__updateSlideBar();\n this.show();\n\n this._placementTarget = this.getOpener();\n } else {\n this.warn(\"Could not open menu instance because 'opener' widget is not visible\");\n }\n } else {\n this.warn(\"The menu instance needs a configured 'opener' widget!\");\n }\n },\n\n\n /**\n * Opens the menu at the pointer position\n *\n * @param e {qx.event.type.Pointer} Pointer event to align to\n */\n openAtPointer : function(e)\n {\n this.placeToPointer(e);\n this.__updateSlideBar();\n this.show();\n\n this._placementTarget = {\n left: e.getDocumentLeft(),\n top: e.getDocumentTop()\n };\n },\n\n\n /**\n * Opens the menu in relation to the given point\n *\n * @param point {Map} Coordinate of any point with the keys left
\n * and top
.\n */\n openAtPoint : function(point)\n {\n this.placeToPoint(point);\n this.__updateSlideBar();\n this.show();\n\n this._placementTarget = point;\n },\n\n\n /**\n * Convenience method to add a separator to the menu\n */\n addSeparator : function() {\n this.add(new qx.ui.menu.Separator);\n },\n\n\n /**\n * Returns the column sizes detected during the pre-layout phase\n *\n * @return {Array} List of all column widths\n */\n getColumnSizes : function() {\n return this._getMenuLayout().getColumnSizes();\n },\n\n\n /**\n * Return all selectable menu items.\n *\n * @return {qx.ui.core.Widget[]} selectable widgets\n */\n getSelectables : function() {\n var result = [];\n var children = this.getChildren();\n\n for (var i = 0; i < children.length; i++)\n {\n if (children[i].isEnabled()) {\n result.push(children[i]);\n }\n }\n\n return result;\n },\n\n\n /*\n ---------------------------------------------------------------------------\n PROPERTY APPLY ROUTINES\n ---------------------------------------------------------------------------\n */\n\n // property apply\n _applyIconColumnWidth : function(value, old) {\n this._getMenuLayout().setIconColumnWidth(value);\n },\n\n\n // property apply\n _applyArrowColumnWidth : function(value, old) {\n this._getMenuLayout().setArrowColumnWidth(value);\n },\n\n\n // property apply\n _applySpacingX : function(value, old) {\n this._getMenuLayout().setColumnSpacing(value);\n },\n\n\n // property apply\n _applySpacingY : function(value, old) {\n this._getMenuLayout().setSpacing(value);\n },\n\n\n // overridden\n _applyVisibility : function(value, old)\n {\n this.base(arguments, value, old);\n\n var mgr = qx.ui.menu.Manager.getInstance();\n\n if (value === \"visible\")\n {\n // Register to manager (zIndex handling etc.)\n mgr.add(this);\n\n // Mark opened in parent menu\n var parentMenu = this.getParentMenu();\n if (parentMenu) {\n parentMenu.setOpenedButton(this.getOpener());\n }\n }\n else if (old === \"visible\")\n {\n // Deregister from manager (zIndex handling etc.)\n mgr.remove(this);\n\n // Unmark opened in parent menu\n var parentMenu = this.getParentMenu();\n if (parentMenu && parentMenu.getOpenedButton() == this.getOpener()) {\n parentMenu.resetOpenedButton();\n }\n\n // Clear properties\n this.resetOpenedButton();\n this.resetSelectedButton();\n }\n\n this.__updateBlockerVisibility();\n },\n\n\n /**\n * Updates the blocker's visibility\n */\n __updateBlockerVisibility : function()\n {\n if (this.isVisible())\n {\n if (this.getBlockBackground()) {\n var zIndex = this.getZIndex();\n this._blocker.blockContent(zIndex - 1);\n }\n }\n else\n {\n if (this._blocker.isBlocked()) {\n this._blocker.unblock();\n }\n }\n },\n\n\n /**\n * Get the parent menu. Returns null
if the menu doesn't have a\n * parent menu.\n *\n * @return {qx.ui.core.Widget|null} The parent menu.\n */\n getParentMenu : function()\n {\n var widget = this.getOpener();\n if (!widget || !(widget instanceof qx.ui.menu.AbstractButton)) {\n return null;\n }\n\n if (widget && widget.getContextMenu() === this) {\n return null;\n }\n\n while (widget && !(widget instanceof qx.ui.menu.Menu)) {\n widget = widget.getLayoutParent();\n }\n return widget;\n },\n\n\n // property apply\n _applySelectedButton : function(value, old)\n {\n if (old) {\n old.removeState(\"selected\");\n }\n\n if (value) {\n value.addState(\"selected\");\n }\n },\n\n\n // property apply\n _applyOpenedButton : function(value, old)\n {\n if (old && old.getMenu()) {\n old.getMenu().exclude();\n }\n\n if (value) {\n value.getMenu().open();\n }\n },\n\n\n // property apply\n _applyBlockerColor : function(value, old) {\n this._blocker.setColor(value);\n },\n\n\n // property apply\n _applyBlockerOpacity : function(value, old) {\n this._blocker.setOpacity(value);\n },\n\n\n /*\n ---------------------------------------------------------------------------\n SCROLLING SUPPORT\n ---------------------------------------------------------------------------\n */\n\n // overridden\n getChildrenContainer : function() {\n return this.getChildControl(\"slidebar\", true) || this;\n },\n\n\n // overridden\n _createChildControlImpl : function(id, hash)\n {\n var control;\n\n switch(id)\n {\n case \"slidebar\":\n var control = new qx.ui.menu.MenuSlideBar();\n\n var layout = this._getLayout();\n this._setLayout(new qx.ui.layout.Grow());\n\n var slidebarLayout = control.getLayout();\n control.setLayout(layout);\n slidebarLayout.dispose();\n\n var children = qx.lang.Array.clone(this.getChildren());\n for (var i=0; i rootHeight)\n {\n this._assertSlideBar(function() {\n this.setHeight(rootHeight - top);\n });\n }\n else\n {\n this.setHeight(null);\n }\n },\n\n\n /**\n * Schedules the addition of the slidebar and calls the given callback\n * after the slidebar has been added.\n *\n * @param callback {Function} the callback to call\n * @return {var|undefined} The return value of the callback if the slidebar\n * already exists, or undefined
if it doesn't\n */\n _assertSlideBar : function(callback)\n {\n if (this.hasChildControl(\"slidebar\")) {\n return callback.call(this);\n }\n\n this.__onAfterSlideBarAdd = callback;\n qx.ui.core.queue.Widget.add(this);\n },\n\n\n // overridden\n syncWidget : function(jobs)\n {\n this.getChildControl(\"slidebar\");\n if (this.__onAfterSlideBarAdd)\n {\n this.__onAfterSlideBarAdd.call(this);\n delete this.__onAfterSlideBarAdd;\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n EVENT HANDLING\n ---------------------------------------------------------------------------\n */\n\n /**\n * Update position if the menu or the root is resized\n */\n _onResize : function()\n {\n if (this.isVisible())\n {\n var target = this._placementTarget;\n if (!target) {\n return;\n } else if (target instanceof qx.ui.core.Widget) {\n this.placeToWidget(target, true);\n } else if (target.top !== undefined) {\n this.placeToPoint(target);\n } else {\n throw new Error(\"Unknown target: \" + target);\n }\n this.__updateSlideBar();\n }\n },\n\n\n /**\n * Event listener for pointerover event.\n *\n * @param e {qx.event.type.Pointer} pointerover event\n */\n _onPointerOver : function(e)\n {\n // Cache manager\n var mgr = qx.ui.menu.Manager.getInstance();\n\n // Be sure this menu is kept\n mgr.cancelClose(this);\n\n // Change selection\n var target = e.getTarget();\n if (target.isEnabled() && target instanceof qx.ui.menu.AbstractButton)\n {\n // Select button directly\n this.setSelectedButton(target);\n\n var subMenu = target.getMenu && target.getMenu();\n if (subMenu)\n {\n subMenu.setOpener(target);\n\n // Finally schedule for opening\n mgr.scheduleOpen(subMenu);\n\n // Remember scheduled menu for opening\n this.__scheduledOpen = subMenu;\n }\n else\n {\n var opened = this.getOpenedButton();\n if (opened) {\n mgr.scheduleClose(opened.getMenu());\n }\n\n if (this.__scheduledOpen)\n {\n mgr.cancelOpen(this.__scheduledOpen);\n this.__scheduledOpen = null;\n }\n }\n }\n else if (!this.getOpenedButton())\n {\n // When no button is opened reset the selection\n // Otherwise keep it\n this.resetSelectedButton();\n }\n },\n\n\n /**\n * Event listener for pointerout event.\n *\n * @param e {qx.event.type.Pointer} pointerout event\n */\n _onPointerOut : function(e)\n {\n // Cache manager\n var mgr = qx.ui.menu.Manager.getInstance();\n\n // Detect whether the related target is out of the menu\n if (!qx.ui.core.Widget.contains(this, e.getRelatedTarget()))\n {\n // Update selected property\n // Force it to the open sub menu in cases where that is opened\n // Otherwise reset it. Menus which are left by the cursor should\n // not show any selection.\n var opened = this.getOpenedButton();\n opened ? this.setSelectedButton(opened) : this.resetSelectedButton();\n\n // Cancel a pending close request for the currently\n // opened sub menu\n if (opened) {\n mgr.cancelClose(opened.getMenu());\n }\n\n // When leaving this menu to the outside, stop\n // all pending requests to open any other sub menu\n if (this.__scheduledOpen) {\n mgr.cancelOpen(this.__scheduledOpen);\n }\n }\n }\n },\n\n\n /*\n *****************************************************************************\n DESTRUCTOR\n *****************************************************************************\n */\n\n destruct : function()\n {\n if (!qx.core.ObjectRegistry.inShutDown) {\n qx.ui.menu.Manager.getInstance().remove(this);\n }\n\n this.getApplicationRoot().removeListener(\"resize\", this._onResize, this);\n this._placementTarget = null;\n this._disposeObjects(\"_blocker\");\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Class that stores Tag data.\n */\n\nqx.Class.define(\"osparc.data.model.Tag\", {\n extend: qx.core.Object,\n\n /**\n * @param tagData {Object} Object containing the serialized Tag Data\n */\n construct: function(tagData) {\n this.base(arguments);\n\n this.set({\n tagId: tagData.id,\n name: tagData.name,\n description: tagData.description,\n color: tagData.color,\n myAccessRights: tagData.accessRights,\n });\n },\n\n properties: {\n tagId: {\n check: \"Number\",\n nullable: true,\n init: null,\n event: \"changeTagId\"\n },\n\n name: {\n check: \"String\",\n nullable: false,\n init: null,\n event: \"changeName\"\n },\n\n description: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeDescription\"\n },\n\n color: {\n check: \"Color\",\n event: \"changeColor\",\n init: \"#303030\"\n },\n\n myAccessRights: {\n check: \"Object\",\n nullable: false,\n init: null,\n event: \"changeMyAccessRights\"\n },\n\n accessRights: {\n check: \"Object\",\n nullable: false,\n init: null,\n event: \"changeAccessRights\"\n },\n },\n\n statics: {\n getProperties: function() {\n return Object.keys(qx.util.PropertyUtil.getProperties(osparc.data.model.Tag));\n }\n },\n\n members: {\n serialize: function() {\n const jsonObject = {};\n const propertyKeys = this.self().getProperties();\n propertyKeys.forEach(key => {\n jsonObject[key] = this.get(key);\n });\n return jsonObject;\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Martin Wittemann (martinwittemann)\n * Jonathan Weiß (jonathan_rass)\n\n************************************************************************ */\n\n/**\n * A page is the way to add content to a {@link TabView}. Each page gets a\n * button to switch to the page. Only one page is visible at a time.\n *\n * @childControl button {qx.ui.tabview.TabButton} tab button connected to the page\n */\nqx.Class.define(\"qx.ui.tabview.Page\",\n{\n extend : qx.ui.container.Composite,\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param label {String} Initial label of the tab\n * @param icon {String} Initial icon of the tab\n */\n construct : function(label, icon)\n {\n this.base(arguments);\n\n this._createChildControl(\"button\");\n\n // init\n if (label != null) {\n this.setLabel(label);\n }\n\n if (icon != null) {\n this.setIcon(icon);\n }\n\n },\n\n\n /*\n *****************************************************************************\n EVENTS\n *****************************************************************************\n */\n\n events :\n {\n /**\n * Fired by {@link qx.ui.tabview.TabButton} if the close button is tapped.\n */\n \"close\" : \"qx.event.type.Event\"\n },\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n // overridden\n appearance :\n {\n refine : true,\n init : \"tabview-page\"\n },\n\n\n /** The label/caption/text of the Page's button. */\n label :\n {\n check : \"String\",\n init : \"\",\n apply : \"_applyLabel\"\n },\n\n\n /** Any URI String supported by qx.ui.basic.Image to display an icon in Page's button. */\n icon :\n {\n check : \"String\",\n init : \"\",\n apply : \"_applyIcon\",\n nullable: true\n },\n\n /** Indicates if the close button of a TabButton should be shown. */\n showCloseButton :\n {\n check : \"Boolean\",\n init : false,\n apply : \"_applyShowCloseButton\"\n }\n\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n /*\n ---------------------------------------------------------------------------\n WIDGET API\n ---------------------------------------------------------------------------\n */\n\n // overridden\n /**\n * @lint ignoreReferenceField(_forwardStates)\n */\n _forwardStates :\n {\n barTop : 1,\n barRight : 1,\n barBottom : 1,\n barLeft : 1,\n firstTab : 1,\n lastTab : 1\n },\n\n\n\n /*\n ---------------------------------------------------------------------------\n APPLY ROUTINES\n ---------------------------------------------------------------------------\n */\n\n // property apply\n _applyIcon : function(value, old) {\n var btn = this.getChildControl(\"button\");\n if (value) {\n btn.setIcon(value);\n btn._showChildControl(\"icon\");\n } else {\n btn._excludeChildControl(\"icon\");\n }\n },\n\n\n // property apply\n _applyLabel : function(value, old) {\n this.getChildControl(\"button\").setLabel(value);\n },\n\n\n // overridden\n _applyEnabled: function(value, old)\n {\n this.base(arguments, value, old);\n\n // delegate to non-child widget button\n // since enabled is inheritable value may be null\n var btn = this.getChildControl(\"button\");\n value == null ? btn.resetEnabled() : btn.setEnabled(value);\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n WIDGET API\n ---------------------------------------------------------------------------\n */\n\n // overridden\n _createChildControlImpl : function(id, hash)\n {\n var control;\n\n switch(id)\n {\n case \"button\":\n control = new qx.ui.tabview.TabButton;\n control.setAllowGrowX(true);\n control.setAllowGrowY(true);\n\n control.setUserData(\"page\", this);\n control.addListener(\"close\", this._onButtonClose, this);\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n /*\n ---------------------------------------------------------------------------\n PROPERTY APPLY\n ---------------------------------------------------------------------------\n */\n\n // property apply\n _applyShowCloseButton : function(value, old) {\n this.getChildControl(\"button\").setShowCloseButton(value);\n },\n\n\n /*\n ---------------------------------------------------------------------------\n EVENT LISTENERS\n ---------------------------------------------------------------------------\n */\n\n /**\n * Fires an \"close\" event when the close button of the TabButton of the page\n * is tapped.\n */\n _onButtonClose : function() {\n this.fireEvent(\"close\");\n },\n\n\n /*\n ---------------------------------------------------------------------------\n PUBLIC API\n ---------------------------------------------------------------------------\n */\n\n /**\n * Returns the button used within this page. This method is used by\n * the TabView to access the button.\n *\n * @internal\n * @return {qx.ui.form.RadioButton} The button associated with this page.\n */\n getButton: function() {\n return this.getChildControl(\"button\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Pedro Crespo (pcrespov)\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.preferences.pages.BasePage\", {\n extend: qx.ui.tabview.Page,\n\n construct: function(title, iconSrc = null) {\n this.base(arguments, null, iconSrc);\n\n this.setLayout(new qx.ui.layout.VBox(10));\n\n this.set({\n backgroundColor: \"window-popup-background\",\n paddingTop: 5,\n paddingLeft: 15\n });\n\n this.__showLabelOnTab(title);\n\n const tabButton = this.getChildControl(\"button\");\n if (tabButton.getIcon() && tabButton.getIcon().includes(\".svg\")) {\n tabButton.getChildControl(\"icon\").set({\n minWidth: 24,\n minHeight: 24,\n scale: true,\n });\n osparc.ui.basic.SVGImage.setColorToImage(tabButton.getChildControl(\"icon\"), \"text\");\n }\n },\n\n members: {\n __showLabelOnTab: function(title) {\n const tabButton = this.getChildControl(\"button\");\n tabButton.set({\n label: title,\n font: \"text-14\"\n });\n // eslint-disable-next-line no-underscore-dangle\n const buttonLayout = tabButton._getLayout();\n buttonLayout.setColumnAlign(0, \"center\", \"middle\"); // center icon\n buttonLayout.setColumnWidth(0, 24); // align texts\n buttonLayout.setSpacingX(5);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.credits.CreditsIndicator\", {\n extend: qx.ui.core.Widget,\n\n construct: function(wallet = null) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox());\n\n this.setWallet(wallet);\n\n this.__updateCredits();\n },\n\n properties: {\n wallet: {\n check: \"osparc.data.model.Wallet\",\n init: null,\n nullable: true,\n event: \"changeWallet\",\n apply: \"__applyWallet\"\n },\n\n creditsAvailable: {\n check: \"Number\",\n init: null,\n nullable: false,\n event: \"changeCreditsAvailable\",\n apply: \"__updateCredits\"\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"credits-text\":\n control = new qx.ui.basic.Label().set({\n alignX: \"center\",\n font: \"text-16\"\n });\n this._add(control);\n break;\n case \"credits-bar\":\n control = new qx.ui.core.Widget().set({\n height: 4\n });\n control.getContentElement().setStyles({\n \"border-radius\": \"2px\"\n });\n this._add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __applyWallet: function(wallet) {\n if (wallet) {\n wallet.bind(\"creditsAvailable\", this, \"creditsAvailable\");\n }\n },\n\n __updateCredits: function() {\n const credits = this.getCreditsAvailable();\n if (credits !== null) {\n const label = this.getChildControl(\"credits-text\");\n label.set({\n value: credits === null ? \"-\" : osparc.desktop.credits.Utils.creditsToFixed(credits) + this.tr(\" credits\"),\n textColor: osparc.desktop.credits.Utils.creditsToColor(credits, \"text\")\n });\n\n const indicator = this.getChildControl(\"credits-bar\");\n const progress = credits > 0 ? osparc.desktop.credits.Utils.normalizeCredits(credits) : 100; // make bar red\n const creditsColor = osparc.desktop.credits.Utils.creditsToColor(credits, \"strong-main\");\n const color1 = qx.theme.manager.Color.getInstance().resolve(creditsColor);\n const textColor = qx.theme.manager.Color.getInstance().resolve(\"text\");\n const arr = qx.util.ColorUtil.stringToRgb(textColor);\n arr[3] = 0.5;\n const color2 = qx.util.ColorUtil.rgbToRgbString(arr);\n indicator.getContentElement().setStyles({\n background: `linear-gradient(90deg, ${color1} ${progress}%, ${color2} ${progress}%)`\n });\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.wallets.WalletsView\", {\n extend: qx.ui.container.Stack,\n\n construct: function() {\n this.base(arguments);\n this.__buildLayout();\n },\n\n events: {\n \"buyCredits\": \"qx.event.type.Data\"\n },\n\n members: {\n __walletsList: null,\n __walletDetails: null,\n\n __buildLayout: function() {\n const walletsPage = this.__walletsList = new osparc.desktop.wallets.WalletsList();\n const walletDetails = this.__walletDetails = new osparc.desktop.wallets.WalletDetails();\n this.add(walletsPage);\n this.add(walletDetails);\n\n walletsPage.addListener(\"walletSelected\", e => {\n const walletId = e.getData();\n this.openWalletDetails(walletId);\n });\n\n walletDetails.addListener(\"backToWallets\", () => {\n this.setSelection([walletsPage]);\n walletsPage.loadWallets();\n });\n\n walletsPage.addListener(\"buyCredits\", e => this.fireDataEvent(\"buyCredits\", e.getData()));\n walletDetails.addListener(\"buyCredits\", e => this.fireDataEvent(\"buyCredits\", e.getData()));\n },\n\n openWalletDetails: function(walletId) {\n const openWalletDetails = walletId2 => {\n const walletModel = this.__walletsList.getWalletModel(walletId2);\n this.__walletDetails.setWallet(walletModel);\n this.setSelection([this.__walletDetails]);\n };\n if (this.__walletsList.isWalletsLoaded()) {\n openWalletDetails(walletId);\n this.__walletDetails.excludeShareButton()\n } else {\n this.__walletsList.addListenerOnce(\"changeWalletsLoaded\", () => openWalletDetails(walletId));\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.paymentMethods.PaymentMethods\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(20));\n\n const groupsStore = osparc.store.Groups.getInstance();\n const myGid = groupsStore.getMyGroupId();\n const store = osparc.store.Store.getInstance();\n const personalWallet = store.getWallets().find(wallet => wallet.getOwner() === myGid)\n this.__personalWalletId = personalWallet.getWalletId()\n this.__buildLayout()\n },\n\n properties: {\n paymentMethods: {\n check: \"Array\",\n init: [],\n nullable: false,\n apply: \"__applyPaymentMethods\"\n }\n },\n\n members: {\n __allPaymentMethods: null,\n\n __buildLayout: function() {\n this._removeAll();\n\n this.__introLabel = new qx.ui.basic.Label().set({\n value: this.tr(\"Credit cards used for payments in your personal Credit Account\"),\n font: \"text-14\",\n rich: true,\n wrap: true\n });\n this._add(this.__introLabel);\n\n const buttonContainer = new qx.ui.container.Composite(new qx.ui.layout.HBox(10))\n this.__addPaymentMethodBtn = new qx.ui.form.Button().set({\n appearance: \"strong-button\",\n label: this.tr(\"Add Payment Method\"),\n icon: \"@FontAwesome5Solid/plus/14\",\n allowGrowX: false\n });\n this.__addPaymentMethodBtn.addListener(\"execute\", () => this.__addNewPaymentMethod(), this);\n buttonContainer.add(this.__addPaymentMethodBtn);\n this.__fetchingMsg = new qx.ui.basic.Atom().set({\n label: this.tr(\"Fetching Payment Methods\"),\n icon: \"@FontAwesome5Solid/circle-notch/12\",\n font: \"text-14\",\n visibility: \"excluded\"\n });\n this.__fetchingMsg.getChildControl(\"icon\").getContentElement().addClass(\"rotate\");\n buttonContainer.add(this.__fetchingMsg);\n this._add(buttonContainer);\n\n this.__listContainer = new qx.ui.container.Composite(new qx.ui.layout.VBox(10)).set({\n allowStretchY: true\n });\n this._add(this.__listContainer, {\n flex: 1\n });\n\n this.__fetchPaymentMethods()\n },\n\n __addNewPaymentMethod: function() {\n const walletId = this.__personalWalletId;\n if (walletId) {\n const params = {\n url: {\n walletId\n }\n };\n osparc.data.Resources.fetch(\"paymentMethods\", \"init\", params)\n .then(data => {\n const gatewayWindow = this.__popUpPaymentGateway(data.paymentMethodId, data.paymentMethodFormUrl);\n osparc.wrapper.WebSocket.getInstance().getSocket().once(\"paymentMethodAcknowledged\", ({ paymentMethodId }) => {\n if (paymentMethodId === data.paymentMethodId) {\n gatewayWindow.close();\n this.__fetchPaymentMethods();\n }\n });\n });\n }\n },\n\n __cancelPaymentMethod: function(paymentMethodId) {\n // inform backend\n const params = {\n url: {\n walletId: this.__personalWalletId,\n paymentMethodId\n }\n };\n osparc.data.Resources.fetch(\"paymentMethods\", \"cancel\", params)\n .finally(() => this.__fetchPaymentMethods());\n },\n\n __windowClosed: function(paymentMethodId) {\n const msg = this.tr(\"The window was closed. Try again and follow the instructions inside the opened window.\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"WARNING\");\n this.__cancelPaymentMethod(paymentMethodId);\n },\n\n __popUpPaymentGateway: function(paymentMethodId, url) {\n const options = {\n width: 450,\n height: 600\n };\n\n const pgWindow = osparc.desktop.credits.PaymentGatewayWindow.popUp(\n url,\n \"Add payment method\",\n options\n );\n // listen to \"tap\" instead of \"execute\": the \"execute\" is not propagated\n pgWindow.getChildControl(\"close-button\").addListener(\"tap\", () => this.__windowClosed(paymentMethodId));\n\n return pgWindow;\n },\n\n __fetchPaymentMethods: function() {\n this.__fetchingMsg.setVisibility(\"visible\");\n const walletId = this.__personalWalletId;\n const params = {\n url: {\n walletId\n }\n };\n osparc.data.Resources.fetch(\"paymentMethods\", \"get\", params)\n .then(paymentMethods => {\n this.__listContainer.removeAll();\n if (paymentMethods.length) {\n this.__listContainer.add(this.__populatePaymentMethodsList(paymentMethods), {\n flex: 1\n });\n } else {\n this.__listContainer.add(new qx.ui.basic.Label().set({\n value: this.tr(\"No Payment Methods found\"),\n font: \"text-14\",\n rich: true,\n wrap: true\n }));\n }\n })\n .finally(() => this.__fetchingMsg.setVisibility(\"excluded\"))\n .catch(err => {\n console.error(err)\n osparc.FlashMessenger.getInstance().logAs(\n this.tr(\"We could not retrieve your saved payment methods. Please try again later.\"),\n \"ERROR\"\n );\n });\n },\n\n __populatePaymentMethodsList: function(allPaymentMethods) {\n this.__allPaymentMethods = allPaymentMethods;\n const paymentMethodsUIList = new qx.ui.form.List().set({\n decorator: \"no-border\",\n spacing: 3,\n height: 150,\n width: 150,\n backgroundColor: \"transparent\"\n });\n\n const paymentMethodsModel = this.__paymentMethodsModel = new qx.data.Array();\n const paymentMethodsCtrl = new qx.data.controller.List(paymentMethodsModel, paymentMethodsUIList, \"name\");\n paymentMethodsCtrl.setDelegate({\n createItem: () => new osparc.desktop.paymentMethods.PaymentMethodListItem(),\n bindItem: (ctrl, item, id) => {\n ctrl.bindProperty(\"idr\", \"key\", null, item, id);\n ctrl.bindProperty(\"idr\", \"model\", null, item, id);\n ctrl.bindProperty(\"walletId\", \"walletId\", null, item, id);\n ctrl.bindProperty(\"cardHolderName\", \"cardHolderName\", null, item, id);\n ctrl.bindProperty(\"cardType\", \"cardType\", null, item, id);\n ctrl.bindProperty(\"cardNumberMasked\", \"cardNumberMasked\", null, item, id);\n ctrl.bindProperty(\"expirationMonth\", \"expirationMonth\", null, item, id);\n ctrl.bindProperty(\"expirationYear\", \"expirationYear\", null, item, id);\n },\n configureItem: item => {\n item.addListener(\"openPaymentMethodDetails\", e => this.__openPaymentMethodDetails(e.getData()));\n item.addListener(\"deletePaymentMethod\", e => this.__deletePaymentMethod(e.getData()));\n }\n });\n\n allPaymentMethods.forEach(paymentMethod => {\n const paymentMethodModel = qx.data.marshal.Json.createModel(paymentMethod);\n paymentMethodsModel.append(paymentMethodModel);\n });\n\n return paymentMethodsUIList;\n },\n\n __findPaymentMethod: function(idr) {\n return this.__allPaymentMethods.find(paymentMethod => paymentMethod[\"idr\"] === idr);\n },\n\n __openPaymentMethodDetails: function(idr) {\n const paymentMethod = this.__findPaymentMethod(idr);\n if (paymentMethod) {\n osparc.desktop.paymentMethods.PaymentMethodDetails.popUpInWindow(paymentMethod);\n }\n },\n\n __deletePaymentMethod: function(idr) {\n const paymentMethod = this.__findPaymentMethod(idr);\n if (paymentMethod) {\n const params = {\n url: {\n walletId: paymentMethod[\"walletId\"],\n paymentMethodId: paymentMethod[\"idr\"]\n }\n };\n osparc.data.Resources.fetch(\"paymentMethods\", \"delete\", params)\n .then(() => this.__fetchPaymentMethods());\n }\n },\n\n getPaymentMethods: function() {\n return this.__allPaymentMethods || [];\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.credits.Transactions\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(15));\n\n const today = osparc.utils.Utils.formatDateYyyyMmDd(new Date())\n this.__params = {\n filters: {\n from: today,\n until: today\n }\n }\n\n const groupsStore = osparc.store.Groups.getInstance();\n const myGid = groupsStore.getMyGroupId()\n const store = osparc.store.Store.getInstance();\n this.__personalWallet = store.getWallets().find(wallet => wallet.getOwner() === myGid);\n this.__personalWalletId = this.__personalWallet.getWalletId();\n this.__buildLayout();\n },\n\n members: {\n __buildLayout: function() {\n this._removeAll();\n const introContainer = new qx.ui.container.Composite(new qx.ui.layout.HBox())\n this.__introLabel = new qx.ui.basic.Label().set({\n value: this.tr(\"Top-up and refunds in US Dollars associated to your personal account show up here.\"),\n font: \"text-14\",\n rich: true,\n wrap: true\n });\n introContainer.add(this.__introLabel)\n introContainer.add(new qx.ui.core.Spacer(), { flex: 1 })\n const refreshButton = new qx.ui.form.Button(this.tr(\"Reload\"), \"@FontAwesome5Solid/sync-alt/14\")\n refreshButton.addListener(\"execute\", () => this.__table && this.__table.getTableModel().reloadData())\n introContainer.add(refreshButton)\n this._add(introContainer);\n\n // FEATURE TOGGLE\n // const filterContainer = new qx.ui.container.Composite(new qx.ui.layout.HBox())\n // this.__dateFilters = new osparc.desktop.credits.DateFilters();\n // this.__dateFilters.addListener(\"change\", e => this.__saveFilters(e.getData()));\n // filterContainer.add(this.__dateFilters);\n\n // filterContainer.add(new qx.ui.core.Spacer(), {\n // flex: 1\n // });\n\n // this.__exportButton = new qx.ui.form.Button(this.tr(\"Export\")).set({\n // allowStretchY: false,\n // alignY: \"bottom\"\n // });\n // this.__exportButton.addListener(\"execute\", () => {\n // console.log(\"export\", this.__params);\n // });\n // filterContainer.add(this.__exportButton);\n\n // this._add(filterContainer);\n\n this.__table = new osparc.desktop.credits.TransactionsTable().set({\n marginTop: 10\n })\n if (this.__personalWallet && this.__personalWallet.getMyAccessRights()[\"write\"]) {\n this._add(this.__table, { flex: 1 })\n this.__table.getTableModel().reloadData()\n } else {\n this._add(osparc.desktop.credits.Utils.getNoWriteAccessInformationLabel())\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2025 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.credits.ResourceInTableViewer\", {\n extend: qx.ui.core.Widget,\n type: \"abstract\",\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(5));\n\n this._buildLayout();\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let layout;\n let control;\n switch (id) {\n case \"intro-text\":\n control = new qx.ui.basic.Label(\"Select a Credit Account:\");\n this._add(control);\n break;\n case \"wallet-selector-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n this._add(control);\n break;\n case \"wallet-selector\":\n control = new qx.ui.form.SelectBox().set({\n allowStretchX: false,\n width: 200\n });\n layout = this.getChildControl(\"wallet-selector-layout\");\n layout.add(control);\n break;\n case \"fetching-image\":\n control = new qx.ui.basic.Image().set({\n source: \"@FontAwesome5Solid/circle-notch/12\",\n alignX: \"center\",\n alignY: \"middle\",\n visibility: \"excluded\"\n });\n control.getContentElement().addClass(\"rotate\");\n layout = this.getChildControl(\"wallet-selector-layout\");\n layout.add(control);\n break;\n case \"filter-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n this._add(control);\n break;\n case \"date-filters\":\n control = new osparc.desktop.credits.DateFilters();\n control.addListener(\"change\", e => {\n const table = this.getChildControl(\"table\");\n table.getTableModel().setFilters(e.getData());\n table.getTableModel().reloadData();\n });\n layout = this.getChildControl(\"filter-layout\");\n layout.add(control);\n break;\n case \"export-button\":\n control = new qx.ui.form.Button(this.tr(\"Export\")).set({\n allowStretchY: false,\n alignY: \"bottom\",\n });\n control.addListener(\"execute\", () => this._handleExport());\n layout = this.getChildControl(\"filter-layout\");\n layout.add(control);\n break;\n case \"reload-button\":\n control = new qx.ui.form.Button(this.tr(\"Reload\"), \"@FontAwesome5Solid/sync-alt/14\").set({\n allowStretchY: false,\n alignY: \"bottom\"\n });\n control.addListener(\"execute\", () => {\n const table = this.getChildControl(\"table\");\n table.getTableModel().reloadData();\n });\n layout = this.getChildControl(\"filter-layout\");\n layout.add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n _buildLayout: function() {\n const introText = this.getChildControl(\"intro-text\");\n const walletSelectBox = this.getChildControl(\"wallet-selector\");\n this.getChildControl(\"fetching-image\");\n\n const filterLayout = this.getChildControl(\"filter-layout\");\n this.getChildControl(\"date-filters\");\n filterLayout.add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n const exportButton = this.getChildControl(\"export-button\");\n this.getChildControl(\"reload-button\");\n\n walletSelectBox.addListener(\"changeSelection\", e => {\n const selection = e.getData();\n if (selection.length) {\n const table = this.getChildControl(\"table\");\n table.getTableModel().setWalletId(this._getSelectWalletId());\n table.getTableModel().reloadData();\n }\n });\n\n if (osparc.desktop.credits.Utils.areWalletsEnabled()) {\n const store = osparc.store.Store.getInstance();\n store.getWallets().forEach(wallet => {\n walletSelectBox.add(new qx.ui.form.ListItem(wallet.getName(), null, wallet));\n });\n } else {\n introText.setVisibility(\"excluded\");\n walletSelectBox.setVisibility(\"excluded\");\n exportButton.setVisibility(\"excluded\");\n this.getChildControl(\"table\");\n }\n },\n\n _getSelectWalletId: function() {\n if (osparc.desktop.credits.Utils.areWalletsEnabled()) {\n const walletSelectBox = this.getChildControl(\"wallet-selector\");\n const selectedWallet = walletSelectBox.getSelection()[0].getModel();\n return selectedWallet.getWalletId();\n }\n return null;\n },\n\n _handleExport: function() {\n throw new Error(\"Abstract method called!\");\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.credits.Usage\", {\n extend: osparc.desktop.credits.ResourceInTableViewer,\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"table\": {\n const dateFilters = this.getChildControl(\"date-filters\");\n control = new osparc.desktop.credits.UsageTable(this._getSelectWalletId(), dateFilters.getValue()).set({\n marginTop: 10\n });\n const fetchingImage = this.getChildControl(\"fetching-image\");\n control.getTableModel().bind(\"isFetching\", fetchingImage, \"visibility\", {\n converter: isFetching => isFetching ? \"visible\" : \"excluded\"\n })\n this._add(control, { flex: 1 })\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n _handleExport: function() {\n const reportUrl = new URL(\"/v0/services/-/usage-report\", window.location.origin);\n reportUrl.searchParams.append(\"wallet_id\", this._getSelectWalletId());\n const dateFilters = this.getChildControl(\"date-filters\");\n reportUrl.searchParams.append(\"filters\", JSON.stringify({ \"started_at\": dateFilters.getValue() }));\n window.open(reportUrl, \"_blank\");\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2025 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.desktop.credits.Purchases\", {\n extend: osparc.desktop.credits.ResourceInTableViewer,\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"table\": {\n const dateFilters = this.getChildControl(\"date-filters\");\n control = new osparc.desktop.credits.PurchasesTable(this._getSelectWalletId(), dateFilters.getValue()).set({\n marginTop: 10\n });\n const fetchingImage = this.getChildControl(\"fetching-image\");\n control.getTableModel().bind(\"isFetching\", fetchingImage, \"visibility\", {\n converter: isFetching => isFetching ? \"visible\" : \"excluded\"\n })\n this._add(control, { flex: 1 })\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n _buildLayout: function() {\n this.base(arguments);\n\n this.getChildControl(\"export-button\").exclude();\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2025 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.desktop.credits.Checkouts\", {\n extend: osparc.desktop.credits.ResourceInTableViewer,\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"table\": {\n const dateFilters = this.getChildControl(\"date-filters\");\n control = new osparc.desktop.credits.CheckoutsTable(this._getSelectWalletId(), dateFilters.getValue()).set({\n marginTop: 10\n });\n const fetchingImage = this.getChildControl(\"fetching-image\");\n control.getTableModel().bind(\"isFetching\", fetchingImage, \"visibility\", {\n converter: isFetching => isFetching ? \"visible\" : \"excluded\"\n })\n this._add(control, { flex: 1 })\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n _buildLayout: function() {\n this.base(arguments);\n\n this.getChildControl(\"export-button\").exclude();\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Pedro Crespo (pcrespov)\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * User profile in preferences dialog\n *\n * - first name, last name, username, email\n *\n */\n\nqx.Class.define(\"osparc.desktop.account.ProfilePage\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(15));\n\n this.__fetchProfile();\n\n this._add(this.__createProfileUser());\n this._add(this.__createPrivacySection());\n if (osparc.store.StaticInfo.getInstance().is2FARequired()) {\n this._add(this.__create2FASection());\n }\n this._add(this.__createPasswordSection());\n this._add(this.__createDeleteAccount());\n },\n\n members: {\n __userProfileData: null,\n __userProfileModel: null,\n __userPrivacyData: null,\n __userPrivacyModel: null,\n __userProfileForm: null,\n\n __fetchProfile: function() {\n osparc.data.Resources.getOne(\"profile\", {}, null, false)\n .then(profile => {\n this.__setDataToProfile(profile);\n this.__setDataToPrivacy(profile[\"privacy\"]);\n })\n .catch(err => {\n console.error(err);\n });\n },\n\n __setDataToProfile: function(data) {\n if (data) {\n this.__userProfileData = data;\n this.__userProfileModel.set({\n \"username\": data[\"userName\"] || \"\",\n \"firstName\": data[\"first_name\"] || \"\",\n \"lastName\": data[\"last_name\"] || \"\",\n \"email\": data[\"login\"],\n \"expirationDate\": data[\"expirationDate\"] || null,\n });\n }\n },\n\n __setDataToPrivacy: function(privacyData) {\n if (privacyData) {\n this.__userPrivacyData = privacyData;\n this.__userPrivacyModel.set({\n \"hideFullname\": \"hideFullname\" in privacyData ? privacyData[\"hideFullname\"] : true,\n \"hideEmail\": \"hideEmail\" in privacyData ? privacyData[\"hideEmail\"] : true,\n });\n }\n },\n\n __createProfileUser: function() {\n // layout\n const box = osparc.ui.window.TabbedView.createSectionBox(this.tr(\"User\"));\n box.set({\n alignX: \"left\",\n maxWidth: 500\n });\n\n const username = new qx.ui.form.TextField().set({\n placeholder: this.tr(\"username\")\n });\n\n const firstName = new qx.ui.form.TextField().set({\n placeholder: this.tr(\"First Name\")\n });\n const lastName = new qx.ui.form.TextField().set({\n placeholder: this.tr(\"Last Name\")\n });\n\n const email = new qx.ui.form.TextField().set({\n placeholder: this.tr(\"Email\"),\n readOnly: true\n });\n\n const form = this.__userProfileForm = new qx.ui.form.Form();\n form.add(username, \"Username\", null, \"username\");\n form.add(firstName, \"First Name\", null, \"firstName\");\n form.add(lastName, \"Last Name\", null, \"lastName\");\n form.add(email, \"Email\", null, \"email\");\n box.add(new qx.ui.form.renderer.Single(form));\n\n const expirationLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5)).set({\n paddingLeft: 16,\n visibility: \"excluded\"\n });\n const expirationDateLabel = new qx.ui.basic.Label(this.tr(\"Expiration date:\")).set({\n textColor: \"danger-red\"\n });\n expirationLayout.add(expirationDateLabel);\n const expirationDate = new qx.ui.basic.Label();\n expirationLayout.add(expirationDate);\n const infoLabel = this.tr(\"Please contact us by email:
\");\n const infoExtension = new osparc.ui.hint.InfoHint(infoLabel);\n const supportEmail = osparc.store.VendorInfo.getInstance().getSupportEmail();\n infoExtension.setHintText(infoLabel + supportEmail);\n expirationLayout.add(infoExtension);\n box.add(expirationLayout);\n\n // binding to a model\n const raw = {\n \"username\": \"\",\n \"firstName\": \"\",\n \"lastName\": \"\",\n \"email\": \"\",\n \"expirationDate\": null,\n };\n\n const model = this.__userProfileModel = qx.data.marshal.Json.createModel(raw);\n const controller = new qx.data.controller.Object(model);\n\n controller.addTarget(username, \"value\", \"username\", true);\n controller.addTarget(email, \"value\", \"email\", true);\n controller.addTarget(firstName, \"value\", \"firstName\", true, null, {\n converter: function(data) {\n return data.replace(/^\\w/, c => c.toUpperCase());\n }\n });\n controller.addTarget(lastName, \"value\", \"lastName\", true);\n controller.addTarget(expirationDate, \"value\", \"expirationDate\", false, {\n converter: expirationDay => {\n if (expirationDay) {\n expirationLayout.show();\n return osparc.utils.Utils.formatDate(new Date(expirationDay));\n }\n return \"\";\n }\n });\n\n // validation\n const emailValidator = new qx.ui.form.validation.Manager();\n emailValidator.add(email, qx.util.Validate.email());\n\n const namesValidator = new qx.ui.form.validation.Manager();\n namesValidator.add(firstName, qx.util.Validate.regExp(/[^\\.\\d]+/), this.tr(\"Avoid dots or numbers in text\"));\n namesValidator.add(lastName, qx.util.Validate.regExp(/^$|[^\\.\\d]+/), this.tr(\"Avoid dots or numbers in text\")); // allow also empty last name\n\n const updateBtn = new qx.ui.form.Button(\"Update Profile\").set({\n appearance: \"form-button\",\n alignX: \"right\",\n allowGrowX: false\n });\n box.add(updateBtn);\n\n updateBtn.addListener(\"execute\", () => {\n if (!osparc.data.Permissions.getInstance().canDo(\"user.user.update\", true)) {\n this.__resetUserData();\n return;\n }\n\n const patchData = {};\n if (this.__userProfileData[\"username\"] !== model.getUsername()) {\n patchData[\"userName\"] = model.getUsername();\n }\n if (this.__userProfileData[\"first_name\"] !== model.getFirstName()) {\n patchData[\"first_name\"] = model.getFirstName();\n }\n if (this.__userProfileData[\"last_name\"] !== model.getLastName()) {\n patchData[\"last_name\"] = model.getLastName();\n }\n\n if (Object.keys(patchData).length) {\n if (namesValidator.validate()) {\n const params = {\n data: patchData\n };\n osparc.data.Resources.fetch(\"profile\", \"patch\", params)\n .then(() => {\n this.__setDataToProfile(Object.assign(this.__userProfileData, params.data));\n osparc.auth.Manager.getInstance().updateProfile(this.__userProfileData);\n const msg = this.tr(\"Profile updated\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"INFO\");\n })\n .catch(err => {\n this.__resetUserData();\n const msg = err.message || this.tr(\"Failed to update profile\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n console.error(err);\n });\n }\n }\n });\n\n return box;\n },\n\n __createPrivacySection: function() {\n const box = osparc.ui.window.TabbedView.createSectionBox(this.tr(\"Privacy\"));\n box.set({\n alignX: \"left\",\n maxWidth: 500\n });\n\n const label = osparc.ui.window.TabbedView.createHelpLabel(this.tr(\"For Privacy reasons, you might want to hide your First and Last Names and/or the Email to other users\"));\n box.add(label);\n\n const hideFullname = new qx.ui.form.CheckBox().set({\n value: true\n });\n const hideEmail = new qx.ui.form.CheckBox().set({\n value: true\n });\n\n const form = new qx.ui.form.Form();\n form.add(hideFullname, \"Hide Full Name\", null, \"hideFullname\");\n form.add(hideEmail, \"Hide Email\", null, \"hideEmail\");\n box.add(new qx.ui.form.renderer.Single(form));\n\n // binding to a model\n const raw = {\n \"hideFullname\": true,\n \"hideEmail\": true,\n };\n\n const model = this.__userPrivacyModel = qx.data.marshal.Json.createModel(raw);\n const controller = new qx.data.controller.Object(model);\n controller.addTarget(hideFullname, \"value\", \"hideFullname\", true);\n controller.addTarget(hideEmail, \"value\", \"hideEmail\", true);\n\n const privacyBtn = new qx.ui.form.Button(\"Update Privacy\").set({\n appearance: \"form-button\",\n alignX: \"right\",\n allowGrowX: false\n });\n box.add(privacyBtn);\n privacyBtn.addListener(\"execute\", () => {\n if (!osparc.data.Permissions.getInstance().canDo(\"user.user.update\", true)) {\n this.__resetPrivacyData();\n return;\n }\n const patchData = {\n \"privacy\": {}\n };\n if (this.__userPrivacyData[\"hideFullname\"] !== model.getHideFullname()) {\n patchData[\"privacy\"][\"hideFullname\"] = model.getHideFullname();\n }\n if (this.__userPrivacyData[\"hideEmail\"] !== model.getHideEmail()) {\n patchData[\"privacy\"][\"hideEmail\"] = model.getHideEmail();\n }\n\n if (\n \"hideFullname\" in patchData[\"privacy\"] &&\n patchData[\"privacy\"][\"hideFullname\"] === false &&\n this.__userProfileData[\"first_name\"] === null\n ) {\n this.__userProfileForm.getItem(\"firstName\").set({\n invalidMessage: qx.locale.Manager.tr(\"Name is required\"),\n valid: false\n });\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Set the Name first\"), \"WARNING\");\n return;\n }\n\n if (Object.keys(patchData[\"privacy\"]).length) {\n const params = {\n data: patchData\n };\n osparc.data.Resources.fetch(\"profile\", \"patch\", params)\n .then(() => {\n this.__setDataToPrivacy(Object.assign(this.__userPrivacyData, params.data[\"privacy\"]));\n const msg = this.tr(\"Privacy updated\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"INFO\");\n })\n .catch(err => {\n this.__resetPrivacyData();\n const msg = err.message || this.tr(\"Failed to update privacy\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n console.error(err);\n });\n }\n });\n\n return box;\n },\n\n __create2FASection: function() {\n const box = osparc.ui.window.TabbedView.createSectionBox(this.tr(\"2 Factor Authentication\"));\n\n const label = osparc.ui.window.TabbedView.createHelpLabel(this.tr(\"Set your preferred method to use for two-factor authentication when signing in:\"));\n box.add(label);\n\n const form = new qx.ui.form.Form();\n\n const preferencesSettings = osparc.Preferences.getInstance();\n\n const twoFAPreferenceSB = new qx.ui.form.SelectBox().set({\n allowGrowX: false\n });\n [{\n id: \"SMS\",\n label: \"SMS\"\n }, {\n id: \"EMAIL\",\n label: \"e-mail\"\n }, {\n id: \"DISABLED\",\n label: \"Disabled\"\n }].forEach(options => {\n const lItem = new qx.ui.form.ListItem(options.label, null, options.id);\n twoFAPreferenceSB.add(lItem);\n });\n const value = preferencesSettings.getTwoFAPreference();\n twoFAPreferenceSB.getSelectables().forEach(selectable => {\n if (selectable.getModel() === value) {\n twoFAPreferenceSB.setSelection([selectable]);\n }\n });\n twoFAPreferenceSB.addListener(\"changeValue\", e => {\n const currentSelection = e.getData();\n const lastSelection = e.getOldData();\n const selectedId = currentSelection.getModel();\n if (selectedId === \"DISABLED\") {\n const discourageTitle = this.tr(\"You are about to disable the 2FA\");\n const discourageText = this.tr(\"\\\n The 2 Factor Authentication is one more measure to prevent hackers from accessing your account with an additional layer of security. \\\n When you sign in, 2FA helps make sure that your resources and personal information stays private, safe and secure.\\\n \");\n const win = new osparc.ui.window.Confirmation(discourageTitle).set({\n caption: discourageTitle,\n message: discourageText,\n confirmText: this.tr(\"Yes, disable\"),\n confirmAction: \"delete\"\n });\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n osparc.Preferences.patchPreferenceField(\"twoFAPreference\", twoFAPreferenceSB, selectedId);\n } else {\n twoFAPreferenceSB.setSelection([lastSelection]);\n }\n }, this);\n } else {\n osparc.Preferences.patchPreferenceField(\"twoFAPreference\", twoFAPreferenceSB, selectedId);\n }\n });\n form.add(twoFAPreferenceSB, this.tr(\"2FA Method\"));\n\n box.add(new qx.ui.form.renderer.Single(form));\n\n return box;\n },\n\n __resetUserData: function() {\n this.__setDataToProfile(this.__userProfileData);\n },\n\n __resetPrivacyData: function() {\n this.__setDataToPrivacy(this.__userPrivacyData);\n },\n\n __createPasswordSection: function() {\n // layout\n const box = osparc.ui.window.TabbedView.createSectionBox(this.tr(\"Password\"));\n box.set({\n alignX: \"left\",\n maxWidth: 500\n });\n\n const currentPassword = new osparc.ui.form.PasswordField().set({\n required: true,\n placeholder: this.tr(\"Your current password\")\n });\n\n const newPassword = new osparc.ui.form.PasswordField().set({\n required: true,\n placeholder: this.tr(\"Your new password\")\n });\n\n const confirm = new osparc.ui.form.PasswordField().set({\n required: true,\n placeholder: this.tr(\"Retype your new password\")\n });\n\n const form = new qx.ui.form.Form();\n form.add(currentPassword, \"Current Password\", null, \"curPassword\");\n form.add(newPassword, \"New Password\", null, \"newPassword\");\n form.add(confirm, \"Confirm New Password\", null, \"newPassword2\");\n box.add(new qx.ui.form.renderer.Single(form));\n\n const manager = new qx.ui.form.validation.Manager();\n manager.add(newPassword, osparc.auth.core.Utils.passwordLengthValidator);\n manager.add(confirm, osparc.auth.core.Utils.passwordLengthValidator);\n manager.setValidator(function(_itemForms) {\n return osparc.auth.core.Utils.checkSamePasswords(newPassword, confirm);\n });\n\n const resetBtn = new qx.ui.form.Button(\"Reset Password\").set({\n appearance: \"form-button\",\n alignX: \"right\",\n allowGrowX: false\n });\n box.add(resetBtn);\n\n resetBtn.addListener(\"execute\", () => {\n if (manager.validate()) {\n const params = {\n data: {\n current: currentPassword.getValue(),\n new: newPassword.getValue(),\n confirm: confirm.getValue()\n }\n };\n osparc.data.Resources.fetch(\"password\", \"post\", params)\n .then(data => {\n osparc.FlashMessenger.getInstance().log(data);\n [currentPassword, newPassword, confirm].forEach(item => {\n item.resetValue();\n });\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Failed to reset password\"), \"ERROR\");\n [currentPassword, newPassword, confirm].forEach(item => {\n item.resetValue();\n });\n });\n }\n });\n\n return box;\n },\n\n __createDeleteAccount: function() {\n // layout\n const box = osparc.ui.window.TabbedView.createSectionBox(this.tr(\"Danger Zone\")).set({\n alignX: \"left\",\n maxWidth: 500\n });\n\n const deleteBtn = new qx.ui.form.Button(this.tr(\"Delete Account\")).set({\n appearance: \"danger-button\",\n alignX: \"right\",\n allowGrowX: false\n });\n deleteBtn.addListener(\"execute\", () => {\n const deleteAccount = new osparc.desktop.account.DeleteAccount();\n const win = osparc.ui.window.Window.popUpInWindow(deleteAccount, qx.locale.Manager.tr(\"Delete Account\"), 430, null);\n deleteAccount.addListener(\"cancel\", () => win.close());\n deleteAccount.addListener(\"deleted\", () => win.close());\n });\n box.add(deleteBtn);\n\n return box;\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Andreas Ecker (ecker)\n * Til Schneider (til132)\n * Jonathan Weiß (jonathan_rass)\n * Fabian Jakobs (fjakobs)\n\n************************************************************************ */\n\n/**\n * Abstract base class for iframe widgets.\n */\nqx.Class.define(\"qx.ui.embed.AbstractIframe\",\n{\n extend : qx.ui.core.Widget,\n\n /**\n * @param source {String} URL which should initially set.\n */\n construct : function(source)\n {\n this.base(arguments);\n\n if (source) {\n this.setSource(source);\n }\n\n this._getIframeElement().addListener(\"navigate\", this.__onNavigate, this);\n },\n\n\n events:\n {\n /**\n * The \"load\" event is fired after the iframe content has successfully been loaded.\n */\n \"load\" : \"qx.event.type.Event\",\n\n /**\n * The \"navigate\" event is fired whenever the location of the iframe\n * changes.\n *\n * Useful to track user navigation and internally used to keep the source\n * property in sync. Only works when the destination source is of same\n * origin than the page embedding the iframe.\n */\n \"navigate\" : \"qx.event.type.Data\"\n },\n\n\n properties :\n {\n /**\n * Source URL of the iframe.\n */\n source :\n {\n check : \"String\",\n apply : \"_applySource\",\n init : \"about:blank\"\n },\n\n /**\n * Name of the iframe.\n */\n frameName :\n {\n check : \"String\",\n init : \"\",\n apply : \"_applyFrameName\"\n }\n },\n\n\n members :\n {\n /**\n * Get the Element wrapper for the iframe\n *\n * @abstract\n * @return {qx.html.Iframe} the iframe element wrapper\n */\n _getIframeElement : function() {\n throw new Error(\"Abstract method call\");\n },\n\n\n // property apply\n _applySource : function(value, old) {\n this._getIframeElement().setSource(value);\n },\n\n\n // property apply\n _applyFrameName : function(value, old) {\n this._getIframeElement().setAttribute(\"name\", value);\n },\n\n\n\n /**\n * Get the DOM window object of an iframe.\n *\n * @return {Window} The DOM window object of the iframe.\n */\n getWindow : function() {\n return this._getIframeElement().getWindow();\n },\n\n\n /**\n * Get the DOM document object of an iframe.\n *\n * @return {Document} The DOM document object of the iframe.\n */\n getDocument : function() {\n return this._getIframeElement().getDocument();\n },\n\n\n /**\n * Get the HTML body element of the iframe.\n *\n * @return {Element} The DOM node of the body
element of the iframe.\n */\n getBody : function() {\n return this._getIframeElement().getBody();\n },\n\n\n /**\n * Get the current name.\n *\n * @return {String} The iframe's name.\n */\n getName : function() {\n return this._getIframeElement().getName();\n },\n\n\n /**\n * Reload the contents of the iframe.\n *\n */\n reload : function() {\n this._getIframeElement().reload();\n },\n\n /**\n * Handle user navigation. Sync actual URL of iframe with source property.\n *\n * @param e {qx.event.type.Data} navigate event\n */\n __onNavigate: function(e) {\n var actualUrl = e.getData();\n\n if (actualUrl) {\n this.setSource(actualUrl);\n }\n\n this.fireDataEvent(\"navigate\", actualUrl);\n }\n }\n});\n","/* ************************************************************************\n Copyright: 2018 ITIS Foundation\n License: MIT\n Authors: Tobi Oetiker \n Utf8Check: äöü\n************************************************************************ */\n\n/**\n * When moving an iframe node in the dom, it reloads its content. This is\n * rather unfortunate when the content is another web application.\n * This Iframe widget solves the problem by attaching the iframe to a\n * permanent location and just moving it into position as the actual\n * widget manifests in different locations. There are limits as to where\n * the widget can be displayed as the widget hierarchy may prevent correct\n * visualisation. By default the iframe is attached to the root node of\n * the document, but an alternate attachment can be specified as required.\n *\n */\n\nqx.Class.define(\"osparc.widget.PersistentIframe\", {\n extend: qx.ui.embed.AbstractIframe,\n /**\n *\n * @param source {String} URL for the iframe content\n * @param poolEl {Element?} Dom node for attaching the iframe\n */\n construct: function(source, el) {\n this.base(arguments, source);\n\n this.__attachInterframeMessageHandlers();\n },\n\n statics: {\n getZoomLabel: function(maximize) {\n return maximize ? \"Restore\" : \"Maximize\";\n },\n\n getZoomIcon: function(maximize) {\n const iconURL = maximize ? \"window-restore\" : \"window-maximize\";\n return osparc.theme.common.Image.URLS[iconURL] + \"/20\";\n },\n\n getMaximizeWidgetId: function(maximize) {\n return maximize ? \"restoreBtn\" : \"maximizeBtn\";\n },\n\n createToolbarButton: function() {\n return new qx.ui.form.Button().set({\n appearance: \"fab-button\",\n zIndex: 20,\n padding: [0, 5],\n marginRight: 10\n });\n },\n\n HIDDEN_TOP: -10000\n },\n\n properties: {\n toolbarHeight: {\n check: \"Integer\",\n init: 25\n },\n\n /**\n * Show Restart-Maximize Toolbar\n */\n showToolbar: {\n check: \"Boolean\",\n init: true,\n event: \"changeShowToolbar\",\n apply: \"__applyShowToolbar\"\n }\n },\n\n events: {\n /** Fired for requesting a restart */\n \"restart\" : \"qx.event.type.Event\",\n /** Fired if the iframe is restored from a minimized or maximized state */\n \"restore\" : \"qx.event.type.Event\",\n /** Fired if the iframe is maximized */\n \"maximize\" : \"qx.event.type.Event\"\n },\n\n members: {\n __iframe: null,\n __syncScheduled: null,\n __buttonsContainer: null,\n __diskUsageIndicator: null,\n __reloadButton: null,\n __zoomButton: null,\n\n // override\n _createContentElement : function() {\n const iframe = this.__iframe = new qx.ui.embed.Iframe(this.getSource());\n const persistentIframe = this;\n iframe.addListener(\"load\", () => {\n const currentTheme = qx.theme.manager.Meta.getInstance().getTheme();\n if (currentTheme && persistentIframe.postThemeSwitch) {\n persistentIframe.postThemeSwitch(currentTheme.name);\n }\n this.fireEvent(\"load\");\n });\n iframe.addListener(\"navigate\", e => this.fireDataEvent(\"navigate\", e.getData()));\n\n let standin = new qx.html.Element(\"div\");\n let appRoot = this.getApplicationRoot();\n appRoot.add(iframe, {\n top: this.self().HIDDEN_TOP\n });\n const iframeEl = this._getIframeElement();\n const host = window.location.host;\n iframeEl.setAttribute(\"allow\", `clipboard-read; clipboard-write; from *.services.${host}`);\n\n const buttonsContainer = this.__buttonsContainer = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignX: \"right\",\n alignY: \"middle\"\n }));\n\n const diskUsageIndicator = this.__diskUsageIndicator = new osparc.workbench.DiskUsageIndicator();\n diskUsageIndicator.getChildControl(\"disk-indicator\").set({\n margin: 0\n });\n buttonsContainer.add(diskUsageIndicator);\n\n const reloadButton = this.__reloadButton = this.self().createToolbarButton().set({\n label: this.tr(\"Reload\"),\n icon: \"@FontAwesome5Solid/redo-alt/14\",\n padding: [1, 5],\n gap: 10\n });\n reloadButton.addListener(\"execute\", e => {\n this.fireEvent(\"restart\");\n }, this);\n osparc.utils.Utils.setIdToWidget(reloadButton, \"iFrameRestartBtn\");\n buttonsContainer.add(reloadButton);\n\n const zoomButton = this.__zoomButton = this.self().createToolbarButton().set({\n label: this.self().getZoomLabel(false),\n icon: this.self().getZoomIcon(false)\n });\n osparc.utils.Utils.setIdToWidget(zoomButton, this.self().getMaximizeWidgetId(false));\n zoomButton.addListener(\"execute\", e => {\n this.maximizeIFrame(!this.hasState(\"maximized\"));\n }, this);\n buttonsContainer.add(zoomButton);\n\n appRoot.add(buttonsContainer, {\n top: this.self().HIDDEN_TOP\n });\n standin.addListener(\"appear\", e => {\n this.__syncIframePos();\n });\n standin.addListener(\"disappear\", e => {\n iframe.setLayoutProperties({\n top: this.self().HIDDEN_TOP\n });\n buttonsContainer.setLayoutProperties({\n top: this.self().HIDDEN_TOP\n });\n });\n\n this.addListener(\"move\", e => {\n // got to let the new layout render first or we don't see it\n this.__syncIframePos();\n });\n this.addListener(\"resize\", e => {\n // got to let the new layout render first or we don't see it\n this.__syncIframePos();\n });\n this.addListener(\"changeVisibility\", e => {\n var visibility = e.getData()[0];\n if (visibility == \"none\") {\n iframe.set({\n zIndex: -10000\n });\n } else {\n this.__syncIframePos();\n }\n });\n return standin;\n },\n\n getIframe: function() {\n return this.__iframe;\n },\n\n getDiskUsageIndicator: function() {\n return this.__diskUsageIndicator;\n },\n\n maximizeIFrame: function(maximize) {\n if (maximize) {\n this.fireEvent(\"maximize\");\n this.addState(\"maximized\");\n } else {\n this.fireEvent(\"restore\");\n this.removeState(\"maximized\");\n }\n const actionButton = this.__zoomButton;\n actionButton.set({\n label: this.self().getZoomLabel(maximize),\n icon: this.self().getZoomIcon(maximize)\n });\n osparc.utils.Utils.setIdToWidget(actionButton, this.self().getMaximizeWidgetId(maximize));\n qx.event.message.Bus.getInstance().dispatchByName(\"maximizeIframe\", this.hasState(\"maximized\"));\n },\n\n __syncIframePos: function() {\n if (this.__syncScheduled) {\n return;\n }\n this.__syncScheduled = true;\n window.setTimeout(() => {\n this.__syncScheduled = false;\n let iframeParentPos = qx.bom.element.Location.get(qx.bom.element.Location.getOffsetParent(this.__iframe.getContentElement().getDomElement()), \"scroll\");\n const domElement = this.getContentElement().getDomElement();\n if (domElement === null) {\n return;\n }\n let divPos = qx.bom.element.Location.get(domElement, \"scroll\");\n let divSize = qx.bom.element.Dimension.getSize(domElement);\n this.__iframe.setLayoutProperties({\n top: divPos.top - iframeParentPos.top + this.getToolbarHeight(),\n left: divPos.left - iframeParentPos.left\n });\n this.__iframe.set({\n width: divSize.width,\n height: divSize.height - this.getToolbarHeight()\n });\n\n this.__buttonsContainer.setLayoutProperties({\n top: (divPos.top - iframeParentPos.top),\n right: (iframeParentPos.right - iframeParentPos.left - divPos.right)\n });\n\n this.__buttonsContainer.setVisibility(this.isShowToolbar() ? \"visible\" : \"excluded\");\n }, 0);\n },\n\n __applyShowToolbar: function(show) {\n this.setToolbarHeight(show ? 25 : 0);\n this.__syncIframePos();\n },\n\n _applySource: function(newValue) {\n this.__iframe.setSource(newValue);\n },\n\n __attachInterframeMessageHandlers: function() {\n this.__attachTriggerers();\n this.__attachListeners();\n },\n\n __attachTriggerers: function() {\n this.postThemeSwitch = theme => {\n const msg = \"osparc;theme=\" + theme;\n this.sendMessageToIframe(msg);\n };\n\n this.themeSwitchHandler = msg => {\n this.postThemeSwitch(msg.getData());\n };\n qx.event.message.Bus.getInstance().subscribe(\"themeSwitch\", this.themeSwitchHandler);\n },\n\n sendMessageToIframe: function(msg) {\n const iframe = this._getIframeElement();\n if (iframe) {\n const iframeDomEl = iframe.getDomElement();\n const iframeSource = iframe.getSource();\n if (iframeDomEl && iframeSource) {\n try {\n iframeDomEl.contentWindow.postMessage(msg, iframeSource);\n } catch (err) {\n console.log(`Failed posting message ${msg} to iframe ${iframeSource}\\n${err.message}`);\n }\n }\n }\n },\n\n __attachListeners: function() {\n this.__iframe.addListener(\"load\", () => {\n const iframe = this._getIframeElement();\n if (iframe) {\n const iframeDomEl = iframe.getDomElement();\n if (iframeDomEl) {\n window.addEventListener(\"message\", message => {\n const data = message.data;\n if (data) {\n const origin = new URL(message.origin).hostname; // nodeId.services.deployment\n const nodeId = origin.split(\".\")[0];\n this.__handleIframeMessage(data, nodeId);\n }\n });\n }\n }\n }, this);\n },\n\n __handleIframeMessage: function(data, nodeId) {\n if (data[\"type\"]) {\n switch (data[\"type\"]) {\n case \"theme\": {\n // switch theme driven by the iframe\n const message = data[\"message\"];\n if (message && message.includes(\"osparc;theme=\")) {\n const themeName = message.replace(\"osparc;theme=\", \"\");\n const validThemes = osparc.ui.switch.ThemeSwitcher.getValidThemes();\n const themeFound = validThemes.find(theme => theme.basename === themeName);\n const themeManager = qx.theme.manager.Meta.getInstance();\n if (themeFound !== themeManager.getTheme()) {\n themeManager.setTheme(themeFound);\n }\n }\n break;\n }\n case \"openMarket\": {\n if (osparc.product.Utils.showS4LStore()) {\n const category = data[\"message\"] && data[\"message\"][\"category\"];\n setTimeout(() => osparc.vipMarket.MarketWindow.openWindow(nodeId, category), 100);\n }\n break;\n }\n case \"openWallets\": {\n if (osparc.desktop.credits.Utils.areWalletsEnabled()) {\n setTimeout(() => osparc.desktop.credits.BillingCenterWindow.openWindow(), 100);\n }\n break;\n }\n }\n }\n },\n\n // override\n _getIframeElement: function() {\n return this.__iframe._getIframeElement(); // eslint-disable-line no-underscore-dangle\n },\n\n /**\n * Cover the iframe with a transparent blocker div element. This prevents\n * pointer or key events to be handled by the iframe. To release the blocker\n * use {@link #release}.\n *\n */\n block : function() {\n this.__iframe.block();\n },\n\n /**\n * Release the blocker set by {@link #block}.\n *\n */\n release : function() {\n this.__iframe.release();\n }\n },\n\n destruct: function() {\n this.__iframe.exclude();\n this.__iframe.dispose();\n this.__iframe = undefined;\n qx.event.message.Bus.getInstance().unsubscribe(\"themeSwitch\", this.themeSwitchHandler);\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/* global SVG */\n/* eslint new-cap: [2, {capIsNewExceptions: [\"SVG\", \"M\", \"C\"]}] */\n\n/**\n * @asset(svg/svg.js)\n * @asset(svg/svg.path.js)\n * @asset(svg/svg.draggable.js)\n * @asset(svg/svg.foreignobject.js)\n * @ignore(SVG)\n */\n\n/**\n * A qooxdoo wrapper for\n * SVG\n */\n\nqx.Class.define(\"osparc.wrapper.Svg\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n properties: {\n libReady: {\n nullable: false,\n init: false,\n check: \"Boolean\"\n }\n },\n\n statics: {\n NAME: \"svg.js\",\n VERSION: \"2.7.1\",\n URL: \"https://github.com/svgdotjs/svg.js\",\n\n curateCurveControls: function(controls) {\n [\n controls[0],\n controls[1],\n controls[2],\n controls[3]\n ].forEach(control => {\n if (Number.isNaN(control.x)) {\n control.x = 0;\n }\n if (Number.isNaN(control.y)) {\n control.y = 0;\n }\n });\n },\n\n drawCurve: function(draw, controls, dashed) {\n const edgeWidth = 3;\n const arrowSize = 4;\n const edgeColor = qx.theme.manager.Color.getInstance().getTheme().colors[\"workbench-edge-comp-active\"];\n\n osparc.wrapper.Svg.curateCurveControls(controls);\n\n const widerCurve = draw.path()\n .M(controls[0].x, controls[0].y)\n .C(controls[1], controls[2], controls[3])\n .style({\n cursor: \"pointer\"\n })\n .opacity(0)\n .stroke({\n width: edgeWidth*4\n });\n\n const curve = draw.path()\n .M(controls[0].x, controls[0].y)\n .C(controls[1], controls[2], controls[3])\n .fill(\"none\")\n .style({\n cursor: \"pointer\"\n })\n .stroke({\n width: edgeWidth,\n color: edgeColor,\n dasharray: dashed ? 5 : 0\n });\n curve.widerCurve = widerCurve;\n\n const portArrow = draw.marker(arrowSize, arrowSize, add => {\n add.path(\"M 0 0 V 4 L 2 2 Z\")\n .fill(edgeColor)\n .size(arrowSize, arrowSize);\n });\n curve.marker(\"end\", portArrow);\n curve.markers = [portArrow];\n\n return curve;\n },\n\n updateCurve: function(curve, controls) {\n if (curve.type === \"path\") {\n let mSegment = curve.getSegment(0);\n mSegment.coords = [controls[0].x, controls[0].y];\n let cSegment = curve.getSegment(1);\n cSegment.coords = [controls[1].x, controls[1].y, controls[2].x, controls[2].y, controls[3].x, controls[3].y];\n\n if (curve.widerCurve) {\n curve.widerCurve.replaceSegment(0, mSegment);\n curve.widerCurve.replaceSegment(1, cSegment);\n }\n curve.replaceSegment(0, mSegment);\n curve.replaceSegment(1, cSegment);\n }\n },\n\n removeCurve: function(curve) {\n if (curve.type === \"path\") {\n if (curve.widerCurve) {\n curve.widerCurve.remove();\n }\n curve.remove();\n }\n },\n\n /* ANNOTATIONS */\n\n getRectAttributes: function(rect) {\n const rectAttrs = rect.node.attributes;\n return {\n x: rectAttrs.x.value,\n y: rectAttrs.y.value,\n width: rectAttrs.width ? rectAttrs.width.value : null,\n height: rectAttrs.height ? rectAttrs.height.value : null\n };\n },\n\n drawAnnotationText: function(draw, x, y, label, color, fontSize) {\n const defaultFont = osparc.utils.Utils.getDefaultFont();\n const text = draw.text(label)\n .font({\n fill: color,\n size: (fontSize ? fontSize : defaultFont[\"size\"]) + \"px\",\n family: defaultFont[\"family\"]\n })\n .style({\n cursor: \"pointer\"\n })\n .move(x, y);\n text.back();\n return text;\n },\n\n drawAnnotationNote: function(draw, x, y, recipientName, note) {\n const lines = note.split(\"\\n\");\n const width = 200;\n const minHeight = 120;\n const titleHeight = 26;\n const padding = 5;\n const nLines = lines.length;\n const height = Math.max(minHeight, titleHeight + nLines*18);\n const trianSize = 25;\n const yellow = \"#FFFF01\"; // do not make it pure yellow, svg will change the hex value to a \"yellow\" string\n const orange = \"#FFA500\";\n x = parseInt(x);\n y = parseInt(y);\n\n const gNote = draw.nested().move(x, y);\n const rect = gNote.rect(width, height)\n .fill(yellow)\n .style({\n cursor: \"pointer\"\n });\n rect.back();\n gNote.add(rect);\n\n const trianOrangeCtrls = [\n [width-trianSize, height-trianSize],\n [width-trianSize, height],\n [width, height-trianSize]\n ];\n const trianOrange = gNote.polygon(trianOrangeCtrls.join())\n .fill(orange)\n .style({\n cursor: \"pointer\"\n })\n .move(width-trianSize, height-trianSize);\n trianOrange.back();\n gNote.add(trianOrange);\n\n const trianTransparentCtrls = [\n [width-trianSize, height],\n [width, height],\n [width, height-trianSize]\n ];\n const colorManager = qx.theme.manager.Color.getInstance();\n const trianTransparent = gNote.polygon(trianTransparentCtrls.join())\n .fill(colorManager.resolve(\"background-main\"))\n .style({\n cursor: \"pointer\"\n })\n .move(width-trianSize, height-trianSize);\n trianTransparent.back();\n colorManager.addListener(\"changeTheme\", () => {\n const bgColor = colorManager.resolve(\"background-main\");\n trianTransparent.fill(bgColor);\n }, this);\n gNote.add(trianTransparent);\n\n const separator = gNote.line(0, 0, width-2*padding, 0)\n .stroke({\n width: 2,\n color: orange\n })\n .move(padding, titleHeight);\n separator.back();\n gNote.add(separator);\n\n const defaultFont = osparc.utils.Utils.getDefaultFont();\n const title = gNote.text(recipientName)\n .font({\n fill: \"#000000\",\n size: (defaultFont[\"size\"]+1) + \"px\",\n family: defaultFont[\"family\"]\n })\n .move(padding, padding);\n title.back();\n gNote.add(title);\n\n // size and id are not relevant\n const fobj = gNote.foreignObject(100, 100).attr({id: \"fobj\"});\n fobj.appendChild(\"div\", {\n id: \"mydiv\",\n innerText: note\n });\n fobj\n .attr({\n width: width-2*padding,\n height: height-titleHeight-4\n })\n .move(padding, padding+titleHeight);\n const textChild = fobj.getChild(0);\n textChild.style.overflow = \"auto\";\n textChild.style.overflowWrap = \"anywhere\";\n textChild.style.fontFamily = defaultFont[\"family\"];\n textChild.style.fontSize = defaultFont[\"size\"] + \"px\";\n gNote.textChild = textChild;\n gNote.add(fobj);\n\n return gNote;\n },\n\n drawAnnotationRect: function(draw, width, height, x, y, color) {\n const rect = draw.rect(width, height)\n .fill(\"none\")\n .stroke({\n width: 2,\n color\n })\n .style({\n cursor: \"pointer\"\n })\n .move(x, y);\n rect.back();\n return rect;\n },\n\n updateText: function(representation, label) {\n if (representation.type === \"text\") {\n representation.text(label);\n } else if (representation.type === \"svg\") {\n // nested\n representation[\"textChild\"].innerText = label;\n }\n },\n\n updateTextColor: function(text, color) {\n text.font({\n fill: color\n });\n },\n\n updateTextSize: function(text, size) {\n text.font({\n size: size + \"px\"\n });\n },\n\n /* / ANNOTATIONS */\n\n drawDashedRect: function(draw, width, height, x, y) {\n const edgeColor = qx.theme.manager.Color.getInstance().getTheme().colors[\"workbench-edge-comp-active\"];\n const rect = draw.rect(width, height)\n .fill(\"none\")\n .stroke({\n // width: 5,\n color: edgeColor,\n dasharray: \"4, 4\"\n })\n .move(x, y);\n return rect;\n },\n\n drawFilledRect: function(draw, width, height, x, y) {\n const fillColor = qx.theme.manager.Color.getInstance().resolve(\"background-main-1\");\n const edgeColor = qx.theme.manager.Color.getInstance().resolve(\"background-main-2\");\n const rect = draw.rect(width, height)\n .fill(fillColor)\n .stroke({\n width: 1,\n color: edgeColor\n })\n .move(x, y);\n rect.back();\n return rect;\n },\n\n drawNodeUI: function(draw, width, height, radius, x, y) {\n const nodeUIColor = qx.theme.manager.Color.getInstance().resolve(\"background-main-3\");\n const rect = draw.rect(width, height)\n .fill(nodeUIColor)\n .stroke({\n width: 0.2,\n color: \"black\"\n })\n .move(x, y)\n .attr({\n rx: radius,\n ry: radius\n });\n return rect;\n },\n\n updateRect: function(rect, w, h, x, y) {\n rect.width(w);\n rect.height(h);\n rect.move(x, y);\n },\n\n updateItemPos: function(item, x, y) {\n item.move(x, y);\n },\n\n updateItemColor: function(item, color) {\n item.stroke({\n color: color\n });\n },\n\n removeItem: function(item) {\n item.remove();\n },\n\n updateCurveDashes: function(curve, dashed) {\n curve.attr({\n \"stroke-dasharray\": dashed ? 5 : 0\n });\n },\n\n updateCurveColor: function(curve, color) {\n if (curve.type === \"path\") {\n curve.attr({\n stroke: color\n });\n if (curve.markers) {\n curve.markers.forEach(markerDiv => {\n markerDiv.node.childNodes.forEach(node => {\n node.setAttribute(\"fill\", color);\n });\n });\n }\n }\n },\n\n drawPolygon: function(draw, controls) {\n const polygon = draw.polygon(controls.join())\n .fill(\"none\")\n .stroke({\n width: 0\n })\n .move(0, 0);\n return polygon;\n },\n\n updatePolygonColor: function(polygon, color) {\n polygon.fill(color);\n },\n\n drawPolyline: function(draw, controls) {\n const polyline = draw.polyline(controls.join())\n .fill(\"none\")\n .stroke({\n color: \"#BFBFBF\",\n width: 1\n });\n return polyline;\n },\n\n drawLine: function(draw, controls) {\n const line = draw.line(controls.join())\n .fill(\"none\")\n .stroke({\n color: \"#BFBFBF\",\n width: 1\n })\n .move(0, 0);\n return line;\n },\n\n drawPath: function(draw, controls) {\n const polygon = draw.path(controls)\n .fill(\"none\")\n .stroke({\n width: 0\n })\n .move(0, 0);\n return polygon;\n },\n\n makeDraggable: function(item, draggable = true) {\n item.style({\n cursor: \"move\"\n });\n item.draggable(draggable);\n }\n },\n\n members: {\n init: function() {\n return new Promise((resolve, reject) => {\n if (this.getLibReady()) {\n resolve();\n return;\n }\n\n // initialize the script loading\n const svgAndPlugins = [\n \"svg/svg.js\",\n \"svg/svg.draggable.js\",\n \"svg/svg.path.js\",\n \"svg/svg.foreignobject.js\"\n ];\n const dynLoader = new qx.util.DynamicScriptLoader(svgAndPlugins);\n dynLoader.addListenerOnce(\"ready\", () => {\n console.log(\"svgAndPlugins loaded\");\n this.setLibReady(true);\n resolve();\n }, this);\n\n dynLoader.addListener(\"failed\", e => {\n const data = e.getData();\n console.error(\"failed to load \" + data.script);\n reject(data);\n }, this);\n\n dynLoader.start();\n });\n },\n\n createEmptyCanvas: function(element) {\n return SVG(element);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * @asset(jsondiffpatch/jsondiffpatch.*js)\n * @ignore(jsondiffpatch)\n */\n\n/* global jsondiffpatch */\n\n/**\n * A qooxdoo wrapper for\n * JsonDiffPatch\n */\n\nqx.Class.define(\"osparc.wrapper.JsonDiffPatch\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n statics: {\n NAME: \"jsondiffpatch\",\n VERSION: \"0.3.11\",\n URL: \"https://github.com/benjamine/jsondiffpatch\"\n },\n\n construct: function() {\n this.base(arguments);\n },\n\n properties: {\n libReady: {\n nullable: false,\n init: false,\n check: \"Boolean\"\n }\n },\n\n members: {\n __diffPatcher: null,\n\n init: function() {\n // initialize the script loading\n let jsondiffpatchPath = \"jsondiffpatch/jsondiffpatch.min.js\";\n let dynLoader = new qx.util.DynamicScriptLoader([\n jsondiffpatchPath\n ]);\n\n dynLoader.addListenerOnce(\"ready\", e => {\n console.log(jsondiffpatchPath + \" loaded\");\n\n this.__diffPatcher = jsondiffpatch.create();\n\n this.setLibReady(true);\n }, this);\n\n dynLoader.addListener(\"failed\", e => {\n let data = e.getData();\n console.error(\"failed to load \" + data.script);\n }, this);\n\n dynLoader.start();\n },\n\n diff: function(obj1, obj2) {\n // https://github.com/benjamine/jsondiffpatch/blob/master/docs/deltas.md\n let delta = this.__diffPatcher.diff(obj1, obj2);\n return delta;\n },\n\n patch: function(obj, delta) {\n this.__diffPatcher.patch(obj, delta);\n return obj;\n },\n\n // deep clone\n clone: function(obj) {\n return this.__diffPatcher.clone(obj);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/* global jsonTree */\n\n/**\n * @asset(jsontreeviewer/jsonTree.*)\n * @asset(jsontreeviewer/icons.svg)\n * @ignore(jsonTree)\n */\n\n/**\n * A qooxdoo wrapper for\n * JsonTreeViewer\n */\n\nqx.Class.define(\"osparc.wrapper.JsonTreeViewer\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n statics: {\n NAME: \"jsonTreeViewer\",\n VERSION: \"0.6.0\",\n URL: \"https://github.com/summerstyle/jsonTreeViewer\"\n },\n\n construct: function() {\n this.base(arguments);\n },\n\n properties: {\n libReady: {\n nullable: false,\n init: false,\n check: \"Boolean\"\n }\n },\n\n members: {\n init: function() {\n // initialize the script loading\n let jsonTreeViewerPath = \"jsontreeviewer/jsonTree.js\";\n let jsonTreeViewerCss = \"jsontreeviewer/jsonTree.css\";\n let jsonTreeViewerCssUri = qx.util.ResourceManager.getInstance().toUri(jsonTreeViewerCss);\n qx.module.Css.includeStylesheet(jsonTreeViewerCssUri);\n let dynLoader = new qx.util.DynamicScriptLoader([\n jsonTreeViewerPath\n ]);\n\n dynLoader.addListenerOnce(\"ready\", e => {\n console.log(jsonTreeViewerPath + \" loaded\");\n this.setLibReady(true);\n }, this);\n\n dynLoader.addListener(\"failed\", e => {\n let data = e.getData();\n console.error(\"failed to load \" + data.script);\n }, this);\n\n dynLoader.start();\n },\n\n print: function(data, wrapper) {\n jsonTree.create(data, wrapper);\n // tree.expand();\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * @asset(DOMPurify/purify.min.js)\n * @ignore(DOMPurify)\n */\n\n/* global DOMPurify */\n\n/**\n * A qooxdoo wrapper for\n * DOMPurify\n */\n\nqx.Class.define(\"osparc.wrapper.DOMPurify\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n statics: {\n NAME: \"DOMPurify\",\n VERSION: \"2.0.0\",\n URL: \"https://github.com/cure53/DOMPurify\"\n },\n\n construct: function() {\n this.base(arguments);\n },\n\n properties: {\n libReady: {\n nullable: false,\n init: false,\n check: \"Boolean\"\n }\n },\n\n members: {\n __diffPatcher: null,\n\n init: function() {\n // initialize the script loading\n let purifyPath = \"DOMPurify/purify.min.js\";\n let dynLoader = new qx.util.DynamicScriptLoader([\n purifyPath\n ]);\n\n dynLoader.addListenerOnce(\"ready\", e => {\n console.log(purifyPath + \" loaded\");\n this.setLibReady(true);\n }, this);\n\n dynLoader.addListener(\"failed\", e => {\n let data = e.getData();\n console.error(\"failed to load \" + data.script);\n }, this);\n\n dynLoader.start();\n },\n\n sanitize: function(html) {\n // https://github.com/markedjs/marked/issues/655#issuecomment-383226346\n // Add a hook to make all links open a new window\n DOMPurify.addHook(\"afterSanitizeAttributes\", function(node) {\n // set all elements owning target to target=_blank\n if (\"target\" in node) {\n node.setAttribute(\"target\", \"_blank\");\n }\n // set non-HTML/MathML links to xlink:show=new\n if (\n !node.hasAttribute(\"target\") &&\n (node.hasAttribute(\"xlink:href\") || node.hasAttribute(\"href\"))\n ) {\n node.setAttribute(\"xlink:show\", \"new\");\n }\n });\n\n return DOMPurify.sanitize(html);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/* global RadialMenu */\n\n/**\n * @asset(radialMenu/RadialMenuES5.js)\n * @asset(radialMenu/font-awesome.css)\n * @asset(radialMenu/fonts/*)\n * @ignore(RadialMenu)\n */\n\n/**\n * A qooxdoo wrapper for\n * RadialMenu\n * icons: https://victorribeiro.com/radialMenu/font-visualizer.html\n */\n\nqx.Class.define(\"osparc.wrapper.RadialMenu\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n statics: {\n NAME: \"RadialMenu\",\n VERSION: \"1.2.0\",\n URL: \"https://github.com/victorqribeiro/radialMenu\"\n },\n\n properties: {\n libReady: {\n nullable: false,\n init: false,\n check: \"Boolean\"\n }\n },\n\n members: {\n init: function() {\n return new Promise((resolve, reject) => {\n // initialize the script loading\n const radialMenuPath = \"radialMenu/RadialMenuES5.js\";\n const radialMenuFontsCss = \"radialMenu/font-awesome.css\";\n const radialMenuFontsCssUri = qx.util.ResourceManager.getInstance().toUri(radialMenuFontsCss);\n qx.module.Css.includeStylesheet(radialMenuFontsCssUri);\n const dynLoader = new qx.util.DynamicScriptLoader([\n radialMenuPath\n ]);\n\n dynLoader.addListenerOnce(\"ready\", e => {\n this.setLibReady(true);\n resolve(true);\n }, this);\n\n dynLoader.addListener(\"failed\", e => {\n let data = e.getData();\n console.error(\"failed to load \" + data.script);\n reject(data);\n }, this);\n\n dynLoader.start();\n });\n },\n\n createMenu: function(settings = {}) {\n const defSettings = this.__getDefaultSettings();\n const radialMenu = new RadialMenu(Object.assign(defSettings, settings));\n // give id to canvas\n return radialMenu;\n },\n\n __getDefaultSettings: function() {\n return {\n fontSize: 16,\n textColor: qx.theme.manager.Color.getInstance().resolve(\"text\"),\n backgroundColor: qx.theme.manager.Color.getInstance().resolve(\"background-main-2\"),\n hoverBackgroundColor: qx.theme.manager.Color.getInstance().resolve(\"background-main-4\"),\n borderColor: \"transparent\",\n innerCircle: 20,\n outerCircle: 60,\n rotation: 0, // radians\n buttonGap: 0.01 // radians\n // isFixed: true // we will handle the events\n };\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.store.Services\", {\n type: \"static\",\n\n statics: {\n servicesCached: {},\n\n getServicesLatest: function(useCache = true) {\n return new Promise(resolve => {\n if (useCache && Object.keys(this.servicesCached)) {\n // return latest only\n const latest = this.__getLatestCached();\n resolve(latest);\n return;\n }\n\n osparc.data.Resources.getInstance().getAllPages(\"servicesV2\")\n .then(servicesArray => {\n const servicesObj = osparc.service.Utils.convertArrayToObject(servicesArray);\n this.__addHits(servicesObj);\n this.__addTSRInfos(servicesObj);\n this.__addExtraTypeInfos(servicesObj);\n\n // use response to populate servicesCached\n Object.values(servicesObj).forEach(serviceKey => {\n Object.values(serviceKey).forEach(srv => this.__addToCache(srv));\n });\n\n resolve(servicesObj);\n })\n .catch(err => {\n const msg = err.message || qx.locale.Manager.tr(\"Unable to fetch Services\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n console.error(err);\n });\n });\n },\n\n getServicesLatestList: function(excludeFrontend = true, excludeDeprecated = true) {\n return new Promise(resolve => {\n const servicesList = [];\n this.getServicesLatest()\n .then(async servicesLatest => {\n const serviceKeys = Object.keys(servicesLatest);\n for (let i=0; i {\n console.error(err);\n })\n .finally(() => resolve(servicesList));\n });\n },\n\n getService: function(key, version, useCache = true) {\n return new Promise(resolve => {\n if (useCache && this.__isInCache(key, version)) {\n resolve(this.servicesCached[key][version]);\n return;\n }\n\n const params = {\n url: osparc.data.Resources.getServiceUrl(key, version)\n };\n osparc.data.Resources.getOne(\"servicesV2\", params)\n .then(service => {\n this.__addHit(service);\n this.__addTSRInfo(service);\n this.__addExtraTypeInfo(service);\n this.__addToCache(service)\n resolve(service);\n })\n .catch(console.error);\n });\n },\n\n getResources: function(key, version) {\n return new Promise(resolve => {\n if (\n this.__isInCache(key, version) &&\n \"resources\" in this.servicesCached[key][version]\n ) {\n resolve(this.servicesCached[key][version][\"resources\"]);\n return;\n }\n\n const params = {\n url: osparc.data.Resources.getServiceUrl(key, version)\n };\n osparc.data.Resources.get(\"serviceResources\", params)\n .then(resources => {\n this.servicesCached[key][version][\"resources\"] = resources;\n resolve(resources);\n });\n });\n },\n\n getMetadata: function(key, version) {\n if (this.__isInCache(key, version)) {\n return this.servicesCached[key][version];\n }\n return null;\n },\n\n patchServiceData: function(serviceData, fieldKey, value) {\n const key = serviceData[\"key\"];\n const version = serviceData[\"version\"];\n const patchData = {};\n patchData[fieldKey] = value;\n const params = {\n url: osparc.data.Resources.getServiceUrl(key, version),\n data: patchData\n };\n return osparc.data.Resources.fetch(\"servicesV2\", \"patch\", params)\n .then(() => {\n this.servicesCached[key][version][fieldKey] = value;\n serviceData[fieldKey] = value;\n });\n },\n\n __addToCache: function(service) {\n const key = service.key;\n const version = service.version;\n if (!(key in this.servicesCached)) {\n this.servicesCached[key] = {};\n }\n this.servicesCached[key][version] = service;\n this.servicesCached[key][version][\"cached\"] = true;\n\n if (\"history\" in service) {\n service[\"history\"].forEach(historyEntry => {\n const hVersion = historyEntry.version;\n if (!(hVersion in this.servicesCached[key])) {\n this.servicesCached[key][hVersion] = {};\n this.servicesCached[key][hVersion][\"cached\"] = false;\n }\n // merge history data into current metadata\n this.servicesCached[key][hVersion] = {\n ...this.servicesCached[key][hVersion],\n ...historyEntry\n };\n });\n }\n },\n\n __isInCache: function(key, version) {\n return (\n key in this.servicesCached &&\n version in this.servicesCached[key] &&\n this.servicesCached[key][version][\"cached\"]\n );\n },\n\n __getLatestCached: function() {\n const latestServices = {};\n for (const key in this.servicesCached) {\n let versions = Object.keys(this.servicesCached[key]);\n versions = versions.sort(osparc.utils.Utils.compareVersionNumbers).reverse();\n const latest = this.servicesCached[key][versions[0]];\n latestServices[key] = osparc.utils.Utils.deepCloneObject(latest);\n }\n return latestServices;\n },\n\n __addTSRInfo: function(service) {\n if (osparc.data.model.Node.isComputational(service)) {\n osparc.metadata.Quality.attachQualityToObject(service);\n }\n },\n\n __addTSRInfos: function(servicesObj) {\n Object.values(servicesObj).forEach(serviceWVersion => {\n Object.values(serviceWVersion).forEach(service => {\n this.__addTSRInfo(service);\n });\n });\n },\n\n __addExtraTypeInfo: function(service) {\n service[\"xType\"] = service[\"type\"];\n if ([\"backend\", \"frontend\"].includes(service[\"xType\"])) {\n if (osparc.data.model.Node.isFilePicker(service)) {\n service[\"xType\"] = \"file\";\n } else if (osparc.data.model.Node.isParameter(service)) {\n service[\"xType\"] = \"parameter\";\n } else if (osparc.data.model.Node.isIterator(service)) {\n service[\"xType\"] = \"iterator\";\n } else if (osparc.data.model.Node.isProbe(service)) {\n service[\"xType\"] = \"probe\";\n }\n }\n },\n\n __addExtraTypeInfos: function(servicesObj) {\n Object.values(servicesObj).forEach(serviceWVersion => {\n Object.values(serviceWVersion).forEach(service => {\n this.__addExtraTypeInfo(service);\n });\n });\n },\n\n __addHit: function(service, favServices) {\n const cachedHit = favServices ? favServices : osparc.utils.Utils.localCache.getFavServices();\n const found = Object.keys(cachedHit).find(favSrv => favSrv === service[\"key\"]);\n service.hits = found ? cachedHit[found][\"hits\"] : 0;\n },\n\n __addHits: function(servicesObj) {\n const favServices = osparc.utils.Utils.localCache.getFavServices();\n Object.values(servicesObj).forEach(serviceWVersion => {\n Object.values(serviceWVersion).forEach(service => {\n this.__addHit(service, favServices);\n });\n });\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n * Tobias Oetiker (oetiker)\n * Julian Querido (jsaq007)\n\n************************************************************************ */\n\n/**\n * Widget used by StudyBrowser and Explore Browser for displaying Studies, Templates and Services\n */\n\nqx.Class.define(\"osparc.dashboard.GridButtonBase\", {\n extend: osparc.dashboard.CardBase,\n type: \"abstract\",\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.Canvas());\n\n this.set({\n width: this.self().ITEM_WIDTH,\n height: this.self().ITEM_HEIGHT,\n padding: 0,\n allowGrowX: false\n });\n\n this.getChildControl(\"main-layout\");\n },\n\n statics: {\n ITEM_WIDTH: 190,\n ITEM_HEIGHT: 220,\n PADDING: 10,\n TITLE_PADDING: 6,\n SPACING_IN: 5,\n SPACING: 15,\n THUMBNAIL_SIZE: 50,\n POS: {\n TITLE: {\n row: 0,\n column: 0,\n rowSpan: 1,\n colSpan: 4\n },\n THUMBNAIL: {\n row: 2,\n column: 0,\n rowSpan: 1,\n colSpan: 4\n },\n TAGS: {\n row: 3,\n column: 0\n },\n FOOTER: {\n row: 4,\n column: 0,\n rowSpan: 1,\n colSpan: 4\n }\n },\n FPOS: {\n MODIFIED: {\n row: 0,\n column: 0,\n },\n UI_MODE: {\n row: 0,\n column: 1,\n },\n UPDATES: {\n row: 0,\n column: 2,\n },\n TSR: {\n row: 1,\n column: 0,\n },\n HITS: {\n row: 1,\n column: 1,\n },\n PERMISSION: {\n row: 1,\n column: 2,\n }\n }\n },\n\n events: {\n /** (Fired by {@link qx.ui.form.List}) */\n \"action\": \"qx.event.type.Event\"\n },\n\n members: {\n // overridden\n _createChildControlImpl: function(id) {\n let layout;\n let control;\n switch (id) {\n case \"main-layout\": {\n const grid = new qx.ui.layout.Grid();\n grid.setSpacing(this.self().SPACING_IN);\n grid.setRowFlex(2, 1);\n grid.setColumnFlex(0, 1);\n\n control = new qx.ui.container.Composite().set({\n maxWidth: this.self().ITEM_WIDTH,\n maxHeight: this.self().ITEM_HEIGHT\n });\n control.setLayout(grid);\n const header = this.getChildControl(\"header\");\n const body = this.getChildControl(\"body\");\n const footer = this.getChildControl(\"footer\");\n control.add(header, this.self().POS.TITLE);\n control.add(body, this.self().POS.THUMBNAIL);\n control.add(footer, this.self().POS.FOOTER);\n this._add(control, {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n });\n break;\n }\n case \"header\": {\n const hGrid = new qx.ui.layout.Grid().set({\n spacing: 0, // the sub-elements will take care of the padding\n });\n hGrid.setColumnFlex(1, 1);\n hGrid.setRowAlign(0, \"left\", \"middle\");\n control = new qx.ui.container.Composite().set({\n backgroundColor: \"background-card-overlay\",\n padding: 0,\n maxWidth: this.self().ITEM_WIDTH,\n maxHeight: this.self().ITEM_HEIGHT\n });\n control.setLayout(hGrid);\n break;\n }\n case \"body\":\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox(5)).set({\n decorator: \"main\",\n allowGrowY: true,\n allowGrowX: true,\n allowShrinkX: true,\n padding: this.self().PADDING\n });\n control.getContentElement().setStyles({\n \"border-width\": 0\n });\n break;\n case \"footer\": {\n const fGrid = new qx.ui.layout.Grid();\n fGrid.setSpacing(2);\n fGrid.setColumnFlex(0, 1);\n control = new qx.ui.container.Composite().set({\n backgroundColor: \"background-card-overlay\",\n padding: this.self().PADDING - 2,\n maxWidth: this.self().ITEM_WIDTH,\n maxHeight: this.self().ITEM_HEIGHT\n });\n control.setLayout(fGrid);\n break;\n }\n case \"icon\": {\n control = osparc.dashboard.CardBase.createCardIcon();\n layout = this.getChildControl(\"header\");\n layout.add(control, {\n column: 0,\n row: 0,\n });\n break;\n }\n case \"title\":\n control = new qx.ui.basic.Label().set({\n textColor: \"contrasted-text-light\",\n font: \"text-14\",\n padding: this.self().TITLE_PADDING,\n maxWidth: this.self().ITEM_WIDTH,\n });\n layout = this.getChildControl(\"header\");\n layout.addAt(control, 0, {\n column: 1,\n row: 0,\n });\n break;\n case \"subtitle\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(6)).set({\n anonymous: true,\n height: 20,\n padding: 6,\n paddingLeft: 20, // align with icon\n });\n layout = this.getChildControl(\"header\");\n layout.addAt(control, 0, {\n column: 0,\n row: 1,\n colSpan: 2,\n });\n break;\n case \"subtitle-icon\": {\n control = new qx.ui.basic.Image().set({\n alignY: \"middle\",\n allowGrowX: false,\n allowShrinkX: false\n });\n const subtitleLayout = this.getChildControl(\"subtitle\");\n subtitleLayout.addAt(control, 0);\n break;\n }\n case \"subtitle-text\": {\n control = new qx.ui.basic.Label().set({\n textColor: \"contrasted-text-dark\",\n alignY: \"middle\",\n allowGrowX: true,\n allowShrinkX: true,\n rich: true,\n anonymous: true,\n font: \"text-12\",\n allowGrowY: false\n });\n const subtitleLayout = this.getChildControl(\"subtitle\");\n subtitleLayout.addAt(control, 1, {\n flex: 1\n });\n break;\n }\n case \"thumbnail\": {\n layout = this.getChildControl(\"body\");\n const maxWidth = this.self().ITEM_WIDTH;\n control = new osparc.ui.basic.Thumbnail(null, maxWidth, 124);\n control.getChildControl(\"image\").set({\n anonymous: true,\n alignY: \"middle\",\n alignX: \"center\",\n allowGrowX: true,\n allowGrowY: true\n });\n layout.getContentElement().setStyles({\n \"border-width\": \"0px\"\n });\n layout.add(control, {flex: 1});\n break;\n }\n case \"date-by\":\n control = new osparc.ui.basic.DateAndBy();\n layout = this.getChildControl(\"footer\");\n layout.add(control, this.self().FPOS.MODIFIED);\n break;\n case \"project-status\":\n control = new qx.ui.basic.Image().set({\n alignY: \"middle\",\n textColor: \"text\",\n height: 13,\n width: 13,\n margin: [0, 1]\n });\n layout = this.getChildControl(\"subtitle\");\n layout.set({\n visibility: \"visible\"\n });\n layout.addAt(control, 2);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n // overridden\n _applyIcon: function(value, old) {\n if (value) {\n const image = this.getChildControl(\"icon\").getChildControl(\"image\");\n image.set({\n source: value,\n });\n osparc.utils.Utils.setAltToImage(image, \"card-icon\");\n }\n },\n\n // overridden\n _applyThumbnail: function(value, old) {\n if (value.includes(\"@FontAwesome5Solid/\")) {\n value += this.self().THUMBNAIL_SIZE;\n const image = this.getChildControl(\"thumbnail\").getChildControl(\"image\");\n image.set({\n source: value,\n });\n\n [\n \"appear\",\n \"loaded\"\n ].forEach(eventName => {\n image.addListener(eventName, () => this.__fitThumbnailHeight(), this);\n });\n } else {\n this.getContentElement().setStyles({\n \"background-image\": `url(${value})`,\n \"background-repeat\": \"no-repeat\",\n \"background-size\": \"cover\", // auto width, 85% height\n \"background-position\": \"center center\",\n \"background-origin\": \"border-box\"\n });\n }\n },\n\n // overridden\n _applyTitle: function(value, old) {\n const label = this.getChildControl(\"title\");\n label.setValue(value);\n label.setToolTipText(value);\n },\n\n // overridden\n _applyDescription: function() {\n return;\n },\n\n __fitThumbnailHeight: function() {\n const thumbnailLayout = this.getChildControl(\"thumbnail\");\n let maxHeight = this.getHeight() - this.getPaddingTop() - this.getPaddingBottom() - 5;\n const checkThis = [\n \"title\",\n \"body\",\n \"footer\",\n \"tags\"\n ];\n const layout = this.getChildControl(\"main-layout\");\n // eslint-disable-next-line no-underscore-dangle\n layout._getChildren().forEach(child => {\n if (checkThis.includes(child.getSubcontrolId()) && child.getBounds()) {\n maxHeight -= (child.getBounds().height + this.self().SPACING_IN);\n if (child.getSubcontrolId() === \"tags\") {\n maxHeight -= 8;\n }\n }\n });\n // maxHeight -= 4; // for Roboto\n maxHeight -= 18; // for Manrope\n thumbnailLayout.getChildControl(\"image\").setMaxHeight(maxHeight);\n thumbnailLayout.setMaxHeight(maxHeight);\n thumbnailLayout.recheckSize();\n },\n\n /**\n * Event handler for the pointer over event.\n */\n _onPointerOver: function() {\n this.addState(\"hovered\");\n },\n\n /**\n * Event handler for the pointer out event.\n */\n _onPointerOut : function() {\n this.removeState(\"hovered\");\n },\n\n /**\n * Event handler for filtering events.\n */\n _filter: function() {\n this.exclude();\n },\n\n _unfilter: function() {\n this.show();\n }\n },\n\n destruct : function() {\n this.removeListener(\"pointerover\", this._onPointerOver, this);\n this.removeListener(\"pointerout\", this._onPointerOut, this);\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget that shows lists user's studies.\n *\n * It is the entry point to start editing or creating a new study.\n *\n * Also takes care of retrieving the list of services and pushing the changes in the metadata.\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let studyBrowser = new osparc.dashboard.StudyBrowser();\n * this.getRoot().add(studyBrowser);\n *
\n */\n\nqx.Class.define(\"osparc.dashboard.StudyBrowser\", {\n extend: osparc.dashboard.ResourceBrowserBase,\n\n construct: function() {\n this._resourceType = \"study\";\n this.base(arguments);\n\n const store = osparc.store.Store.getInstance();\n this.bind(\"currentContext\", store, \"studyBrowserContext\");\n },\n\n events: {\n \"publishTemplate\": \"qx.event.type.Data\",\n },\n\n properties: {\n currentContext: {\n check: [\"studiesAndFolders\", \"workspaces\", \"search\", \"trash\"],\n nullable: false,\n init: \"studiesAndFolders\",\n event: \"changeCurrentContext\"\n },\n\n currentWorkspaceId: {\n check: \"Number\",\n nullable: true,\n init: null,\n event: \"changeCurrentWorkspaceId\"\n },\n\n currentFolderId: {\n check: \"Number\",\n nullable: true,\n init: null,\n event: \"changeCurrentFolderId\"\n },\n\n multiSelection: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n event: \"changeMultiSelection\",\n apply: \"__applyMultiSelection\"\n },\n\n // Ordering by Possibilities:\n // field: type | uuid | name | description | prj_owner | creation_date | last_change_date\n // direction: asc | desc\n orderBy: {\n check: \"Object\",\n init: {\n field: \"last_change_date\",\n direction: \"desc\"\n }\n }\n },\n\n members: {\n __dontShowTutorial: null,\n __header: null,\n __workspacesList: null,\n __foldersList: null,\n __loadingFolders: null,\n __loadingWorkspaces: null,\n __dragWidget: null,\n\n // overridden\n initResources: function() {\n this._resourcesList = [];\n this.__getActiveStudy()\n .then(() => {\n this.getChildControl(\"resources-layout\");\n this.__attachEventHandlers();\n // set by the url or active study\n const loadStudyId = osparc.store.Store.getInstance().getCurrentStudyId();\n if (loadStudyId) {\n const cancelCB = () => this.reloadResources();\n const isStudyCreation = false;\n this._startStudyById(loadStudyId, null, cancelCB, isStudyCreation);\n } else {\n this.reloadResources();\n }\n // \"Starting...\" page\n this._hideLoadingPage();\n\n // since all the resources (templates, users, orgs...) were already loaded, notifications can be built\n osparc.data.Resources.get(\"notifications\")\n .then(notifications => {\n osparc.notification.Notifications.getInstance().addNotifications(notifications);\n });\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n });\n },\n\n __getActiveStudy: function() {\n const params = {\n url: {\n tabId: osparc.utils.Utils.getClientSessionID()\n }\n };\n return osparc.data.Resources.fetch(\"studies\", \"getActive\", params)\n .then(studyData => {\n if (studyData) {\n osparc.store.Store.getInstance().setCurrentStudyId(studyData[\"uuid\"]);\n }\n })\n .catch(err => console.error(err));\n },\n\n reloadResources: function() {\n if (\n osparc.data.Permissions.getInstance().canDo(\"studies.user.read\") &&\n osparc.auth.Manager.getInstance().isLoggedIn()\n ) {\n this.__reloadFolders();\n this.__reloadStudies();\n } else {\n this.__resetStudiesList();\n }\n },\n\n reloadMoreResources: function() {\n this.__reloadStudies();\n },\n\n __reloadWorkspaces: function() {\n if (\n !osparc.auth.Manager.getInstance().isLoggedIn() ||\n this.getCurrentContext() === \"studiesAndFolders\" ||\n this.__loadingWorkspaces\n ) {\n return;\n }\n\n let request = null;\n switch (this.getCurrentContext()) {\n case \"search\": {\n const filterData = this._searchBarFilter.getFilterData();\n const text = filterData.text ? encodeURIComponent(filterData.text) : \"\";\n request = osparc.store.Workspaces.getInstance().searchWorkspaces(text, this.getOrderBy());\n break;\n }\n case \"workspaces\": {\n request = osparc.store.Workspaces.getInstance().fetchWorkspaces();\n break;\n }\n case \"trash\":\n request = osparc.store.Workspaces.getInstance().fetchAllTrashedWorkspaces();\n break;\n }\n\n this.__loadingWorkspaces = true;\n this.__setWorkspacesToList([]);\n request\n .then(workspaces => {\n this.__setWorkspacesToList(workspaces);\n if (this.getCurrentContext() === \"trash\") {\n if (workspaces.length) {\n this.__header.getChildControl(\"empty-trash-button\").show();\n }\n }\n })\n .catch(console.error)\n .finally(() => {\n this.__addNewWorkspaceButton();\n this.__loadingWorkspaces = null;\n });\n },\n\n __reloadFolders: function() {\n if (\n !osparc.auth.Manager.getInstance().isLoggedIn() ||\n this.getCurrentContext() === \"workspaces\" ||\n this.__loadingFolders\n ) {\n return;\n }\n\n let request = null;\n switch (this.getCurrentContext()) {\n case \"search\": {\n const filterData = this._searchBarFilter.getFilterData();\n const text = filterData.text ? encodeURIComponent(filterData.text) : \"\"; // name, description and uuid\n request = osparc.store.Folders.getInstance().searchFolders(text, this.getOrderBy());\n break;\n }\n case \"studiesAndFolders\": {\n const workspaceId = this.getCurrentWorkspaceId();\n const folderId = this.getCurrentFolderId();\n request = osparc.store.Folders.getInstance().fetchFolders(folderId, workspaceId, this.getOrderBy());\n break;\n }\n case \"trash\":\n request = osparc.store.Folders.getInstance().fetchAllTrashedFolders(this.getOrderBy());\n break;\n }\n\n this.__loadingFolders = true;\n this.__setFoldersToList([]);\n request\n .then(folders => {\n this.__setFoldersToList(folders);\n if (this.getCurrentContext() === \"trash\") {\n if (folders.length) {\n this.__header.getChildControl(\"empty-trash-button\").show();\n }\n }\n })\n .catch(console.error)\n .finally(() => {\n // In favor of the NewPlusButton\n if (!osparc.product.Utils.hasNewPlusButton()) {\n this.__addNewFolderButton();\n }\n this.__loadingFolders = null;\n });\n },\n\n __reloadStudies: function() {\n if (\n !osparc.auth.Manager.getInstance().isLoggedIn() ||\n this.getCurrentContext() === \"workspaces\" ||\n this._loadingResourcesBtn.isFetching()\n ) {\n return;\n }\n\n osparc.data.Resources.get(\"tasks\")\n .then(tasks => {\n if (tasks && tasks.length) {\n this.__tasksReceived(tasks);\n }\n });\n\n // Show \"Contact Us\" message if services.length === 0\n // Most probably is a product-stranger user (it can also be that the catalog is down)\n osparc.store.Services.getServicesLatest()\n .then(services => {\n if (Object.keys(services).length === 0) {\n const noAccessText = new qx.ui.basic.Label().set({\n selectable: true,\n rich: true,\n font: \"text-18\",\n paddingTop: 20\n });\n let msg = this.tr(\"It seems you don't have access to this product.\");\n msg += \"\";\n msg += \"\";\n msg += this.tr(\"Please contact us:\");\n msg += \"\";\n const supportEmail = osparc.store.VendorInfo.getInstance().getSupportEmail();\n noAccessText.setValue(msg + supportEmail);\n this._addToLayout(noAccessText);\n }\n });\n\n this._loadingResourcesBtn.setFetching(true);\n this._loadingResourcesBtn.setVisibility(\"visible\");\n this.__getNextStudiesRequest()\n .then(resp => {\n // Context might have been changed while waiting for the response.\n // The new call is on the way, therefore this response can be ignored.\n const contextChanged = this.__didContextChange(resp[\"params\"][\"url\"]);\n if (contextChanged) {\n return;\n }\n\n const studies = resp[\"data\"];\n this.__addStudiesToList(studies);\n if (this._resourcesContainer.getFlatList()) {\n this._resourcesContainer.getFlatList().nextRequest = resp[\"_links\"][\"next\"];\n }\n\n if (this.getCurrentContext() === \"trash\") {\n if (this._resourcesList.length) {\n this.__header.getChildControl(\"empty-trash-button\").show();\n }\n }\n\n // Show Quick Start if there are no studies in the root folder of the personal workspace\n const quickStartInfo = osparc.product.quickStart.Utils.getQuickStart();\n if (quickStartInfo) {\n const dontShow = osparc.utils.Utils.localCache.getLocalStorageItem(quickStartInfo.localStorageStr);\n if (dontShow === \"true\" || this.__dontShowTutorial) {\n return;\n }\n const nStudies = \"_meta\" in resp ? resp[\"_meta\"][\"total\"] : 0;\n if (\n nStudies === 0 &&\n this.getCurrentContext() === \"studiesAndFolders\" &&\n this.getCurrentWorkspaceId() === null &&\n this.getCurrentFolderId() === null\n ) {\n const quickStartWindow = quickStartInfo.tutorial();\n quickStartWindow.center();\n quickStartWindow.open();\n quickStartWindow.addListener(\"close\", () => {\n this.__dontShowTutorial = true;\n }, this);\n }\n }\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n // stop fetching\n if (this._resourcesContainer.getFlatList()) {\n this._resourcesContainer.getFlatList().nextRequest = null;\n }\n })\n .finally(() => {\n this._loadingResourcesBtn.setFetching(false);\n if (this._resourcesContainer.getFlatList()) {\n this._loadingResourcesBtn.setVisibility(this._resourcesContainer.getFlatList().nextRequest === null ? \"excluded\" : \"visible\");\n }\n this._moreResourcesRequired();\n });\n },\n\n __resetStudiesList: function() {\n this._resourcesList = [];\n // It will remove the study cards\n this._reloadCards();\n },\n\n __addStudiesToList: function(studiesList) {\n studiesList.forEach(study => study[\"resourceType\"] = \"study\");\n studiesList.forEach(study => {\n const idx = this._resourcesList.findIndex(std => std[\"uuid\"] === study[\"uuid\"]);\n if (idx === -1) {\n this._resourcesList.push(study);\n }\n });\n this.__reloadNewCards();\n\n studiesList.forEach(study => {\n const state = study[\"state\"];\n if (state && \"locked\" in state && state[\"locked\"][\"value\"] && state[\"locked\"][\"status\"] === \"CLOSING\") {\n // websocket might have already notified that the state was closed.\n // But the /projects calls response got after the ws message. Ask again to make sure\n const delay = 2000;\n const studyId = study[\"uuid\"];\n setTimeout(() => {\n const params = {\n url: {\n studyId\n }\n };\n osparc.data.Resources.getOne(\"studies\", params)\n .then(studyData => {\n this.__studyStateReceived(study[\"uuid\"], studyData[\"state\"]);\n });\n }, delay);\n }\n });\n },\n\n __setFoldersToList: function(folders) {\n this.__foldersList = folders;\n folders.forEach(folder => folder[\"resourceType\"] = \"folder\");\n this.__reloadFolderCards();\n },\n\n __setWorkspacesToList: function(workspaces) {\n this.__workspacesList = workspaces;\n workspaces.forEach(workspace => workspace[\"resourceType\"] = \"workspace\");\n this.__reloadWorkspaceCards();\n },\n\n _reloadCards: function() {\n const fetching = this._loadingResourcesBtn ? this._loadingResourcesBtn.getFetching() : false;\n const visibility = this._loadingResourcesBtn ? this._loadingResourcesBtn.getVisibility() : \"excluded\";\n\n this._resourcesContainer.setResourcesToList(this._resourcesList);\n const cards = this._resourcesContainer.reloadCards(\"studies\");\n this.__configureStudyCards(cards);\n\n this.__addNewStudyButtons();\n\n const loadMoreBtn = this.__createLoadMoreButton();\n loadMoreBtn.set({\n fetching,\n visibility\n });\n loadMoreBtn.addListener(\"appear\", () => this._moreResourcesRequired());\n this._resourcesContainer.addNonResourceCard(loadMoreBtn);\n\n osparc.filter.UIFilterController.dispatch(\"searchBarFilter\");\n },\n\n __reloadNewCards: function() {\n this._resourcesContainer.setResourcesToList(this._resourcesList);\n const cards = this._resourcesContainer.reloadNewCards();\n this.__configureStudyCards(cards);\n\n osparc.filter.UIFilterController.dispatch(\"searchBarFilter\");\n },\n\n // WORKSPACES\n __reloadWorkspaceCards: function() {\n this._resourcesContainer.setWorkspacesToList(this.__workspacesList);\n this._resourcesContainer.reloadWorkspaces();\n },\n\n __addNewWorkspaceButton: function() {\n if (this.getCurrentContext() !== \"workspaces\") {\n return;\n }\n\n const newWorkspaceCard = new osparc.dashboard.WorkspaceButtonNew();\n newWorkspaceCard.setCardKey(\"new-workspace\");\n newWorkspaceCard.subscribeToFilterGroup(\"searchBarFilter\");\n [\n \"workspaceCreated\",\n \"workspaceDeleted\",\n \"workspaceUpdated\",\n ].forEach(e => {\n newWorkspaceCard.addListener(e, () => this.__reloadWorkspaces());\n });\n this._resourcesContainer.addNewWorkspaceCard(newWorkspaceCard);\n },\n\n _workspaceSelected: function(workspaceId) {\n this._changeContext(\"studiesAndFolders\", workspaceId, null);\n },\n\n _workspaceUpdated: function() {\n this.__reloadWorkspaces();\n },\n\n _trashWorkspaceRequested: function(workspaceId) {\n osparc.store.Workspaces.getInstance().trashWorkspace(workspaceId)\n .then(() => {\n this.__reloadWorkspaces();\n const msg = this.tr(\"Successfully deleted\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"INFO\");\n this._resourceFilter.setTrashEmpty(false);\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(err, \"ERROR\");\n });\n },\n\n _untrashWorkspaceRequested: function(workspace) {\n osparc.store.Workspaces.getInstance().untrashWorkspace(workspace)\n .then(() => {\n this.__reloadWorkspaces();\n const msg = this.tr(\"Successfully restored\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"INFO\");\n this._resourceFilter.evaluateTrashEmpty();\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(err, \"ERROR\");\n });\n },\n\n _deleteWorkspaceRequested: function(workspaceId) {\n osparc.store.Workspaces.getInstance().deleteWorkspace(workspaceId)\n .then(() => {\n this.__reloadWorkspaces();\n const msg = this.tr(\"Successfully deleted\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"INFO\");\n this._resourceFilter.evaluateTrashEmpty();\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n })\n },\n // /WORKSPACES\n\n // FOLDERS\n __reloadFolderCards: function() {\n this._resourcesContainer.setFoldersToList(this.__foldersList);\n this._resourcesContainer.reloadFolders();\n },\n\n __addNewFolderButton: function() {\n if (this.getCurrentContext() !== \"studiesAndFolders\") {\n return;\n }\n const currentWorkspaceId = this.getCurrentWorkspaceId();\n if (currentWorkspaceId) {\n const currentWorkspace = osparc.store.Workspaces.getInstance().getWorkspace(this.getCurrentWorkspaceId());\n if (currentWorkspace && !currentWorkspace.getMyAccessRights()[\"write\"]) {\n // If user can't write in workspace, do not show plus button\n return;\n }\n }\n\n const newFolderCard = new osparc.dashboard.FolderButtonNew();\n newFolderCard.setCardKey(\"new-folder\");\n newFolderCard.subscribeToFilterGroup(\"searchBarFilter\");\n newFolderCard.addListener(\"createFolder\", e => {\n const data = e.getData();\n this.__createFolder(data);\n }, this);\n this._resourcesContainer.addNewFolderCard(newFolderCard);\n },\n\n __createFolder: function(data) {\n const currentFolder = osparc.store.Folders.getInstance().getFolder(this.getCurrentFolderId())\n const parentFolderId = currentFolder ? currentFolder.getFolderId() : null;\n const currentWorkspaceId = this.getCurrentWorkspaceId();\n osparc.store.Folders.getInstance().postFolder(data.name, parentFolderId, currentWorkspaceId)\n .then(() => this.__reloadFolders())\n .catch(err => console.error(err));\n },\n\n _folderSelected: function(folderId) {\n this._changeContext(\"studiesAndFolders\", this.getCurrentWorkspaceId(), folderId);\n },\n\n _folderUpdated: function() {\n this.__reloadFolders();\n },\n\n __showMoveToDifferentWorkspaceWarningMessage: function() {\n const msg = this.tr(\"The permissions will be taken from the new workspace.\");\n const win = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Move\"),\n confirmText: this.tr(\"Move\"),\n });\n win.open();\n return win;\n },\n\n _moveFolderToRequested: function(folderId) {\n const currentWorkspaceId = this.getCurrentWorkspaceId();\n const currentFolderId = this.getCurrentFolderId();\n const moveFolderTo = new osparc.dashboard.MoveResourceTo(currentWorkspaceId, currentFolderId);\n const title = this.tr(\"Move to...\");\n const win = osparc.ui.window.Window.popUpInWindow(moveFolderTo, title, 400, 400);\n moveFolderTo.addListener(\"moveTo\", e => {\n win.close();\n const data = e.getData();\n const destWorkspaceId = data[\"workspaceId\"];\n const destFolderId = data[\"folderId\"];\n this.__folderToFolderRequested(folderId, currentWorkspaceId, destWorkspaceId, destFolderId);\n });\n moveFolderTo.addListener(\"cancel\", () => win.close());\n },\n\n __doMoveFolder: function(folderId, destWorkspaceId, destFolderId) {\n osparc.store.Folders.getInstance().moveFolderToWorkspace(folderId, destWorkspaceId) // first move to workspace\n .then(() => osparc.store.Folders.getInstance().moveFolderToFolder(folderId, destFolderId)) // then move to folder\n .then(() => this.__reloadFolders())\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(err, \"ERROR\");\n });\n },\n\n __folderToFolderRequested: function(folderId, workspaceId, destWorkspaceId, destFolderId) {\n if (destWorkspaceId === workspaceId) {\n this.__doMoveFolder(folderId, destWorkspaceId, destFolderId);\n } else {\n const confirmationWin = this.__showMoveToDifferentWorkspaceWarningMessage();\n confirmationWin.addListener(\"close\", () => {\n if (confirmationWin.getConfirmed()) {\n this.__doMoveFolder(folderId, destWorkspaceId, destFolderId);\n }\n }, this);\n }\n },\n\n __folderToTrash: function(folderId) {\n osparc.store.Folders.getInstance().trashFolder(folderId, this.getCurrentWorkspaceId())\n .then(() => {\n this.__reloadFolders();\n const msg = this.tr(\"Successfully deleted\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"INFO\");\n this._resourceFilter.setTrashEmpty(false);\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(err, \"ERROR\");\n });\n },\n\n _trashFolderRequested: function(folderId) {\n const trashDays = osparc.store.StaticInfo.getInstance().getTrashRetentionDays();\n let msg = this.tr(\"Are you sure you want to delete the Folder and all its content?\");\n msg += \"
\" + this.tr(\"It will be permanently deleted after \") + trashDays + \" days.\";\n const confirmationWin = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Delete\"),\n confirmText: this.tr(\"Delete\"),\n confirmAction: \"warning\",\n });\n confirmationWin.center();\n confirmationWin.open();\n confirmationWin.addListener(\"close\", () => {\n if (confirmationWin.getConfirmed()) {\n this.__folderToTrash(folderId);\n }\n }, this);\n },\n\n _untrashFolderRequested: function(folder) {\n osparc.store.Folders.getInstance().untrashFolder(folder)\n .then(() => {\n this.__reloadFolders();\n const msg = this.tr(\"Successfully restored\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"INFO\");\n this._resourceFilter.evaluateTrashEmpty();\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(err, \"ERROR\");\n })\n },\n\n _deleteFolderRequested: function(folderId) {\n osparc.store.Folders.getInstance().deleteFolder(folderId, this.getCurrentWorkspaceId())\n .then(() => {\n this.__reloadFolders();\n const msg = this.tr(\"Successfully deleted\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"INFO\");\n this._resourceFilter.evaluateTrashEmpty();\n })\n .catch(err => console.error(err));\n },\n // /FOLDERS\n\n __configureStudyCards: function(cards) {\n cards.forEach(card => {\n card.setMultiSelectionMode(this.getMultiSelection());\n card.addListener(\"tap\", e => this.__studyCardClicked(card, e.getNativeEvent().shiftKey), this);\n this._populateCardMenu(card);\n\n this.__attachDragHandlers(card);\n });\n },\n\n __attachDragHandlers: function(card) {\n card.setDraggable(true);\n\n card.addListener(\"dragstart\", e => {\n const studyDataOrigin = card.getResourceData();\n osparc.dashboard.DragDropHelpers.moveStudy.dragStart(e, card, studyDataOrigin);\n });\n\n card.addListener(\"dragend\", () => {\n osparc.dashboard.DragDropHelpers.dragEnd(card);\n });\n },\n\n __studyCardClicked: function(item, isShiftPressed) {\n if (item.isItemNotClickable()) {\n item.setSelected(false);\n return;\n }\n\n if (item.isMultiSelectionMode()) {\n item.setSelected(!item.getSelected());\n const studiesCont = this._resourcesContainer.getFlatList();\n if (isShiftPressed) {\n const lastIdx = studiesCont.getLastSelectedIndex();\n const currentIdx = studiesCont.getIndex(item);\n const minMax = [Math.min(lastIdx, currentIdx), Math.max(lastIdx, currentIdx)];\n for (let i=minMax[0]; i<=minMax[1]; i++) {\n const card = studiesCont.getChildren()[i];\n if (card.isVisible()) {\n card.setSelected(true);\n }\n }\n }\n studiesCont.setLastSelectedIndex(studiesCont.getIndex(item));\n } else {\n const studyData = this.__getStudyData(item.getUuid(), false);\n this._openResourceDetails(studyData);\n this.resetSelection();\n }\n },\n\n __attachEventHandlers: function() {\n const socket = osparc.wrapper.WebSocket.getInstance();\n socket.on(\"projectStateUpdated\", data => {\n if (data) {\n const studyId = data[\"project_uuid\"];\n const state = (\"data\" in data) ? data.data : {};\n const errors = (\"errors\" in data) ? data.errors : [];\n this.__studyStateReceived(studyId, state, errors);\n }\n }, this);\n\n const commandEsc = new qx.ui.command.Command(\"Esc\");\n commandEsc.addListener(\"execute\", e => {\n this.resetSelection();\n this.setMultiSelection(false);\n });\n\n const store = osparc.store.Store.getInstance();\n store.addListener(\"changeTags\", () => {\n this.invalidateStudies();\n this.__reloadStudies();\n }, this);\n store.addListener(\"studyStateChanged\", e => {\n const {\n studyId,\n state,\n } = e.getData();\n this.__studyStateChanged(studyId, state);\n });\n store.addListener(\"studyDebtChanged\", e => {\n const {\n studyId,\n debt,\n } = e.getData();\n this.__studyDebtChanged(studyId, debt);\n });\n\n qx.event.message.Bus.subscribe(\"reloadStudies\", () => {\n this.invalidateStudies();\n this.__reloadStudies();\n }, this);\n },\n\n __didContextChange: function(reqParams) {\n // not needed for the comparison\n delete reqParams[\"type\"];\n delete reqParams[\"limit\"];\n delete reqParams[\"offset\"];\n delete reqParams[\"filters\"];\n\n const cParams = this.__getRequestParams();\n const currentParams = {};\n Object.entries(cParams).forEach(([snakeKey, value]) => {\n const key = osparc.utils.Utils.snakeToCamel(snakeKey);\n currentParams[key] = value === \"null\" ? null : value;\n });\n\n // check the entries in currentParams are the same as the reqParams\n let sameContext = true;\n Object.entries(currentParams).forEach(([key, value]) => {\n // loose equality: will do a Number to String conversion if necessary\n sameContext &= key in reqParams && reqParams[key] == value;\n });\n // both ways\n Object.entries(reqParams).forEach(([key, value]) => {\n // loose equality: will do a Number to String conversion if necessary\n sameContext &= key in currentParams && currentParams[key] == value;\n });\n return !sameContext;\n },\n\n __getNextPageParams: function() {\n const studiesContainer = this._resourcesContainer.getFlatList();\n if (studiesContainer && studiesContainer.nextRequest) {\n // Context might have been changed while waiting for the response.\n // The new call is on the way, therefore this response can be ignored.\n const url = new URL(studiesContainer.nextRequest);\n const urlSearchParams = new URLSearchParams(url.search);\n const urlParams = {};\n for (const [snakeKey, value] of urlSearchParams.entries()) {\n const key = osparc.utils.Utils.snakeToCamel(snakeKey);\n urlParams[key] = value === \"null\" ? null : value;\n }\n const contextChanged = this.__didContextChange(urlParams);\n if (\n !contextChanged &&\n osparc.utils.Utils.hasParamFromURL(studiesContainer.nextRequest, \"offset\") &&\n osparc.utils.Utils.hasParamFromURL(studiesContainer.nextRequest, \"limit\")\n ) {\n return {\n offset: osparc.utils.Utils.getParamFromURL(studiesContainer.nextRequest, \"offset\"),\n limit: osparc.utils.Utils.getParamFromURL(studiesContainer.nextRequest, \"limit\")\n };\n }\n }\n return null;\n },\n\n __getRequestParams: function() {\n const requestParams = {};\n requestParams.orderBy = JSON.stringify(this.getOrderBy());\n\n switch (this.getCurrentContext()) {\n case \"studiesAndFolders\":\n requestParams.workspaceId = this.getCurrentWorkspaceId();\n requestParams.folderId = this.getCurrentFolderId();\n break;\n case \"search\": {\n // Use the ``search`` functionality only if the user types some text\n // tags should only be used to filter the current context (search context ot workspace/folder context)\n const filterData = this._searchBarFilter.getFilterData();\n if (filterData.text) {\n requestParams.text = filterData.text ? encodeURIComponent(filterData.text) : \"\"; // name, description and uuid\n requestParams[\"tagIds\"] = filterData.tags.length ? filterData.tags.join(\",\") : \"\";\n }\n break;\n }\n }\n\n return requestParams;\n },\n\n __getNextStudiesRequest: function() {\n const params = {\n url: {\n offset: 0,\n limit: osparc.dashboard.ResourceBrowserBase.PAGINATED_STUDIES,\n }\n };\n const nextPageParams = this.__getNextPageParams();\n if (nextPageParams) {\n params.url.offset = nextPageParams.offset;\n params.url.limit = nextPageParams.limit;\n }\n const requestParams = this.__getRequestParams();\n Object.entries(requestParams).forEach(([key, value]) => {\n params.url[key] = value;\n });\n\n const options = {\n resolveWResponse: true\n };\n\n let request = null;\n switch (this.getCurrentContext()) {\n case \"trash\":\n request = osparc.data.Resources.fetch(\"studies\", \"getPageTrashed\", params, options);\n break;\n case \"search\":\n request = osparc.data.Resources.fetch(\"studies\", \"getPageSearch\", params, options);\n break;\n case \"studiesAndFolders\":\n request = osparc.data.Resources.fetch(\"studies\", \"getPage\", params, options);\n break;\n }\n return request;\n },\n\n invalidateStudies: function() {\n osparc.store.Store.getInstance().invalidate(\"studies\");\n this.__resetStudiesList();\n if (this._resourcesContainer.getFlatList()) {\n this._resourcesContainer.getFlatList().nextRequest = null;\n }\n },\n\n __addNewPlusButton: function() {\n const newPlusButton = new osparc.dashboard.NewPlusButton();\n this._leftFilters.add(newPlusButton);\n\n const newPlusButtonMenu = newPlusButton.getMenu();\n\n newPlusButtonMenu.addListener(\"createFolder\", e => {\n const data = e.getData();\n this.__createFolder(data);\n }, this);\n\n newPlusButtonMenu.addListener(\"newEmptyStudyClicked\", e => {\n const {\n newStudyLabel,\n } = e.getData();\n this.__newEmptyStudyBtnClicked(newStudyLabel);\n }, this);\n\n newPlusButtonMenu.addListener(\"newStudyFromTemplateClicked\", e => {\n const {\n templateData,\n newStudyLabel,\n } = e.getData();\n if (templateData) {\n this.__newPlanBtnClicked(templateData, newStudyLabel);\n }\n }, this);\n\n newPlusButtonMenu.addListener(\"newStudyFromServiceClicked\", e => {\n const {\n serviceMetadata,\n newStudyLabel,\n } = e.getData();\n if (serviceMetadata) {\n this.__newStudyFromServiceBtnClicked(serviceMetadata[\"key\"], serviceMetadata[\"version\"], newStudyLabel);\n }\n }, this);\n },\n\n __addNewStudyButtons: function() {\n if (this.getCurrentContext() !== \"studiesAndFolders\") {\n return;\n }\n const currentWorkspaceId = this.getCurrentWorkspaceId();\n if (currentWorkspaceId) {\n const currentWorkspace = osparc.store.Workspaces.getInstance().getWorkspace(currentWorkspaceId);\n if (currentWorkspace && !currentWorkspace.getMyAccessRights()[\"write\"]) {\n // If user can't write in workspace, do not show plus buttons\n return;\n }\n }\n\n if (!osparc.product.Utils.hasNewPlusButton()) {\n switch (osparc.product.Utils.getProductName()) {\n case \"tis\":\n case \"tiplite\":\n // this one is different since it groups all new buttons in one new button\n this.__addTIPPlusButton();\n break;\n default:\n this.__addPlusButtons();\n break;\n }\n }\n },\n\n __addPlusButtons: function() {\n const plusButtonConfig = osparc.store.Products.getInstance().getNewStudiesUiConfig();\n if (plusButtonConfig) {\n plusButtonConfig[\"resources\"].forEach(newStudyData => {\n if (newStudyData[\"resourceType\"] === \"study\") {\n this.__addEmptyStudyPlusButton(newStudyData);\n } else if (newStudyData[\"resourceType\"] === \"service\") {\n this.__addNewStudyFromServiceButton(newStudyData);\n }\n });\n }\n },\n\n __addEmptyStudyPlusButton: function(newStudyData) {\n const mode = this._resourcesContainer.getMode();\n const defTitle = this.tr(\"Empty\") + \" \" + osparc.product.Utils.getStudyAlias({\n firstUpperCase: true\n });\n const title = newStudyData[\"title\"] || defTitle;\n const desc = newStudyData[\"description\"] || this.tr(\"Start with an empty study\");\n const newEmptyStudyBtn = (mode === \"grid\") ? new osparc.dashboard.GridButtonNew(title, desc) : new osparc.dashboard.ListButtonNew(title, desc);\n newEmptyStudyBtn.setCardKey(\"new-study\");\n newEmptyStudyBtn.subscribeToFilterGroup(\"searchBarFilter\");\n osparc.utils.Utils.setIdToWidget(newEmptyStudyBtn, newStudyData[\"idToWidget\"]);\n newEmptyStudyBtn.addListener(\"tap\", () => this.__newEmptyStudyBtnClicked(newStudyData[\"newStudyLabel\"]));\n this._resourcesContainer.addNonResourceCard(newEmptyStudyBtn);\n },\n\n __addNewStudyFromServiceButton: function(newStudyData) {\n if (\"expectedKey\" in newStudyData) {\n const key = newStudyData[\"expectedKey\"];\n // Include deprecated versions, they should all be updatable to a non deprecated version\n const versions = osparc.service.Utils.getVersions(key, false);\n if (versions.length && newStudyData) {\n // scale to latest compatible\n const latestVersion = versions[0];\n const latestCompatible = osparc.service.Utils.getLatestCompatible(key, latestVersion);\n osparc.store.Services.getService(latestCompatible[\"key\"], latestCompatible[\"version\"])\n .then(latestMetadata => {\n // make sure this one is not deprecated\n if (osparc.service.Utils.isDeprecated(latestMetadata)) {\n return;\n }\n const title = newStudyData.title + \" \" + osparc.service.Utils.extractVersionDisplay(latestMetadata);\n const desc = newStudyData.description;\n const mode = this._resourcesContainer.getMode();\n const newStudyFromServiceButton = (mode === \"grid\") ? new osparc.dashboard.GridButtonNew(title, desc) : new osparc.dashboard.ListButtonNew(title, desc);\n newStudyFromServiceButton.setCardKey(\"new-\"+key);\n if (newStudyData[\"idToWidget\"]) {\n osparc.utils.Utils.setIdToWidget(newStudyFromServiceButton, newStudyData[\"idToWidget\"]);\n }\n newStudyFromServiceButton.addListener(\"tap\", () => this.__newStudyFromServiceBtnClicked(latestMetadata[\"key\"], latestMetadata[\"version\"], newStudyData.newStudyLabel));\n this._resourcesContainer.addNonResourceCard(newStudyFromServiceButton);\n })\n }\n } else if (\"myMostUsed\" in newStudyData) {\n const excludeFrontend = true;\n const excludeDeprecated = true\n osparc.store.Services.getServicesLatestList(excludeFrontend, excludeDeprecated)\n .then(servicesList => {\n osparc.service.Utils.sortObjectsBasedOn(servicesList, {\n \"sort\": \"hits\",\n \"order\": \"down\"\n });\n for (let i=0; i this.__newStudyFromServiceBtnClicked(latestMetadata[\"key\"], latestMetadata[\"version\"], latestMetadata[\"name\"]));\n this._resourcesContainer.addNonResourceCard(newStudyFromServiceButton);\n }\n });\n }\n },\n\n __addTIPPlusButton: function() {\n const mode = this._resourcesContainer.getMode();\n const title = this.tr(\"New Plan\");\n const newPlansBtn = (mode === \"grid\") ? new osparc.dashboard.GridButtonNew(title) : new osparc.dashboard.ListButtonNew(title);\n newPlansBtn.setCardKey(\"new-study\");\n newPlansBtn.subscribeToFilterGroup(\"searchBarFilter\");\n osparc.utils.Utils.setIdToWidget(newPlansBtn, \"newPlansBtn\");\n this._resourcesContainer.addNonResourceCard(newPlansBtn);\n newPlansBtn.setEnabled(false);\n\n const newStudiesConfig = osparc.store.Products.getInstance().getNewStudiesUiConfig();\n if (newStudiesConfig) {\n newPlansBtn.setEnabled(true);\n\n newPlansBtn.addListener(\"tap\", () => {\n osparc.data.Resources.get(\"templates\")\n .then(templates => {\n if (templates) {\n const newStudies = new osparc.dashboard.NewStudies(newStudiesConfig);\n newStudies.addListener(\"templatesLoaded\", () => {\n newStudies.setGroupBy(\"category\");\n const winTitle = this.tr(\"New Plan\");\n const win = osparc.ui.window.Window.popUpInWindow(newStudies, winTitle, osparc.dashboard.NewStudies.WIDTH+40, 300).set({\n clickAwayClose: false,\n resizable: true\n });\n newStudies.addListener(\"newStudyClicked\", e => {\n win.close();\n const templateInfo = e.getData();\n const templateData = templates.find(t => t.name === templateInfo.expectedTemplateLabel);\n if (templateData) {\n this.__newPlanBtnClicked(templateData, templateInfo.newStudyLabel);\n }\n });\n osparc.utils.Utils.setIdToWidget(win, \"newStudiesWindow\");\n });\n }\n });\n });\n }\n },\n\n // LAYOUT //\n _createLayout: function() {\n this._createSearchBar();\n\n const header = this.__header = new osparc.dashboard.StudyBrowserHeader();\n this.__header.addListener(\"trashEmptied\", () => this.reloadResources(), this);\n this._addToLayout(header);\n\n this._createResourcesLayout(\"studiesList\");\n\n const importStudyButton = this.__createImportButton();\n const isDisabled = osparc.utils.DisabledPlugins.isImportDisabled();\n importStudyButton.setVisibility(isDisabled ? \"excluded\" : \"visible\");\n this._toolbar.add(importStudyButton);\n\n const selectStudiesButton = this.__createSelectButton();\n this._toolbar.add(selectStudiesButton);\n\n const studiesMoveButton = this.__createMoveStudiesButton();\n this._toolbar.add(studiesMoveButton);\n\n const studiesTrashButton = this.__createTrashStudiesButton();\n this._toolbar.add(studiesTrashButton);\n\n const studiesDeleteButton = this.__createDeleteStudiesButton();\n this._toolbar.add(studiesDeleteButton);\n\n this._toolbar.add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n\n this.__addSortByButton();\n this._addViewModeButton();\n\n if (osparc.product.Utils.hasNewPlusButton()) {\n this.__addNewPlusButton();\n }\n\n this._addResourceFilter();\n\n this.__connectContexts();\n this.__connectDropHandlers();\n\n this.__addNewStudyButtons();\n\n const loadMoreBtn = this.__createLoadMoreButton();\n this._resourcesContainer.addNonResourceCard(loadMoreBtn);\n\n this.addListener(\"changeMultiSelection\", e => {\n const multiEnabled = e.getData();\n const cards = this._resourcesContainer.getCards();\n cards.forEach(card => {\n if (!osparc.dashboard.ResourceBrowserBase.isCardButtonItem(card)) {\n card.setEnabled(!multiEnabled);\n }\n });\n importStudyButton.setEnabled(!multiEnabled);\n });\n\n this._resourcesContainer.addListener(\"changeSelection\", e => {\n const currentContext = this.getCurrentContext();\n const selection = e.getData();\n\n studiesMoveButton.set({\n visibility: selection.length && currentContext === \"studiesAndFolders\" ? \"visible\" : \"excluded\",\n label: this.tr(\"Move\") + (selection.length > 1 ? ` (${selection.length})` : \"\"),\n });\n\n studiesTrashButton.set({\n visibility: selection.length && currentContext === \"studiesAndFolders\" ? \"visible\" : \"excluded\",\n label: this.tr(\"Delete\") + (selection.length > 1 ? ` (${selection.length})` : \"\"),\n });\n\n studiesDeleteButton.set({\n visibility: selection.length && currentContext === \"trash\" ? \"visible\" : \"excluded\",\n label: this.tr(\"Delete permanently\") + (selection.length > 1 ? ` (${selection.length})` : \"\"),\n });\n });\n\n this._resourcesContainer.addListener(\"changeVisibility\", () => this._moreResourcesRequired());\n\n return this._resourcesContainer;\n },\n\n __connectContexts: function() {\n const header = this.__header;\n header.addListener(\"locationChanged\", () => {\n const workspaceId = header.getCurrentWorkspaceId();\n const folderId = header.getCurrentFolderId();\n this._changeContext(\"studiesAndFolders\", workspaceId, folderId);\n }, this);\n\n const workspacesAndFoldersTree = this._resourceFilter.getWorkspacesAndFoldersTree();\n workspacesAndFoldersTree.addListener(\"locationChanged\", e => {\n const context = e.getData();\n const workspaceId = context[\"workspaceId\"];\n if (workspaceId === -1) {\n this._changeContext(\"workspaces\");\n } else {\n const folderId = context[\"folderId\"];\n this._changeContext(\"studiesAndFolders\", workspaceId, folderId);\n }\n }, this);\n\n this._resourceFilter.addListener(\"trashContext\", () => {\n this._changeContext(\"trash\");\n });\n\n this._searchBarFilter.addListener(\"filterChanged\", e => {\n const filterData = e.getData();\n if (filterData.text) {\n this._changeContext(\"search\");\n } else {\n const workspaceId = this.getCurrentWorkspaceId();\n const folderId = this.getCurrentFolderId();\n this._changeContext(\"studiesAndFolders\", workspaceId, folderId);\n }\n });\n },\n\n _changeContext: function(context, workspaceId = null, folderId = null) {\n if (\n context !== \"search\" && // reload studies for a new search\n context === this.getCurrentContext() &&\n workspaceId === this.getCurrentWorkspaceId() &&\n folderId === this.getCurrentFolderId()\n ) {\n // didn't really change\n return;\n }\n\n osparc.store.Store.getInstance().setStudyBrowserContext(context);\n this.set({\n currentContext: context,\n currentWorkspaceId: workspaceId,\n currentFolderId: folderId,\n });\n this.resetSelection();\n this.setMultiSelection(false);\n\n // reset lists\n this.__setWorkspacesToList([]);\n this.__setFoldersToList([]);\n this._resourcesList = [];\n this._resourcesContainer.setResourcesToList(this._resourcesList);\n this._resourcesContainer.reloadCards(\"studies\");\n\n this._toolbar.show();\n switch (this.getCurrentContext()) {\n case \"studiesAndFolders\":\n this._searchBarFilter.resetFilters();\n this.__reloadFolders();\n this._loadingResourcesBtn.setFetching(false);\n this.invalidateStudies();\n this.__reloadStudies();\n break;\n case \"workspaces\":\n this._toolbar.exclude();\n this._searchBarFilter.resetFilters();\n this.__reloadWorkspaces();\n break;\n case \"search\":\n this.__reloadWorkspaces();\n this.__reloadFolders();\n this._loadingResourcesBtn.setFetching(false);\n this.invalidateStudies();\n this.__reloadStudies();\n break;\n case \"trash\":\n this._searchBarFilter.resetFilters();\n this.__reloadWorkspaces();\n this.__reloadFolders();\n this._loadingResourcesBtn.setFetching(false);\n this.invalidateStudies();\n this.__reloadStudies();\n break;\n }\n\n // notify header\n const header = this.__header;\n header.set({\n currentWorkspaceId: workspaceId,\n currentFolderId: folderId,\n });\n\n // notify Filters on the left\n this._resourceFilter.contextChanged(context, workspaceId, folderId);\n },\n\n __connectDropHandlers: function() {\n const workspacesAndFoldersTree = this._resourceFilter.getWorkspacesAndFoldersTree();\n workspacesAndFoldersTree.addListener(\"studyToFolderRequested\", e => {\n const {\n studyData,\n destWorkspaceId,\n destFolderId,\n } = e.getData();\n this.__studyToFolderRequested(studyData, destWorkspaceId, destFolderId);\n });\n workspacesAndFoldersTree.addListener(\"folderToFolderRequested\", e => {\n const {\n folderId,\n workspaceId,\n destWorkspaceId,\n destFolderId,\n } = e.getData();\n this.__folderToFolderRequested(folderId, workspaceId, destWorkspaceId, destFolderId);\n });\n\n this._resourceFilter.addListener(\"trashStudyRequested\", e => {\n const studyData = e.getData();\n this.__trashStudyRequested(studyData);\n });\n this._resourceFilter.addListener(\"trashFolderRequested\", e => {\n const folderId = e.getData();\n this._trashFolderRequested(folderId);\n });\n },\n\n _studyToFolderRequested: function(data) {\n const {\n studyData,\n destWorkspaceId,\n destFolderId,\n } = data;\n this.__studyToFolderRequested(studyData, destWorkspaceId, destFolderId);\n },\n\n _folderToFolderRequested: function(data) {\n const {\n folderId,\n workspaceId,\n destWorkspaceId,\n destFolderId,\n } = data;\n this.__folderToFolderRequested(folderId, workspaceId, destWorkspaceId, destFolderId);\n },\n\n __addSortByButton: function() {\n const sortByButton = new osparc.dashboard.SortedByMenuButton();\n sortByButton.set({\n appearance: \"form-button-outlined\"\n });\n osparc.utils.Utils.setIdToWidget(sortByButton, \"sortByButton\");\n sortByButton.addListener(\"sortByChanged\", e => {\n this.setOrderBy(e.getData());\n this.invalidateStudies();\n this.reloadResources();\n }, this);\n this._toolbar.add(sortByButton);\n },\n\n __createLoadMoreButton: function() {\n const mode = this._resourcesContainer.getMode();\n const loadMoreBtn = this._loadingResourcesBtn = (mode === \"grid\") ? new osparc.dashboard.GridButtonLoadMore() : new osparc.dashboard.ListButtonLoadMore();\n loadMoreBtn.setCardKey(\"load-more\");\n osparc.utils.Utils.setIdToWidget(loadMoreBtn, \"studiesLoading\");\n loadMoreBtn.addListener(\"tap\", () => {\n this._moreResourcesRequired();\n });\n return loadMoreBtn;\n },\n\n __createImportButton: function() {\n const importButton = new qx.ui.form.Button(this.tr(\"Import\"));\n importButton.set({\n appearance: \"form-button-outlined\"\n });\n importButton.addListener(\"execute\", () => {\n const importStudy = new osparc.study.Import();\n const win = osparc.ui.window.Window.popUpInWindow(importStudy, this.tr(\"Import Study\"), 400, 125);\n win.set({\n clickAwayClose: false\n });\n importStudy.addListener(\"fileReady\", e => {\n win.close();\n const file = e.getData();\n if (file === null || file === undefined) {\n return;\n }\n const size = file.size;\n const maxSize = 10 * 1000 * 1000 * 1000; // 10 GB\n if (size > maxSize) {\n osparc.FlashMessenger.logAs(`The file is too big. Maximum size is ${maxSize}MB. Please provide with a smaller file or a repository URL.`, \"ERROR\");\n return;\n }\n this.__importStudy(file);\n }, this);\n }, this);\n return importButton;\n },\n\n __createMoveStudiesButton: function() {\n const moveStudiesButton = new qx.ui.form.Button(this.tr(\"Move to\")).set({\n appearance: \"form-button-outlined\",\n visibility: \"excluded\",\n });\n moveStudiesButton.addListener(\"execute\", () => {\n const currentWorkspaceId = this.getCurrentWorkspaceId();\n const currentFolderId = this.getCurrentFolderId();\n const moveStudyTo = new osparc.dashboard.MoveResourceTo(currentWorkspaceId, currentFolderId);\n const title = this.tr(\"Move to...\");\n const win = osparc.ui.window.Window.popUpInWindow(moveStudyTo, title, 400, 400);\n moveStudyTo.addListener(\"moveTo\", e => {\n win.close();\n const data = e.getData();\n const destWorkspaceId = data[\"workspaceId\"];\n const destFolderId = data[\"folderId\"];\n const moveStudies = () => {\n const selection = this._resourcesContainer.getSelection();\n selection.forEach(button => {\n const studyData = button.getResourceData();\n this.__doMoveStudy(studyData, destWorkspaceId, destFolderId);\n });\n this.resetSelection();\n this.setMultiSelection(false);\n }\n if (destWorkspaceId === currentWorkspaceId) {\n moveStudies();\n } else {\n const confirmationWin = this.__showMoveToDifferentWorkspaceWarningMessage();\n confirmationWin.addListener(\"close\", () => {\n if (confirmationWin.getConfirmed()) {\n moveStudies();\n }\n }, this);\n }\n }, this);\n moveStudyTo.addListener(\"cancel\", () => win.close());\n }, this);\n return moveStudiesButton;\n },\n\n __createTrashStudiesButton: function() {\n const trashButton = new qx.ui.form.Button(this.tr(\"Delete\"), \"@FontAwesome5Solid/trash/14\").set({\n appearance: \"warning-button\",\n visibility: \"excluded\"\n });\n osparc.utils.Utils.setIdToWidget(trashButton, \"deleteStudiesBtn\");\n trashButton.addListener(\"execute\", () => {\n const selection = this._resourcesContainer.getSelection();\n const preferencesSettings = osparc.Preferences.getInstance();\n if (preferencesSettings.getConfirmDeleteStudy()) {\n const win = this.__createConfirmTrashWindow(selection.map(button => button.getTitle()));\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n this.__trashStudies(selection.map(button => this.__getStudyData(button.getUuid(), false)), false);\n }\n }, this);\n } else {\n this.__trashStudies(selection.map(button => this.__getStudyData(button.getUuid(), false)), false);\n }\n }, this);\n return trashButton;\n },\n\n __createDeleteStudiesButton: function() {\n const deleteButton = new qx.ui.form.Button(this.tr(\"Delete permanently\"), \"@FontAwesome5Solid/trash/14\").set({\n appearance: \"danger-button\",\n visibility: \"excluded\"\n });\n osparc.utils.Utils.setIdToWidget(deleteButton, \"deleteStudiesBtn\");\n deleteButton.addListener(\"execute\", () => {\n const selection = this._resourcesContainer.getSelection();\n const preferencesSettings = osparc.Preferences.getInstance();\n if (preferencesSettings.getConfirmDeleteStudy()) {\n const win = this.__createConfirmDeleteWindow(selection.map(button => button.getTitle()));\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n this.__doDeleteStudies(selection.map(button => this.__getStudyData(button.getUuid(), false)), false);\n }\n }, this);\n } else {\n this.__doDeleteStudies(selection.map(button => this.__getStudyData(button.getUuid(), false)), false);\n }\n }, this);\n return deleteButton;\n },\n\n\n\n __createSelectButton: function() {\n const selectButton = new qx.ui.form.ToggleButton().set({\n appearance: \"form-button-outlined\",\n marginRight: 8\n });\n selectButton.bind(\"value\", this, \"multiSelection\");\n selectButton.bind(\"value\", selectButton, \"label\", {\n converter: val => val ? this.tr(\"Cancel Selection\") : (this.tr(\"Select \") + osparc.product.Utils.getStudyAlias({\n plural: true,\n firstUpperCase: true\n }))\n });\n this.bind(\"multiSelection\", selectButton, \"value\");\n this.bind(\"currentContext\", selectButton, \"visibility\", {\n converter: currentContext => currentContext === \"studiesAndFolders\" ? \"visible\" : \"excluded\"\n });\n return selectButton;\n },\n\n __applyMultiSelection: function(value) {\n this._resourcesContainer.getCards().forEach(studyItem => {\n if (osparc.dashboard.ResourceBrowserBase.isCardButtonItem(studyItem)) {\n studyItem.setMultiSelectionMode(value);\n if (value === false) {\n studyItem.setSelected(false);\n }\n }\n });\n },\n // LAYOUT //\n\n __studyStateReceived: function(studyId, state, errors) {\n osparc.store.Store.getInstance().setStudyState(studyId, state);\n if (errors && errors.length) {\n console.error(errors);\n }\n },\n\n __studyStateChanged: function(studyId, state) {\n const idx = this._resourcesList.findIndex(study => study[\"uuid\"] === studyId);\n if (idx > -1) {\n this._resourcesList[idx][\"state\"] = state;\n }\n const studyItem = this._resourcesContainer.getCards().find(card => osparc.dashboard.ResourceBrowserBase.isCardButtonItem(card) && card.getUuid() === studyId);\n if (studyItem) {\n studyItem.setState(state);\n }\n },\n\n __studyDebtChanged: function(studyId, debt) {\n const idx = this._resourcesList.findIndex(study => study[\"uuid\"] === studyId);\n if (idx > -1) {\n this._resourcesList[idx][\"debt\"] = debt;\n }\n const studyItem = this._resourcesContainer.getCards().find(card => osparc.dashboard.ResourceBrowserBase.isCardButtonItem(card) && card.getUuid() === studyId);\n if (studyItem) {\n studyItem.setDebt(debt);\n }\n },\n\n __newEmptyStudyBtnClicked: function(newStudyLabel) {\n const existingNames = this._resourcesList.map(study => study[\"name\"]);\n const title = osparc.utils.Utils.getUniqueName(newStudyLabel, existingNames);\n const minStudyData = osparc.data.model.Study.createMinStudyObject();\n minStudyData[\"name\"] = title;\n minStudyData[\"workspaceId\"] = this.getCurrentWorkspaceId();\n minStudyData[\"folderId\"] = this.getCurrentFolderId();\n this._showLoadingPage(this.tr(\"Creating \") + (minStudyData.name || osparc.product.Utils.getStudyAlias()));\n const params = {\n data: minStudyData\n };\n osparc.study.Utils.createStudyAndPoll(params)\n .then(studyData => this.__startStudyAfterCreating(studyData[\"uuid\"]))\n .catch(err => {\n this._hideLoadingPage();\n osparc.FlashMessenger.getInstance().logAs(err.message, \"ERROR\");\n console.error(err);\n });\n },\n\n __newPlanBtnClicked: function(templateData, newStudyName) {\n // do not override cached template data\n const templateCopyData = osparc.utils.Utils.deepCloneObject(templateData);\n const existingNames = this._resourcesList.map(study => study[\"name\"]);\n const title = osparc.utils.Utils.getUniqueName(newStudyName, existingNames);\n templateCopyData.name = title;\n this._showLoadingPage(this.tr(\"Creating \") + (newStudyName || osparc.product.Utils.getStudyAlias()));\n const contextProps = {\n workspaceId: this.getCurrentWorkspaceId(),\n folderId: this.getCurrentFolderId(),\n };\n osparc.study.Utils.createStudyFromTemplate(templateCopyData, this._loadingPage, contextProps)\n .then(studyData => this.__startStudyAfterCreating(studyData[\"uuid\"]))\n .catch(err => {\n this._hideLoadingPage();\n osparc.FlashMessenger.getInstance().logAs(err.message, \"ERROR\");\n console.error(err);\n });\n },\n\n __newStudyFromServiceBtnClicked: function(key, version, newStudyLabel) {\n this._showLoadingPage(this.tr(\"Creating \") + osparc.product.Utils.getStudyAlias());\n const contextProps = {\n workspaceId: this.getCurrentWorkspaceId(),\n folderId: this.getCurrentFolderId(),\n };\n osparc.study.Utils.createStudyFromService(key, version, this._resourcesList, newStudyLabel, contextProps)\n .then(studyId => this.__startStudyAfterCreating(studyId))\n .catch(err => {\n this._hideLoadingPage();\n osparc.FlashMessenger.getInstance().logAs(err.message, \"ERROR\");\n console.error(err);\n });\n },\n\n __startStudyAfterCreating: function(studyId) {\n const openCB = () => this._hideLoadingPage();\n const cancelCB = () => {\n this._hideLoadingPage();\n const params = {\n url: {\n studyId\n }\n };\n osparc.data.Resources.fetch(\"studies\", \"delete\", params);\n };\n const isStudyCreation = true;\n this._startStudyById(studyId, openCB, cancelCB, isStudyCreation);\n },\n\n _updateStudyData: function(studyData) {\n studyData[\"resourceType\"] = \"study\";\n const index = this._resourcesList.findIndex(study => study[\"uuid\"] === studyData[\"uuid\"]);\n if (index === -1) {\n // add it in first position, most likely it's a new study\n this._resourcesList.unshift(studyData);\n } else {\n this._resourcesList[index] = studyData;\n }\n // it will render the studies in the right order\n this._reloadCards();\n },\n\n __removeFromStudyList: function(studyId) {\n const idx = this._resourcesList.findIndex(study => study[\"uuid\"] === studyId);\n if (idx > -1) {\n this._resourcesList.splice(idx, 1);\n }\n this._resourcesContainer.removeCard(studyId);\n },\n\n _populateCardMenu: function(card) {\n const menu = card.getMenu();\n const studyData = card.getResourceData();\n\n const trashed = Boolean(studyData[\"trashedAt\"]);\n const writeAccess = osparc.data.model.Study.canIWrite(studyData[\"accessRights\"]);\n const deleteAccess = osparc.data.model.Study.canIDelete(studyData[\"accessRights\"]);\n\n if (this.getCurrentContext() === \"trash\") {\n if (trashed) {\n if (writeAccess) {\n const untrashButton = this.__getUntrashStudyMenuButton(studyData);\n menu.add(untrashButton);\n }\n if (deleteAccess) {\n const deleteButton = this.__getDeleteStudyMenuButton(studyData, false);\n menu.addSeparator();\n menu.add(deleteButton);\n }\n }\n return;\n }\n\n const openButton = this._getOpenMenuButton(studyData);\n if (openButton) {\n menu.add(openButton);\n }\n\n if (this.getCurrentContext() === \"search\") {\n const renameStudyButton = this.__getOpenLocationMenuButton(studyData);\n menu.add(renameStudyButton);\n }\n\n if (writeAccess) {\n const renameStudyButton = this.__getRenameStudyMenuButton(studyData);\n menu.add(renameStudyButton);\n }\n\n if (writeAccess) {\n const editThumbnailButton = this.__getThumbnailStudyMenuButton(studyData);\n menu.add(editThumbnailButton);\n }\n\n const duplicateStudyButton = this.__getDuplicateMenuButton(studyData);\n menu.add(duplicateStudyButton);\n\n if (osparc.product.Utils.hasConvertToPipelineEnabled()) {\n const convertToPipelineButton = this.__getConvertToPipelineMenuButton(studyData);\n menu.add(convertToPipelineButton);\n }\n\n if (osparc.product.Utils.hasExportCMisEnabled()) {\n const exportStudyButton = this.__getExportCMisMenuButton(studyData);\n menu.add(exportStudyButton);\n }\n\n menu.addSeparator();\n\n // Access Rights are set at workspace level)\n if (writeAccess && this.getCurrentWorkspaceId() === null) {\n const shareButton = this._getShareMenuButton(card);\n if (shareButton) {\n menu.add(shareButton);\n }\n }\n\n if (writeAccess) {\n const tagsButton = this._getTagsMenuButton(card);\n if (tagsButton) {\n menu.add(tagsButton);\n }\n }\n\n const studyDataButton = this.__getStudyDataMenuButton(card);\n menu.add(studyDataButton);\n\n if (osparc.desktop.credits.Utils.areWalletsEnabled()) {\n const billingsSettingsButton = this.__getBillingMenuButton(card);\n menu.add(billingsSettingsButton);\n }\n\n menu.addSeparator();\n\n const moveToButton = this.__getMoveStudyToMenuButton(studyData);\n if (moveToButton) {\n menu.add(moveToButton);\n }\n\n if (deleteAccess) {\n menu.addSeparator();\n const trashButton = this.__getTrashStudyMenuButton(studyData, false);\n menu.add(trashButton);\n } else if (this.__deleteOrRemoveMe(studyData) === \"remove\") {\n // if I'm a collaborator, let me remove myself from the study. In that case it would be a Delete for me\n menu.addSeparator();\n const deleteButton = this.__getDeleteStudyMenuButton(studyData, false);\n menu.add(deleteButton);\n }\n\n card.evaluateMenuButtons();\n },\n\n __getOpenLocationMenuButton: function(studyData) {\n const openLocationButton = new qx.ui.menu.Button(this.tr(\"Open location\"), \"@FontAwesome5Solid/external-link-alt/12\");\n openLocationButton.addListener(\"execute\", () => {\n this._changeContext(\"studiesAndFolders\", studyData[\"workspaceId\"], studyData[\"folderId\"]);\n }, this);\n return openLocationButton;\n },\n\n __getRenameStudyMenuButton: function(studyData) {\n const renameButton = new qx.ui.menu.Button(this.tr(\"Rename...\"), \"@FontAwesome5Solid/pencil-alt/12\");\n renameButton.addListener(\"execute\", () => {\n const renamer = new osparc.widget.Renamer(studyData[\"name\"]);\n renamer.addListener(\"labelChanged\", e => {\n renamer.close();\n const newLabel = e.getData()[\"newLabel\"];\n this.__updateName(studyData, newLabel);\n }, this);\n renamer.center();\n renamer.open();\n }, this);\n return renameButton;\n },\n\n __getThumbnailStudyMenuButton: function(studyData) {\n const thumbButton = new qx.ui.menu.Button(this.tr(\"Thumbnail...\"), \"@FontAwesome5Solid/image/12\");\n thumbButton.addListener(\"execute\", () => {\n osparc.editor.ThumbnailSuggestions.extractThumbnailSuggestions(studyData)\n .then(suggestions => {\n const title = this.tr(\"Edit Thumbnail\");\n const oldThumbnail = studyData.thumbnail;\n const thumbnailEditor = new osparc.editor.ThumbnailEditor(oldThumbnail, suggestions);\n const win = osparc.ui.window.Window.popUpInWindow(thumbnailEditor, title, suggestions.length > 2 ? 500 : 350, 280);\n thumbnailEditor.addListener(\"updateThumbnail\", e => {\n win.close();\n const newUrl = e.getData();\n this.__updateThumbnail(studyData, newUrl);\n }, this);\n thumbnailEditor.addListener(\"cancel\", () => win.close());\n })\n .catch(err => console.error(err));\n }, this);\n return thumbButton;\n },\n\n __updateName: function(studyData, name) {\n osparc.store.Study.patchStudyData(studyData, \"name\", name)\n .then(() => this._updateStudyData(studyData))\n .catch(err => {\n console.error(err);\n const msg = err.message || this.tr(\"Something went wrong Renaming\");\n osparc.FlashMessenger.logAs(msg, \"ERROR\");\n });\n },\n\n __updateThumbnail: function(studyData, url) {\n osparc.store.Study.patchStudyData(studyData, \"thumbnail\", url)\n .then(() => this._updateStudyData(studyData))\n .catch(err => {\n console.error(err);\n const msg = err.message || this.tr(\"Something went wrong updating the Thumbnail\");\n osparc.FlashMessenger.logAs(msg, \"ERROR\");\n });\n },\n\n __getStudyDataMenuButton: function(card) {\n const text = osparc.utils.Utils.capitalize(osparc.product.Utils.getStudyAlias()) + this.tr(\" files...\");\n const studyDataButton = new qx.ui.menu.Button(text, \"@FontAwesome5Solid/file/12\");\n studyDataButton[\"studyDataButton\"] = true;\n studyDataButton.addListener(\"tap\", () => card.openData(), this);\n return studyDataButton;\n },\n\n __getBillingMenuButton: function(card) {\n const text = osparc.utils.Utils.capitalize(this.tr(\"Billing Settings...\"));\n const studyBillingSettingsButton = new qx.ui.menu.Button(text);\n studyBillingSettingsButton[\"billingSettingsButton\"] = true;\n studyBillingSettingsButton.addListener(\"tap\", () => card.openBilling(), this);\n return studyBillingSettingsButton;\n },\n\n __doMoveStudy: function(studyData, destWorkspaceId, destFolderId) {\n this.__moveStudyToWorkspace(studyData, destWorkspaceId) // first move to workspace\n .then(() => this.__moveStudyToFolder(studyData, destFolderId)) // then move to folder\n .then(() => this.__removeFromStudyList(studyData[\"uuid\"]))\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n });\n },\n\n __studyToFolderRequested: function(studyData, destWorkspaceId, destFolderId) {\n if (studyData[\"workspaceId\"] === destWorkspaceId) {\n this.__doMoveStudy(studyData, destWorkspaceId, destFolderId);\n } else {\n const confirmationWin = this.__showMoveToDifferentWorkspaceWarningMessage();\n confirmationWin.addListener(\"close\", () => {\n if (confirmationWin.getConfirmed()) {\n this.__doMoveStudy(studyData, destWorkspaceId, destFolderId);\n }\n }, this);\n }\n },\n\n __getMoveStudyToMenuButton: function(studyData) {\n const moveToButton = new qx.ui.menu.Button(this.tr(\"Move to...\"), \"@FontAwesome5Solid/folder/12\");\n moveToButton[\"moveToButton\"] = true;\n moveToButton.addListener(\"tap\", () => {\n const currentWorkspaceId = this.getCurrentWorkspaceId();\n const currentFolderId = this.getCurrentFolderId();\n const moveStudyTo = new osparc.dashboard.MoveResourceTo(currentWorkspaceId, currentFolderId);\n const title = this.tr(\"Move to...\");\n const win = osparc.ui.window.Window.popUpInWindow(moveStudyTo, title, 400, 400);\n moveStudyTo.addListener(\"moveTo\", e => {\n win.close();\n const data = e.getData();\n const destWorkspaceId = data[\"workspaceId\"];\n const destFolderId = data[\"folderId\"];\n this.__studyToFolderRequested(studyData, destWorkspaceId, destFolderId);\n }, this);\n moveStudyTo.addListener(\"cancel\", () => win.close());\n }, this);\n return moveToButton;\n },\n\n __moveStudyToWorkspace: function(studyData, destWorkspaceId) {\n if (studyData[\"workspaceId\"] === destWorkspaceId) {\n // resolve right away\n return new Promise(resolve => resolve());\n }\n const params = {\n url: {\n studyId: studyData[\"uuid\"],\n workspaceId: destWorkspaceId,\n }\n };\n return osparc.data.Resources.fetch(\"studies\", \"moveToWorkspace\", params)\n .then(() => studyData[\"workspaceId\"] = destWorkspaceId);\n },\n\n __moveStudyToFolder: function(studyData, destFolderId) {\n if (studyData[\"folderId\"] === destFolderId) {\n // resolve right away\n return new Promise(resolve => resolve());\n }\n const params = {\n url: {\n studyId: studyData[\"uuid\"],\n folderId: destFolderId,\n }\n };\n return osparc.data.Resources.fetch(\"studies\", \"moveToFolder\", params)\n .then(() => studyData[\"folderId\"] = destFolderId);\n },\n\n __getDuplicateMenuButton: function(studyData) {\n const duplicateButton = new qx.ui.menu.Button(this.tr(\"Duplicate\"), \"@FontAwesome5Solid/copy/12\");\n duplicateButton[\"duplicateButton\"] = true;\n duplicateButton.addListener(\"execute\", () => this.__duplicateStudy(studyData), this);\n return duplicateButton;\n },\n\n __getConvertToPipelineMenuButton: function(studyData) {\n const convertToPipelineButton = new qx.ui.menu.Button(this.tr(\"Convert to Pipeline\"), null);\n convertToPipelineButton[\"convertToPipelineButton\"] = true;\n const uiMode = osparc.study.Utils.getUiMode(studyData);\n convertToPipelineButton.setVisibility(uiMode === \"standalone\" ? \"visible\" : \"excluded\");\n convertToPipelineButton.addListener(\"execute\", () => {\n this.__updateUIMode(studyData, \"workbench\")\n .catch(err => {\n console.error(err);\n const msg = err.message || this.tr(\"Something went wrong Converting to Pipeline\");\n osparc.FlashMessenger.logAs(msg, \"ERROR\");\n });\n }, this);\n return convertToPipelineButton;\n },\n\n __updateUIMode: function(studyData, uiMode) {\n const studyUI = osparc.utils.Utils.deepCloneObject(studyData[\"ui\"]);\n studyUI[\"mode\"] = uiMode;\n return osparc.info.StudyUtils.patchStudyData(studyData, \"ui\", studyUI)\n .then(() => this._updateStudyData(studyData))\n },\n\n __getExportCMisMenuButton: function(studyData) {\n const exportButton = new qx.ui.menu.Button(this.tr(\"Export cMIS\"), \"@FontAwesome5Solid/cloud-download-alt/12\");\n exportButton[\"exportCMISButton\"] = true;\n const isDisabled = osparc.utils.DisabledPlugins.isExportDisabled();\n exportButton.setVisibility(isDisabled ? \"excluded\" : \"visible\");\n exportButton.addListener(\"execute\", () => this.__exportStudy(studyData), this);\n return exportButton;\n },\n\n _deleteResourceRequested: function(studyId) {\n if (this.getCurrentContext() === \"trash\") {\n this.__deleteStudyRequested(this.__getStudyData(studyId));\n } else {\n this.__trashStudyRequested(this.__getStudyData(studyId));\n }\n },\n\n __trashStudyRequested: function(studyData) {\n const preferencesSettings = osparc.Preferences.getInstance();\n if (preferencesSettings.getConfirmDeleteStudy()) {\n const win = this.__createConfirmTrashWindow([studyData.name]);\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n this.__trashStudy(studyData);\n }\n }, this);\n } else {\n this.__trashStudy(studyData);\n }\n },\n\n __deleteStudyRequested: function(studyData) {\n const preferencesSettings = osparc.Preferences.getInstance();\n if (preferencesSettings.getConfirmDeleteStudy()) {\n const win = this.__deleteOrRemoveMe(studyData) === \"remove\" ? this.__createConfirmRemoveForMeWindow(studyData.name) : this.__createConfirmDeleteWindow([studyData.name]);\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n this.__doDeleteStudy(studyData);\n }\n }, this);\n } else {\n this.__doDeleteStudy(studyData);\n }\n },\n\n __getTrashStudyMenuButton: function(studyData) {\n const trashButton = new qx.ui.menu.Button(this.tr(\"Delete\"), \"@FontAwesome5Solid/trash/12\");\n trashButton[\"trashButton\"] = true;\n trashButton.set({\n appearance: \"menu-button\"\n });\n osparc.utils.Utils.setIdToWidget(trashButton, \"studyItemMenuDelete\");\n trashButton.addListener(\"execute\", () => this.__trashStudyRequested(studyData), this);\n return trashButton;\n },\n\n __getUntrashStudyMenuButton: function(studyData) {\n const restoreButton = new qx.ui.menu.Button(this.tr(\"Restore\"), \"@MaterialIcons/restore_from_trash/16\");\n restoreButton[\"untrashButton\"] = true;\n restoreButton.set({\n appearance: \"menu-button\"\n });\n restoreButton.addListener(\"execute\", () => this.__untrashStudy(studyData), this);\n return restoreButton;\n },\n\n __getDeleteStudyMenuButton: function(studyData) {\n const deleteButton = new qx.ui.menu.Button(this.tr(\"Delete permanently\"), \"@FontAwesome5Solid/trash/12\");\n deleteButton[\"deleteButton\"] = true;\n deleteButton.set({\n appearance: \"menu-button\"\n });\n osparc.utils.Utils.setIdToWidget(deleteButton, \"studyItemMenuDelete\");\n deleteButton.addListener(\"execute\", () => this.__deleteStudyRequested(studyData), this);\n return deleteButton;\n },\n\n __getStudyData: function(id) {\n return this._resourcesList.find(study => study.uuid === id);\n },\n\n __createDuplicateCard: function(studyName) {\n const isGrid = this._resourcesContainer.getMode() === \"grid\";\n const duplicatingStudyCard = isGrid ? new osparc.dashboard.GridButtonPlaceholder() : new osparc.dashboard.ListButtonPlaceholder();\n duplicatingStudyCard.buildLayout(\n this.tr(\"Duplicating \") + studyName,\n osparc.task.Duplicate.ICON + (isGrid ? \"60\" : \"24\"),\n null,\n true\n );\n return duplicatingStudyCard;\n },\n\n __duplicateStudy: function(studyData) {\n const text = this.tr(\"Duplicate process started and added to the background tasks\");\n osparc.FlashMessenger.getInstance().logAs(text, \"INFO\");\n\n const params = {\n url: {\n \"studyId\": studyData[\"uuid\"]\n }\n };\n const options = {\n pollTask: true\n };\n const fetchPromise = osparc.data.Resources.fetch(\"studies\", \"duplicate\", params, options);\n const interval = 1000;\n const pollTasks = osparc.data.PollTasks.getInstance();\n pollTasks.createPollingTask(fetchPromise, interval)\n .then(task => this.__taskDuplicateReceived(task, studyData[\"name\"]))\n .catch(err => {\n console.error(err);\n const msg = err.message || this.tr(\"Something went wrong Duplicating\");\n osparc.FlashMessenger.logAs(msg, \"ERROR\");\n });\n },\n\n __exportStudy: function(studyData) {\n const exportTask = new osparc.task.Export(studyData);\n exportTask.start();\n exportTask.setSubtitle(this.tr(\"Preparing files\"));\n const text = this.tr(\"Exporting process started and added to the background tasks\");\n osparc.FlashMessenger.getInstance().logAs(text, \"INFO\");\n\n const url = window.location.href + \"v0/projects/\" + studyData[\"uuid\"] + \":xport\";\n const progressCB = () => {\n const textSuccess = this.tr(\"Download started\");\n exportTask.setSubtitle(textSuccess);\n };\n osparc.utils.Utils.downloadLink(url, \"POST\", null, progressCB)\n .catch(err => {\n console.error(err);\n const msg = osparc.data.Resources.getErrorMsg(JSON.parse(err.response)) || this.tr(\"Something went wrong Exporting the study\");\n osparc.FlashMessenger.logAs(msg, \"ERROR\");\n })\n .finally(() => {\n exportTask.stop();\n });\n },\n\n __importStudy: function(file) {\n const uploadingLabel = this.tr(\"Uploading file\");\n const importTask = new osparc.task.Import();\n importTask.start();\n importTask.setSubtitle(uploadingLabel);\n\n const text = this.tr(\"Importing process started and added to the background tasks\");\n osparc.FlashMessenger.getInstance().logAs(text, \"INFO\");\n\n const isGrid = this._resourcesContainer.getMode() === \"grid\";\n const importingStudyCard = isGrid ? new osparc.dashboard.GridButtonPlaceholder() : new osparc.dashboard.ListButtonPlaceholder();\n importingStudyCard.buildLayout(\n this.tr(\"Importing Study...\"),\n \"@FontAwesome5Solid/cloud-upload-alt/\" + (isGrid ? \"60\" : \"24\"),\n uploadingLabel,\n true\n );\n importingStudyCard.subscribeToFilterGroup(\"searchBarFilter\");\n this._resourcesContainer.addNonResourceCard(importingStudyCard);\n\n const body = new FormData();\n body.append(\"fileName\", file);\n\n const req = new XMLHttpRequest();\n req.upload.addEventListener(\"progress\", ep => {\n // updateProgress\n if (ep.lengthComputable) {\n const percentComplete = ep.loaded / ep.total * 100;\n importingStudyCard.getChildControl(\"progress-bar\").setValue(percentComplete);\n if (percentComplete === 100) {\n const processingLabel = this.tr(\"Processing study\");\n importingStudyCard.getChildControl(\"state-label\").setValue(processingLabel);\n importTask.setSubtitle(processingLabel);\n importingStudyCard.getChildControl(\"progress-bar\").exclude();\n }\n } else {\n console.log(\"Unable to compute progress information since the total size is unknown\");\n }\n }, false);\n req.addEventListener(\"load\", e => {\n // transferComplete\n if (req.status == 200) {\n const processingLabel = this.tr(\"Processing study\");\n importingStudyCard.getChildControl(\"state-label\").setValue(processingLabel);\n importTask.setSubtitle(processingLabel);\n importingStudyCard.getChildControl(\"progress-bar\").exclude();\n const data = JSON.parse(req.responseText);\n const params = {\n url: {\n \"studyId\": data[\"data\"][\"uuid\"]\n }\n };\n osparc.data.Resources.getOne(\"studies\", params)\n .then(studyData => this._updateStudyData(studyData))\n .catch(err => {\n console.error(err);\n const msg = this.tr(\"Something went wrong Fetching the study\");\n osparc.FlashMessenger.logAs(msg, \"ERROR\");\n })\n .finally(() => {\n importTask.stop();\n this._resourcesContainer.removeNonResourceCard(importingStudyCard);\n });\n } else if (req.status == 400) {\n importTask.stop();\n this._resourcesContainer.removeNonResourceCard(importingStudyCard);\n const msg = osparc.data.Resources.getErrorMsg(JSON.parse(req.response)) || this.tr(\"Something went wrong Importing the study\");\n osparc.FlashMessenger.logAs(msg, \"ERROR\");\n }\n });\n req.addEventListener(\"error\", e => {\n // transferFailed\n importTask.stop();\n this._resourcesContainer.removeNonResourceCard(importingStudyCard);\n const msg = osparc.data.Resources.getErrorMsg(e) || this.tr(\"Something went wrong Importing the study\");\n osparc.FlashMessenger.logAs(msg, \"ERROR\");\n });\n req.addEventListener(\"abort\", e => {\n // transferAborted\n importTask.stop();\n this._resourcesContainer.removeNonResourceCard(importingStudyCard);\n const msg = osparc.data.Resources.getErrorMsg(e) || this.tr(\"Something went wrong Importing the study\");\n osparc.FlashMessenger.logAs(msg, \"ERROR\");\n });\n req.open(\"POST\", \"/v0/projects:import\", true);\n req.send(body);\n },\n\n __untrashStudy: function(studyData) {\n osparc.store.Store.getInstance().untrashStudy(studyData.uuid)\n .then(() => {\n this.__removeFromStudyList(studyData.uuid);\n const msg = this.tr(\"Successfully restored\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"INFO\");\n this._resourceFilter.evaluateTrashEmpty();\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(err, \"ERROR\");\n })\n .finally(() => this.resetSelection());\n },\n\n __trashStudy: function(studyData) {\n osparc.store.Store.getInstance().trashStudy(studyData.uuid)\n .then(() => {\n this.__removeFromStudyList(studyData.uuid);\n const msg = this.tr(\"Successfully deleted\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"INFO\");\n this._resourceFilter.setTrashEmpty(false);\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(err, \"ERROR\");\n })\n .finally(() => this.resetSelection());\n },\n\n __trashStudies: function(studiesData) {\n studiesData.forEach(studyData => this.__trashStudy(studyData));\n },\n\n __deleteOrRemoveMe: function(studyData) {\n const deleteAccess = osparc.data.model.Study.canIDelete(studyData[\"accessRights\"]);\n const myGid = osparc.auth.Data.getInstance().getGroupId();\n const collabGids = Object.keys(studyData[\"accessRights\"]);\n const amICollaborator = collabGids.indexOf(myGid) > -1;\n return (!deleteAccess && collabGids.length > 1 && amICollaborator) ? \"remove\" : \"delete\";\n },\n\n __removeMeFromCollaborators: function(studyData) {\n const arCopy = osparc.utils.Utils.deepCloneObject(studyData[\"accessRights\"]);\n // remove me from collaborators\n const myGid = osparc.auth.Data.getInstance().getGroupId();\n delete arCopy[myGid];\n return osparc.store.Study.patchStudyData(studyData, \"accessRights\", arCopy);\n },\n\n __doDeleteStudy: function(studyData) {\n let operationPromise = null;\n if (this.__deleteOrRemoveMe(studyData) === \"remove\") {\n operationPromise = this.__removeMeFromCollaborators(studyData);\n } else {\n // delete study\n operationPromise = osparc.store.Store.getInstance().deleteStudy(studyData.uuid);\n }\n operationPromise\n .then(() => this.__removeFromStudyList(studyData.uuid))\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(err, \"ERROR\");\n })\n .finally(() => this.resetSelection());\n },\n\n __doDeleteStudies: function(studiesData) {\n studiesData.forEach(studyData => this.__doDeleteStudy(studyData));\n },\n\n __createConfirmTrashWindow: function(studyNames) {\n let msg = this.tr(\"Are you sure you want to delete\");\n if (studyNames.length > 1) {\n const studiesText = osparc.product.Utils.getStudyAlias({plural: true});\n msg += ` ${studyNames.length} ${studiesText}?`;\n } else {\n msg += ` '${studyNames[0]}'?`;\n }\n const trashDays = osparc.store.StaticInfo.getInstance().getTrashRetentionDays();\n msg += \"
\" + (studyNames.length > 1 ? \"They\" : \"It\") + this.tr(` will be permanently deleted after ${trashDays} days.`);\n const confirmationWin = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Delete\"),\n confirmText: this.tr(\"Delete\"),\n confirmAction: \"warning\",\n });\n osparc.utils.Utils.setIdToWidget(confirmationWin.getConfirmButton(), \"confirmDeleteStudyBtn\");\n return confirmationWin;\n },\n\n __createConfirmRemoveForMeWindow: function(studyName) {\n const msg = `'${studyName} ` + this.tr(\"will be removed from your list. Collaborators will still have access.\");\n const confirmationWin = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Remove\"),\n confirmText: this.tr(\"Remove\"),\n confirmAction: \"delete\"\n });\n osparc.utils.Utils.setIdToWidget(confirmationWin.getConfirmButton(), \"confirmDeleteStudyBtn\");\n return confirmationWin;\n },\n\n __createConfirmDeleteWindow: function(studyNames) {\n let msg = this.tr(\"Are you sure you want to delete\");\n const studyAlias = osparc.product.Utils.getStudyAlias({plural: studyNames.length > 1});\n msg += (studyNames.length > 1 ? ` ${studyNames.length} ${studyAlias}?` : ` ${studyNames[0]}?`);\n const confirmationWin = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Delete\") + \" \" + studyAlias,\n confirmText: this.tr(\"Delete permanently\"),\n confirmAction: \"delete\"\n });\n osparc.utils.Utils.setIdToWidget(confirmationWin.getConfirmButton(), \"confirmDeleteStudyBtn\");\n return confirmationWin;\n },\n\n // TASKS //\n __tasksReceived: function(tasks) {\n tasks.forEach(taskData => this._taskDataReceived(taskData));\n },\n\n _taskDataReceived: function(taskData) {\n // a bit hacky\n if (taskData[\"task_id\"].includes(\"from_study\") && !taskData[\"task_id\"].includes(\"as_template\")) {\n const interval = 1000;\n const pollTasks = osparc.data.PollTasks.getInstance();\n const task = pollTasks.addTask(taskData, interval);\n if (task === null) {\n return;\n }\n // ask backend for studyData?\n const studyName = \"\";\n this.__taskDuplicateReceived(task, studyName);\n }\n },\n\n __taskDuplicateReceived: function(task, studyName) {\n const duplicateTaskUI = new osparc.task.Duplicate(studyName);\n duplicateTaskUI.setTask(task);\n duplicateTaskUI.start();\n const duplicatingStudyCard = this.__createDuplicateCard(studyName);\n duplicatingStudyCard.setTask(task);\n duplicatingStudyCard.subscribeToFilterGroup(\"searchBarFilter\");\n this._resourcesContainer.addNonResourceCard(duplicatingStudyCard);\n this.__attachDuplicateEventHandler(task, duplicateTaskUI, duplicatingStudyCard);\n },\n\n __attachDuplicateEventHandler: function(task, taskUI, duplicatingStudyCard) {\n const finished = (msg, msgLevel) => {\n if (msg) {\n osparc.FlashMessenger.logAs(msg, msgLevel);\n }\n taskUI.stop();\n this._resourcesContainer.removeNonResourceCard(duplicatingStudyCard);\n };\n\n task.addListener(\"taskAborted\", () => {\n const msg = this.tr(\"Duplication cancelled\");\n finished(msg, \"INFO\");\n });\n task.addListener(\"resultReceived\", e => {\n finished();\n const duplicatedStudyData = e.getData();\n this._updateStudyData(duplicatedStudyData);\n });\n task.addListener(\"pollingError\", e => {\n const err = e.getData();\n const msg = this.tr(\"Something went wrong Duplicating the study
\") + err.message;\n finished(msg, \"ERROR\");\n });\n }\n // TASKS //\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.TemplateBrowser\", {\n extend: osparc.dashboard.ResourceBrowserBase,\n\n construct: function() {\n this._resourceType = \"template\";\n this.base(arguments);\n },\n\n properties: {\n multiSelection: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n event: \"changeMultiSelection\",\n apply: \"__applyMultiSelection\"\n }\n },\n\n members: {\n __updateAllButton: null,\n\n // overridden\n initResources: function() {\n this._resourcesList = [];\n this.getChildControl(\"resources-layout\");\n this.reloadResources();\n this.__attachEventHandlers();\n this._hideLoadingPage();\n },\n\n reloadResources: function() {\n if (osparc.data.Permissions.getInstance().canDo(\"studies.templates.read\")) {\n this.__reloadTemplates();\n } else {\n this.__setResourcesToList([]);\n }\n },\n\n invalidateTemplates: function() {\n osparc.store.Store.getInstance().invalidate(\"templates\");\n },\n\n __attachEventHandlers: function() {\n const socket = osparc.wrapper.WebSocket.getInstance();\n socket.on(\"projectStateUpdated\", data => {\n if (data) {\n const templateId = data[\"project_uuid\"];\n const state = (\"data\" in data) ? data.data : {};\n const errors = (\"errors\" in data) ? data.errors : [];\n this.__templateStateReceived(templateId, state, errors);\n }\n }, this);\n },\n\n __templateStateReceived: function(templateId, state, errors) {\n osparc.store.Store.getInstance().setTemplateState(templateId, state);\n const idx = this._resourcesList.findIndex(study => study[\"uuid\"] === templateId);\n if (idx > -1) {\n this._resourcesList[idx][\"state\"] = state;\n }\n const templateItem = this._resourcesContainer.getCards().find(card => osparc.dashboard.ResourceBrowserBase.isCardButtonItem(card) && card.getUuid() === templateId);\n if (templateItem) {\n templateItem.setState(state);\n }\n if (errors.length) {\n console.error(errors);\n }\n },\n\n __reloadTemplates: function() {\n osparc.data.Resources.getInstance().getAllPages(\"templates\")\n .then(templates => this.__setResourcesToList(templates))\n .catch(err => {\n console.error(err);\n this.__setResourcesToList([]);\n });\n },\n\n _updateTemplateData: function(templateData) {\n templateData[\"resourceType\"] = \"template\";\n const templatesList = this._resourcesList;\n const index = templatesList.findIndex(template => template[\"uuid\"] === templateData[\"uuid\"]);\n if (index !== -1) {\n templatesList[index] = templateData;\n this._reloadCards();\n }\n },\n\n __setResourcesToList: function(templatesList) {\n templatesList.forEach(template => template[\"resourceType\"] = \"template\");\n this._resourcesList = templatesList;\n this._reloadCards();\n },\n\n _reloadCards: function() {\n this._resourcesContainer.setResourcesToList(this._resourcesList);\n const cards = this._resourcesContainer.reloadCards(\"templates\");\n cards.forEach(card => {\n card.setMultiSelectionMode(this.getMultiSelection());\n card.addListener(\"tap\", () => this.__itemClicked(card), this);\n card.addListener(\"changeUpdatable\", () => this.__evaluateUpdateAllButton(), this);\n card.addListener(\"changeVisibility\", () => this.__evaluateUpdateAllButton(), this);\n this._populateCardMenu(card);\n });\n this.__evaluateUpdateAllButton();\n osparc.filter.UIFilterController.dispatch(\"searchBarFilter\");\n },\n\n __itemClicked: function(card) {\n if (!card.getBlocked()) {\n const templateData = this.__getTemplateData(card.getUuid());\n this._openResourceDetails(templateData);\n }\n this.resetSelection();\n },\n\n _createStudyFromTemplate: function(templateData) {\n if (!this._checkLoggedIn()) {\n return;\n }\n\n const studyAlias = osparc.product.Utils.getStudyAlias({firstUpperCase: true});\n this._showLoadingPage(this.tr(\"Creating \") + (templateData.name || studyAlias));\n\n if (osparc.desktop.credits.Utils.areWalletsEnabled()) {\n const studyOptions = new osparc.study.StudyOptions();\n // they will be patched once the study is created\n studyOptions.setPatchStudy(false);\n studyOptions.setStudyData(templateData);\n studyOptions.getChildControl(\"open-button\").setLabel(this.tr(\"New\"));\n const win = osparc.study.StudyOptions.popUpInWindow(studyOptions);\n win.moveItUp();\n const cancelStudyOptions = () => {\n this._hideLoadingPage();\n win.close();\n }\n win.addListener(\"cancel\", () => cancelStudyOptions());\n studyOptions.addListener(\"cancel\", () => cancelStudyOptions());\n studyOptions.addListener(\"startStudy\", () => {\n const newName = studyOptions.getChildControl(\"title-field\").getValue();\n const walletSelection = studyOptions.getChildControl(\"wallet-selector\").getSelection();\n const nodesPricingUnits = studyOptions.getChildControl(\"study-pricing-units\").getNodePricingUnits();\n win.close();\n\n this._showLoadingPage(this.tr(\"Creating \") + (newName || studyAlias));\n osparc.study.Utils.createStudyFromTemplate(templateData, this._loadingPage)\n .then(newStudyData => {\n const studyId = newStudyData[\"uuid\"];\n const openCB = () => {\n this._hideLoadingPage();\n };\n const cancelCB = () => {\n this._hideLoadingPage();\n const params = {\n url: {\n studyId\n }\n };\n osparc.data.Resources.fetch(\"studies\", \"delete\", params);\n };\n\n const promises = [];\n // patch the name\n if (newStudyData[\"name\"] !== newName) {\n promises.push(osparc.study.StudyOptions.updateName(newStudyData, newName));\n }\n // patch the wallet\n if (walletSelection.length && walletSelection[0][\"walletId\"]) {\n const walletId = walletSelection[0][\"walletId\"];\n promises.push(osparc.study.StudyOptions.updateWallet(newStudyData[\"uuid\"], walletId));\n }\n // patch the pricing units\n // the nodeIds are coming from the original template, they need to be mapped to the newStudy\n const workbench = newStudyData[\"workbench\"];\n const nodesIdsListed = [];\n Object.keys(workbench).forEach(nodeId => {\n const nodeData = workbench[nodeId];\n if (osparc.study.StudyPricingUnits.includeInList(nodeData)) {\n nodesIdsListed.push(nodeId);\n }\n });\n nodesPricingUnits.forEach((nodePricingUnits, idx) => {\n const selectedPricingUnitId = nodePricingUnits.getPricingUnits().getSelectedUnitId();\n if (selectedPricingUnitId) {\n const nodeId = nodesIdsListed[idx];\n const pricingPlanId = nodePricingUnits.getPricingPlanId();\n promises.push(osparc.study.NodePricingUnits.patchPricingUnitSelection(studyId, nodeId, pricingPlanId, selectedPricingUnitId));\n }\n });\n\n Promise.all(promises)\n .then(() => {\n win.close();\n const showStudyOptions = false;\n this._startStudyById(studyId, openCB, cancelCB, showStudyOptions);\n });\n })\n .catch(err => {\n this._hideLoadingPage();\n osparc.FlashMessenger.getInstance().logAs(err.message, \"ERROR\");\n console.error(err);\n });\n });\n } else {\n osparc.study.Utils.createStudyFromTemplate(templateData, this._loadingPage)\n .then(newStudyData => {\n const studyId = newStudyData[\"uuid\"];\n const openCB = () => this._hideLoadingPage();\n const cancelCB = () => {\n this._hideLoadingPage();\n const params = {\n url: {\n studyId\n }\n };\n osparc.data.Resources.fetch(\"studies\", \"delete\", params);\n };\n const isStudyCreation = true;\n this._startStudyById(studyId, openCB, cancelCB, isStudyCreation);\n })\n .catch(err => {\n this._hideLoadingPage();\n osparc.FlashMessenger.getInstance().logAs(err.message, \"ERROR\");\n console.error(err);\n });\n }\n },\n\n // LAYOUT //\n _createLayout: function() {\n this._createSearchBar();\n this._createResourcesLayout(\"templatesList\");\n\n const updateAllButton = this.__createUpdateAllButton();\n if (updateAllButton) {\n this._toolbar.add(updateAllButton);\n }\n\n this._toolbar.add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n this._addGroupByButton();\n this._addViewModeButton();\n\n this._addResourceFilter();\n\n this._resourcesContainer.addListener(\"changeVisibility\", () => this.__evaluateUpdateAllButton());\n\n return this._resourcesContainer;\n },\n\n __createUpdateAllButton: function() {\n const updateAllButton = this.__updateAllButton = new osparc.ui.form.FetchButton(this.tr(\"Update all\")).set({\n appearance: \"form-button-outlined\"\n });\n updateAllButton.exclude();\n updateAllButton.addListener(\"tap\", () => {\n const templatesAlias = osparc.product.Utils.getTemplateAlias({plural: true});\n const msg = this.tr(\"Are you sure you want to update all \") + templatesAlias + \"?\";\n const win = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Update\") + \" \" + templatesAlias,\n confirmText: this.tr(\"Update all\"),\n confirmAction: \"create\"\n });\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n this.__updateAllTemplates();\n }\n }, this);\n });\n return updateAllButton;\n },\n\n __evaluateUpdateAllButton: function() {\n if (this._resourcesContainer) {\n const visibleCards = this._resourcesContainer.getCards().filter(card => card.isVisible());\n const anyUpdatable = visibleCards.some(card => (card.getUpdatable() !== null && osparc.data.model.Study.canIWrite(card.getResourceData()[\"accessRights\"])));\n this.__updateAllButton.setVisibility(anyUpdatable ? \"visible\" : \"excluded\");\n }\n },\n\n __updateAllTemplates: async function() {\n if (this._resourcesContainer) {\n this.__updateAllButton.setFetching(true);\n const visibleCards = this._resourcesContainer.getCards().filter(card => card.isVisible());\n const updatableCards = visibleCards.filter(card => (card.getUpdatable() !== null && osparc.data.model.Study.canIWrite(card.getResourceData()[\"accessRights\"])));\n const templatesData = [];\n updatableCards.forEach(card => templatesData.push(card.getResourceData()));\n const uniqueTemplatesUuids = [];\n const uniqueTemplatesData = templatesData.filter(templateData => {\n const isDuplicate = uniqueTemplatesUuids.includes(templateData.uuid);\n if (!isDuplicate) {\n uniqueTemplatesUuids.push(templateData.uuid);\n return true;\n }\n return false;\n });\n await this.__updateTemplates(uniqueTemplatesData);\n\n this.__updateAllButton.setFetching(false);\n }\n },\n\n __updateTemplates: async function(uniqueTemplatesData) {\n for (const uniqueTemplateData of uniqueTemplatesData) {\n const studyData = osparc.data.model.Study.deepCloneStudyObject(uniqueTemplateData);\n const templatePromises = [];\n for (const nodeId in studyData[\"workbench\"]) {\n const node = studyData[\"workbench\"][nodeId];\n const latestCompatible = osparc.service.Utils.getLatestCompatible(node[\"key\"], node[\"version\"]);\n if (latestCompatible && (node[\"key\"] !== latestCompatible[\"key\"] || node[\"version\"] !== latestCompatible[\"version\"])) {\n const patchData = {};\n if (node[\"key\"] !== latestCompatible[\"key\"]) {\n patchData[\"key\"] = latestCompatible[\"key\"];\n }\n if (node[\"version\"] !== latestCompatible[\"version\"]) {\n patchData[\"version\"] = latestCompatible[\"version\"];\n }\n templatePromises.push(osparc.store.Study.patchNodeData(uniqueTemplateData, nodeId, patchData));\n }\n }\n Promise.all(templatePromises)\n .then(() => this._updateTemplateData(uniqueTemplateData))\n .catch(err => {\n if (\"message\" in err) {\n osparc.FlashMessenger.getInstance().logAs(err.message, \"ERROR\");\n } else {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong\"), \"ERROR\");\n }\n });\n }\n },\n // LAYOUT //\n\n // MENU //\n _populateCardMenu: function(card) {\n const menu = card.getMenu();\n const templateData = card.getResourceData();\n\n const editButton = this.__getEditTemplateMenuButton(templateData);\n if (editButton) {\n menu.add(editButton);\n menu.addSeparator();\n }\n\n const openButton = this._getOpenMenuButton(templateData);\n if (openButton) {\n menu.add(openButton);\n }\n\n const shareButton = this._getShareMenuButton(card);\n if (shareButton) {\n menu.add(shareButton);\n }\n\n const tagsButton = this._getTagsMenuButton(card);\n if (tagsButton) {\n menu.add(tagsButton);\n }\n\n const deleteButton = this.__getDeleteTemplateMenuButton(templateData);\n if (deleteButton && editButton) {\n menu.addSeparator();\n menu.add(deleteButton);\n }\n },\n\n __getEditTemplateMenuButton: function(templateData) {\n const isCurrentUserOwner = osparc.data.model.Study.canIWrite(templateData[\"accessRights\"]);\n if (!isCurrentUserOwner) {\n return null;\n }\n\n const editButton = new qx.ui.menu.Button(this.tr(\"Edit\"));\n editButton.addListener(\"execute\", () => this.__editTemplate(templateData), this);\n return editButton;\n },\n\n __getTemplateData: function(id) {\n return this._resourcesList.find(template => template.uuid === id);\n },\n\n _deleteResourceRequested: function(templateId) {\n this.__deleteTemplateRequested(this.__getTemplateData(templateId));\n },\n\n __deleteTemplateRequested: function(templateData) {\n const rUSure = this.tr(\"Are you sure you want to delete \");\n const msg = rUSure + \"\" + templateData.name + \"?\";\n const win = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Delete\"),\n confirmText: this.tr(\"Delete\"),\n confirmAction: \"delete\"\n });\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n this.__doDeleteTemplate(templateData);\n }\n }, this);\n },\n\n __getDeleteTemplateMenuButton: function(templateData) {\n const isCurrentUserOwner = osparc.data.model.Study.canIDelete(templateData[\"accessRights\"]);\n if (!isCurrentUserOwner) {\n return null;\n }\n\n const deleteButton = new qx.ui.menu.Button(this.tr(\"Delete\"), \"@FontAwesome5Solid/trash/12\");\n deleteButton.set({\n appearance: \"menu-button\"\n });\n osparc.utils.Utils.setIdToWidget(deleteButton, \"studyItemMenuDelete\");\n deleteButton.addListener(\"execute\", () => this.__deleteTemplateRequested(templateData), this);\n return deleteButton;\n },\n\n __editTemplate: function(studyData) {\n const isStudyCreation = false;\n this._startStudyById(studyData.uuid, null, null, isStudyCreation);\n },\n\n __doDeleteTemplate: function(studyData) {\n const myGid = osparc.auth.Data.getInstance().getGroupId();\n const collabGids = Object.keys(studyData[\"accessRights\"]);\n const amICollaborator = collabGids.indexOf(myGid) > -1;\n\n let operationPromise = null;\n if (collabGids.length > 1 && amICollaborator) {\n const arCopy = osparc.utils.Utils.deepCloneObject(studyData[\"accessRights\"]);\n // remove collaborator\n delete arCopy[myGid];\n operationPromise = osparc.store.Study.patchStudyData(studyData, \"accessRights\", arCopy);\n } else {\n // delete study\n operationPromise = osparc.store.Store.getInstance().deleteStudy(studyData.uuid);\n }\n operationPromise\n .then(() => this.__removeFromTemplateList(studyData.uuid))\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(err, \"ERROR\");\n });\n },\n\n __removeFromTemplateList: function(templateId) {\n const idx = this._resourcesList.findIndex(study => study[\"uuid\"] === templateId);\n if (idx > -1) {\n this._resourcesList.splice(idx, 1);\n }\n this._resourcesContainer.removeCard(templateId);\n },\n // MENU //\n\n // TASKS //\n __attachToTemplateEventHandler: function(task, taskUI, toTemplateCard) {\n const finished = (msg, msgLevel) => {\n if (msg) {\n osparc.FlashMessenger.logAs(msg, msgLevel);\n }\n taskUI.stop();\n this._resourcesContainer.removeNonResourceCard(toTemplateCard);\n };\n\n task.addListener(\"taskAborted\", () => {\n const msg = this.tr(\"Study to Template cancelled\");\n finished(msg, \"INFO\");\n });\n task.addListener(\"updateReceived\", e => {\n const updateData = e.getData();\n if (\"task_progress\" in updateData && toTemplateCard) {\n const progress = updateData[\"task_progress\"];\n toTemplateCard.getChildControl(\"progress-bar\").set({\n value: progress[\"percent\"]*100\n });\n toTemplateCard.getChildControl(\"state-label\").set({\n value: progress[\"message\"]\n });\n }\n }, this);\n task.addListener(\"resultReceived\", e => {\n finished();\n this.reloadResources();\n });\n task.addListener(\"pollingError\", e => {\n const err = e.getData();\n const msg = this.tr(\"Something went wrong Publishing the study
\") + err.message;\n finished(msg, \"ERROR\");\n });\n },\n\n _taskDataReceived: function(taskData) {\n // a bit hacky\n if (taskData[\"task_id\"].includes(\"from_study\") && taskData[\"task_id\"].includes(\"as_template\")) {\n const interval = 1000;\n const pollTasks = osparc.data.PollTasks.getInstance();\n const task = pollTasks.addTask(taskData, interval);\n if (task === null) {\n return;\n }\n // ask backend for studyData?\n const studyName = \"\";\n this.taskToTemplateReceived(task, studyName);\n }\n },\n\n taskToTemplateReceived: function(task, studyName) {\n const toTemplateTaskUI = new osparc.task.ToTemplate(studyName);\n toTemplateTaskUI.setTask(task);\n toTemplateTaskUI.start();\n const toTemplateCard = this.__createToTemplateCard(studyName);\n toTemplateCard.setTask(task);\n this.__attachToTemplateEventHandler(task, toTemplateTaskUI, toTemplateCard);\n },\n\n __createToTemplateCard: function(studyName) {\n const isGrid = this._resourcesContainer.getMode() === \"grid\";\n const toTemplateCard = isGrid ? new osparc.dashboard.GridButtonPlaceholder() : new osparc.dashboard.ListButtonPlaceholder();\n toTemplateCard.buildLayout(\n this.tr(\"Publishing \") + studyName,\n osparc.task.ToTemplate.ICON + (isGrid ? \"60\" : \"24\"),\n null,\n true\n );\n toTemplateCard.subscribeToFilterGroup(\"searchBarFilter\");\n this._resourcesContainer.addNonResourceCard(toTemplateCard);\n return toTemplateCard;\n }\n // TASKS //\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * @asset(form/service.json)\n * @asset(form/service-data.json)\n * @ignore(Headers)\n * @ignore(fetch)\n */\n\nqx.Class.define(\"osparc.dashboard.ServiceBrowser\", {\n extend: osparc.dashboard.ResourceBrowserBase,\n\n construct: function() {\n this._resourceType = \"service\";\n this.base(arguments);\n\n this.__sortBy = osparc.service.SortServicesButtons.DefaultSorting;\n },\n\n properties: {\n multiSelection: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n event: \"changeMultiSelection\",\n apply: \"__applyMultiSelection\"\n }\n },\n\n members: {\n __sortBy: null,\n\n // overridden\n initResources: function() {\n this._resourcesList = [];\n this.getChildControl(\"resources-layout\");\n this.reloadResources();\n this._hideLoadingPage();\n },\n\n reloadResources: function() {\n this.__loadServices();\n },\n\n __loadServices: function() {\n const excludeFrontend = true;\n const excludeDeprecated = true\n osparc.store.Services.getServicesLatestList(excludeFrontend, excludeDeprecated)\n .then(servicesList => this.__setServicesToList(servicesList));\n },\n\n _updateServiceData: function(serviceData) {\n serviceData[\"resourceType\"] = \"service\";\n const servicesList = this._resourcesList;\n const index = servicesList.findIndex(service => service[\"key\"] === serviceData[\"key\"] && service[\"version\"] === serviceData[\"version\"]);\n if (index !== -1) {\n servicesList[index] = serviceData;\n this._reloadCards();\n }\n },\n\n __setServicesToList: function(servicesList) {\n servicesList.forEach(service => service[\"resourceType\"] = \"service\");\n osparc.service.Utils.sortObjectsBasedOn(servicesList, this.__sortBy);\n this._resourcesList = servicesList;\n this._reloadCards();\n },\n\n _reloadCards: function() {\n this._resourcesContainer.setResourcesToList(this._resourcesList);\n const cards = this._resourcesContainer.reloadCards(\"services\");\n cards.forEach(card => {\n card.setMultiSelectionMode(this.getMultiSelection());\n card.addListener(\"tap\", () => this.__itemClicked(card), this);\n this._populateCardMenu(card);\n });\n osparc.filter.UIFilterController.dispatch(\"searchBarFilter\");\n },\n\n __itemClicked: function(card) {\n const serviceData = card.getResourceData();\n this._openResourceDetails(serviceData);\n this.resetSelection();\n },\n\n _createStudyFromService: function(key, version) {\n if (!this._checkLoggedIn()) {\n return;\n }\n\n const studyAlias = osparc.product.Utils.getStudyAlias({firstUpperCase: true});\n this._showLoadingPage(this.tr(\"Creating \") + studyAlias);\n\n osparc.study.Utils.createStudyFromService(key, version)\n .then(studyId => {\n const openCB = () => this._hideLoadingPage();\n const cancelCB = () => {\n this._hideLoadingPage();\n const params = {\n url: {\n studyId\n }\n };\n osparc.data.Resources.fetch(\"studies\", \"delete\", params);\n };\n const isStudyCreation = true;\n this._startStudyById(studyId, openCB, cancelCB, isStudyCreation);\n })\n .catch(err => {\n this._hideLoadingPage();\n osparc.FlashMessenger.getInstance().logAs(err.message, \"ERROR\");\n console.error(err);\n });\n },\n\n // LAYOUT //\n _createLayout: function() {\n this._createSearchBar();\n this._createResourcesLayout(\"servicesList\");\n\n this.__addNewServiceButtons();\n this._toolbar.add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n this.__addSortingButtons();\n this._addGroupByButton();\n this._addViewModeButton();\n\n this._addResourceFilter();\n\n return this._resourcesContainer;\n },\n\n __addNewServiceButtons: function() {\n const platformName = osparc.store.StaticInfo.getInstance().getPlatformName();\n const hasRights = osparc.data.Permissions.getInstance().canDo(\"studies.template.create.productAll\");\n if (platformName === \"dev\") {\n const testDataButton = new qx.ui.form.Button(this.tr(\"Test with data\"), \"@FontAwesome5Solid/plus-circle/14\");\n testDataButton.addListener(\"execute\", () => {\n osparc.utils.Utils.fetchJSON(\"/resource/form/service-data.json\")\n .then(data => {\n this.__displayServiceSubmissionForm(data);\n });\n });\n this._toolbar.add(testDataButton);\n }\n\n const addServiceButton = new qx.ui.form.Button(this.tr(\"Submit new service\"), \"@FontAwesome5Solid/plus-circle/14\");\n addServiceButton.set({\n appearance: \"form-button-outlined\",\n visibility: hasRights ? \"visible\" : \"excluded\"\n });\n addServiceButton.addListener(\"execute\", () => this.__displayServiceSubmissionForm());\n this._toolbar.add(addServiceButton);\n },\n\n __addSortingButtons: function() {\n const containerSortButtons = new osparc.service.SortServicesButtons();\n containerSortButtons.set({\n appearance: \"form-button-outlined\"\n });\n containerSortButtons.addListener(\"sortBy\", e => {\n this.__sortBy = e.getData();\n this.__setServicesToList(this._resourcesList);\n }, this);\n this._toolbar.add(containerSortButtons);\n },\n\n _populateCardMenu: function(card) {\n const menu = card.getMenu();\n const serviceData = card.getResourceData();\n\n const openButton = this._getOpenMenuButton(serviceData);\n if (openButton) {\n menu.add(openButton);\n }\n },\n\n __displayServiceSubmissionForm: function(formData) {\n const addServiceWindow = new osparc.ui.window.Window(this.tr(\"Submit a new service\")).set({\n modal: true,\n autoDestroy: true,\n showMinimize: false,\n allowMinimize: false,\n centerOnAppear: true,\n layout: new qx.ui.layout.Grow(),\n width: 600,\n height: 660\n });\n const scroll = new qx.ui.container.Scroll();\n addServiceWindow.add(scroll);\n const form = new osparc.form.json.JsonSchemaForm(\"/resource/form/service.json\", formData);\n form.addListener(\"ready\", () => {\n addServiceWindow.open();\n });\n form.addListener(\"submit\", e => {\n const data = e.getData();\n const headers = new Headers();\n headers.append(\"Accept\", \"application/json\");\n const body = new FormData();\n body.append(\"metadata\", new Blob([JSON.stringify(data.json)], {\n type: \"application/json\"\n }));\n if (data.files && data.files.length) {\n const size = data.files[0].size;\n const maxSize = 10 * 1000 * 1000; // 10 MB\n if (size > maxSize) {\n osparc.FlashMessenger.logAs(`The file is too big. Maximum size is ${maxSize}MB. Please provide with a smaller file or a repository URL.`, \"ERROR\");\n return;\n }\n body.append(\"attachment\", data.files[0], data.files[0].name);\n }\n form.setFetching(true);\n fetch(\"/v0/publications/service-submission\", {\n method: \"POST\",\n headers,\n body\n })\n .then(resp => {\n if (resp.ok) {\n osparc.FlashMessenger.logAs(\"Your data was sent to our curation team. We will get back to you shortly.\", \"INFO\");\n addServiceWindow.close();\n } else {\n osparc.FlashMessenger.logAs(`A problem occurred while processing your data: ${resp.statusText}`, \"ERROR\");\n }\n })\n .finally(() => form.setFetching(false));\n });\n scroll.add(form);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget that provides access to the data belonging to the active user.\n * - On the left side: myData FilesTree with the FileLabelWithActions\n * - On the right side: a pie chart reflecting the data resources consumed (hidden until there is real info)\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let dataManager = new osparc.dashboard.DataBrowser();\n * this.getRoot().add(dataManager);\n *
\n */\n\nqx.Class.define(\"osparc.dashboard.DataBrowser\", {\n extend: osparc.dashboard.ResourceBrowserBase,\n\n construct: function() {\n this._resourceType = \"data\";\n this.base(arguments);\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"tree-folder-view\":\n control = new osparc.file.TreeFolderView();\n this._addToLayout(control, {\n flex: 1\n });\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n // overridden\n initResources: function() {\n this._hideLoadingPage();\n this.__buildLayout();\n\n this.addListener(\"appear\", () => {\n const treeFolderView = this.getChildControl(\"tree-folder-view\");\n treeFolderView.getChildControl(\"folder-tree\").populateTree();\n treeFolderView.getChildControl(\"folder-viewer\").setFolder(treeFolderView.getChildControl(\"folder-tree\").getModel());\n }, this);\n },\n\n __buildLayout: function() {\n this.set({\n marginTop: 20\n });\n\n const treeFolderView = this.getChildControl(\"tree-folder-view\");\n\n const reloadButton = treeFolderView.getChildControl(\"reload-button\");\n reloadButton.addListener(\"execute\", () => this.__reloadTree(), this);\n\n const selectedFileLayout = treeFolderView.getChildControl(\"folder-viewer\").getChildControl(\"selected-file-layout\");\n selectedFileLayout.addListener(\"fileDeleted\", e => this.__fileDeleted(e.getData()), this);\n },\n\n __reloadTree: function() {\n const treeFolderView = this.getChildControl(\"tree-folder-view\");\n\n const foldersTree = treeFolderView.getChildControl(\"folder-tree\");\n foldersTree.resetCache();\n foldersTree.populateTree();\n\n const folderViewer = treeFolderView.getChildControl(\"folder-viewer\");\n folderViewer.resetFolder();\n },\n\n __fileDeleted: function(fileMetadata) {\n // After deleting a file, try to keep the user in the same folder.\n // If the folder doesn't longer exist, open the closest available parent\n\n const path = fileMetadata[\"fileUuid\"].split(\"/\");\n\n const treeFolderView = this.getChildControl(\"tree-folder-view\");\n const foldersTree = treeFolderView.getChildControl(\"folder-tree\");\n const folderViewer = treeFolderView.getChildControl(\"folder-viewer\");\n\n const openSameFolder = () => {\n // drop last, which is the file\n path.pop();\n treeFolderView.openPath(path);\n };\n\n folderViewer.resetFolder();\n const locationId = fileMetadata[\"locationId\"];\n const datasetId = path[0];\n foldersTree.resetCache();\n foldersTree.populateTree()\n .then(datasetPromises => {\n Promise.all(datasetPromises)\n .then(() => foldersTree.requestDatasetFiles(locationId, datasetId))\n .then(() => openSameFolder());\n })\n .catch(err => console.error(err));\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Jonathan Weiß (jonathan_rass)\n\n************************************************************************ */\n\n/**\n * A split panes divides an area into two panes. The ratio between the two\n * panes is configurable by the user using the splitter.\n *\n * @childControl slider {qx.ui.splitpane.Slider} shown during resizing the splitpane\n * @childControl splitter {qx.ui.splitpane.Splitter} splitter to resize the splitpane\n */\nqx.Class.define(\"qx.ui.splitpane.Pane\",\n{\n extend : qx.ui.core.Widget,\n\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * Creates a new instance of a SplitPane. It allows the user to dynamically\n * resize the areas dropping the border between.\n *\n * @param orientation {String} The orientation of the split pane control.\n * Allowed values are \"horizontal\" (default) and \"vertical\".\n */\n construct : function(orientation)\n {\n this.base(arguments);\n\n this.__children = [];\n\n // Initialize orientation\n if (orientation) {\n this.setOrientation(orientation);\n } else {\n this.initOrientation();\n }\n\n // add all pointer listener to the blocker\n this.__blocker.addListener(\"pointerdown\", this._onPointerDown, this);\n this.__blocker.addListener(\"pointerup\", this._onPointerUp, this);\n this.__blocker.addListener(\"pointermove\", this._onPointerMove, this);\n this.__blocker.addListener(\"pointerout\", this._onPointerOut, this);\n this.__blocker.addListener(\"losecapture\", this._onPointerUp, this);\n },\n\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n // overridden\n appearance :\n {\n refine : true,\n init : \"splitpane\"\n },\n\n /**\n * Distance between pointer and splitter when the cursor should change\n * and enable resizing.\n */\n offset :\n {\n check : \"Integer\",\n init : 6,\n apply : \"_applyOffset\"\n },\n\n /**\n * The orientation of the splitpane control.\n */\n orientation :\n {\n init : \"horizontal\",\n check : [ \"horizontal\", \"vertical\" ],\n apply : \"_applyOrientation\"\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n\n __splitterOffset : null,\n __activeDragSession : false,\n __lastPointerX : null,\n __lastPointerY : null,\n __isHorizontal : null,\n __beginSize : null,\n __endSize : null,\n __children : null,\n __blocker : null,\n\n\n // overridden\n _createChildControlImpl : function(id, hash)\n {\n var control;\n\n switch(id)\n {\n // Create and add slider\n case \"slider\":\n control = new qx.ui.splitpane.Slider(this);\n control.exclude();\n this._add(control, {type : id});\n break;\n\n // Create splitter\n case \"splitter\":\n control = new qx.ui.splitpane.Splitter(this);\n this._add(control, {type : id});\n control.addListener(\"move\", this.__onSplitterMove, this);\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n\n /**\n * Move handler for the splitter which takes care of the external\n * triggered resize of children.\n *\n * @param e {qx.event.type.Data} The data even of move.\n */\n __onSplitterMove : function(e) {\n this.__setBlockerPosition(e.getData());\n },\n\n\n /**\n * Creates a blocker for the splitter which takes all bouse events and\n * also handles the offset and cursor.\n *\n * @param orientation {String} The orientation of the pane.\n */\n __createBlocker : function(orientation) {\n this.__blocker = new qx.ui.splitpane.Blocker(orientation);\n this.getContentElement().add(this.__blocker);\n\n var splitter = this.getChildControl(\"splitter\");\n var splitterWidth = splitter.getWidth();\n if (!splitterWidth) {\n splitter.addListenerOnce(\"appear\", function() {\n this.__setBlockerPosition();\n }, this);\n }\n\n // resize listener to remove the blocker in case the splitter\n // is removed.\n splitter.addListener(\"resize\", function(e) {\n var bounds = e.getData();\n if (this.getChildControl(\"splitter\").getVisible() && (bounds.height == 0 || bounds.width == 0)) {\n this.__blocker.hide();\n } else {\n this.__blocker.show();\n }\n }, this);\n },\n\n\n /**\n * Returns the blocker used over the splitter. this could be used for\n * adding event listeners like tap or dbltap.\n *\n * @return {qx.ui.splitpane.Blocker} The used blocker element.\n *\n * @internal\n */\n getBlocker : function() {\n return this.__blocker;\n },\n\n\n\n /*\n ---------------------------------------------------------------------------\n PROPERTY APPLY METHODS\n ---------------------------------------------------------------------------\n */\n\n /**\n * Apply routine for the orientation property.\n *\n * Sets the pane's layout to vertical or horizontal split layout.\n *\n * @param value {String} The new value of the orientation property\n * @param old {String} The old value of the orientation property\n */\n _applyOrientation : function(value, old)\n {\n var slider = this.getChildControl(\"slider\");\n var splitter = this.getChildControl(\"splitter\");\n\n // Store boolean flag for faster access\n this.__isHorizontal = value === \"horizontal\";\n\n if (!this.__blocker) {\n this.__createBlocker(value);\n }\n\n // update the blocker\n this.__blocker.setOrientation(value);\n\n // Dispose old layout\n var oldLayout = this._getLayout();\n if (oldLayout) {\n oldLayout.dispose();\n }\n\n // Create new layout\n var newLayout = value === \"vertical\" ?\n new qx.ui.splitpane.VLayout : new qx.ui.splitpane.HLayout;\n this._setLayout(newLayout);\n\n // Update states for splitter and slider\n splitter.removeState(old);\n splitter.addState(value);\n splitter.getChildControl(\"knob\").removeState(old);\n splitter.getChildControl(\"knob\").addState(value);\n slider.removeState(old);\n slider.addState(value);\n\n // flush (needs to be done for the blocker update) and update the blocker\n qx.ui.core.queue.Manager.flush();\n this.__setBlockerPosition();\n },\n\n\n // property apply\n _applyOffset : function(value, old) {\n this.__setBlockerPosition();\n },\n\n /**\n * Helper for setting the blocker to the right position, which depends on\n * the offset, orientation and the current position of the splitter.\n *\n * @param bounds {Map?null} If the bounds of the splitter are known,\n * they can be added.\n */\n __setBlockerPosition : function(bounds) {\n var splitter = this.getChildControl(\"splitter\");\n var offset = this.getOffset();\n var splitterBounds = splitter.getBounds();\n var splitterElem = splitter.getContentElement().getDomElement();\n\n // do nothing if the splitter is not ready\n if (!splitterElem) {\n return;\n }\n\n // recalculate the dimensions of the blocker\n if (this.__isHorizontal) {\n // get the width either of the given bounds or of the read bounds\n var width = null;\n if (bounds) {\n width = bounds.width;\n } else if (splitterBounds) {\n width = splitterBounds.width;\n }\n var left = bounds && bounds.left;\n\n if (width || !this.getChildControl(\"splitter\").getVisible()) {\n if (isNaN(left)) {\n left = qx.bom.element.Location.getPosition(splitterElem).left;\n }\n this.__blocker.setWidth(offset, width || 6);\n this.__blocker.setLeft(offset, left);\n }\n\n // vertical case\n } else {\n // get the height either of the given bounds or of the read bounds\n var height = null;\n if (bounds) {\n height = bounds.height;\n } else if (splitterBounds) {\n height = splitterBounds.height;\n }\n var top = bounds && bounds.top;\n\n if (height || !this.getChildControl(\"splitter\").getVisible()) {\n if (isNaN(top)) {\n top = qx.bom.element.Location.getPosition(splitterElem).top;\n }\n this.__blocker.setHeight(offset, height || 6);\n this.__blocker.setTop(offset, top);\n }\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n PUBLIC METHODS\n ---------------------------------------------------------------------------\n */\n\n /**\n * Adds a widget to the pane.\n *\n * Sets the pane's layout to vertical or horizontal split layout. Depending on the\n * pane's layout the first widget will be the left or top widget, the second one\n * the bottom or right widget. Adding more than two widgets will overwrite the\n * existing ones.\n *\n * @param widget {qx.ui.core.Widget} The widget to be inserted into pane.\n * @param flex {Number} The (optional) layout property for the widget's flex value.\n */\n add : function(widget, flex)\n {\n if (flex == null) {\n this._add(widget);\n } else {\n this._add(widget, {flex : flex});\n }\n this.__children.push(widget);\n },\n\n\n /**\n * Removes the given widget from the pane.\n *\n * @param widget {qx.ui.core.Widget} The widget to be removed.\n */\n remove : function(widget)\n {\n this._remove(widget);\n qx.lang.Array.remove(this.__children, widget);\n },\n\n\n /**\n * Returns an array containing the pane's content.\n *\n * @return {qx.ui.core.Widget[]} The pane's child widgets\n */\n getChildren : function() {\n return this.__children;\n },\n\n\n /*\n ---------------------------------------------------------------------------\n POINTER LISTENERS\n ---------------------------------------------------------------------------\n */\n\n /**\n * Handler for pointerdown event.\n *\n * Shows slider widget and starts drag session if pointer is near/on splitter widget.\n *\n * @param e {qx.event.type.Pointer} pointerdown event\n */\n _onPointerDown : function(e)\n {\n // Only proceed if left pointer button is pressed and the splitter is active\n if (!e.isLeftPressed()) {\n return;\n }\n\n var splitter = this.getChildControl(\"splitter\");\n\n // Store offset between pointer event coordinates and splitter\n var splitterLocation = splitter.getContentLocation();\n var paneLocation = this.getContentLocation();\n this.__splitterOffset = this.__isHorizontal ?\n e.getDocumentLeft() - splitterLocation.left + paneLocation.left :\n e.getDocumentTop() - splitterLocation.top + paneLocation.top ;\n\n // Synchronize slider to splitter size and show it\n var slider = this.getChildControl(\"slider\");\n var splitterBounds = splitter.getBounds();\n slider.setUserBounds(\n splitterBounds.left, splitterBounds.top,\n splitterBounds.width || 6, splitterBounds.height || 6\n );\n\n slider.setZIndex(splitter.getZIndex() + 1);\n slider.show();\n\n // Enable session\n this.__activeDragSession = true;\n this.__blocker.capture();\n\n e.stop();\n },\n\n\n /**\n * Handler for pointermove event.\n *\n * @param e {qx.event.type.Pointer} pointermove event\n */\n _onPointerMove : function(e)\n {\n this._setLastPointerPosition(e.getDocumentLeft(), e.getDocumentTop());\n\n // Check if slider is already being dragged\n if (this.__activeDragSession)\n {\n // Compute new children sizes\n this.__computeSizes();\n\n // Update slider position\n var slider = this.getChildControl(\"slider\");\n var pos = this.__beginSize;\n\n if(this.__isHorizontal) {\n slider.setDomLeft(pos);\n this.__blocker.setStyle(\"left\", (pos - this.getOffset()) + \"px\");\n } else {\n slider.setDomTop(pos);\n this.__blocker.setStyle(\"top\", (pos - this.getOffset()) + \"px\");\n }\n\n e.stop();\n }\n },\n\n\n /**\n * Handler for pointerout event\n *\n * @param e {qx.event.type.Pointer} pointerout event\n */\n _onPointerOut : function(e)\n {\n this._setLastPointerPosition(e.getDocumentLeft(), e.getDocumentTop());\n },\n\n\n /**\n * Handler for pointerup event\n *\n * Sets widget sizes if dragging session has been active.\n *\n * @param e {qx.event.type.Pointer} pointerup event\n */\n _onPointerUp : function(e)\n {\n if (!this.__activeDragSession) {\n return;\n }\n\n // Set sizes to both widgets\n this._finalizeSizes();\n\n // Hide the slider\n var slider = this.getChildControl(\"slider\");\n slider.exclude();\n\n // Cleanup\n this.__activeDragSession = false;\n this.releaseCapture();\n\n e.stop();\n },\n\n\n /*\n ---------------------------------------------------------------------------\n INTERVAL HANDLING\n ---------------------------------------------------------------------------\n */\n\n /**\n * Updates widgets' sizes based on the slider position.\n */\n _finalizeSizes : function()\n {\n var beginSize = this.__beginSize;\n var endSize = this.__endSize;\n\n if (beginSize == null) {\n return;\n }\n\n var children = this._getChildren();\n var firstWidget = children[2];\n var secondWidget = children[3];\n\n // Read widgets' flex values\n var firstFlexValue = firstWidget.getLayoutProperties().flex;\n var secondFlexValue = secondWidget.getLayoutProperties().flex;\n\n // Both widgets have flex values\n if((firstFlexValue != 0) && (secondFlexValue != 0))\n {\n firstWidget.setLayoutProperties({ flex : beginSize });\n secondWidget.setLayoutProperties({ flex : endSize });\n }\n\n // Update both sizes\n else\n {\n // Set widths to static widgets\n if (this.__isHorizontal)\n {\n firstWidget.setWidth(beginSize);\n secondWidget.setWidth(endSize);\n }\n else\n {\n firstWidget.setHeight(beginSize);\n secondWidget.setHeight(endSize);\n }\n }\n },\n\n\n /**\n * Computes widgets' sizes based on the pointer coordinate.\n */\n __computeSizes : function()\n {\n if (this.__isHorizontal) {\n var min=\"minWidth\", size=\"width\", max=\"maxWidth\", pointer=this.__lastPointerX;\n } else {\n var min=\"minHeight\", size=\"height\", max=\"maxHeight\", pointer=this.__lastPointerY;\n }\n\n var children = this._getChildren();\n var beginHint = children[2].getSizeHint();\n var endHint = children[3].getSizeHint();\n\n // Area given to both widgets\n var allocatedSize = children[2].getBounds()[size] + children[3].getBounds()[size];\n\n // Calculate widget sizes\n var beginSize = pointer - this.__splitterOffset;\n var endSize = allocatedSize - beginSize;\n\n // Respect minimum limits\n if (beginSize < beginHint[min])\n {\n endSize -= beginHint[min] - beginSize;\n beginSize = beginHint[min];\n }\n else if (endSize < endHint[min])\n {\n beginSize -= endHint[min] - endSize;\n endSize = endHint[min];\n }\n\n // Respect maximum limits\n if (beginSize > beginHint[max])\n {\n endSize += beginSize - beginHint[max];\n beginSize = beginHint[max];\n }\n else if (endSize > endHint[max])\n {\n beginSize += endSize - endHint[max];\n endSize = endHint[max];\n }\n\n // Store sizes\n this.__beginSize = beginSize;\n this.__endSize = endSize;\n },\n\n\n /**\n * Determines whether this is an active drag session\n *\n * @return {Boolean} True if active drag session, otherwise false.\n */\n _isActiveDragSession : function() {\n return this.__activeDragSession;\n },\n\n\n /**\n * Sets the last pointer position.\n *\n * @param x {Integer} the x position of the pointer.\n * @param y {Integer} the y position of the pointer.\n */\n _setLastPointerPosition : function(x, y)\n {\n this.__lastPointerX = x;\n this.__lastPointerY = y;\n }\n },\n\n\n destruct : function() {\n this.__children = null;\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/* eslint-disable no-underscore-dangle */\n\nqx.Class.define(\"osparc.desktop.WorkbenchView\", {\n extend: qx.ui.splitpane.Pane,\n\n construct: function() {\n this.base(arguments, \"horizontal\");\n\n this.setOffset(2);\n osparc.desktop.WorkbenchView.decorateSplitter(this.getChildControl(\"splitter\"));\n osparc.desktop.WorkbenchView.decorateSlider(this.getChildControl(\"slider\"));\n\n this.getChildControl(\"side-panels\");\n this.getChildControl(\"main-panel-tabs\");\n this.__workbenchPanel = new osparc.desktop.WorkbenchPanel();\n this.__workbenchUI = this.__workbenchPanel.getMainView();\n\n this.__attachEventHandlers();\n },\n\n statics: {\n PRIMARY_COL_BG_COLOR: \"transparent\",\n TAB_BUTTON_HEIGHT: 46,\n\n decorateSplitter: function(splitter) {\n splitter.set({\n width: 2,\n backgroundColor: \"workbench-view-splitter\"\n });\n },\n\n decorateSlider: function(slider) {\n slider.set({\n width: 2,\n backgroundColor: \"visual-blue\",\n opacity: 1\n });\n },\n\n openStudyDataManager: function(node) {\n const win = osparc.widget.StudyDataManager.popUpInWindow(null, node.getNodeId(), node.getLabel());\n const closeBtn = win.getChildControl(\"close-button\");\n osparc.utils.Utils.setIdToWidget(closeBtn, \"nodeDataManagerCloseBtn\");\n }\n },\n\n events: {\n \"changeSelectedNode\": \"qx.event.type.Data\",\n \"collapseNavBar\": \"qx.event.type.Event\",\n \"expandNavBar\": \"qx.event.type.Event\",\n \"backToDashboardPressed\": \"qx.event.type.Event\",\n \"slidesEdit\": \"qx.event.type.Event\",\n \"annotationRectStart\": \"qx.event.type.Event\",\n \"takeSnapshot\": \"qx.event.type.Event\",\n \"showSnapshots\": \"qx.event.type.Event\",\n \"createIterations\": \"qx.event.type.Event\",\n \"showIterations\": \"qx.event.type.Event\"\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n apply: \"__applyStudy\",\n nullable: false\n },\n\n maximized: {\n check: \"Boolean\",\n init: null,\n nullable: false,\n apply: \"__applyMaximized\",\n event: \"changeMaximized\"\n }\n },\n\n members: {\n __nodesPage: null,\n __studyTreeItem: null,\n __nodesTree: null,\n __storagePage: null,\n __studyOptionsPage: null,\n __fileInfoPage: null,\n __serviceOptionsPage: null,\n __workbenchPanel: null,\n __workbenchPanelPage: null,\n __workbenchUI: null,\n __workbenchUIConnected: null,\n __iframePage: null,\n __loggerPage: null,\n __loggerView: null,\n __currentNodeId: null,\n __startAppButton: null,\n __editSlidesButton: null,\n __startAppButtonTB: null,\n __collapseWithUserMenu: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"side-panels\": {\n control = new qx.ui.splitpane.Pane(\"horizontal\").set({\n offset: 2,\n width: Math.min(parseInt(window.innerWidth * (0.16 + 0.24)), 550)\n });\n osparc.desktop.WorkbenchView.decorateSplitter(control.getChildControl(\"splitter\"));\n osparc.desktop.WorkbenchView.decorateSlider(control.getChildControl(\"slider\"));\n this.add(control, 0); // flex 0\n break;\n }\n case \"collapsible-view-left\": {\n const sidePanels = this.getChildControl(\"side-panels\");\n control = new osparc.widget.CollapsibleViewLight().set({\n minWidth: osparc.widget.CollapsibleViewLight.CARET_WIDTH,\n width: Math.min(parseInt(window.innerWidth * 0.16), 240)\n });\n control.getChildControl(\"expand-button\").setBackgroundColor(this.self().PRIMARY_COL_BG_COLOR);\n control.getChildControl(\"collapse-button\").setBackgroundColor(this.self().PRIMARY_COL_BG_COLOR);\n const caretExpandedLayout = control.getChildControl(\"caret-expanded-layout\");\n caretExpandedLayout.addAt(this.__createCollapsibleViewSpacer(), 0);\n const caretCollapsedLayout = control.getChildControl(\"caret-collapsed-layout\");\n caretCollapsedLayout.addAt(this.__createCollapsibleViewSpacer(), 0);\n control.bind(\"collapsed\", control, \"maxWidth\", {\n converter: collapsed => collapsed ? osparc.widget.CollapsibleViewLight.CARET_WIDTH : null\n });\n control.bind(\"collapsed\", sidePanels, \"width\", {\n converter: collapsed => this.__getSidePanelsNewWidth(collapsed, sidePanels, control)\n });\n control.addListener(\"changeCollapsed\", e => {\n const collapsed = e.getData();\n const collapsibleViewLeft = this.getChildControl(\"collapsible-view-right\");\n // if both panes are collapsed set the maxWidth of the layout to 2*15\n if (collapsed && collapsibleViewLeft.isCollapsed()) {\n sidePanels.setMaxWidth(2 * osparc.widget.CollapsibleViewLight.CARET_WIDTH);\n } else {\n sidePanels.setMaxWidth(null);\n }\n }, this);\n // flex 0 by default, this will be changed if \"collapsible-view-right\" gets collapsed\n sidePanels.add(control, 0);\n break;\n }\n case \"collapsible-view-right\": {\n const sidePanels = this.getChildControl(\"side-panels\");\n control = new osparc.widget.CollapsibleViewLight().set({\n minWidth: 15,\n width: Math.min(parseInt(window.innerWidth * 0.24), 310)\n });\n const caretExpandedLayout = control.getChildControl(\"caret-expanded-layout\");\n caretExpandedLayout.addAt(this.__createCollapsibleViewSpacer(), 0);\n const caretCollapsedLayout = control.getChildControl(\"caret-collapsed-layout\");\n caretCollapsedLayout.addAt(this.__createCollapsibleViewSpacer(), 0);\n control.bind(\"collapsed\", control, \"maxWidth\", {\n converter: collapsed => collapsed ? osparc.widget.CollapsibleViewLight.CARET_WIDTH : null\n });\n control.bind(\"collapsed\", sidePanels, \"width\", {\n converter: collapsed => this.__getSidePanelsNewWidth(collapsed, sidePanels, control)\n });\n control.addListener(\"changeCollapsed\", e => {\n // switch flex to 1 if the secondary pane gets collapsed\n const collapsed = e.getData();\n const collapsibleViewLeft = this.getChildControl(\"collapsible-view-left\");\n collapsibleViewLeft.setLayoutProperties({flex: collapsed ? 1 : 0});\n control.setLayoutProperties({flex: collapsed ? 0 : 1});\n // if both panes are collapsed set the maxWidth of the layout to 2*15\n if (collapsed && collapsibleViewLeft.isCollapsed()) {\n sidePanels.setMaxWidth(2 * osparc.widget.CollapsibleViewLight.CARET_WIDTH);\n } else {\n sidePanels.setMaxWidth(null);\n }\n }, this);\n sidePanels.add(control, 1); // flex 1\n break;\n }\n case \"side-panel-left-tabs\": {\n control = new qx.ui.tabview.TabView().set({\n contentPadding: osparc.widget.CollapsibleViewLight.CARET_WIDTH + 2, // collapse bar + padding\n contentPaddingRight: 2,\n barPosition: \"top\"\n });\n const collapsibleViewLeft = this.getChildControl(\"collapsible-view-left\");\n collapsibleViewLeft.setContent(control);\n break;\n }\n case \"side-panel-right-tabs\": {\n control = new qx.ui.tabview.TabView().set({\n contentPadding: osparc.widget.CollapsibleViewLight.CARET_WIDTH + 2, // collapse bar + padding\n contentPaddingRight: 2,\n barPosition: \"top\"\n });\n const collapsibleViewRight = this.getChildControl(\"collapsible-view-right\");\n collapsibleViewRight.setContent(control);\n break;\n }\n case \"main-panel-tabs\": {\n control = new qx.ui.tabview.TabView().set({\n contentPadding: 2,\n barPosition: \"top\"\n });\n this.add(control, 1); // flex 1\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n getNodesTree: function() {\n return this.__nodesTree;\n },\n\n getWorkbenchUI: function() {\n return this.__workbenchUI;\n },\n\n __getSidePanelsNewWidth: function(collapsing, sidePanels, collapsibleView) {\n let sidePanelsNewWidth = null;\n const sidePanelsWidth = (sidePanels.getBounds() && (\"width\" in sidePanels.getBounds())) ? sidePanels.getBounds().width : 250;\n if (collapsing) {\n const content = collapsibleView.getChildControl(\"scroll-content\");\n sidePanelsNewWidth = (content.getBounds() && (\"width\" in content.getBounds())) ? sidePanelsWidth - content.getBounds().width : 150;\n } else if (\"precollapseWidth\" in collapsibleView) {\n sidePanelsNewWidth = sidePanelsWidth + (collapsibleView.precollapseWidth - osparc.widget.CollapsibleViewLight.CARET_WIDTH);\n }\n return sidePanelsNewWidth;\n },\n\n __applyStudy: function(study) {\n if (study) {\n this.__initViews();\n this.__connectEvents();\n\n study.getWorkbench().addListener(\"pipelineChanged\", () => this.__evalSlidesButtons());\n study.getUi().getSlideshow().addListener(\"changeSlideshow\", () => this.__evalSlidesButtons());\n study.getUi().addListener(\"changeMode\", () => this.__evalSlidesButtons());\n this.__evalSlidesButtons();\n\n // if there are no nodes, preselect the study item (show study info)\n const nodes = study.getWorkbench().getNodes();\n if (Object.values(nodes).length === 0) {\n this.__studyTreeItem.selectStudyItem();\n }\n }\n this.__workbenchPanel.getToolbar().setStudy(study);\n },\n\n __createTabPage: function(icon, tooltip, widget, backgroundColor = \"background-main\") {\n const tabPage = new qx.ui.tabview.Page().set({\n layout: new qx.ui.layout.VBox(10),\n backgroundColor,\n icon: icon + \"/16\"\n });\n const tabPageBtn = tabPage.getChildControl(\"button\").set({\n toolTipText: tooltip,\n margin: [12, 2, 0],\n padding: [8, 10, 8, 10],\n height: this.self().TAB_BUTTON_HEIGHT,\n alignX: \"center\",\n alignY: \"middle\",\n backgroundColor\n });\n tabPageBtn.bind(\"value\", tabPageBtn, \"backgroundColor\", {\n converter: val => val ? \"default-button-disabled-background\" : undefined\n });\n tabPageBtn.bind(\"value\", tabPageBtn, \"textColor\", {\n converter: val => val ? \"default-button-text-outline\" : \"default-button-text-action\"\n });\n tabPageBtn.bind(\"value\", tabPageBtn, \"decorator\", {\n converter: val => val ? \"tab-button-selected\" : \"tab-button\"\n });\n if (widget) {\n const scrollView = new qx.ui.container.Scroll();\n scrollView.add(widget);\n tabPage.add(scrollView, {\n flex: 1\n });\n }\n return tabPage;\n },\n\n __initViews: function() {\n const study = this.getStudy();\n if (study === null) {\n return;\n }\n\n this.__initPrimaryColumn();\n this.__initSecondaryColumn();\n this.__initMainView();\n\n this.setMaximized(false);\n },\n\n __initPrimaryColumn: function() {\n const study = this.getStudy();\n\n const tabViewPrimary = this.getChildControl(\"side-panel-left-tabs\");\n this.__removePages(tabViewPrimary);\n tabViewPrimary.setBackgroundColor(this.self().PRIMARY_COL_BG_COLOR);\n\n const topBar = tabViewPrimary.getChildControl(\"bar\");\n topBar.set({\n height: this.self().TAB_BUTTON_HEIGHT,\n backgroundColor: \"workbench-view-navbar\"\n });\n this.__addTopBarSpacer(topBar);\n\n const homeAndNodesTree = new qx.ui.container.Composite(new qx.ui.layout.VBox(15)).set({\n backgroundColor: \"transparent\"\n });\n\n const studyTreeItem = this.__studyTreeItem = new osparc.widget.StudyTitleOnlyTree().set({\n alignY: \"middle\",\n minHeight: 32,\n maxHeight: 32,\n backgroundColor: \"transparent\"\n });\n studyTreeItem.setStudy(study);\n homeAndNodesTree.add(studyTreeItem);\n\n const nodesTree = this.__nodesTree = new osparc.widget.NodesTree().set({\n backgroundColor: \"transparent\",\n allowGrowY: true,\n minHeight: 5\n });\n nodesTree.setStudy(study);\n homeAndNodesTree.add(nodesTree);\n\n const addNewNodeBtn = new qx.ui.form.Button().set({\n appearance: \"form-button\",\n label: this.tr(\"New Node\"),\n icon: \"@FontAwesome5Solid/plus/14\",\n allowGrowX: false,\n alignX: \"center\",\n marginLeft: 10\n });\n this.getStudy().bind(\"pipelineRunning\", addNewNodeBtn, \"enabled\", {\n converter: running => !running\n });\n osparc.utils.Utils.setIdToWidget(addNewNodeBtn, \"newNodeBtn\");\n addNewNodeBtn.addListener(\"execute\", () => {\n this.__workbenchUI.openServiceCatalog({\n x: 50,\n y: 50\n });\n });\n homeAndNodesTree.add(addNewNodeBtn);\n\n const nodesPage = this.__nodesPage = this.__createTabPage(\"@FontAwesome5Solid/list\", this.tr(\"Nodes\"), homeAndNodesTree, this.self().PRIMARY_COL_BG_COLOR);\n tabViewPrimary.add(nodesPage);\n\n const filesTree = new osparc.file.FilesTree().set({\n backgroundColor: \"transparent\",\n dragMechanism: true,\n hideRoot: true\n });\n filesTree.populateTree();\n const storagePage = this.__storagePage = this.__createTabPage(\"@FontAwesome5Solid/database\", this.tr(\"Storage\"), filesTree, this.self().PRIMARY_COL_BG_COLOR);\n tabViewPrimary.add(storagePage);\n\n this.__addTopBarSpacer(topBar);\n },\n\n __initSecondaryColumn: function() {\n const tabViewSecondary = this.getChildControl(\"side-panel-right-tabs\");\n this.__removePages(tabViewSecondary);\n tabViewSecondary.setBackgroundColor(this.self().PRIMARY_COL_BG_COLOR);\n const topBar = tabViewSecondary.getChildControl(\"bar\");\n topBar.set({\n height: this.self().TAB_BUTTON_HEIGHT,\n backgroundColor: \"workbench-view-navbar\"\n });\n this.__addTopBarSpacer(topBar);\n\n const studyOptionsPage = this.__studyOptionsPage = this.__createTabPage(\"@FontAwesome5Solid/book\", this.tr(\"Study options\"));\n studyOptionsPage.getLayout().set({\n separator: \"separator-vertical\",\n spacing: 10\n });\n studyOptionsPage.exclude();\n tabViewSecondary.add(studyOptionsPage);\n\n const fileInfoPage = this.__fileInfoPage = this.__createTabPage(\"@FontAwesome5Solid/info\", this.tr(\"Information\"));\n fileInfoPage.exclude();\n tabViewSecondary.add(fileInfoPage);\n\n const serviceOptionsPage = this.__serviceOptionsPage = this.__createTabPage(\"@FontAwesome5Solid/exchange-alt\", this.tr(\"Service options\"));\n serviceOptionsPage.exclude();\n tabViewSecondary.add(serviceOptionsPage);\n\n this.__addTopBarSpacer(topBar);\n\n this.__populateSecondaryColumn();\n },\n\n __initMainView: function() {\n const study = this.getStudy();\n\n const tabViewMain = this.getChildControl(\"main-panel-tabs\");\n this.__removePages(tabViewMain);\n\n const topBar = tabViewMain.getChildControl(\"bar\");\n topBar.set({\n height: this.self().TAB_BUTTON_HEIGHT,\n alignY: \"top\",\n backgroundColor: \"workbench-view-navbar\"\n });\n this.__addTopBarSpacer(topBar);\n\n this.__workbenchUI.setStudy(study);\n this.__workbenchUI.loadModel(study.getWorkbench());\n const workbenchPanelPage = this.__workbenchPanelPage = this.__createTabPage(\"@FontAwesome5Solid/object-group\", this.tr(\"Workbench\"), this.__workbenchPanel);\n tabViewMain.add(workbenchPanelPage);\n\n const iframePage = this.__iframePage = this.__createTabPage(\"@FontAwesome5Solid/desktop\", this.tr(\"Interactive\"));\n osparc.utils.Utils.setIdToWidget(iframePage.getChildControl(\"button\"), \"iframeTabButton\");\n tabViewMain.add(iframePage);\n\n const loggerView = this.__loggerView = new osparc.widget.logger.LoggerView();\n const loggerPage = this.__loggerPage = this.__createTabPage(\"@FontAwesome5Solid/file-alt\", this.tr(\"Logger\"), loggerView);\n osparc.utils.Utils.setIdToWidget(loggerPage.getChildControl(\"button\"), \"loggerTabButton\");\n tabViewMain.add(loggerPage);\n\n this.__addTopBarSpacer(topBar);\n\n const startAppButtonTB = this.__startAppButtonTB = new qx.ui.form.Button().set({\n appearance: \"form-button-outlined\",\n label: this.tr(\"App Mode\"),\n toolTipText: this.tr(\"Start App Mode\"),\n icon: \"@FontAwesome5Solid/play/14\",\n marginRight: 10,\n marginTop: 7,\n ...osparc.navigation.NavigationBar.BUTTON_OPTIONS\n });\n startAppButtonTB.addListener(\"execute\", () => study.getUi().setMode(\"app\"));\n topBar.add(startAppButtonTB);\n\n const collapseWithUserMenu = this.__collapseWithUserMenu = new osparc.desktop.CollapseWithUserMenu();\n [\n \"backToDashboardPressed\",\n \"collapseNavBar\",\n \"expandNavBar\"\n ].forEach(signalName => collapseWithUserMenu.addListener(signalName, () => this.fireEvent(signalName)), this);\n\n topBar.add(collapseWithUserMenu);\n },\n\n getCollapseWithUserMenu: function() {\n return this.__collapseWithUserMenu;\n },\n\n __removePages: function(tabView) {\n // remove pages\n osparc.utils.Utils.removeAllChildren(tabView);\n // remove spacers\n const topBar = tabView.getChildControl(\"bar\");\n topBar.removeAll();\n },\n\n __addTopBarSpacer: function(tabViewTopBar) {\n const spacer = new qx.ui.core.Widget().set({\n backgroundColor: \"workbench-view-navbar\"\n });\n tabViewTopBar.add(spacer, {\n flex: 1\n });\n },\n\n __createCollapsibleViewSpacer: function() {\n const spacer = new qx.ui.core.Widget().set({\n backgroundColor: \"workbench-view-navbar\",\n height: this.self().TAB_BUTTON_HEIGHT\n });\n return spacer;\n },\n\n __connectEvents: function() {\n const studyTreeItem = this.__studyTreeItem;\n const nodesTree = this.__nodesTree;\n const workbenchUI = this.__workbenchUI;\n\n studyTreeItem.addListener(\"changeSelectedNode\", () => {\n nodesTree.resetSelection();\n this.showPipeline();\n\n this.getStudy().getUi().setCurrentNodeId(this.getStudy().getUuid());\n });\n nodesTree.addListener(\"changeSelectedNode\", e => {\n studyTreeItem.resetSelection();\n const nodeId = e.getData();\n const workbench = this.getStudy().getWorkbench();\n const node = workbench.getNode(nodeId);\n if (node) {\n this.__populateSecondaryColumn(node);\n this.__openIframeTab(node);\n }\n this.__loggerView.setCurrentNodeId(nodeId);\n this.__workbenchUI.nodeSelected(nodeId);\n this.fireDataEvent(\"changeSelectedNode\", nodeId);\n\n this.getStudy().getUi().setCurrentNodeId(nodeId);\n });\n\n if (this.__workbenchUIConnected === null) {\n workbenchUI.addListener(\"changeSelectedNode\", e => {\n // one click\n const nodeId = e.getData();\n if (nodeId) {\n studyTreeItem.resetSelection();\n this.__nodesTree.nodeSelected(nodeId);\n const workbench = this.getStudy().getWorkbench();\n const node = workbench.getNode(nodeId);\n this.__populateSecondaryColumn(node);\n this.__evalIframe(node);\n this.__loggerView.setCurrentNodeId(nodeId);\n this.fireDataEvent(\"changeSelectedNode\", nodeId);\n\n this.getStudy().getUi().setCurrentNodeId(nodeId);\n } else {\n // empty selection\n this.__studyTreeItem.selectStudyItem();\n\n this.getStudy().getUi().setCurrentNodeId(this.getStudy().getUuid());\n }\n });\n workbenchUI.addListener(\"nodeSelected\", e => {\n // double click\n const nodeId = e.getData();\n if (nodeId) {\n studyTreeItem.resetSelection();\n this.__nodesTree.nodeSelected(nodeId);\n const workbench = this.getStudy().getWorkbench();\n const node = workbench.getNode(nodeId);\n this.__populateSecondaryColumn(node);\n this.__openIframeTab(node);\n this.__loggerView.setCurrentNodeId(nodeId);\n\n this.getStudy().getUi().setCurrentNodeId(nodeId);\n }\n }, this);\n }\n\n nodesTree.addListener(\"fullscreenNode\", e => {\n const nodeId = e.getData();\n if (nodeId) {\n studyTreeItem.resetSelection();\n this.fullscreenNode(nodeId);\n this.getStudy().getUi().setCurrentNodeId(nodeId);\n }\n }, this);\n nodesTree.addListener(\"removeNode\", e => {\n const nodeId = e.getData();\n this.__removeNode(nodeId);\n }, this);\n\n if (this.__workbenchUIConnected === null) {\n workbenchUI.addListener(\"removeNode\", e => {\n const nodeId = e.getData();\n this.__removeNode(nodeId);\n }, this);\n workbenchUI.addListener(\"removeNodes\", e => {\n const nodeIds = e.getData();\n this.__removeNodes(nodeIds);\n }, this);\n workbenchUI.addListener(\"removeEdge\", e => {\n const edgeId = e.getData();\n this.__removeEdge(edgeId);\n }, this);\n workbenchUI.addListener(\"requestOpenLogger\", e => {\n const nodeId = e.getData();\n this.__loggerView.filterByNode(nodeId);\n this.__openLoggerTab();\n }, this);\n }\n\n const workbench = this.getStudy().getWorkbench();\n workbench.addListener(\"pipelineChanged\", this.__workbenchChanged, this);\n\n workbench.addListener(\"showInLogger\", e => {\n const data = e.getData();\n const nodeId = data.nodeId;\n const msg = data.msg;\n const logLevel = (\"level\" in data) ? data[\"level\"] : \"INFO\";\n this.logsToLogger(nodeId, [msg], logLevel);\n }, this);\n\n workbench.addListener(\"fileRequested\", () => {\n if (this.getStudy().getUi().getMode() === \"workbench\") {\n const tabViewLeftPanel = this.getChildControl(\"side-panel-left-tabs\");\n tabViewLeftPanel.setSelection([this.__storagePage]);\n }\n }, this);\n\n this.__workbenchUIConnected = true;\n },\n\n logsToLogger: function(nodeId, logs, logLevel) {\n // the node logger is mainly used in App Mode\n const nodeLogger = this.__getNodeLogger(nodeId);\n switch (logLevel) {\n case \"DEBUG\":\n this.__loggerView.debugs(nodeId, logs);\n if (nodeLogger) {\n nodeLogger.debugs(nodeId, logs);\n }\n break;\n case \"WARNING\":\n this.__loggerView.warns(nodeId, logs);\n if (nodeLogger) {\n nodeLogger.warns(nodeId, logs);\n }\n break;\n case \"ERROR\":\n this.__loggerView.errors(nodeId, logs);\n if (nodeLogger) {\n nodeLogger.errors(nodeId, logs);\n }\n break;\n default:\n this.__loggerView.infos(nodeId, logs);\n if (nodeLogger) {\n nodeLogger.infos(nodeId, logs);\n }\n break;\n }\n },\n\n getStartStopButtons: function() {\n return this.__workbenchPanel.getToolbar().getChildControl(\"start-stop-btns\");\n },\n\n getSelectedNodeIDs: function() {\n if (this.__workbenchPanel.getMainView() === this.__workbenchUI) {\n return this.__workbenchUI.getSelectedNodeIDs();\n }\n return [this.__currentNodeId];\n },\n\n nodeSelected: function(nodeId) {\n if (!this.isPropertyInitialized(\"study\")) {\n return;\n }\n const study = this.getStudy();\n if (nodeId === null || nodeId === undefined) {\n nodeId = study.getUuid();\n }\n\n this.__currentNodeId = nodeId;\n study.getUi().setCurrentNodeId(nodeId);\n\n if (this.__nodesTree) {\n this.__nodesTree.nodeSelected(nodeId);\n }\n\n if (nodeId === study.getUuid()) {\n this.__studyTreeItem.selectStudyItem();\n } else {\n const node = study.getWorkbench().getNode(nodeId);\n this.__populateSecondaryColumn(node);\n }\n },\n\n __evalIframe: function(node) {\n if (node && node.getIFrame()) {\n this.__iframePage.getChildControl(\"button\").set({\n enabled: true\n });\n this.__addIframe(node);\n } else {\n this.__iframePage.getChildControl(\"button\").set({\n enabled: false\n });\n }\n },\n\n __openWorkbenchTab: function() {\n const tabViewMain = this.getChildControl(\"main-panel-tabs\");\n tabViewMain.setSelection([this.__workbenchPanelPage]);\n },\n\n __openIframeTab: function(node) {\n this.__evalIframe(node);\n const tabViewMain = this.getChildControl(\"main-panel-tabs\");\n if (node && node.getIFrame()) {\n tabViewMain.setSelection([this.__iframePage]);\n } else {\n tabViewMain.setSelection([this.__workbenchPanelPage]);\n }\n },\n\n __openLoggerTab: function() {\n const tabViewMain = this.getChildControl(\"main-panel-tabs\");\n tabViewMain.setSelection([this.__loggerPage]);\n },\n\n __applyMaximized: function(maximized) {\n this.getBlocker().setStyles({\n display: maximized ? \"none\" : \"block\"\n });\n\n this.getChildControl(\"side-panels\").setVisibility(maximized ? \"excluded\" : \"visible\");\n\n const tabViewMain = this.getChildControl(\"main-panel-tabs\");\n const mainViewTopBar = tabViewMain.getChildControl(\"bar\");\n mainViewTopBar.setVisibility(maximized ? \"excluded\" : \"visible\");\n },\n\n __addIframe: function(node) {\n this.__iframePage.removeAll();\n\n const loadingPage = node.getLoadingPage();\n const iFrame = node.getIFrame();\n if (loadingPage && iFrame) {\n [\n loadingPage,\n iFrame\n ].forEach(widget => {\n if (widget) {\n widget.addListener(\"maximize\", () => this.setMaximized(true), this);\n widget.addListener(\"restore\", () => this.setMaximized(false), this);\n }\n });\n node.getIframeHandler().addListener(\"iframeChanged\", () => this.__iFrameChanged(node), this);\n iFrame.addListener(\"load\", () => this.__iFrameChanged(node), this);\n this.__iFrameChanged(node);\n } else {\n // This will keep what comes after at the bottom\n this.__iframePage.add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n }\n },\n\n __iFrameChanged: function(node) {\n this.__iframePage.removeAll();\n\n if (node && node.getIFrame()) {\n const loadingPage = node.getLoadingPage();\n const iFrame = node.getIFrame();\n const src = iFrame.getSource();\n const iFrameView = (src === null || src === \"about:blank\") ? loadingPage : iFrame;\n this.__iframePage.add(iFrameView, {\n flex: 1\n });\n }\n },\n\n __populateSecondaryColumn: function(node) {\n [\n this.__studyOptionsPage,\n this.__fileInfoPage,\n this.__serviceOptionsPage\n ].forEach(page => {\n page.removeAll();\n page.getChildControl(\"button\").exclude();\n });\n\n const tabViewLeftPanel = this.getChildControl(\"side-panel-left-tabs\");\n tabViewLeftPanel.setSelection([this.__nodesPage]);\n\n if (node instanceof osparc.data.model.Study) {\n this.__populateSecondaryColumnStudy(node);\n } else if (node && node.isFilePicker()) {\n this.__populateSecondaryColumnFilePicker(node);\n } else if (node && node.isParameter()) {\n this.__populateSecondaryColumnParameter(node);\n } else if (node) {\n this.__populateSecondaryColumnNode(node);\n }\n },\n\n __populateSecondaryColumnStudy: function(study) {\n this.__studyOptionsPage.getChildControl(\"button\").show();\n this.getChildControl(\"side-panel-right-tabs\").setSelection([this.__studyOptionsPage]);\n\n const scrollView = new qx.ui.container.Scroll();\n const secondaryColumnStudyContent = new qx.ui.container.Composite(new qx.ui.layout.VBox(15)).set({\n backgroundColor: \"transparent\"\n });\n scrollView.add(secondaryColumnStudyContent);\n this.__studyOptionsPage.add(scrollView, {\n flex: 1\n });\n\n secondaryColumnStudyContent.add(new osparc.info.StudyMedium(study), {\n flex: 1\n });\n\n secondaryColumnStudyContent.add(this.__getSlideshowSection());\n\n secondaryColumnStudyContent.add(this.__getAnnotationsSection());\n\n const snaps = this.__getSnapshotsSection();\n snaps.exclude();\n const isVCDisabled = osparc.utils.DisabledPlugins.isVersionControlDisabled();\n snaps.setVisibility(isVCDisabled ? \"excluded\" : \"visible\");\n secondaryColumnStudyContent.add(snaps);\n\n const iters = this.__getIterationsSection();\n const isMMDisabled = osparc.utils.DisabledPlugins.isMetaModelingDisabled();\n snaps.setVisibility(isMMDisabled ? \"excluded\" : \"visible\");\n secondaryColumnStudyContent.add(iters);\n },\n\n __getSlideshowSection: function() {\n const slideshowSection = new qx.ui.container.Composite(new qx.ui.layout.VBox(10));\n slideshowSection.add(new qx.ui.basic.Label(this.tr(\"App Mode\")).set({\n font: \"text-14\"\n }));\n\n const slideshowButtons = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n slideshowSection.add(slideshowButtons);\n\n const buttonsHeight = 28;\n const editSlidesBtn = this.__editSlidesButton = new qx.ui.form.Button().set({\n label: this.tr(\"Edit\"),\n icon: \"@FontAwesome5Solid/edit/14\",\n height: buttonsHeight\n });\n editSlidesBtn.addListener(\"execute\", () => this.fireEvent(\"slidesEdit\"), this);\n slideshowButtons.add(editSlidesBtn);\n\n const startAppBtn = this.__startAppButton = new qx.ui.form.Button().set({\n label: this.tr(\"Start\"),\n icon: \"@FontAwesome5Solid/play/14\",\n toolTipText: this.tr(\"Start App Mode\"),\n height: buttonsHeight\n });\n startAppBtn.addListener(\"execute\", () => this.getStudy().getUi().setMode(\"app\"), this);\n slideshowButtons.add(startAppBtn);\n\n this.__evalSlidesButtons();\n\n return slideshowSection;\n },\n\n __evalSlidesButtons: function() {\n const study = this.getStudy();\n if (study && this.__editSlidesButton) {\n const canIWrite = osparc.data.model.Study.canIWrite(study.getAccessRights());\n this.__editSlidesButton.setEnabled(canIWrite);\n const canStart = study.hasSlideshow() || study.getWorkbench().isPipelineLinear();\n this.__startAppButton.setEnabled(canStart);\n this.__startAppButtonTB.setVisibility(canStart ? \"visible\" : \"hidden\");\n }\n },\n\n __getAnnotationsSection: function() {\n const annotationsSection = new qx.ui.container.Composite(new qx.ui.layout.VBox(10));\n annotationsSection.add(new qx.ui.basic.Label(this.tr(\"Annotations\")).set({\n font: \"text-14\"\n }));\n\n const annotationsButtons = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n annotationsSection.add(annotationsButtons);\n\n const buttonsHeight = 28;\n const addNoteBtn = new qx.ui.form.Button().set({\n label: this.tr(\"Note\"),\n icon: \"@FontAwesome5Solid/plus/14\",\n height: buttonsHeight\n });\n addNoteBtn.addListener(\"execute\", () => this.__workbenchUI.startAnnotationsNote(), this);\n annotationsButtons.add(addNoteBtn);\n\n const addRectBtn = new qx.ui.form.Button().set({\n label: this.tr(\"Rectangle\"),\n icon: \"@FontAwesome5Solid/plus/14\",\n height: buttonsHeight\n });\n addRectBtn.addListener(\"execute\", () => this.__workbenchUI.startAnnotationsRect(), this);\n annotationsButtons.add(addRectBtn);\n\n const addTextBtn = new qx.ui.form.Button().set({\n label: this.tr(\"Text\"),\n icon: \"@FontAwesome5Solid/plus/14\",\n height: buttonsHeight\n });\n addTextBtn.addListener(\"execute\", () => this.__workbenchUI.startAnnotationsText(), this);\n annotationsButtons.add(addTextBtn);\n\n return annotationsSection;\n },\n\n __getSnapshotsSection: function() {\n const snapshotSection = new qx.ui.container.Composite(new qx.ui.layout.VBox(10));\n snapshotSection.add(new qx.ui.basic.Label(this.tr(\"Checkpoints\")).set({\n font: \"text-14\"\n }));\n\n const snapshotButtons = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n snapshotSection.add(snapshotButtons);\n\n const buttonsHeight = 28;\n const takeSnapshotBtn = new qx.ui.form.Button().set({\n label: this.tr(\"New\"),\n height: buttonsHeight\n });\n takeSnapshotBtn.setEnabled(osparc.data.Permissions.getInstance().canDo(\"study.snapshot.create\"));\n takeSnapshotBtn.addListener(\"execute\", () => this.fireEvent(\"takeSnapshot\"), this);\n snapshotButtons.add(takeSnapshotBtn);\n\n const showSnapshotsBtn = new qx.ui.form.Button().set({\n label: this.tr(\"Show\"),\n height: buttonsHeight\n });\n const store = osparc.store.Store.getInstance();\n store.bind(\"snapshots\", showSnapshotsBtn, \"enabled\", {\n converter: snapshots => Boolean(snapshots.length)\n });\n showSnapshotsBtn.addListener(\"execute\", () => this.fireEvent(\"showSnapshots\"), this);\n snapshotButtons.add(showSnapshotsBtn);\n\n return snapshotSection;\n },\n\n __getIterationsSection: function() {\n const iterationsSection = new qx.ui.container.Composite(new qx.ui.layout.VBox(10));\n iterationsSection.add(new qx.ui.basic.Label(this.tr(\"Iterations\")).set({\n font: \"text-14\"\n }));\n\n const iterationButtons = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n iterationsSection.add(iterationButtons);\n\n const buttonsHeight = 28;\n const createIterationsBtn = new qx.ui.form.Button().set({\n label: this.tr(\"Create\"),\n height: buttonsHeight\n });\n createIterationsBtn.setEnabled(osparc.data.Permissions.getInstance().canDo(\"study.snapshot.create\"));\n createIterationsBtn.setEnabled(false);\n createIterationsBtn.addListener(\"execute\", () => this.fireEvent(\"createIterations\"), this);\n iterationButtons.add(createIterationsBtn);\n\n const showIterationsBtn = new qx.ui.form.Button().set({\n label: this.tr(\"Show\"),\n height: buttonsHeight\n });\n const store = osparc.store.Store.getInstance();\n store.bind(\"iterations\", showIterationsBtn, \"enabled\", {\n converter: iterations => Boolean(iterations.length)\n });\n showIterationsBtn.addListener(\"execute\", () => this.fireEvent(\"showIterations\"), this);\n iterationButtons.add(showIterationsBtn);\n\n return iterationsSection;\n },\n\n __populateSecondaryColumnFilePicker: function(filePicker) {\n const fpView = new osparc.file.FilePicker(filePicker, \"workbench\");\n if (osparc.file.FilePicker.hasOutputAssigned(filePicker.getOutputs())) {\n this.__fileInfoPage.getChildControl(\"button\").show();\n this.getChildControl(\"side-panel-right-tabs\").setSelection([this.__fileInfoPage]);\n\n this.__fileInfoPage.add(fpView, {\n flex: 1\n });\n } else {\n // empty File Picker\n const tabViewLeftPanel = this.getChildControl(\"side-panel-left-tabs\");\n tabViewLeftPanel.setSelection([this.__storagePage]);\n\n this.__serviceOptionsPage.getChildControl(\"button\").show();\n this.getChildControl(\"side-panel-right-tabs\").setSelection([this.__serviceOptionsPage]);\n\n this.__serviceOptionsPage.add(fpView, {\n flex: 1\n });\n }\n [\n \"itemReset\",\n \"itemSelected\",\n \"fileUploaded\"\n ].forEach(ev => fpView.addListener(ev, () => this.__populateSecondaryColumn(filePicker)));\n },\n\n __populateSecondaryColumnParameter: function(parameter) {\n this.__serviceOptionsPage.getChildControl(\"button\").show();\n this.getChildControl(\"side-panel-right-tabs\").setSelection([this.__serviceOptionsPage]);\n\n const view = new osparc.node.ParameterEditor(parameter);\n view.buildForm(false);\n this.__serviceOptionsPage.add(view, {\n flex: 1\n });\n },\n\n __populateSecondaryColumnNode: async function(node) {\n this.__serviceOptionsPage.getChildControl(\"button\").show();\n this.getChildControl(\"side-panel-right-tabs\").setSelection([this.__serviceOptionsPage]);\n\n const spacing = 8;\n const vBox = new qx.ui.container.Composite(new qx.ui.layout.VBox().set({\n separator: \"separator-vertical\",\n spacing: spacing*2\n }));\n\n this.__serviceOptionsPage.bind(\"width\", vBox, \"width\");\n\n // HEADER\n const nodeMetadata = node.getMetaData();\n const version = osparc.service.Utils.getVersionDisplay(nodeMetadata[\"key\"], nodeMetadata[\"version\"]);\n const header = new qx.ui.basic.Label(`${nodeMetadata[\"name\"]} ${version}`).set({\n paddingLeft: 5\n });\n vBox.add(header);\n\n // INPUTS FORM\n if (node.isPropertyInitialized(\"propsForm\") && node.getPropsForm()) {\n const inputsForm = node.getPropsForm();\n const inputs = new osparc.desktop.PanelView(this.tr(\"Inputs\"), inputsForm);\n inputs._innerContainer.set({\n margin: spacing\n });\n vBox.add(inputs);\n }\n\n // OUTPUTS\n const outputsBox = new qx.ui.container.Composite(new qx.ui.layout.VBox(spacing));\n const outputsForm = node.getOutputsForm();\n if (node.hasOutputs() && outputsForm) {\n outputsForm.set({\n offerProbes: true\n });\n outputsBox.add(outputsForm);\n }\n\n const nodeFilesBtn = new qx.ui.form.Button(this.tr(\"Service data\"), \"@FontAwesome5Solid/folder-open/14\").set({\n allowGrowX: false,\n allowGrowY: false\n });\n osparc.utils.Utils.setIdToWidget(nodeFilesBtn, \"nodeFilesBtn\");\n nodeFilesBtn.addListener(\"execute\", () => this.self().openStudyDataManager(node));\n outputsBox.add(nodeFilesBtn);\n\n const outputs = new osparc.desktop.PanelView(this.tr(\"Outputs\"), outputsBox);\n outputs._innerContainer.set({\n margin: spacing\n });\n vBox.add(outputs);\n\n // NODE OPTIONS\n const nodeOptions = this.__getNodeOptionsPage(node);\n if (nodeOptions) {\n const options = new osparc.desktop.PanelView(this.tr(\"Options\"), nodeOptions);\n options._innerContainer.set({\n margin: spacing\n });\n nodeOptions.bind(\"visibility\", options, \"visibility\");\n vBox.add(options);\n }\n\n const scrollContainer = new qx.ui.container.Scroll();\n scrollContainer.add(vBox);\n this.__serviceOptionsPage.add(scrollContainer, {\n flex: 1\n });\n },\n\n __getNodeOptionsPage: function(node) {\n if (osparc.auth.Data.getInstance().isGuest()) {\n return null;\n }\n\n const nodeOptions = new osparc.widget.NodeOptions(node);\n nodeOptions.buildLayout();\n\n return nodeOptions;\n },\n\n getLogger: function() {\n return this.__loggerView;\n },\n\n __getNodeLogger: function(nodeId) {\n const nodes = this.getStudy().getWorkbench().getNodes();\n for (const node of Object.values(nodes)) {\n if (nodeId === node.getNodeId()) {\n return node.getLogger();\n }\n }\n return null;\n },\n\n __attachEventHandlers: function() {\n const maximizeIframeCb = msg => this.setMaximized(msg.getData());\n this.addListener(\"appear\", () => qx.event.message.Bus.getInstance().subscribe(\"maximizeIframe\", maximizeIframeCb, this), this);\n this.addListener(\"disappear\", () => qx.event.message.Bus.getInstance().unsubscribe(\"maximizeIframe\", maximizeIframeCb, this), this);\n },\n\n __removeNode: function(nodeId) {\n const workbench = this.getStudy().getWorkbench();\n const node = workbench.getNode(nodeId);\n if (node) {\n const avoidConfirmation = node.isFilePicker() && !osparc.file.FilePicker.hasOutputAssigned(node.getOutputs());\n const preferencesSettings = osparc.Preferences.getInstance();\n if (!avoidConfirmation && preferencesSettings.getConfirmDeleteNode()) {\n const msg = this.tr(\"Are you sure you want to delete the selected node?\");\n const win = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Delete Node\"),\n confirmText: this.tr(\"Delete\"),\n confirmAction: \"delete\"\n });\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n this.__doRemoveNode(nodeId);\n }\n }, this);\n } else {\n this.__doRemoveNode(nodeId);\n }\n }\n },\n\n __removeNodes: function(nodeIds) {\n const preferencesSettings = osparc.Preferences.getInstance();\n if (preferencesSettings.getConfirmDeleteNode()) {\n const msg = this.tr(\"Are you sure you want to delete the selected \") + nodeIds.length + \" nodes?\";\n const win = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Delete Nodes\"),\n confirmText: this.tr(\"Delete\"),\n confirmAction: \"delete\"\n });\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n nodeIds.forEach(nodeId => this.__doRemoveNode(nodeId));\n }\n }, this);\n } else {\n nodeIds.forEach(nodeId => this.__doRemoveNode(nodeId));\n }\n },\n\n __doRemoveNode: async function(nodeId) {\n const workbench = this.getStudy().getWorkbench();\n const connectedEdges = workbench.getConnectedEdges(nodeId);\n const removed = await workbench.removeNode(nodeId);\n if (removed) {\n // remove first the connected edges\n for (let i = 0; i < connectedEdges.length; i++) {\n const edgeId = connectedEdges[i];\n this.__workbenchUI.clearEdge(edgeId);\n }\n this.__workbenchUI.clearNode(nodeId);\n }\n if ([this.__currentNodeId, null].includes(this.__nodesTree.getCurrentNodeId())) {\n this.nodeSelected(this.getStudy().getUuid());\n }\n },\n\n __removeEdge: function(edgeId) {\n const workbench = this.getStudy().getWorkbench();\n const removed = workbench.removeEdge(edgeId);\n if (removed) {\n this.__workbenchUI.clearEdge(edgeId);\n }\n },\n\n __workbenchChanged: function() {\n this.__nodesTree.populateTree();\n this.__nodesTree.nodeSelected(this.__currentNodeId);\n },\n\n showPipeline: function() {\n this.__populateSecondaryColumn(this.getStudy());\n this.__evalIframe();\n this.__openWorkbenchTab();\n this.__loggerView.setCurrentNodeId(null);\n\n this.getStudy().getUi().setCurrentNodeId(this.getStudy().getUuid());\n },\n\n fullscreenNode: function(nodeId) {\n const node = this.getStudy().getWorkbench().getNode(nodeId);\n if (node && node.isDynamic()) {\n qx.event.Timer.once(() => {\n this.__populateSecondaryColumn(node);\n this.__openIframeTab(node);\n node.getIFrame().maximizeIFrame(true);\n }, this, 10);\n }\n this.__loggerView.setCurrentNodeId(nodeId);\n this.__workbenchUI.nodeSelected(nodeId);\n },\n\n openFirstNode: function() {\n const validNodes = this.getStudy().getNonFrontendNodes();\n if (validNodes.length === 1 && validNodes[0].isDynamic()) {\n const dynamicNode = validNodes[0];\n this.fullscreenNode(dynamicNode.getNodeId());\n this.getStudy().getUi().setCurrentNodeId(dynamicNode.getNodeId());\n } else {\n this.setMaximized(false);\n this.nodeSelected(this.getStudy().getUuid());\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.SlideshowView\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox());\n\n const slideshowToolbar = this.__slideshowToolbar = new osparc.desktop.SlideshowToolbar().set({\n backgroundColor: \"workbench-view-navbar\"\n });\n\n const collapseWithUserMenu = this.__collapseWithUserMenu = new osparc.desktop.CollapseWithUserMenu();\n [\n \"backToDashboardPressed\",\n \"collapseNavBar\",\n \"expandNavBar\"\n ].forEach(signalName => collapseWithUserMenu.addListener(signalName, () => this.fireEvent(signalName)), this);\n // eslint-disable-next-line no-underscore-dangle\n slideshowToolbar._add(collapseWithUserMenu);\n\n slideshowToolbar.addListener(\"saveSlideshow\", () => {\n if (this.__currentNodeId) {\n const slideshow = this.getStudy().getUi().getSlideshow();\n if (!Object.keys(slideshow).includes(this.__currentNodeId)) {\n this.__openFirstNode();\n }\n } else {\n this.__openFirstNode();\n }\n }, this);\n slideshowToolbar.addListener(\"nodeSelectionRequested\", e => {\n const nodeId = e.getData();\n this.__moveToNode(nodeId);\n }, this);\n slideshowToolbar.addListener(\"addServiceBetween\", e => {\n const {\n leftNodeId,\n rightNodeId\n } = e.getData();\n this.__requestServiceBetween(leftNodeId, rightNodeId);\n }, this);\n slideshowToolbar.addListener(\"removeNode\", e => {\n const nodeId = e.getData();\n this.__removeNode(nodeId);\n }, this);\n slideshowToolbar.addListener(\"showNode\", e => {\n const {\n nodeId,\n desiredPos\n } = e.getData();\n this.__showNode(nodeId, desiredPos);\n }, this);\n slideshowToolbar.addListener(\"hideNode\", e => {\n const nodeId = e.getData();\n this.__hideNode(nodeId);\n }, this);\n slideshowToolbar.addListener(\"slidesStop\", () => this.getStudy().getUi().setMode(\"workbench\"), this);\n this._add(slideshowToolbar);\n\n const mainView = this.__mainView = new qx.ui.container.Composite(new qx.ui.layout.HBox().set({\n alignX: \"center\"\n }));\n this._add(mainView, {\n flex: 1\n });\n\n const prevNextButtons = this.__prevNextButtons = new osparc.navigation.PrevNextButtons();\n prevNextButtons.addListener(\"nodeSelected\", e => {\n const nodeId = e.getData();\n this.__moveToNode(nodeId);\n }, this);\n prevNextButtons.addListener(\"runPressed\", e => {\n const nodeId = e.getData();\n this.fireDataEvent(\"startPartialPipeline\", [nodeId]);\n }, this);\n const prevButton = this.__prevButton = prevNextButtons.getPreviousButton().set({\n alignX: \"right\",\n alignY: \"middle\"\n });\n const nextButton = this.__nextButton = prevNextButtons.getNextButton().set({\n alignX: \"left\",\n alignY: \"middle\"\n });\n const runButton = this.__runButton = prevNextButtons.getRunButton().set({\n alignX: \"left\",\n alignY: \"middle\"\n });\n mainView.add(prevButton);\n mainView.add(nextButton);\n mainView.add(runButton);\n },\n\n events: {\n \"startPartialPipeline\": \"qx.event.type.Data\",\n \"stopPipeline\": \"qx.event.type.Event\",\n \"backToDashboardPressed\": \"qx.event.type.Event\",\n \"collapseNavBar\": \"qx.event.type.Event\",\n \"expandNavBar\": \"qx.event.type.Event\"\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n apply: \"_applyStudy\",\n nullable: false\n },\n\n maximized: {\n check: \"Boolean\",\n init: null,\n nullable: false,\n apply: \"__applyMaximized\",\n event: \"changeMaximized\"\n },\n },\n\n statics: {\n CARD_MARGIN: 6\n },\n\n members: {\n __slideshowToolbar: null,\n __collapseWithUserMenu: null,\n __mainView: null,\n __prevNextButtons: null,\n __prevButton: null,\n __nextButton: null,\n __runButton: null,\n __nodeView: null,\n __currentNodeId: null,\n\n getSelectedNodeIDs: function() {\n return [this.__currentNodeId];\n },\n\n getCollapseWithUserMenu: function() {\n return this.__collapseWithUserMenu;\n },\n\n __isNodeReady: function(lastCurrentNodeId) {\n const node = this.getStudy().getWorkbench().getNode(lastCurrentNodeId);\n return osparc.data.model.NodeStatus.isCompNodeReady(node);\n },\n\n __getNeedToRunDependencies: function(node) {\n const dependencies = node.getStatus().getDependencies() || [];\n const wb = this.getStudy().getWorkbench();\n const upstreamNodeIds = wb.getUpstreamCompNodes(node, false);\n upstreamNodeIds.forEach(upstreamNodeId => {\n const upstreamNode = wb.getNode(upstreamNodeId);\n if (osparc.data.model.NodeStatus.doesCompNodeNeedRun(upstreamNode)) {\n dependencies.push(upstreamNodeId);\n }\n });\n return dependencies;\n },\n\n __getNotReadyDependencies: function(node) {\n const dependencies = node.getStatus().getDependencies() || [];\n const wb = this.getStudy().getWorkbench();\n const upstreamNodeIds = wb.getUpstreamCompNodes(node, true);\n upstreamNodeIds.forEach(upstreamNodeId => {\n if (!this.__isNodeReady(upstreamNodeId)) {\n dependencies.push(upstreamNodeId);\n }\n });\n return dependencies;\n },\n\n __getUpstreamCompDependencies: function(node) {\n const dependencies = node.getStatus().getDependencies() || [];\n const wb = this.getStudy().getWorkbench();\n const upstreamNodeIds = wb.getUpstreamCompNodes(node, true);\n upstreamNodeIds.forEach(upstreamNodeId => {\n if (wb.getNode(upstreamNodeId).isComputational()) {\n dependencies.push(upstreamNodeId);\n }\n });\n return dependencies;\n },\n\n __moveToNode: function(nodeId) {\n this.nodeSelected(nodeId);\n },\n\n __connectMaximizeEvents: function(node) {\n if (node.isDynamic()) {\n const loadingPage = node.getLoadingPage();\n const iFrame = node.getIFrame();\n if (loadingPage && iFrame) {\n [\n loadingPage,\n iFrame\n ].forEach(widget => {\n if (widget) {\n widget.addListener(\"maximize\", () => this.setMaximized(true), this);\n widget.addListener(\"restore\", () => this.setMaximized(false), this);\n }\n });\n }\n }\n },\n\n __styleView: function(node, view) {\n view.getContentElement().setStyles({\n \"border-radius\": \"12px\"\n });\n view.set({\n maxWidth: node.isDynamic() ? null : 800,\n margin: this.self().CARD_MARGIN\n });\n if (node.isParameter()) {\n view.bind(\"backgroundColor\", view.getChildControl(\"frame\"), \"backgroundColor\");\n view.set({\n backgroundColor: \"navigation_bar_background_color\",\n padding: 6\n });\n } else {\n view.getMainView().set({\n backgroundColor: \"navigation_bar_background_color\",\n padding: 6,\n paddingTop: 0,\n paddingBottom: 0\n });\n }\n if (node.isFilePicker()) {\n view.getMainView().set({\n backgroundColor: \"navigation_bar_background_color\"\n });\n }\n },\n\n __getNodeView: function(node) {\n let view;\n if (node.isParameter()) {\n view = osparc.node.slideshow.BaseNodeView.createSettingsGroupBox(this.tr(\"Settings\"));\n const renderer = new osparc.node.ParameterEditor(node);\n renderer.buildForm(false);\n view.add(renderer);\n } else {\n if (node.isFilePicker()) {\n view = new osparc.node.slideshow.FilePickerView();\n view.getOutputsButton().hide();\n } else {\n view = new osparc.node.slideshow.NodeView();\n }\n view.setNode(node);\n }\n this.__connectMaximizeEvents(node);\n this.__styleView(node, view);\n return view;\n },\n\n nodeSelected: function(nodeId) {\n const node = this.getStudy().getWorkbench().getNode(nodeId);\n if (node) {\n const lastCurrentNodeId = this.__currentNodeId;\n\n // If the user is moving forward do some run checks:\n const studyUI = this.getStudy().getUi();\n const movingForward = studyUI.getSlideshow().isMovingForward(lastCurrentNodeId, nodeId);\n if (movingForward) {\n // check if lastCurrentNodeId has to be run\n if (!this.__isNodeReady(lastCurrentNodeId)) {\n this.fireDataEvent(\"startPartialPipeline\", [lastCurrentNodeId]);\n return;\n }\n }\n\n this.__currentNodeId = nodeId;\n this.getStudy().getUi().setCurrentNodeId(nodeId);\n\n // build layout\n const view = this.__getNodeView(node);\n\n this.__prevNextButtons.setNode(node);\n\n if (view) {\n if (this.__nodeView && this.__nodeView.getInstructionsWindow()) {\n this.__nodeView.getInstructionsWindow().close();\n }\n if (this.__nodeView && this.__mainView.getChildren().includes(this.__nodeView)) {\n this.__mainView.remove(this.__nodeView);\n }\n this.__mainView.addAt(view, 1, {\n flex: 1\n });\n this.__nodeView = view;\n\n // Automatically request to start the dynamic service when the user gets to this step\n if (node.isDynamic()) {\n node.requestStartNode();\n }\n }\n\n const upstreamDependencies = this.__getUpstreamCompDependencies(node);\n this.__nodeView.setUpstreamDependencies(upstreamDependencies);\n if (!this.__nodeView.hasListener(\"startPartialPipeline\")) {\n this.__nodeView.addListener(\"startPartialPipeline\", e => this.fireDataEvent(\"startPartialPipeline\", e.getData()));\n }\n if (!this.__nodeView.hasListener(\"stopPipeline\")) {\n this.__nodeView.addListener(\"stopPipeline\", () => this.fireEvent(\"stopPipeline\"));\n }\n\n const notReadyDependencies = this.__getNotReadyDependencies(node);\n if (notReadyDependencies && notReadyDependencies.length) {\n this.__nodeView.showPreparingInputs();\n }\n\n // check if upstream has to be run\n const notStartedDependencies = this.__getNeedToRunDependencies(node);\n if (notStartedDependencies && notStartedDependencies.length) {\n this.fireDataEvent(\"startPartialPipeline\", notStartedDependencies);\n }\n } else if (this.__nodeView) {\n this.__mainView.remove(this.__nodeView);\n }\n this.getStudy().getUi().setCurrentNodeId(nodeId);\n },\n\n __applyMaximized: function(maximized) {\n [\n this.__slideshowToolbar,\n this.__prevButton,\n this.__nextButton,\n this.__runButton,\n this.__nodeView.getHeaderLayout(),\n this.__nodeView.getLoggerPanel()\n ].forEach(widget => widget.setVisibility(maximized ? \"excluded\" : \"visible\"));\n\n this.__nodeView.set({\n margin: maximized ? 0 : this.self().CARD_MARGIN\n });\n },\n\n startSlides: function() {\n // If the study is not initialized this will fail\n if (!this.isPropertyInitialized(\"study\")) {\n console.error(\"study is not initialized\");\n return;\n }\n const study = this.getStudy();\n const slideshow = study.getUi().getSlideshow();\n if (slideshow.isEmpty()) {\n const sortedPipeline = study.getWorkbench().getPipelineLinearSorted();\n if (sortedPipeline) {\n sortedPipeline.forEach((nodeId, i) => {\n slideshow.insertNode(nodeId, i);\n });\n }\n }\n this.__slideshowToolbar.populateButtons(true);\n const currentNodeId = this.getStudy().getUi().getCurrentNodeId();\n const isValid = slideshow.getPosition(currentNodeId) !== -1;\n if (isValid && currentNodeId) {\n this.__moveToNode(currentNodeId);\n } else {\n this.__openFirstNode();\n }\n\n if (this.__nodeView) {\n const node = this.__nodeView.getNode();\n if (node.isDynamic()) {\n // Start it. First wait 2 seconds because the function depends on the node's state which might not be available yet\n setTimeout(() => node.requestStartNode(), 2000);\n }\n }\n },\n\n _applyStudy: function(study) {\n if (study) {\n this.__slideshowToolbar.setStudy(study);\n this.__prevNextButtons.setStudy(study);\n }\n },\n\n __openFirstNode: function() {\n const study = this.getStudy();\n if (study) {\n const nodes = study.getUi().getSlideshow().getSortedNodes();\n if (nodes.length) {\n this.__moveToNode(nodes[0].nodeId);\n } else {\n this.__moveToNode(null);\n }\n }\n },\n\n __requestServiceBetween: function(leftNodeId, rightNodeId) {\n const srvCat = new osparc.workbench.ServiceCatalog();\n srvCat.setContext(leftNodeId, rightNodeId);\n srvCat.addListener(\"addService\", e => {\n const data = e.getData();\n const service = data.service;\n this.__addServiceBetween(service, leftNodeId, rightNodeId);\n }, this);\n srvCat.center();\n srvCat.open();\n },\n\n __addServiceBetween: async function(service, leftNodeId, rightNodeId) {\n const workbench = this.getStudy().getWorkbench();\n\n const node = await workbench.addServiceBetween(service, leftNodeId, rightNodeId);\n if (node === null) {\n return;\n }\n\n // add to the slideshow\n const slideshow = this.getStudy().getUi().getSlideshow();\n slideshow.addNodeToSlideshow(node, leftNodeId, rightNodeId);\n\n this.__slideshowToolbar.populateButtons();\n },\n\n __removeNode: function(nodeId) {\n const workbench = this.getStudy().getWorkbench();\n const node = workbench.getNode(nodeId);\n if (!node) {\n return;\n }\n if (nodeId === this.__currentNodeId) {\n return;\n }\n\n const preferencesSettings = osparc.Preferences.getInstance();\n if (preferencesSettings.getConfirmDeleteNode()) {\n const msg = this.tr(\"Are you sure you want to delete node?\");\n const win = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Delete\"),\n confirmText: this.tr(\"Delete\"),\n confirmAction: \"delete\"\n });\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n this.__doRemoveNode(nodeId);\n }\n }, this);\n } else {\n this.__doRemoveNode(nodeId);\n }\n },\n\n __doRemoveNode: function(nodeId) {\n // connect next node to previous node\n let leftNodeId = null;\n let rightNodeId = null;\n const nodes = this.getStudy().getUi().getSlideshow()\n .getSortedNodes();\n const idx = nodes.findIndex(node2 => node2.nodeId === nodeId);\n if (idx < 0) {\n return;\n }\n if (idx !== 0) {\n // not first\n leftNodeId = nodes[idx-1].nodeId;\n }\n if (idx < nodes.length-1) {\n // not last\n rightNodeId = nodes[idx+1].nodeId;\n }\n\n // bypass connection\n const workbench = this.getStudy().getWorkbench();\n workbench.createEdge(null, leftNodeId, rightNodeId, true);\n\n // remove node\n workbench.removeNode(nodeId);\n\n this.__slideshowToolbar.populateButtons();\n },\n\n __showNode: function(nodeId, desiredPos) {\n this.getStudy().getUi().getSlideshow()\n .insertNode(nodeId, desiredPos);\n\n this.__slideshowToolbar.populateButtons();\n },\n\n __hideNode: function(nodeId) {\n this.getStudy().getUi().getSlideshow()\n .removeNode(nodeId);\n\n this.__slideshowToolbar.populateButtons();\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget that shows a logging view.\n *\n * It consists of:\n * - a toolbar containing:\n * - clear button\n * - filter as you type textfield\n * - some log type filtering buttons\n * - log messages table\n *\n * Log messages have two inputs: \"Origin\" and \"Message\".\n *\n * Depending on the log level, \"Origin\"'s color will change, also \"Message\"s coming from the same\n * origin will be rendered with the same color.\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let loggerView = new osparc.widget.logger.LoggerView();\n * this.getRoot().add(loggerView);\n * loggerView.info(null, \"Hello world\");\n *
\n */\n\n\nqx.Class.define(\"osparc.widget.logger.LoggerView\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base();\n\n this._setLayout(new qx.ui.layout.VBox());\n\n this.__createFilterToolbar();\n\n const table = this.__createTableLayout();\n this._add(table, {\n flex: 1\n });\n },\n\n properties: {\n logLevel: {\n apply : \"__applyFilters\",\n nullable: false,\n check : \"Number\",\n init: 0\n },\n\n lockLogs: {\n apply : \"__updateTable\",\n nullable: false,\n check : \"Boolean\",\n init: true\n },\n\n currentNodeId: {\n check: \"String\",\n nullable: true,\n apply: \"__currentNodeIdChanged\"\n }\n },\n\n statics: {\n POS: {\n LOG_LEVEL: 0,\n TIMESTAMP: 1,\n ORIGIN: 2,\n MESSAGE: 3,\n },\n\n LOG_LEVELS: {\n DEBUG: -1,\n INFO: 0,\n WARNING: 1,\n ERROR: 2\n },\n\n LOG_LEVEL_MAP: {\n 10: \"DEBUG\",\n 20: \"INFO\",\n 30: \"WARNING\",\n 40: \"ERROR\",\n 50: \"ERROR\" // CRITICAL\n },\n\n printRow: function(rowData) {\n return `${rowData.timeStamp} ${this.self().logLevel2Str(rowData.logLevel)} ${rowData.nodeId} ${rowData.label}: ${rowData.msg}`;\n },\n\n logLevel2Str: function(logLevel) {\n const pairFound = Object.entries(this.LOG_LEVELS).find(pair => pair[1] === logLevel);\n if (pairFound && pairFound.length) {\n return pairFound[0];\n }\n return undefined;\n }\n },\n\n members: {\n __textFilterField: null,\n __loggerModel: null,\n __loggerTable: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"toolbar\":\n control = new qx.ui.toolbar.ToolBar();\n control.setBackgroundColor(\"transparent\");\n this._add(control);\n break;\n case \"pin-node\": {\n const toolbar = this.getChildControl(\"toolbar\");\n control = new qx.ui.form.ToggleButton().set({\n icon: \"@FontAwesome5Solid/thumbtack/14\",\n toolTipText: this.tr(\"Show logs only from current node\"),\n appearance: \"toolbar-button\"\n });\n toolbar.add(control);\n break;\n }\n case \"filter-text\": {\n const toolbar = this.getChildControl(\"toolbar\");\n control = new qx.ui.form.TextField().set({\n appearance: \"toolbar-textfield\",\n liveUpdate: true,\n placeholder: this.tr(\"Filter\"),\n marginLeft: 5,\n marginRight: 5,\n });\n osparc.utils.Utils.setIdToWidget(control, \"logsFilterField\");\n toolbar.add(control, {\n flex: 1\n });\n break;\n }\n case \"log-level\": {\n const toolbar = this.getChildControl(\"toolbar\");\n const minLogLevelLabel = new qx.ui.basic.Label().set({\n value: this.tr(\"Min log-level\"),\n alignY: \"middle\",\n });\n toolbar.add(minLogLevelLabel);\n control = new qx.ui.form.SelectBox().set({\n appearance: \"toolbar-selectbox\",\n maxWidth: 80\n });\n let logLevelSet = false;\n Object.keys(this.self().LOG_LEVELS).forEach(logLevelKey => {\n const logLevel = this.self().LOG_LEVELS[logLevelKey];\n if (logLevelKey === \"DEBUG\" && !osparc.data.Permissions.getInstance().canDo(\"study.logger.debug.read\")) {\n return;\n }\n const label = qx.lang.String.firstUp(logLevelKey);\n const listItem = new qx.ui.form.ListItem(label);\n control.add(listItem);\n listItem.logLevel = logLevel;\n if (!logLevelSet) {\n this.setLogLevel(logLevel);\n logLevelSet = true;\n }\n });\n toolbar.add(control);\n break;\n }\n case \"lock-logs-button\": {\n control = new qx.ui.form.ToggleButton().set({\n toolTipText: this.tr(\"Toggle auto-scroll\"),\n appearance: \"toolbar-button\"\n });\n control.bind(\"value\", this, \"lockLogs\");\n control.bind(\"value\", control, \"icon\", {\n converter: val => val ? \"@FontAwesome5Solid/lock-open/14\" : \"@FontAwesome5Solid/lock/14\"\n });\n const toolbar = this.getChildControl(\"toolbar\");\n toolbar.add(control);\n break;\n }\n case \"copy-to-clipboard\": {\n const toolbar = this.getChildControl(\"toolbar\");\n control = new qx.ui.form.Button().set({\n icon: \"@FontAwesome5Solid/copy/14\",\n toolTipText: this.tr(\"Copy logs to clipboard\"),\n appearance: \"toolbar-button\"\n });\n osparc.utils.Utils.setIdToWidget(control, \"copyLogsToClipboardButton\");\n toolbar.add(control);\n break;\n }\n case \"copy-selected-to-clipboard\": {\n const toolbar = this.getChildControl(\"toolbar\");\n control = new qx.ui.form.Button().set({\n icon: \"@FontAwesome5Solid/file/14\",\n toolTipText: this.tr(\"Copy Selected log to clipboard\"),\n appearance: \"toolbar-button\"\n });\n toolbar.add(control);\n break;\n }\n case \"download-logs-button\": {\n const toolbar = this.getChildControl(\"toolbar\");\n control = new qx.ui.form.Button().set({\n icon: \"@FontAwesome5Solid/download/14\",\n toolTipText: this.tr(\"Download logs\"),\n appearance: \"toolbar-button\"\n });\n osparc.utils.Utils.setIdToWidget(control, \"__downloadLogsButton\");\n toolbar.add(control);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __createFilterToolbar: function() {\n const toolbar = this.getChildControl(\"toolbar\");\n\n const pinNode = this.getChildControl(\"pin-node\");\n pinNode.addListener(\"changeValue\", e => this.__pinChanged(e.getData()), this);\n\n const textFilterField = this.__textFilterField = this.getChildControl(\"filter-text\");\n textFilterField.addListener(\"changeValue\", this.__applyFilters, this);\n\n const logLevelSelectBox = this.getChildControl(\"log-level\");\n logLevelSelectBox.addListener(\"changeValue\", e => {\n this.setLogLevel(e.getData().logLevel);\n }, this);\n toolbar.add(logLevelSelectBox);\n\n const lockLogsButton = this.getChildControl(\"lock-logs-button\");\n toolbar.add(lockLogsButton);\n\n const copyToClipboardButton = this.getChildControl(\"copy-to-clipboard\");\n copyToClipboardButton.addListener(\"execute\", () => this.__copyLogsToClipboard(), this);\n toolbar.add(copyToClipboardButton);\n\n const copySelectedToClipboardButton = this.getChildControl(\"copy-selected-to-clipboard\");\n copySelectedToClipboardButton.addListener(\"execute\", () => this.__copySelectedLogToClipboard(), this);\n toolbar.add(copySelectedToClipboardButton);\n\n const downloadButton = this.getChildControl(\"download-logs-button\");\n downloadButton.addListener(\"execute\", () => this.__downloadLogs(), this);\n toolbar.add(downloadButton);\n\n return toolbar;\n },\n\n __createTableLayout: function() {\n const loggerModel = this.__loggerModel = new osparc.widget.logger.LoggerModel();\n\n const custom = {\n tableColumnModel : function(obj) {\n return new qx.ui.table.columnmodel.Resize(obj);\n }\n };\n\n // table\n const table = this.__loggerTable = new qx.ui.table.Table(loggerModel, custom).set({\n selectable: true,\n statusBarVisible: false,\n showCellFocusIndicator: false,\n forceLineHeight: false\n });\n // alwaysUpdateCells\n osparc.utils.Utils.setIdToWidget(table, \"logsViewer\");\n const colModel = table.getTableColumnModel();\n colModel.setDataCellRenderer(this.self().POS.LOG_LEVEL, new qx.ui.table.cellrenderer.Image(14, 14));\n colModel.setDataCellRenderer(this.self().POS.TIMESTAMP, new osparc.ui.table.cellrenderer.Html().set({\n defaultCellStyle: \"user-select: text\"\n }));\n colModel.setDataCellRenderer(this.self().POS.ORIGIN, new osparc.ui.table.cellrenderer.Html());\n colModel.setDataCellRenderer(this.self().POS.MESSAGE, new osparc.ui.table.cellrenderer.Html().set({\n defaultCellStyle: \"user-select: text; text-wrap: wrap\"\n }));\n const resizeBehavior = colModel.getBehavior();\n resizeBehavior.setWidth(this.self().POS.LOG_LEVEL, 35);\n resizeBehavior.setWidth(this.self().POS.TIMESTAMP, 80);\n resizeBehavior.setWidth(this.self().POS.ORIGIN, 100);\n\n table.setDataRowRenderer(new osparc.ui.table.rowrenderer.ExpandSelection(table, this.self().POS.MESSAGE));\n\n this.__applyFilters();\n\n return table;\n },\n\n filterByNode: function(nodeId) {\n this.setCurrentNodeId(nodeId);\n this.getChildControl(\"pin-node\").setValue(true);\n },\n\n __currentNodeIdChanged: function() {\n this.getChildControl(\"pin-node\").setValue(false);\n },\n\n __pinChanged: function(checked) {\n if (checked) {\n const currentNodeId = this.getCurrentNodeId();\n this.__nodeSelected(currentNodeId);\n }\n },\n\n __nodeSelected: function(nodeId) {\n const study = osparc.store.Store.getInstance().getCurrentStudy();\n const workbench = study.getWorkbench();\n const node = workbench.getNode(nodeId);\n this.__textFilterField.setValue(node ? node.getLabel() : \"\");\n },\n\n __getLogsString: function() {\n const newLine = \"\\n\";\n let logs = \"\";\n this.__loggerModel.getFilteredRows().forEach(rowData => {\n logs += this.self().printRow(rowData) + newLine;\n });\n return logs;\n },\n\n __copyLogsToClipboard: function() {\n osparc.utils.Utils.copyTextToClipboard(this.__getLogsString());\n },\n\n __copySelectedLogToClipboard: function() {\n const sel = this.__loggerTable.getSelectionModel().getAnchorSelectionIndex();\n if (sel > -1) {\n const rowData = this.__loggerModel.getRowData(sel);\n osparc.utils.Utils.copyTextToClipboard(this.self().printRow(rowData));\n }\n },\n\n __downloadLogs: function() {\n const logs = this.__getLogsString();\n const blob = new Blob([logs], {type: \"text/plain\"});\n osparc.utils.Utils.downloadBlobContent(blob, \"logs.log\");\n },\n\n debug: function(nodeId, msg = \"\") {\n this.__addLogs(nodeId, [msg], this.self().LOG_LEVELS.DEBUG);\n },\n\n info: function(nodeId, msg = \"\") {\n this.__addLogs(nodeId, [msg], this.self().LOG_LEVELS.INFO);\n },\n\n warn: function(nodeId, msg = \"\") {\n this.__addLogs(nodeId, [msg], this.self().LOG_LEVELS.WARNING);\n },\n\n error: function(nodeId, msg = \"\") {\n this.__addLogs(nodeId, [msg], this.self().LOG_LEVELS.ERROR);\n },\n\n debugs: function(nodeId, msgs = [\"\"]) {\n this.__addLogs(nodeId, msgs, this.self().LOG_LEVELS.DEBUG);\n },\n\n infos: function(nodeId, msgs = [\"\"]) {\n this.__addLogs(nodeId, msgs, this.self().LOG_LEVELS.INFO);\n },\n\n warns: function(nodeId, msgs = [\"\"]) {\n this.__addLogs(nodeId, msgs, this.self().LOG_LEVELS.WARNING);\n },\n\n errors: function(nodeId, msgs = [\"\"]) {\n this.__addLogs(nodeId, msgs, this.self().LOG_LEVELS.ERROR);\n },\n\n __addLogs: function(nodeId, msgs = [\"\"], logLevel = 0) {\n const study = osparc.store.Store.getInstance().getCurrentStudy();\n if (study === null) {\n return;\n }\n\n const workbench = study.getWorkbench();\n const node = workbench.getNode(nodeId);\n let label = null;\n if (node) {\n label = node.getLabel();\n node.addListener(\"changeLabel\", e => {\n const newLabel = e.getData();\n this.__loggerModel.nodeLabelChanged(nodeId, newLabel);\n this.__updateTable();\n }, this);\n } else {\n label = \"Workbench\";\n }\n\n const msgLogs = [];\n msgs.forEach(msg => {\n const msgLog = {\n logLevel,\n timeStamp: new Date(),\n nodeId,\n label,\n msg,\n tooltip: msg,\n };\n msgLogs.push(msgLog);\n });\n this.__loggerModel.addRows(msgLogs);\n\n this.__updateTable();\n },\n\n __updateTable: function() {\n if (this.__loggerModel) {\n this.__loggerModel.reloadData();\n // isWidgetOnScreen will avoid rendering every single line when the user click on the Logger button the first time\n if (!this.isLockLogs() && osparc.utils.Utils.isWidgetOnScreen(this.__loggerTable)) {\n const nFilteredRows = this.__loggerModel.getFilteredRowCount();\n this.__loggerTable.scrollCellVisible(0, nFilteredRows);\n }\n }\n },\n\n __applyFilters: function() {\n if (this.__loggerModel === null) {\n return;\n }\n\n this.__loggerModel.setFilterString(this.__textFilterField.getValue());\n this.__loggerModel.setFilterLogLevel(this.getLogLevel());\n this.__loggerModel.reloadData();\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Andrei Neagu (GitHK)\n\n************************************************************************ */\n\n/**\n * Automatically expire keys after ttl (time to live) is reached\n */\nqx.Class.define(\"osparc.data.TTLMap\", {\n extend: qx.core.Object,\n\n /**\n * @param ttl time for which to keep track of the entries\n */\n construct: function(ttl) {\n this.base(arguments);\n\n this._entries = new Map();\n this._ttl = ttl;\n },\n\n members: {\n\n /**\n * @param {object} entry: add an entry or extend it's duration\n */\n addOrUpdateEntry: function(entry) {\n const now = Date.now();\n console.log(\"mapping\", entry, \"to\", now);\n this._entries.set(entry, now);\n\n // Set a timeout to potentially remove the entry after the ttl if it's the latest\n setTimeout(() => {\n // If the entry is still the latest, remove it\n if (now === this._entries.get(entry)) {\n this._entries.delete(entry);\n }\n }, this._ttl);\n },\n\n /**\n * checks of the entry is still present and valid (did not reach the `ttl`)\n * @param {*} entry\n * @returns\n */\n hasRecentEntry: function(entry) {\n const now = Date.now();\n if (this._entries.has(entry)) {\n const lastUpdate = this._entries.get(entry);\n return now - lastUpdate <= this._ttl;\n }\n return false;\n }\n\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * A special renderer for AutoForms which includes notes below the section header\n * widget and next to the individual form widgets.\n */\n\n\nqx.Class.define(\"osparc.form.renderer.PropFormBase\", {\n extend: qx.ui.form.renderer.Single,\n type: \"abstract\",\n\n /**\n * @param form {osparc.form.Auto} form widget to embed\n * @param node {osparc.data.model.Node} Node owning the widget\n */\n construct: function(form, node) {\n if (node) {\n this.setNode(node);\n } else {\n this.setNode(null);\n }\n\n this.base(arguments, form);\n\n // override qx.ui.form.renderer.Single's grid layout\n const grid = this.getLayout();\n grid.setSpacingY(0); // so that the \"excluded\" rows do not take any space\n grid.setColumnFlex(this.self().GRID_POS.LABEL, 1);\n grid.setColumnFlex(this.self().GRID_POS.INFO, 0);\n grid.setColumnFlex(this.self().GRID_POS.CTRL_FIELD, 1);\n grid.setColumnFlex(this.self().GRID_POS.UNIT, 0);\n grid.setColumnFlex(this.self().GRID_POS.FIELD_LINK_UNLINK, 0);\n grid.setColumnMinWidth(this.self().GRID_POS.CTRL_FIELD, 50);\n Object.keys(this.self().GRID_POS).forEach((_, idx) => grid.setColumnAlign(idx, \"left\", \"middle\"));\n },\n\n properties: {\n node: {\n check: \"osparc.data.model.Node\",\n nullable: true\n }\n },\n\n statics: {\n GRID_POS: {\n LABEL: 0,\n INFO: 1,\n CTRL_FIELD: 2,\n UNIT: 3,\n FIELD_LINK_UNLINK: 4\n },\n\n ROW_HEIGHT: 28,\n\n getDisableables: function() {\n return [\n this.GRID_POS.LABEL,\n this.GRID_POS.CTRL_FIELD\n ];\n },\n\n updateUnitLabelPrefix: function(item) {\n const {\n unitShort,\n unitLong\n } = osparc.utils.Units.getLabels(item.unit, item.unitPrefix);\n if (\"unitLabel\" in item) {\n const unitLabel = item[\"unitLabel\"];\n unitLabel.set({\n value: unitShort || null,\n toolTipText: unitLong || null,\n visibility: unitShort ? \"visible\" : \"excluded\"\n });\n }\n }\n },\n\n // eslint-disable-next-line qx-rules/no-refs-in-members\n members: {\n _visibility: {\n hidden: \"Invisible\",\n readOnly: \"ReadOnly\",\n readWrite: \"ReadAndWrite\"\n },\n\n /**\n * override\n *\n * @param items {qx.ui.core.Widget[]} An array of form items to render.\n * @param names {String[]} An array of names for the form items.\n * @param title {String?} A title of the group you are adding.\n */\n addItems: function(items, names, title) {\n // add the header\n if (title !== null) {\n this._add(\n this._createHeader(title), {\n row: this._row,\n column: this.self().GRID_POS.LABEL,\n colSpan: Object.keys(this.self().gridPos).length\n }\n );\n this._row++;\n }\n\n // add the items\n let firstLabel = null;\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n\n const label = this._createLabel(names[i], item);\n if (firstLabel === null) {\n firstLabel = label;\n }\n label.set({\n // override ``rich``: to false, it is required for showing the cut off ellipsis.\n // rich: false,\n toolTipText: names[i]\n });\n // leave ``rich`` set to true. Ellipsis will be handled here:\n label.getContentElement().setStyles({\n \"text-overflow\": \"ellipsis\",\n \"white-space\": \"nowrap\"\n });\n label.setBuddy(item);\n this._add(label, {\n row: this._row,\n column: this.self().GRID_POS.LABEL\n });\n\n const info = this.__createInfoWHint(item.description);\n this._add(info, {\n row: this._row,\n column: this.self().GRID_POS.INFO\n });\n\n this._add(item, {\n row: this._row,\n column: this.self().GRID_POS.CTRL_FIELD\n });\n\n const unit = this.__createUnit(item);\n this._add(unit, {\n row: this._row,\n column: this.self().GRID_POS.UNIT\n });\n\n this._row++;\n\n this._connectVisibility(item, label);\n }\n\n this.addListener(\"appear\", () => this.__makeLabelsResponsive(), this);\n this.addListener(\"resize\", () => this.__makeLabelsResponsive(), this);\n },\n\n __makeLabelsResponsive: function() {\n const grid = this.getLayout()\n const firstColumnWidth = osparc.utils.Utils.getGridsFirstColumnWidth(grid);\n if (firstColumnWidth === null) {\n // not rendered yet\n setTimeout(() => this.__makeLabelsResponsive(), 100);\n return;\n }\n const extendedVersion = firstColumnWidth > 300;\n\n const inputs = this.getNode().getInputs();\n Object.keys(inputs).forEach((portId, idx) => {\n if (inputs[portId].description) {\n this._getLabelFieldChild(portId).child.set({\n value: extendedVersion ? inputs[portId].label + \". \" + inputs[portId].description + \":\" : inputs[portId].label,\n toolTipText: extendedVersion ? inputs[portId].label + \"
\" + inputs[portId].description : inputs[portId].label\n });\n\n if (grid.getRowHeight(idx) === 0) {\n // the port might be hidden\n this._getInfoFieldChild(portId).child.setVisibility(\"hidden\");\n } else {\n this._getInfoFieldChild(portId).child.setVisibility(extendedVersion ? \"hidden\" : \"visible\");\n }\n\n grid.setColumnMinWidth(this.self().GRID_POS.CTRL_FIELD, extendedVersion ? 150 : 50);\n }\n });\n },\n\n getValues: function() {\n let data = this._form.getData();\n for (const portId in data) {\n let ctrl = this._form.getControl(portId);\n if (ctrl && ctrl[\"link\"]) {\n data[portId] = ctrl[\"link\"];\n }\n if (ctrl && ctrl[\"parameter\"]) {\n data[portId] = \"{{\" + ctrl[\"parameter\"].id + \"}}\";\n }\n // FIXME: \"null\" should be a valid input\n if (data[portId] === \"null\") {\n data[portId] = null;\n }\n }\n let filteredData = {};\n for (const key in data) {\n if (data[key] !== null) {\n filteredData[key] = data[key];\n }\n }\n // convert values to service specified units\n const changedXUnits = this.getChangedXUnits();\n Object.keys(changedXUnits).forEach(portId => {\n const ctrl = this._form.getControl(portId);\n const nodeMD = this.getNode().getMetaData();\n const {\n unitPrefix\n } = osparc.utils.Units.decomposeXUnit(nodeMD.inputs[portId][\"x_unit\"]);\n filteredData[portId] = osparc.utils.Units.convertValue(filteredData[portId], ctrl.unitPrefix, unitPrefix);\n });\n return filteredData;\n },\n\n evalFieldRequired: function(portId) {\n const label = this._getLabelFieldChild(portId).child;\n const inputsRequired = this.getNode().getInputsRequired();\n\n // add star (*) to the label\n const requiredSuffix = \" *\";\n let newLabel = label.getValue();\n newLabel = newLabel.replace(requiredSuffix, \"\");\n if (inputsRequired.includes(portId)) {\n newLabel += requiredSuffix;\n }\n label.setValue(newLabel);\n\n // add \"required\" text to the label's tooltip\n const toolTipSuffix = \"
\" + this.tr(\"Required input: without it, the service will not start/run.\");\n let newToolTip = label.getToolTipText();\n newToolTip = newToolTip.replace(toolTipSuffix, \"\");\n if (inputsRequired.includes(portId)) {\n newToolTip += toolTipSuffix;\n }\n label.setToolTipText(newToolTip);\n\n // add \"required\" text to the description\n const infoButton = this._getInfoFieldChild(portId).child;\n let newHintText = infoButton.getHintText();\n newHintText = newHintText.replace(toolTipSuffix, \"\");\n if (inputsRequired.includes(portId)) {\n newHintText += toolTipSuffix;\n }\n infoButton.setHintText(newHintText);\n },\n\n getChangedXUnits: function() {\n const xUnits = {};\n const ctrls = this._form.getControls();\n for (const portId in ctrls) {\n const ctrl = this._form.getControl(portId);\n xUnits[portId] = osparc.utils.Units.composeXUnit(ctrl.unit, ctrl.unitPrefix);\n }\n const nodeMD = this.getNode().getMetaData();\n const changedXUnits = {};\n for (const portId in xUnits) {\n if (xUnits[portId] === null) {\n break;\n }\n if (!(\"x_unit\" in nodeMD.inputs[portId])) {\n break;\n }\n if (xUnits[portId] !== nodeMD.inputs[portId].x_unit) {\n changedXUnits[portId] = xUnits[portId];\n }\n }\n return changedXUnits;\n },\n\n setInputsUnits: function(inputsUnits) {\n Object.keys(inputsUnits).forEach(portId => {\n const item = this._form.getControl(portId);\n this.__switchPrefix(item, item.unitPrefix, osparc.utils.Units.decomposeXUnit(inputsUnits[portId]).unitPrefix);\n });\n },\n\n hasVisibleInputs: function() {\n const children = this._getChildren();\n for (let i=0; i unitLabel.setCursor(\"pointer\"), this);\n unitLabel.addListener(\"pointerout\", () => unitLabel.resetCursor(), this);\n const nodeMD = this.getNode().getMetaData();\n const originalUnit = \"x_unit\" in nodeMD.inputs[item.key] ? osparc.utils.Units.decomposeXUnit(nodeMD.inputs[item.key][\"x_unit\"]) : null;\n unitLabel.addListener(\"tap\", () => {\n const nextPrefix = osparc.utils.Units.getNextPrefix(item.unitPrefix, originalUnit.unitPrefix);\n this.__switchPrefix(item, item.unitPrefix, nextPrefix.long);\n }, this);\n }\n item.unitLabel = unitLabel;\n return unitLabel;\n },\n\n __switchPrefix: function(item, oldPrefix, newPrefix) {\n let newValue = osparc.utils.Units.convertValue(item.getValue(), oldPrefix, newPrefix);\n item.unitPrefix = newPrefix;\n if (\"type\" in item && item.type !== \"integer\") {\n newValue = String(newValue);\n }\n item.setValue(newValue);\n this.self().updateUnitLabelPrefix(item);\n },\n\n _getLayoutChild: function(portId, column) {\n let row = null;\n const children = this._getChildren();\n for (let i=0; i\n Odei Maiz \n Utf8Check: äöü\n************************************************************************ */\n\n/**\n * An extension of the PropFormBase that is able to handle port-links.\n */\n\nqx.Class.define(\"osparc.form.renderer.PropForm\", {\n extend: osparc.form.renderer.PropFormBase,\n\n /**\n * @param form {osparc.form.Auto} form widget to embed\n * @param node {osparc.data.model.Node} Node owning the widget\n * @param study {osparc.data.model.Study} Study owning the node\n */\n construct: function(form, node, study) {\n if (study) {\n this.setStudy(study);\n }\n this.__ctrlLinkMap = {};\n this.__linkUnlinkStackMap = {};\n this.__fieldOptsBtnMap = {};\n\n this.base(arguments, form, node);\n\n this.__addLinkCtrls();\n\n this.setDroppable(true);\n this.__attachDragoverHighlighter();\n },\n\n events: {\n \"highlightEdge\": \"qx.event.type.Data\",\n \"linkFieldModified\": \"qx.event.type.Data\",\n \"fileRequested\": \"qx.event.type.Data\",\n \"filePickerRequested\": \"qx.event.type.Data\",\n \"parameterRequested\": \"qx.event.type.Data\",\n \"changeChildVisibility\": \"qx.event.type.Event\"\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n init: null,\n nullable: false\n }\n },\n\n statics: {\n getRetrievingAtom: function() {\n return new qx.ui.basic.Atom(\"\", \"osparc/loading.gif\");\n },\n\n getDownloadingAtom: function() {\n return new qx.ui.basic.Atom(\"\", \"@FontAwesome5Solid/cloud-download-alt/12\");\n },\n\n getUploadingAtom: function() {\n return new qx.ui.basic.Atom(\"\", \"@FontAwesome5Solid/cloud-upload-alt/12\");\n },\n\n getFailedAtom: function() {\n return new qx.ui.basic.Atom(\"\", \"@FontAwesome5Solid/times/12\");\n },\n\n getSucceededAtom: function() {\n return new qx.ui.basic.Atom(\"\", \"@FontAwesome5Solid/check/12\");\n },\n\n getRetrievedEmpty: function() {\n return new qx.ui.basic.Atom(\"\", \"@FontAwesome5Solid/dot-circle/10\");\n },\n\n GRID_POS: {\n ...osparc.form.renderer.PropFormBase.GRID_POS,\n RETRIEVE_STATUS: Object.keys(osparc.form.renderer.PropFormBase.GRID_POS).length\n },\n\n isFieldParametrizable: function(field) {\n const supportedTypes = [];\n const paramsMD = osparc.service.Utils.getParametersMetadata();\n paramsMD.forEach(paramMD => {\n supportedTypes.push(osparc.node.ParameterEditor.getParameterOutputTypeFromMD(paramMD));\n });\n return supportedTypes.includes(field.type);\n },\n\n RETRIEVE_STATUS: {\n failed: -1,\n empty: 0,\n retrieving: 1,\n downloading: 2,\n uploading: 3,\n succeed: 4\n },\n\n getIconForStatus: function(status) {\n let icon;\n switch (status) {\n case this.RETRIEVE_STATUS.failed:\n icon = this.getFailedAtom();\n break;\n case this.RETRIEVE_STATUS.empty:\n icon = this.getRetrievedEmpty();\n break;\n case this.RETRIEVE_STATUS.retrieving:\n icon = this.getRetrievingAtom();\n break;\n case this.RETRIEVE_STATUS.downloading:\n icon = this.getDownloadingAtom();\n break;\n case this.RETRIEVE_STATUS.uploading:\n icon = this.getUploadingAtom();\n break;\n case this.RETRIEVE_STATUS.succeed:\n icon = this.getSucceededAtom();\n break;\n }\n return icon;\n }\n },\n\n members: {\n __ctrlLinkMap: null,\n __linkUnlinkStackMap: null,\n __fieldOptsBtnMap: null,\n __addInputPortButton: null,\n\n /*\n * <-- Dynamic inputs -->\n */\n __getEmptyDataLastPorts: function() {\n let emptyDataPorts = [];\n const minVisibleInputs = this.getNode().getMinVisibleInputs();\n if (minVisibleInputs === null) {\n return emptyDataPorts;\n }\n const portIds = this.getPortIds();\n // it will always show 1 more, so: -1\n for (let i=minVisibleInputs-1; i {\n const ctrl = this._form.getControl(portId);\n const label = this._getLabelFieldChild(portId).child;\n if (\n ctrl && ctrl.type.includes(\"data:\") && !(\"link\" in ctrl) &&\n label && label.isVisible()\n ) {\n emptyDataPorts = portId;\n }\n });\n return emptyDataPorts;\n },\n\n __addInputPortButtonClicked: function() {\n const emptyDataPorts = this.__getEmptyDataLastPorts();\n const lastEmptyDataPort = this.__getVisibleEmptyDataLastPort();\n if (emptyDataPorts.length>1 && lastEmptyDataPort) {\n const idx = emptyDataPorts.indexOf(lastEmptyDataPort);\n if (idx+1 < emptyDataPorts.length) {\n this.__showPort(emptyDataPorts[idx+1]);\n }\n this.__addInputPortButton.setVisibility(this.__checkAddInputPortButtonVisibility());\n }\n },\n\n __checkAddInputPortButtonVisibility: function() {\n const emptyDataPorts = this.__getEmptyDataLastPorts();\n const lastEmptyDataPort = this.__getVisibleEmptyDataLastPort();\n const idx = emptyDataPorts.indexOf(lastEmptyDataPort);\n if (idx < emptyDataPorts.length-1) {\n return \"visible\";\n }\n return \"excluded\";\n },\n\n __showPort: function(portId) {\n const entries = this.self().GRID_POS;\n Object.values(entries).forEach(entryPos => {\n const layoutElement = this._getLayoutChild(portId, entryPos);\n if (layoutElement && layoutElement.child) {\n const control = layoutElement.child;\n if (control) {\n control.show();\n const row = control.getLayoutProperties().row;\n this._getLayout().setRowHeight(row, osparc.form.renderer.PropFormBase.ROW_HEIGHT);\n }\n }\n });\n },\n\n __excludePort: function(portId) {\n const entries = this.self().GRID_POS;\n Object.values(entries).forEach(entryPos => {\n const layoutElement = this._getLayoutChild(portId, entryPos);\n if (layoutElement && layoutElement.child) {\n const control = layoutElement.child;\n if (control) {\n control.exclude();\n const row = control.getLayoutProperties().row;\n this._getLayout().setRowHeight(row, 0);\n }\n }\n });\n },\n\n makeInputsDynamic: function() {\n this.getPortIds().forEach(portId => this.__showPort(portId));\n\n const emptyDataPorts = this.__getEmptyDataLastPorts();\n for (let i=1; i\n */\n\n __createLinkUnlinkStack: function(field) {\n const linkUnlinkStack = new qx.ui.container.Stack();\n\n const linkOptions = this.__createLinkOpts(field);\n linkUnlinkStack.add(linkOptions);\n\n const unlinkBtn = this.__createUnlinkButton(field);\n linkUnlinkStack.add(unlinkBtn);\n\n this.__linkUnlinkStackMap[field.key] = linkUnlinkStack;\n\n return linkUnlinkStack;\n },\n\n __createLinkOpts: function(field) {\n const optionsMenu = new qx.ui.menu.Menu().set({\n offsetLeft: 2,\n position: \"right-top\"\n });\n optionsMenu.getContentElement().setStyles({\n \"border-top-right-radius\": \"6px\",\n \"border-bottom-right-radius\": \"6px\",\n \"border-bottom-left-radius\": \"6px\"\n });\n const fieldOptsBtn = new qx.ui.form.MenuButton().set({\n menu: optionsMenu,\n icon: \"@FontAwesome5Solid/link/12\",\n maxHeight: 23,\n focusable: false,\n allowGrowX: false,\n alignX: \"center\"\n });\n this.__fieldOptsBtnMap[field.key] = fieldOptsBtn;\n // populate the button/menu when the it appears\n fieldOptsBtn.addListenerOnce(\"appear\", () => {\n if (this.getStudy()) {\n this.__populateFieldOptionsMenu(optionsMenu, field);\n this.getStudy().getWorkbench().addListener(\"pipelineChanged\", () => this.__populateFieldOptionsMenu(optionsMenu, field), this);\n }\n });\n return fieldOptsBtn;\n },\n\n __createUnlinkButton: function(field) {\n const unlinkBtn = new qx.ui.form.Button(null, \"@FontAwesome5Solid/unlink/12\").set({\n toolTipText: this.tr(\"Unlink\"),\n maxHeight: 23\n });\n unlinkBtn.addListener(\"execute\", () => this.removePortLink(field.key), this);\n return unlinkBtn;\n },\n\n __populateFieldOptionsMenu: function(optionsMenu, field) {\n optionsMenu.removeAll();\n\n this.__addInputsMenuButtons(field.key, optionsMenu);\n\n if (optionsMenu.getChildren().length) {\n optionsMenu.addSeparator();\n }\n\n const studyUI = this.getStudy().getUi();\n if ([\"FileButton\"].includes(field.widgetType)) {\n const menuButton = this.__getSelectFileButton(field.key);\n studyUI.bind(\"mode\", menuButton, \"visibility\", {\n converter: mode => mode === \"workbench\" ? \"visible\" : \"excluded\"\n });\n optionsMenu.add(menuButton);\n }\n if (this.self().isFieldParametrizable(field)) {\n const newParamBtn = this.__getNewParamButton(field.key);\n newParamBtn.exclude();\n optionsMenu.add(newParamBtn);\n const paramsMenuBtn = this.__getParamsMenuButton(field.key);\n paramsMenuBtn.exclude();\n optionsMenu.add(paramsMenuBtn);\n const areParamsEnabled = osparc.utils.Utils.isDevelopmentPlatform();\n [\n newParamBtn,\n paramsMenuBtn\n ].forEach(btn => {\n studyUI.bind(\"mode\", btn, \"visibility\", {\n converter: mode => mode === \"workbench\" && areParamsEnabled ? \"visible\" : \"excluded\"\n });\n });\n }\n\n if (optionsMenu.getChildren().length) {\n optionsMenu.addSeparator();\n }\n const inputRequiredButton = this.__getInputRequiredButton(field.key);\n optionsMenu.add(inputRequiredButton);\n },\n\n __connectToInputNode: function(targetPortId, inputNodeId, outputKey) {\n this.getNode().addInputNode(inputNodeId);\n this.getNode().addPortLink(targetPortId, inputNodeId, outputKey)\n .then(connected => {\n if (connected) {\n this.getNode().fireEvent(\"reloadModel\");\n }\n });\n },\n\n __addInputsMenuButtons: function(targetPortId, menu) {\n const study = this.getStudy();\n const thisNode = this.getNode();\n if (study && thisNode) {\n const inputNodeIDs = thisNode.getInputNodes();\n inputNodeIDs.forEach(inputNodeId => {\n const inputNode = this.getStudy().getWorkbench().getNode(inputNodeId);\n if (inputNode) {\n for (const outputKey in inputNode.getOutputs()) {\n const paramButton = new qx.ui.menu.Button();\n inputNode.bind(\"label\", paramButton, \"label\", {\n converter: val => val + \" : \" + inputNode.getOutput(outputKey).label\n });\n paramButton.addListener(\"execute\", () => this.__connectToInputNode(targetPortId, inputNodeId, outputKey), this);\n menu.add(paramButton);\n osparc.utils.Ports.arePortsCompatible(inputNode, outputKey, this.getNode(), targetPortId)\n .then(compatible => {\n if (compatible === false) {\n paramButton.exclude();\n }\n });\n }\n }\n });\n }\n },\n\n __getInputMenuButton: function(inputNodeId, targetPortId) {\n const study = this.getStudy();\n const thisNode = this.getNode();\n if (study && thisNode) {\n const node = study.getWorkbench().getNode(inputNodeId);\n\n const inputNodePortsMenu = new qx.ui.menu.Menu();\n const inputMenuBtn = new qx.ui.menu.Button(null, null, null, inputNodePortsMenu);\n node.bind(\"label\", inputMenuBtn, \"label\");\n if (this.getStudy()) {\n this.__populateInputNodePortsMenu(inputNodeId, targetPortId, inputNodePortsMenu, inputMenuBtn);\n }\n return inputMenuBtn;\n }\n return null;\n },\n\n __populateInputNodePortsMenu: function(inputNodeId, targetPortId, menu, menuBtn) {\n menuBtn.exclude();\n menu.removeAll();\n\n const inputNode = this.getStudy().getWorkbench().getNode(inputNodeId);\n if (inputNode) {\n for (const outputKey in inputNode.getOutputs()) {\n osparc.utils.Ports.arePortsCompatible(inputNode, outputKey, this.getNode(), targetPortId)\n .then(compatible => {\n if (compatible) {\n const paramButton = new qx.ui.menu.Button(inputNode.getOutput(outputKey).label);\n paramButton.addListener(\"execute\", () => this.__connectToInputNode(targetPortId, inputNodeId, outputKey), this);\n menu.add(paramButton);\n menuBtn.show();\n }\n });\n }\n }\n },\n\n __getSelectFileButton: function(portId) {\n const selectFileButton = new qx.ui.menu.Button(this.tr(\"Select File\"));\n selectFileButton.addListener(\"execute\", () => this.fireDataEvent(\"filePickerRequested\", {\n portId,\n file: null\n }), this);\n return selectFileButton;\n },\n\n __getNewParamButton: function(portId) {\n const newParamBtn = new qx.ui.menu.Button(this.tr(\"Set new parameter\"));\n newParamBtn.addListener(\"execute\", () => this.fireDataEvent(\"parameterRequested\", portId), this);\n return newParamBtn;\n },\n\n __getParamsMenuButton: function(portId) {\n const existingParamMenu = new qx.ui.menu.Menu();\n const existingParamBtn = new qx.ui.menu.Button(this.tr(\"Set existing parameter\"), null, null, existingParamMenu);\n if (this.getStudy()) {\n this.__populateExistingParamsMenu(portId, existingParamMenu, existingParamBtn);\n }\n return existingParamBtn;\n },\n\n __populateExistingParamsMenu: function(targetPortId, menu, menuBtn) {\n menuBtn.exclude();\n menu.removeAll();\n\n const params = this.getStudy().getParameters();\n params.forEach(paramNode => {\n const inputNodeId = paramNode.getNodeId();\n const outputKey = \"out_1\";\n osparc.utils.Ports.arePortsCompatible(paramNode, outputKey, this.getNode(), targetPortId)\n .then(compatible => {\n if (compatible) {\n const paramButton = new qx.ui.menu.Button();\n paramButton.nodeId = inputNodeId;\n paramNode.bind(\"label\", paramButton, \"label\");\n paramButton.addListener(\"execute\", () => this.__connectToInputNode(targetPortId, inputNodeId, outputKey), this);\n if (!menu.getChildren().some(child => child.nodeId === paramButton.nodeId)) {\n menu.add(paramButton);\n menuBtn.show();\n }\n }\n });\n });\n },\n\n __getInputRequiredButton: function(portId) {\n const node = this.getNode();\n const inputRequiredBtn = new qx.ui.menu.Button(this.tr(\"Required Input\"));\n const evalButton = () => {\n if (node.getInputsRequired().includes(portId)) {\n inputRequiredBtn.set({\n icon: \"@FontAwesome5Regular/check-square/12\"\n });\n } else {\n inputRequiredBtn.set({\n icon: \"@FontAwesome5Regular/square/12\"\n });\n }\n }\n node.addListener(\"changeInputsRequired\", () => evalButton(), this);\n inputRequiredBtn.addListener(\"execute\", () => node.toggleInputRequired(portId), this);\n evalButton();\n return inputRequiredBtn;\n },\n\n // overridden\n addItems: function(items, names, title, itemOptions, headerOptions) {\n this.base(arguments, items, names, title, itemOptions, headerOptions);\n\n // header\n let row = title === null ? 0 : 1;\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const portId = item.key;\n\n const fieldOpts = this.__createLinkUnlinkStack(item);\n if (fieldOpts) {\n this._add(fieldOpts, {\n row,\n column: this.self().GRID_POS.FIELD_LINK_UNLINK\n });\n }\n\n this.__createDropMechanism(item, portId);\n\n // Notify focus and focus out\n const msgDataFn = (nodeId, pId) => this.__arePortsCompatible(nodeId, pId, this.getNode().getNodeId(), item.key);\n\n item.addListener(\"focus\", () => {\n if (this.getNode()) {\n qx.event.message.Bus.getInstance().dispatchByName(\"inputFocus\", msgDataFn);\n }\n }, this);\n item.addListener(\"focusout\", () => {\n if (this.getNode()) {\n qx.event.message.Bus.getInstance().dispatchByName(\"inputFocusout\", msgDataFn);\n }\n }, this);\n\n row++;\n }\n\n const evalRequired = () => {\n for (const portId in this.__ctrlLinkMap) {\n this.evalFieldRequired(portId);\n }\n }\n this.getNode().addListener(\"changeInputsRequired\", () => evalRequired());\n evalRequired();\n\n // add port button\n const addPortButton = this.__addInputPortButton = new qx.ui.form.Button().set({\n label: this.tr(\"Input\"),\n icon: \"@FontAwesome5Solid/plus/14\",\n marginTop: 6,\n allowGrowX: false,\n minWidth: 70\n });\n addPortButton.addListener(\"execute\", () => this.__addInputPortButtonClicked());\n this._add(addPortButton, {\n row,\n column: this.self().GRID_POS.LABEL\n });\n },\n\n // overridden\n setAccessLevel: function(data) {\n const entry = this.self().GRID_POS;\n const disableables = osparc.form.renderer.PropFormBase.getDisableables();\n Object.entries(data).forEach(([portId, visibility]) => {\n Object.values(entry).forEach(entryPos => {\n const layoutElement = this._getLayoutChild(portId, entryPos);\n if (layoutElement && layoutElement.child) {\n const control = layoutElement.child;\n if (control) {\n const vis = visibility === this._visibility.hidden ? \"excluded\" : \"visible\";\n const enabled = visibility === this._visibility.readWrite;\n control.setVisibility(vis);\n if (disableables.includes(entryPos)) {\n control.setEnabled(enabled);\n }\n }\n }\n });\n });\n this.fireEvent(\"changeChildVisibility\");\n },\n\n setPortErrorMessage: function(portId, msg) {\n const infoButton = this._getInfoFieldChild(portId);\n if (infoButton && \"child\" in infoButton) {\n const infoHint = infoButton.child;\n infoHint.setPortErrorMsg(msg);\n }\n },\n\n retrievingPortData: function(portId, status) {\n if (status === undefined) {\n status = this.self().RETRIEVE_STATUS.retrieving;\n }\n if (portId) {\n let data = this._getCtrlFieldChild(portId);\n if (data) {\n let child = data.child;\n let idx = data.idx;\n const layoutProps = child.getLayoutProperties();\n this.__setRetrievingStatus(status, portId, idx+1, layoutProps.row);\n }\n } else {\n for (let i = this._getChildren().length; i--;) {\n let child = this._getChildren()[i];\n const layoutProps = child.getLayoutProperties();\n if (layoutProps.column === this.self().GRID_POS.CTRL_FIELD) {\n const ctrl = this._form.getControl(child.key);\n if (ctrl && ctrl[\"link\"]) {\n this.__setRetrievingStatus(status, child.key, i, layoutProps.row);\n }\n }\n }\n }\n },\n\n retrievedPortData: function(portId, succeed, dataSize = -1) {\n let status = succeed ? this.self().RETRIEVE_STATUS.succeed : this.self().RETRIEVE_STATUS.failed;\n if (parseInt(dataSize) === 0) {\n status = this.self().RETRIEVE_STATUS.empty;\n }\n if (portId) {\n let data = this._getCtrlFieldChild(portId);\n if (data) {\n let child = data.child;\n let idx = data.idx;\n const layoutProps = child.getLayoutProperties();\n this.__setRetrievingStatus(status, portId, idx+1, layoutProps.row);\n }\n } else {\n let children = this._getChildren();\n for (let i=0; i {\n if (node1Id === node2Id) {\n resolve(false);\n return;\n }\n const workbench = this.getStudy().getWorkbench();\n const node1 = workbench.getNode(node1Id);\n const node2 = workbench.getNode(node2Id);\n if (workbench && node1 && node2) {\n osparc.utils.Ports.arePortsCompatible(node1, port1Id, node2, port2Id)\n .then(compatible => {\n resolve(compatible);\n })\n .catch(err => {\n console.error(err);\n reject(err);\n });\n } else {\n resolve(false);\n }\n });\n },\n\n __createDropMechanism: function(uiElement, portId) {\n if (this.getNode()) {\n uiElement.set({\n droppable: true\n });\n\n uiElement.addListener(\"dragover\", e => {\n if (e.supportsType(\"osparc-port-link\")) {\n const data = e.getData(\"osparc-port-link\");\n const node1 = data[\"node1\"];\n const port1Key = data[\"port1Key\"];\n const destinations = data[\"destinations\"];\n const port2Key = portId;\n\n const node2Id = this.getNode().getNodeId();\n if (!(node2Id in destinations)) {\n destinations[node2Id] = {};\n }\n if (!(port2Key in destinations[node2Id])) {\n destinations[node2Id][port2Key] = \"fetching\";\n osparc.utils.Ports.arePortsCompatible(node1, port1Key, this.getNode(), port2Key)\n .then(compatible => {\n destinations[node2Id][port2Key] = compatible;\n });\n }\n\n const compatible = destinations[node2Id][portId];\n if (compatible) {\n // stop propagation, so that the form doesn't attend it (and preventDefault it)\n e.stopPropagation();\n this.__highlightCompatibles(portId);\n }\n }\n\n if (e.supportsType(\"osparc-file-link\")) {\n const data = e.getData(\"osparc-file-link\");\n if (\"dragData\" in data && \"type\" in uiElement) {\n const compatible = uiElement.type.includes(\"data:\");\n if (compatible) {\n // stop propagation, so that the form doesn't attend it (and preventDefault it)\n e.stopPropagation();\n this.__highlightCompatibles(portId);\n }\n }\n }\n }, this);\n\n uiElement.addListener(\"drop\", e => {\n if (e.supportsType(\"osparc-port-link\")) {\n const port2Key = portId;\n const data = e.getData(\"osparc-port-link\");\n const node1Id = data[\"node1\"].getNodeId();\n const port1Key = data[\"port1Key\"];\n this.getNode().addPortLink(port2Key, node1Id, port1Key);\n }\n if (e.supportsType(\"osparc-file-link\")) {\n const data = e.getData(\"osparc-file-link\");\n this.fireDataEvent(\"filePickerRequested\", {\n portId,\n file: {\n data: data[\"dragData\"]\n }\n });\n }\n }, this);\n }\n },\n\n __highlightCompatibles: function(compatiblePorts) {\n this._getChildren().forEach(child => {\n if (\"key\" in child && compatiblePorts.includes(child.key)) {\n child.setDecorator(\"material-textfield-focused\");\n }\n });\n },\n\n __unhighlightAll: function() {\n this._getChildren().forEach(child => {\n if (\"key\" in child) {\n child.resetDecorator();\n }\n });\n },\n\n __attachDragoverHighlighter: function() {\n this.addListener(\"dragover\", e => {\n if (e.supportsType(\"osparc-port-link\")) {\n const data = e.getData(\"osparc-port-link\");\n const node1 = data[\"node1\"];\n const dragPortId = data[\"port1Key\"];\n\n const destinations = data[\"destinations\"];\n const node2Id = this.getNode().getNodeId();\n if (!(node2Id in destinations)) {\n destinations[node2Id] = {};\n }\n this.getPortIds().forEach(portId => {\n if (!(portId in destinations[node2Id])) {\n destinations[node2Id][portId] = \"fetching\";\n }\n });\n osparc.data.Resources.getCompatibleInputs(node1, dragPortId, this.getNode())\n .then(compatiblePorts => {\n this.getPortIds().forEach(portId => {\n destinations[node2Id][portId] = compatiblePorts.includes(portId);\n });\n this.__highlightCompatibles(compatiblePorts);\n })\n .catch(err => {\n console.error(err);\n });\n\n e.preventDefault();\n }\n }, this);\n this.addListener(\"dragleave\", e => {\n if (e.supportsType(\"osparc-port-link\")) {\n this.__unhighlightAll();\n }\n }, this);\n this.addListener(\"mouseup\", e => {\n this.__unhighlightAll();\n });\n },\n\n __isPortAvailable: function(portId) {\n const port = this._form.getControl(portId);\n if (!port ||\n !port.getEnabled() ||\n Object.prototype.hasOwnProperty.call(port, \"link\") ||\n Object.prototype.hasOwnProperty.call(port, \"parameter\")) {\n return false;\n }\n return true;\n },\n\n __createFieldCtrl: function(portId) {\n const controlParam = new qx.ui.form.TextField().set({\n enabled: false\n });\n controlParam.key = portId;\n return controlParam;\n },\n\n __resetCtrlField: function(portId) {\n let data = this._getCtrlFieldChild(portId);\n if (data) {\n const {child, idx} = data;\n const layoutProps = child.getLayoutProperties();\n if (layoutProps.column === this.self().GRID_POS.CTRL_FIELD) {\n this._remove(child);\n const item = this._form.getControl(portId);\n item.show();\n this._addAt(item, idx, {\n row: layoutProps.row,\n column: this.self().GRID_POS.CTRL_FIELD\n });\n\n return true;\n }\n }\n return false;\n },\n\n getPortIds: function() {\n return Object.keys(this._form.getControls());\n },\n\n /* LINKS */\n getControlLink: function(portId) {\n return this.__ctrlLinkMap[portId];\n },\n\n __addLinkCtrl: function(portId) {\n const controlLink = this.__createFieldCtrl(portId);\n this.__ctrlLinkMap[portId] = controlLink;\n },\n\n __addLinkCtrls: function() {\n this.getPortIds().forEach(portId => {\n this.__addLinkCtrl(portId);\n });\n },\n\n __portLinkAdded: function(portId, fromNodeId, fromPortId) {\n let data = this._getCtrlFieldChild(portId);\n if (data) {\n let child = data.child;\n const idx = data.idx;\n const layoutProps = child.getLayoutProperties();\n this._remove(child);\n\n const ctrlLink = this.getControlLink(portId);\n ctrlLink.setEnabled(false);\n ctrlLink.key = portId;\n this._addAt(ctrlLink, idx, {\n row: layoutProps.row,\n column: this.self().GRID_POS.CTRL_FIELD\n });\n\n if (portId in this.__linkUnlinkStackMap) {\n const stack = this.__linkUnlinkStackMap[portId];\n if (stack.getSelectables().length > 1) {\n stack.setSelection([stack.getSelectables()[1]]);\n }\n }\n\n const linkFieldModified = {\n portId,\n fromNodeId,\n fromPortId,\n added: true\n };\n this.fireDataEvent(\"linkFieldModified\", linkFieldModified);\n }\n },\n\n __portLinkRemoved: function(portId) {\n if (this.__resetCtrlField(portId)) {\n if (portId in this.__linkUnlinkStackMap) {\n const stack = this.__linkUnlinkStackMap[portId];\n if (stack.getSelectables().length > 0) {\n stack.setSelection([stack.getSelectables()[0]]);\n }\n }\n\n const linkFieldModified = {\n portId,\n added: false\n };\n this.fireDataEvent(\"linkFieldModified\", linkFieldModified);\n }\n },\n\n getLink: function(portId) {\n if (\"link\" in this._form.getControl(portId)) {\n return this._form.getControl(portId)[\"link\"];\n }\n return null;\n },\n\n getLinks: function() {\n const links = [];\n Object.keys(this.__ctrlLinkMap).forEach(portId => {\n const link = this.getLink(portId);\n if (link) {\n links.push(link);\n }\n });\n return links;\n },\n\n addPortLink: function(toPortId, fromNodeId, fromPortId) {\n const study = this.getStudy();\n if (!study) {\n return null;\n }\n if (!this.__isPortAvailable(toPortId)) {\n return false;\n }\n const ctrlLink = this.getControlLink(toPortId);\n ctrlLink.setEnabled(false);\n this._form.getControl(toPortId)[\"link\"] = {\n nodeUuid: fromNodeId,\n output: fromPortId\n };\n const highlightEdgeUI = highlight => {\n this.fireDataEvent(\"highlightEdge\", {\n highlight,\n toNodeId: this.getNode().getNodeId(),\n toPortId,\n fromNodeId,\n fromPortId,\n });\n };\n ctrlLink.addListener(\"mouseover\", () => highlightEdgeUI(true));\n ctrlLink.addListener(\"mouseout\", () => highlightEdgeUI(false));\n\n const workbench = study.getWorkbench();\n const fromNode = workbench.getNode(fromNodeId);\n const port = fromNode.getOutput(fromPortId);\n const fromPortLabel = port ? port.label : null;\n fromNode.bind(\"label\", ctrlLink, \"value\", {\n converter: label => label + \": \" + fromPortLabel\n });\n // Hack: Show tooltip if element is disabled\n const addToolTip = () => {\n ctrlLink.getContentElement().removeAttribute(\"title\");\n const toolTipText = fromNode.getLabel() + \":\\n\" + fromPortLabel;\n ctrlLink.getContentElement().setAttribute(\"title\", toolTipText);\n };\n fromNode.addListener(\"changeLabel\", () => addToolTip());\n addToolTip();\n\n this.__portLinkAdded(toPortId, fromNodeId, fromPortId);\n\n this.makeInputsDynamic();\n\n return true;\n },\n\n setInputLinks: function(inputLinks) {\n for (let key in inputLinks) {\n if (osparc.utils.Ports.isDataALink(inputLinks[key])) {\n this.addPortLink(key, inputLinks[key].nodeUuid, inputLinks[key].output);\n }\n }\n },\n\n removePortLink: function(toPortId) {\n this.getControlLink(toPortId).setEnabled(false);\n if (\"link\" in this._form.getControl(toPortId)) {\n delete this._form.getControl(toPortId)[\"link\"];\n }\n\n this.__portLinkRemoved(toPortId);\n }\n /* /LINKS */\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.widget.NodesSlidesTree\", {\n extend: qx.ui.core.Widget,\n\n construct: function(study) {\n this.base(arguments);\n\n this.__study = study;\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this.getChildControl(\"instructions\");\n\n this.__tree = this.getChildControl(\"tree\");\n\n const disable = this.getChildControl(\"disable\");\n disable.addListener(\"execute\", () => this.__disableSlides(), this);\n const enable = this.getChildControl(\"save-button\");\n enable.addListener(\"execute\", () => this.__saveSlides(), this);\n\n const model = this.__initRoot();\n this.__tree.setModel(model);\n\n this.__initTree();\n this.__initData();\n },\n\n events: {\n \"changeSelectedNode\": \"qx.event.type.Data\",\n \"finished\": \"qx.event.type.Event\"\n },\n\n members: {\n __study: null,\n __tree: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"instructions\": {\n let msg = this.tr(\"Use the eye icons to display/hide nodes in the App Mode.\");\n msg += \"
\";\n msg += this.tr(\"Use the up and down arrows to sort them.\");\n msg += \"
\";\n msg += this.tr(\"You can also display nodes by clicking on them on the Workbench or Nodes list.\");\n control = new qx.ui.basic.Label(msg).set({\n rich: true,\n wrap: true,\n paddingLeft: 5,\n paddingRight: 5\n });\n this._add(control);\n break;\n }\n case \"tree\":\n control = this.__buildTree();\n this._add(control, {\n flex: 1\n });\n break;\n case \"buttons\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignX: \"right\"\n }));\n this._add(control);\n break;\n case \"disable\": {\n control = new qx.ui.form.Button(this.tr(\"Disable\")).set({\n allowGrowX: false,\n appearance: \"no-shadow-button\"\n });\n const buttons = this.getChildControl(\"buttons\");\n buttons.add(control);\n break;\n }\n case \"save-button\": {\n control = new qx.ui.form.Button(this.tr(\"Save\")).set({\n allowGrowX: false,\n appearance: \"no-shadow-button\"\n });\n const buttons = this.getChildControl(\"buttons\");\n buttons.add(control);\n break;\n }\n }\n\n return control || this.base(arguments, id);\n },\n\n __buildTree: function() {\n const tree = new qx.ui.tree.VirtualTree(null, \"label\", \"children\").set({\n hideRoot: true,\n decorator: \"service-tree\",\n openMode: \"none\",\n contentPadding: 0,\n padding: 0,\n backgroundColor: \"background-main-2\"\n });\n return tree;\n },\n\n __initRoot: function() {\n const study = this.__study;\n let rootData = {\n label: study.getName(),\n children: [],\n nodeId: study.getUuid(),\n position: null,\n instructions: null\n };\n return qx.data.marshal.Json.createModel(rootData, true);\n },\n\n __initTree: function() {\n this.__tree.setDelegate({\n createItem: () => new osparc.widget.NodeSlideTreeItem(),\n bindItem: (c, item, id) => {\n c.bindDefaultProperties(item, id);\n c.bindProperty(\"nodeId\", \"nodeId\", null, item, id);\n c.bindProperty(\"label\", \"label\", null, item, id);\n c.bindProperty(\"position\", \"position\", null, item, id);\n c.bindProperty(\"instructions\", \"instructions\", null, item, id);\n },\n configureItem: item => {\n item.addListener(\"showNode\", () => this.__itemActioned(item, \"show\"), this);\n item.addListener(\"hideNode\", () => this.__itemActioned(item, \"hide\"), this);\n item.addListener(\"moveUp\", () => this.__itemActioned(item, \"moveUp\"), this);\n item.addListener(\"moveDown\", () => this.__itemActioned(item, \"moveDown\"), this);\n item.addListener(\"saveInstructions\", e => this.__saveInstructions(item, e.getData()), this);\n item.addListener(\"tap\", () => this.fireDataEvent(\"changeSelectedNode\", item.getNodeId()), this);\n },\n sorter: (a, b) => {\n const aPos = a.getPosition();\n if (aPos === -1) {\n return 1;\n }\n const bPos = b.getPosition();\n if (bPos === -1) {\n return -1;\n }\n return aPos - bPos;\n }\n });\n },\n\n /**\n * Converts an object of nodes into an array of children to be consumed by the tree model.\n * The tree is expecting to bind the children into NodeSlideTreeItem with nodeId and position as props.\n * @param {Object.} nodes Object with nodes \n * @returns {Array} Array of objects with label, nodeId and position.\n */\n __convertToModel: function(nodes) {\n const children = [];\n for (let nodeId in nodes) {\n const node = nodes[nodeId];\n const nodeInTree = {\n label: node.getLabel(),\n nodeId: node.getNodeId()\n };\n const pos = this.__study.getUi().getSlideshow().getPosition(nodeId);\n nodeInTree.position = pos;\n const instructions = this.__study.getUi().getSlideshow().getInstructions(nodeId);\n nodeInTree.instructions = instructions;\n children.push(nodeInTree);\n }\n return children;\n },\n\n __initData: function() {\n const topLevelNodes = this.__study.getWorkbench().getNodes();\n\n this.__tree.getModel().getChildren().removeAll();\n const allChildren = this.__convertToModel(topLevelNodes);\n this.__tree.getModel().setChildren(qx.data.marshal.Json.createModel(allChildren));\n\n this.__tree.refresh();\n },\n\n changeSelectedNode: function(nodeId) {\n const children = this.__tree.getModel().getChildren().toArray();\n const idx = children.findIndex(elem => elem.getNodeId() === nodeId);\n if (idx > -1) {\n const item = children[idx];\n this.__tree.setSelection(new qx.data.Array([item]));\n // show by default\n if (item.getPosition() === -1) {\n this.__show(item);\n this.__tree.refresh();\n }\n }\n },\n\n __itemActioned: function(item, action) {\n let fnct;\n switch (action) {\n case \"show\":\n fnct = this.__show;\n break;\n case \"hide\":\n fnct = this.__hide;\n break;\n case \"moveUp\":\n fnct = this.__moveUp;\n break;\n case \"moveDown\":\n fnct = this.__moveDown;\n break;\n }\n if (fnct.call(this, item.getModel())) {\n this.__tree.refresh();\n }\n },\n\n __getVisibleItems: function() {\n const children = this.__tree.getModel().getChildren().toArray();\n return children.filter(elem => elem.getPosition() !== -1);\n },\n\n __show: function(itemMdl) {\n const last = this.__getVisibleItems().length;\n itemMdl.setPosition(last);\n return true;\n },\n\n __hide: function(itemMdl) {\n const oldPos = itemMdl.getPosition();\n itemMdl.setPosition(-1);\n // the rest moves one pos up\n this.__getVisibleItems().forEach(item => {\n const p = item.getPosition();\n if (p >= oldPos) {\n item.setPosition(p-1);\n }\n });\n return true;\n },\n\n __moveUp: function(itemMdl) {\n const children = this.__tree.getModel().getChildren().toArray();\n const nodeId = itemMdl.getNodeId();\n const idx = children.findIndex(elem => elem.getNodeId() === nodeId);\n if (idx > -1) {\n const oldPos = children[idx].getPosition();\n const newPos = oldPos-1;\n if (newPos === -1) {\n return false;\n }\n const idx2 = children.findIndex(elem => elem.getPosition() === newPos);\n if (idx2 > -1) {\n children[idx].setPosition(newPos);\n children[idx2].setPosition(oldPos);\n return true;\n }\n }\n return false;\n },\n\n __moveDown: function(itemMdl) {\n const children = this.__tree.getModel().getChildren().toArray();\n const nodeId = itemMdl.getNodeId();\n const idx = children.findIndex(elem => elem.getNodeId() === nodeId);\n if (idx > -1) {\n const oldPos = children[idx].getPosition();\n const newPos = oldPos+1;\n if (newPos === this.__getVisibleItems().length) {\n return false;\n }\n const idx2 = children.findIndex(elem => elem.getPosition() === newPos);\n if (idx2 > -1) {\n children[idx].setPosition(newPos);\n children[idx2].setPosition(oldPos);\n return true;\n }\n }\n return false;\n },\n\n __saveInstructions: function(item, instructions) {\n const itemMdl = item.getModel();\n itemMdl.setInstructions(instructions);\n\n // save instructions\n const nodeId = itemMdl.getNodeId();\n this.__study.getUi().getSlideshow().setInstructions(nodeId, instructions);\n },\n\n __serialize: function() {\n const slideshow = {};\n const model = this.__tree.getModel();\n const children = model.getChildren().toArray();\n children.forEach(child => {\n slideshow[child.getNodeId()] = {\n \"position\": child.getPosition(),\n \"instructions\": child.getInstructions()\n };\n });\n return slideshow;\n },\n\n __saveSlides: function() {\n const slideshow = this.__serialize();\n this.__study.getUi().getSlideshow().setData(slideshow);\n this.fireEvent(\"finished\");\n },\n\n __disableSlides: function() {\n this.__getVisibleItems().forEach(item => {\n item.setPosition(-1);\n });\n const slideshow = this.__serialize();\n this.__study.getUi().getSlideshow().setData(slideshow);\n this.fireEvent(\"finished\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Pedro Crespo (pcrespov)\n\n************************************************************************ */\n\n/**\n * HTTP requests to simcore's rest API\n */\nqx.Class.define(\"osparc.io.request.ApiRequest\", {\n extend: qx.io.request.Xhr,\n\n construct: function(url, method) {\n const baseURL = osparc.io.rest.AbstractResource.API;\n\n this.base(arguments, baseURL+url, method);\n this.set({\n accept: \"application/json\"\n });\n\n this.setRequestHeader(\"Content-Type\", \"application/json\");\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.snapshots.EditSnapshotView\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this.__buildForm();\n },\n\n events: {\n \"takeSnapshot\": \"qx.event.type.Event\",\n \"cancel\": \"qx.event.type.Event\"\n },\n\n members: {\n __form: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"tags\":\n control = new qx.ui.form.TextField();\n break;\n case \"message\":\n control = new qx.ui.form.TextArea().set({\n autoSize: true,\n minimalLineHeight: 3\n });\n break;\n case \"cancel-button\": {\n control = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"form-button-text\",\n allowGrowX: false\n });\n const commandEsc = new qx.ui.command.Command(\"Enter\");\n control.setCommand(commandEsc);\n control.addListener(\"execute\", () => this.fireEvent(\"cancel\"));\n break;\n }\n case \"ok-button\": {\n control = new qx.ui.form.Button(this.tr(\"OK\")).set({\n appearance: \"form-button\",\n allowGrowX: false\n });\n const commandEnter = new qx.ui.command.Command(\"Enter\");\n control.setCommand(commandEnter);\n control.addListener(\"execute\", () => {\n // releaseCapture to make sure all changes are applied\n this.__renderer.releaseCapture();\n this.fireEvent(\"takeSnapshot\");\n });\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __buildForm: function() {\n const form = this.__form = new qx.ui.form.Form();\n const renderer = this.__renderer = new qx.ui.form.renderer.Single(form);\n this._add(renderer);\n\n const tags = this.getChildControl(\"tags\");\n form.add(tags, \"Tags\", null, \"tags\");\n\n const message = this.getChildControl(\"message\");\n form.add(message, \"Message\", null, \"message\");\n\n // buttons\n const cancelButton = this.getChildControl(\"cancel-button\");\n form.addButton(cancelButton);\n const okButton = this.getChildControl(\"ok-button\");\n form.addButton(okButton);\n },\n\n getTag: function() {\n return this.__form.getItem(\"tags\").getValue();\n },\n\n getMessage: function() {\n return this.__form.getItem(\"message\").getValue();\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * @ignore(fetch)\n */\n\nqx.Class.define(\"osparc.snapshots.SnapshotsView\", {\n extend: qx.ui.splitpane.Pane,\n\n construct: function(study) {\n this.base(arguments, \"horizontal\");\n\n this.__study = study;\n this.__buildLayout();\n },\n\n events: {\n \"updateSnapshot\": \"qx.event.type.Data\",\n \"openSnapshot\": \"qx.event.type.Data\"\n },\n\n members: {\n __snapshotsSection: null,\n __gitGraphScrollLayout: null,\n __gitGraphWrapper: null,\n __snapshotPreview: null,\n __editSnapshotBtn: null,\n __openSnapshotBtn: null,\n __snapshots: null,\n __currentSnapshot: null,\n __selectedSnapshotId: null,\n\n __buildLayout: function() {\n const snapshotsSection = this.__snapshotsSection = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n this.add(snapshotsSection, 1);\n\n this.__rebuildSnapshots();\n this.__buildSnapshotButtons();\n\n const snapshotPreview = this.__snapshotPreview = new osparc.workbench.WorkbenchUIPreview();\n this.add(snapshotPreview, 1);\n },\n\n __rebuildSnapshots: function() {\n Promise.all([\n this.__study.getSnapshots(),\n this.__study.getCurrentSnapshot()\n ])\n .then(values => {\n this.__snapshots = values[0];\n this.__currentSnapshot = values[1];\n this.__rebuildSnapshotsGraph();\n });\n },\n\n __rebuildSnapshotsGraph: function() {\n if (this.__gitGraphScrollLayout) {\n this.__snapshotsSection.remove(this.__gitGraphScrollLayout);\n }\n\n const gitGraphLayout = new qx.ui.container.Composite(new qx.ui.layout.Canvas());\n const gitGraphCanvas = new qx.ui.container.Composite(new qx.ui.layout.Canvas());\n const gitGraphInteract = new qx.ui.container.Composite(new qx.ui.layout.VBox());\n gitGraphLayout.add(gitGraphCanvas, {\n top: 20,\n right: 0,\n bottom: 0,\n left: 0\n });\n gitGraphLayout.add(gitGraphInteract, {\n top: 20 + 2,\n right: 0,\n bottom: 0,\n left: 0\n });\n\n gitGraphCanvas.addListenerOnce(\"appear\", () => {\n const gitGraphWrapper = this.__gitGraphWrapper = new osparc.wrapper.GitGraph();\n gitGraphWrapper.init(gitGraphCanvas, gitGraphInteract)\n .then(() => {\n gitGraphWrapper.populateGraph(this.__snapshots, this.__currentSnapshot);\n this.__snapshotSelected(this.__currentSnapshot[\"id\"]);\n });\n gitGraphWrapper.addListener(\"snapshotTap\", e => {\n const snapshotId = e.getData();\n this.__snapshotSelected(snapshotId);\n });\n });\n\n const scroll = this.__gitGraphScrollLayout = new qx.ui.container.Scroll();\n scroll.add(gitGraphLayout);\n this._add(scroll, {\n flex: 1\n });\n\n this.__snapshotsSection.addAt(scroll, 0, {\n flex: 1\n });\n },\n\n __buildSnapshotButtons: function() {\n const buttonsSection = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n this._add(buttonsSection);\n\n const editSnapshotBtn = this.__editSnapshotBtn = this.__createEditSnapshotBtn();\n editSnapshotBtn.setEnabled(false);\n editSnapshotBtn.addListener(\"execute\", () => {\n if (this.__selectedSnapshotId) {\n this.__editSnapshot(this.__selectedSnapshotId);\n }\n });\n buttonsSection.add(editSnapshotBtn);\n\n const openSnapshotBtn = this.__openSnapshotBtn = this.__createOpenSnapshotBtn();\n openSnapshotBtn.setEnabled(false);\n openSnapshotBtn.addListener(\"execute\", () => {\n if (this.__selectedSnapshotId) {\n this.fireDataEvent(\"openSnapshot\", this.__selectedSnapshotId);\n }\n });\n buttonsSection.add(openSnapshotBtn);\n\n this.__snapshotsSection.addAt(buttonsSection, 1);\n },\n\n __createEditSnapshotBtn: function() {\n const editSnapshotBtn = new qx.ui.form.Button(this.tr(\"Edit Tag\")).set({\n allowGrowX: false,\n alignX: \"left\"\n });\n return editSnapshotBtn;\n },\n\n __createOpenSnapshotBtn: function() {\n const openSnapshotBtn = new qx.ui.form.Button(this.tr(\"Open\")).set({\n allowGrowX: false,\n alignX: \"right\"\n });\n return openSnapshotBtn;\n },\n\n __editSnapshot: function(snapshotId) {\n const selectedSnapshot = this.__snapshots.find(snapshot => snapshot[\"id\"] === snapshotId);\n if (selectedSnapshot) {\n const editSnapshotView = new osparc.snapshots.EditSnapshotView();\n const tagCtrl = editSnapshotView.getChildControl(\"tags\");\n tagCtrl.setValue(selectedSnapshot[\"tags\"][0]);\n const msgCtrl = editSnapshotView.getChildControl(\"message\");\n msgCtrl.setValue(selectedSnapshot[\"message\"]);\n const title = this.tr(\"Edit Snapshot\");\n const win = osparc.ui.window.Window.popUpInWindow(editSnapshotView, title, 400, 180);\n editSnapshotView.addListener(\"takeSnapshot\", () => {\n const params = {\n url: {\n \"studyId\": this.__study.getUuid(),\n \"snapshotId\": snapshotId\n },\n data: {\n \"tag\": editSnapshotView.getTag(),\n \"message\": editSnapshotView.getMessage()\n }\n };\n osparc.data.Resources.fetch(\"snapshots\", \"updateSnapshot\", params)\n .then(() => {\n this.__rebuildSnapshots();\n })\n .catch(err => osparc.FlashMessenger.getInstance().logAs(err.message, \"ERROR\"));\n win.close();\n }, this);\n editSnapshotView.addListener(\"cancel\", () => {\n win.close();\n }, this);\n }\n },\n\n __snapshotSelected: function(snapshotId) {\n this.__selectedSnapshotId = snapshotId;\n\n if (this.__gitGraphWrapper) {\n this.__gitGraphWrapper.setSelection(snapshotId);\n }\n\n this.__loadSnapshotsPreview(snapshotId);\n\n if (this.__editSnapshotBtn) {\n this.__editSnapshotBtn.setEnabled(true);\n }\n\n if (this.__openSnapshotBtn) {\n this.__openSnapshotBtn.setEnabled(true);\n }\n },\n\n __loadSnapshotsPreview: function(snapshotId) {\n const params = {\n url: {\n \"studyId\": this.__study.getUuid(),\n \"snapshotId\": snapshotId\n }\n };\n osparc.data.Resources.fetch(\"snapshots\", \"preview\", params)\n .then(data => {\n const studyData = this.__study.serialize();\n studyData[\"workbench\"] = data[\"workbench\"];\n studyData[\"ui\"] = data[\"ui\"];\n const study = new osparc.data.model.Study(studyData);\n study.setReadOnly(true);\n this.__snapshotPreview.setStudy(study);\n // this.__snapshotPreview.loadModel(study.getWorkbench());\n if (study.getWorkbench().isDeserialized()) {\n this.__snapshotPreview.loadModel(study.getWorkbench())\n } else {\n study.getWorkbench().addListener(\"changeDeserialized\", e => {\n if (e.getData()) {\n this.__snapshotPreview.loadModel(study.getWorkbench())\n }\n }, this);\n }\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * @ignore(fetch)\n */\n\nqx.Class.define(\"osparc.snapshots.IterationsView\", {\n extend: qx.ui.splitpane.Pane,\n\n construct: function(study) {\n this.base(arguments, \"horizontal\");\n\n this.__study = study;\n this.__iterations = [];\n this.__buildLayout();\n },\n\n events: {\n \"openIteration\": \"qx.event.type.Data\"\n },\n\n members: {\n __study: null,\n __iterations: null,\n __iterationsSection: null,\n __loadingTable: null,\n __iterationsTable: null,\n __iterationPreview: null,\n __tagIterationBtn: null,\n __deleteIterationBtn: null,\n __openIterationBtn: null,\n __selectedIterationId: null,\n // throttling\n __lastUpdate: null,\n __lastFunc: null,\n\n __buildLayout: function() {\n const iterationsSection = this.__iterationsSection = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n this.add(iterationsSection, 1);\n\n this.__buildIterations();\n this.__buildSnapshotButtons();\n\n const iterationsPreview = this.__iterationPreview = new osparc.workbench.WorkbenchUIPreview();\n this.add(iterationsPreview, 1);\n },\n\n __buildIterations: function() {\n const loadingTable = this.__loadingTable = new osparc.snapshots.Loading(this.tr(\"iterations\"));\n this.__iterationsSection.addAt(loadingTable, 0, {\n flex: 1\n });\n\n this.__study.getIterations()\n .then(iterations => {\n if (iterations.length) {\n const iterationPromises = [];\n iterations.forEach(iteration => {\n const params = {\n url: {\n \"studyId\": iteration[\"workcopy_project_id\"]\n }\n };\n iterationPromises.push(osparc.data.Resources.getOne(\"studies\", params));\n });\n Promise.all(iterationPromises)\n .then(values => {\n this.__iterations = values;\n this.__listenToNodeUpdates();\n this.__rebuildIterationsTable();\n });\n }\n });\n },\n\n __buildSnapshotButtons: function() {\n const buttonsSection = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n this._add(buttonsSection);\n\n const tagIterationBtn = this.__tagIterationBtn = this.__createTagIterationBtn();\n tagIterationBtn.setEnabled(false);\n tagIterationBtn.addListener(\"execute\", () => {\n if (this.__selectedIterationId) {\n this.__tagIteration(this.__selectedIterationId);\n }\n });\n buttonsSection.add(tagIterationBtn);\n\n const deleteIterationBtn = this.__deleteIterationBtn = this.__createDeleteIterationBtn();\n deleteIterationBtn.setEnabled(false);\n buttonsSection.add(deleteIterationBtn);\n\n const openIterationBtn = this.__openIterationBtn = this.__createOpenIterationBtn();\n openIterationBtn.setEnabled(false);\n openIterationBtn.addListener(\"execute\", () => {\n if (this.__selectedIterationId) {\n this.fireDataEvent(\"openIteration\", this.__selectedIterationId);\n }\n });\n buttonsSection.add(openIterationBtn);\n\n this.__iterationsSection.addAt(buttonsSection, 1);\n },\n\n __listenToNodeUpdates: function() {\n const socket = osparc.wrapper.WebSocket.getInstance();\n socket.on(\"nodeUpdated\", data => {\n const idx = this.__iterations.findIndex(it => it.uuid === data[\"project_id\"]);\n if (idx === -1) {\n return;\n }\n this.__iterationUpdated(data);\n }, this);\n },\n\n __iterationUpdated: function(dataUpdate) {\n const idx = this.__iterations.findIndex(it => it[\"uuid\"] === dataUpdate[\"project_id\"]);\n if (idx === -1) {\n return;\n }\n\n const iterationData = this.__iterations[idx];\n const iteration = new osparc.data.model.Study(iterationData);\n iteration.setReadOnly(true);\n iteration.nodeUpdated(dataUpdate);\n const iterationDataUpdated = iteration.serialize(false);\n this.__iterations.splice(idx, 1, iterationDataUpdated);\n\n // update maximum once every 2\"\n const throttleTime = 2000;\n this.__throttleUpdate(this.__updateNewData.bind(this), throttleTime);\n },\n\n __throttleUpdate: function(callback, time) {\n if (this.__lastUpdate) {\n if (this.__lastFunc) {\n clearTimeout(this.__lastFunc);\n }\n this.__lastFunc = setTimeout(() => {\n if ((Date.now() - this.__lastUpdate) >= time) {\n callback();\n this.__lastUpdate = Date.now();\n }\n }, time - (Date.now() - this.__lastUpdate));\n } else {\n callback();\n this.__lastUpdate = Date.now();\n }\n },\n\n __updateNewData: function() {\n const idx = this.__iterations.findIndex(it => it[\"uuid\"] === this.__selectedIterationId);\n if (idx > -1) {\n const iterationData = this.__iterations[idx];\n const iteration = new osparc.data.model.Study(iterationData);\n iteration.setReadOnly(true);\n this.__iterationPreview.setStudy(iteration);\n this.__iterationPreview.loadModel(iteration.getWorkbench());\n }\n\n this.__iterationsTable.iterationsToTable(this.__iterations);\n },\n\n __rebuildIterationsTable: function() {\n if (this.__loadingTable) {\n this.__iterationsSection.remove(this.__loadingTable);\n this.__loadingTable = null;\n }\n if (this.__iterationsTable) {\n this.__iterationsSection.remove(this.__iterationsTable);\n }\n\n const iterationsTable = this.__iterationsTable = new osparc.snapshots.Iterations(this.__study.serialize(false));\n iterationsTable.populateTable(this.__iterations);\n iterationsTable.addListener(\"cellTap\", e => {\n const selectedRow = e.getRow();\n const iterationId = iterationsTable.getRowData(selectedRow)[\"uuid\"];\n this.__iterationSelected(iterationId);\n });\n\n this.__iterationsSection.addAt(iterationsTable, 0, {\n flex: 1\n });\n },\n\n __reloadIteration: function(iterationId) {\n const params = {\n url: {\n \"studyId\": iterationId\n }\n };\n osparc.data.Resources.getOne(\"studies\", params)\n .then(data => {\n const studyData = this.__study.serialize();\n studyData[\"workbench\"] = data[\"workbench\"];\n studyData[\"ui\"] = data[\"ui\"];\n\n const idx = this.__iterations.findIndex(it => it[\"uuid\"] === data[\"uuid\"]);\n if (idx !== -1) {\n this.__iterations.splice(idx, 1, data);\n this.__iterationsTable.iterationsToTable(this.__iterations);\n }\n\n const study = new osparc.data.model.Study(studyData);\n study.setReadOnly(true);\n this.__iterationPreview.set({\n study: study\n });\n this.__iterationPreview.loadModel(study.getWorkbench());\n });\n },\n\n __createTagIterationBtn: function() {\n const tagIterationBtn = new qx.ui.form.Button(this.tr(\"Edit Tag\")).set({\n allowGrowX: false,\n alignX: \"left\"\n });\n return tagIterationBtn;\n },\n\n __createDeleteIterationBtn: function() {\n const deleteIterationBtn = new qx.ui.form.Button(this.tr(\"Delete\")).set({\n appearance: \"danger-button\",\n allowGrowX: false,\n alignX: \"left\"\n });\n return deleteIterationBtn;\n },\n\n __createOpenIterationBtn: function() {\n const openIterationBtn = new qx.ui.form.Button(this.tr(\"Open\")).set({\n allowGrowX: false,\n alignX: \"right\"\n });\n return openIterationBtn;\n },\n\n __tagIteration: function(iterationId) {\n const selectedSnapshot = this.__iterations.find(iteration => iteration[\"uuid\"] === iterationId);\n if (selectedSnapshot) {\n const editSnapshotView = new osparc.snapshots.EditSnapshotView();\n const tagCtrl = editSnapshotView.getChildControl(\"tags\");\n tagCtrl.setValue(selectedSnapshot[\"tags\"][0]);\n const msgCtrl = editSnapshotView.getChildControl(\"message\");\n msgCtrl.setValue(selectedSnapshot[\"message\"]);\n const title = this.tr(\"Edit Iteration\");\n const win = osparc.ui.window.Window.popUpInWindow(editSnapshotView, title, 400, 180);\n editSnapshotView.addListener(\"takeSnapshot\", () => {\n const params = {\n url: {\n \"studyId\": this.__study.getUuid(),\n \"snapshotId\": iterationId\n },\n data: {\n \"tag\": editSnapshotView.getTag(),\n \"message\": editSnapshotView.getMessage()\n }\n };\n osparc.data.Resources.fetch(\"snapshots\", \"updateSnapshot\", params)\n .then(() => {\n this.__rebuildSnapshots();\n })\n .catch(err => osparc.FlashMessenger.getInstance().logAs(err.message, \"ERROR\"));\n win.close();\n }, this);\n editSnapshotView.addListener(\"cancel\", () => {\n win.close();\n }, this);\n }\n },\n\n __iterationSelected: function(iterationId) {\n this.__selectedIterationId = iterationId;\n\n this.__reloadIteration(iterationId);\n\n if (this.__openIterationBtn) {\n this.__openIterationBtn.setEnabled(true);\n }\n },\n\n unlistenToNodeUpdated: function() {\n osparc.wrapper.WebSocket.getInstance().removeSlot(\"nodeUpdated\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.StudyEditorIdlingTracker\", {\n extend: qx.core.Object,\n\n construct: function(studyUuid) {\n this.base(arguments);\n this.__studyUuid = studyUuid;\n this.__resetIdlingTimeBound = this.__resetIdlingTime.bind(this);\n },\n\n events: {\n \"userIdled\": \"qx.event.type.Event\"\n },\n\n statics: {\n INACTIVITY_REQUEST_PERIOD_S: 5\n },\n\n members: {\n __resetIdlingTimeBound: null,\n __idlingTime: null,\n __idleInterval: null,\n __idleFlashMessage: null,\n __idleFlashMessageIsShowing: false,\n __idleFlashMessageTimeoutId: null,\n\n __updateFlashMessage: function(timeoutSec) {\n if (this.__idleFlashMessage === null) {\n this.__idleFlashMessage = osparc.FlashMessenger.getInstance().logAs(qx.locale.Manager.tr(\"Are you still there?\"), \"WARNING\", timeoutSec*1000);\n }\n\n let msg = qx.locale.Manager.tr(\"Are you still there?\") + \"
\";\n msg += `If not, ${osparc.store.StaticInfo.getInstance().getDisplayName()} will try to close the ${osparc.product.Utils.getStudyAlias()} in:`;\n msg += osparc.utils.Utils.formatSeconds(timeoutSec);\n this.__idleFlashMessage.setMessage(msg);\n },\n\n __removeIdleFlashMessage: function() {\n // removes a flash message if displaying\n if (this.__idleFlashMessageTimeoutId) {\n osparc.utils.WebWorkerScheduler.getInstance().clearInterval(this.__idleFlashMessageTimeoutId);\n this.__idleFlashMessageTimeoutId = null;\n this.__idleFlashMessageIsShowing = false;\n }\n if (this.__idleFlashMessage) {\n osparc.FlashMessenger.getInstance().removeMessage(this.__idleFlashMessage);\n this.__idleFlashMessage = null;\n }\n },\n\n __displayFlashMessage: function(displayDurationS) {\n this.__idleFlashMessageIsShowing = true;\n\n const updateFlashMessage = () => {\n if (displayDurationS <= 0) {\n // close and reset popup\n this.__removeIdleFlashMessage();\n this.__userIdled();\n return;\n }\n\n this.__updateFlashMessage(displayDurationS);\n displayDurationS--;\n };\n this.__idleFlashMessageTimeoutId = osparc.utils.WebWorkerScheduler.getInstance().setInterval(updateFlashMessage, 1000);\n },\n\n __userIdled: function() {\n this.stop();\n this.fireEvent(\"userIdled\");\n },\n\n __startTimer: function() {\n const inactivityThresholdT = osparc.Preferences.getInstance().getUserInactivityThreshold();\n if (inactivityThresholdT === 0) {\n // If 0, \"Automatic Shutdown of Idle Instances\" is disabled\n return;\n }\n\n const checkFn = () => {\n const flashMessageDurationS = Math.round(inactivityThresholdT * 0.2);\n this.__idlingTime++;\n\n if (this.__idlingTime >= (inactivityThresholdT-flashMessageDurationS) && !this.__idleFlashMessageIsShowing) {\n const timeSinceInactivityThreshold = this.__idlingTime - inactivityThresholdT;\n if (timeSinceInactivityThreshold % this.self().INACTIVITY_REQUEST_PERIOD_S == 0) {\n // check if backend reports project as inactive\n const params = {\n url: {\n studyId: this.__studyUuid\n }\n };\n osparc.data.Resources.fetch(\"studies\", \"getInactivity\", params)\n .then(data => {\n if (data[\"is_inactive\"]) {\n this.__displayFlashMessage(flashMessageDurationS);\n }\n })\n .catch(err => console.error(err));\n }\n }\n };\n this.__idleInterval = osparc.utils.WebWorkerScheduler.getInstance().setInterval(checkFn, 1000);\n },\n\n __stopTimer: function() {\n if (this.__idleInterval) {\n osparc.utils.WebWorkerScheduler.getInstance().clearInterval(this.__idleInterval);\n this.__idleInterval = null;\n }\n },\n\n __resetIdlingTime: function() {\n this.__idlingTime = 0;\n this.__removeIdleFlashMessage();\n },\n\n start: function() {\n this.__resetIdlingTime()\n const cb = this.__resetIdlingTimeBound;\n window.addEventListener(\"mousemove\", cb);\n window.addEventListener(\"mousedown\", cb);\n window.addEventListener(\"keydown\", cb);\n\n this.__startTimer();\n },\n\n stop: function() {\n const cb = this.__resetIdlingTimeBound;\n window.removeEventListener(\"mousemove\", cb);\n window.removeEventListener(\"mousedown\", cb);\n window.removeEventListener(\"keydown\", cb);\n\n this.__removeIdleFlashMessage();\n this.__stopTimer();\n },\n\n /**\n * Destructor\n */\n destruct: function() {\n this.stop();\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Fabian Jakobs (fjakobs)\n * Sebastian Werner (wpbasti)\n\n************************************************************************ */\n\n/**\n * The background class contains methods to compute and set the background image\n * of a DOM element.\n *\n * It fixes a background position issue in Firefox 2.\n */\nqx.Class.define(\"qx.bom.element.Background\",\n{\n statics :\n {\n /** @type {Array} Internal helper to improve compile performance */\n __tmpl :\n [\n \"background-image:url(\", null, \");\",\n \"background-position:\", null, \";\",\n \"background-repeat:\", null, \";\"\n ],\n\n\n /** @type {Map} Empty styles when no image is given */\n __emptyStyles :\n {\n backgroundImage : null,\n backgroundPosition : null,\n backgroundRepeat : null\n },\n\n\n /**\n * Computes the background position CSS value\n *\n * @param left {Integer|String} either an integer pixel value or a CSS\n * string value\n * @param top {Integer|String} either an integer pixel value or a CSS\n * string value\n * @return {String} The background position CSS value\n */\n __computePosition : function(left, top)\n {\n // Correcting buggy Firefox background-position implementation\n // Have problems with identical values\n var engine = qx.core.Environment.get(\"engine.name\");\n var version = qx.core.Environment.get(\"engine.version\");\n if (engine == \"gecko\" && version < 1.9 && left == top && typeof left == \"number\") {\n top += 0.01;\n }\n\n if (left) {\n var leftCss = (typeof left == \"number\") ? left + \"px\" : left;\n } else {\n leftCss = \"0\";\n }\n if (top) {\n var topCss = (typeof top == \"number\") ? top + \"px\" : top;\n } else {\n topCss = \"0\";\n }\n\n return leftCss + \" \" + topCss;\n },\n\n\n /**\n * Compiles the background into a CSS compatible string.\n *\n * @param source {String?null} The URL of the background image\n * @param repeat {String?null} The background repeat property. valid values\n * are repeat
, repeat-x
,\n * repeat-y
, no-repeat
\n * @param left {Integer|String?null} The horizontal offset of the image\n * inside of the image element. If the value is an integer it is\n * interpreted as pixel value otherwise the value is taken as CSS value.\n * CSS the values are \"center\", \"left\" and \"right\"\n * @param top {Integer|String?null} The vertical offset of the image\n * inside of the image element. If the value is an integer it is\n * interpreted as pixel value otherwise the value is taken as CSS value.\n * CSS the values are \"top\", \"bottom\" and \"center\"\n * @return {String} CSS string\n */\n compile : function(source, repeat, left, top)\n {\n var position = this.__computePosition(left, top);\n var backgroundImageUrl = qx.util.ResourceManager.getInstance().toUri(source);\n\n // Updating template\n var tmpl = this.__tmpl;\n\n tmpl[1] = \"'\" + backgroundImageUrl + \"'\"; // Put in quotes so spaces work\n tmpl[4] = position;\n tmpl[7] = repeat;\n\n return tmpl.join(\"\");\n },\n\n\n /**\n * Get standard css background styles\n *\n * @param source {String} The URL of the background image\n * @param repeat {String?null} The background repeat property. valid values\n * are repeat
, repeat-x
,\n * repeat-y
, no-repeat
\n * @param left {Integer|String?null} The horizontal offset of the image\n * inside of the image element. If the value is an integer it is\n * interpreted as pixel value otherwise the value is taken as CSS value.\n * CSS the values are \"center\", \"left\" and \"right\"\n * @param top {Integer|String?null} The vertical offset of the image\n * inside of the image element. If the value is an integer it is\n * interpreted as pixel value otherwise the value is taken as CSS value.\n * CSS the values are \"top\", \"bottom\" and \"center\"\n * @return {Map} A map of CSS styles\n */\n getStyles : function(source, repeat, left, top)\n {\n if (!source) {\n return this.__emptyStyles;\n }\n\n var position = this.__computePosition(left, top);\n var backgroundImageUrl = qx.util.ResourceManager.getInstance().toUri(source);\n\n var backgroundImageCssString = \"url('\" + backgroundImageUrl + \"')\"; // Put in quotes so spaces work\n var map = {\n backgroundPosition : position,\n backgroundImage : backgroundImageCssString\n };\n\n if (repeat != null) {\n map.backgroundRepeat = repeat;\n }\n return map;\n },\n\n\n /**\n * Set the background on the given DOM element\n *\n * @param element {Element} The element to modify\n * @param source {String?null} The URL of the background image\n * @param repeat {String?null} The background repeat property. valid values\n * are repeat
, repeat-x
,\n * repeat-y
, no-repeat
\n * @param left {Integer?null} The horizontal offset of the image inside of\n * the image element.\n * @param top {Integer?null} The vertical offset of the image inside of\n * the image element.\n */\n set : function(element, source, repeat, left, top)\n {\n var styles = this.getStyles(source, repeat, left, top);\n for (var prop in styles) {\n element.style[prop] = styles[prop];\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Class that stores Workbench data.\n *\n * It takes care of creating, storing and managing nodes and edges.\n *\n * -> {EDGES}\n * STUDY -> METADATA + WORKBENCH ->|\n * -> {LINKS}\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * const workbench = new osparc.data.model.Workbench(study.workbench, study.workbenchUI)\n * study.setWorkbench(workbench);\n * workbench.initWorkbench();\n *
\n */\n\nqx.Class.define(\"osparc.data.model.Workbench\", {\n extend: qx.core.Object,\n\n /**\n * @param workbenchData {Object} Object containing the workbench raw data\n * @param workbenchUIData {Object} Object containing the workbenchUI raw data\n */\n construct: function(workbenchData, workbenchUIData = null) {\n this.base(arguments);\n\n this.__workbenchInitData = workbenchData;\n this.__workbenchUIInitData = workbenchUIData;\n },\n\n events: {\n \"updateStudyDocument\": \"qx.event.type.Event\",\n \"restartAutoSaveTimer\": \"qx.event.type.Event\",\n \"pipelineChanged\": \"qx.event.type.Event\",\n \"reloadModel\": \"qx.event.type.Event\",\n \"retrieveInputs\": \"qx.event.type.Data\",\n \"fileRequested\": \"qx.event.type.Data\",\n \"openNode\": \"qx.event.type.Data\",\n \"showInLogger\": \"qx.event.type.Data\"\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n init: null,\n nullable: false,\n event: \"changeStudy\"\n },\n\n deserialized: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n event: \"changeDeserialized\"\n }\n },\n\n statics: {\n CANT_ADD_NODE: qx.locale.Manager.tr(\"Nodes can't be added while the pipeline is running\"),\n CANT_DELETE_NODE: qx.locale.Manager.tr(\"Nodes can't be deleted while the pipeline is running\"),\n\n getLinkedNodeIds: function(workbenchData) {\n const linkedNodeIDs = new Set([]);\n Object.values(workbenchData).forEach(nodeData => {\n const linkedNodes = osparc.data.model.Node.getLinkedNodeIds(nodeData);\n linkedNodes.forEach(linkedNodeID => linkedNodeIDs.add(linkedNodeID))\n });\n return Array.from(linkedNodeIDs);\n },\n },\n\n members: {\n __workbenchInitData: null,\n __workbenchUIInitData: null,\n __nodes: null,\n __edges: null,\n\n getWorkbenchInitData: function() {\n return this.__workbenchInitData;\n },\n\n // deserializes the workbenchInitData\n buildWorkbench: function() {\n this.__nodes = {};\n this.__edges = {};\n this.__deserialize(this.__workbenchInitData, this.__workbenchUIInitData);\n this.__workbenchInitData = null;\n this.__workbenchUIInitData = null;\n },\n\n // starts the dynamic services\n initWorkbench: function() {\n const allModels = this.getNodes();\n const nodes = Object.values(allModels);\n nodes.forEach(node => node.checkState());\n },\n\n getUpstreamCompNodes: function(node, recursive = true, upstreamNodes = new Set()) {\n const links = node.getLinks();\n links.forEach(link => {\n upstreamNodes.add(link[\"nodeUuid\"]);\n if (recursive) {\n const linkNode = this.getNode(link[\"nodeUuid\"]);\n if (linkNode.isComputational()) {\n this.getUpstreamCompNodes(linkNode, recursive, upstreamNodes);\n }\n }\n });\n return Array.from(upstreamNodes).reverse();\n },\n\n __getDownstreamNodes: function(node) {\n const downstreamNodes = [];\n Object.values(this.getNodes()).forEach(n => {\n const inputNodes = n.getInputNodes();\n if (inputNodes.includes(node.getNodeId())) {\n downstreamNodes.push(n);\n }\n });\n return downstreamNodes;\n },\n\n isPipelineLinear: function() {\n const nodes = this.getNodes();\n const inputNodeIds = [];\n const nodesWithoutInputs = [];\n for (const nodeId in nodes) {\n const node = nodes[nodeId];\n const inputNodes = node.getInputNodes();\n if (inputNodes.length === 0) {\n nodesWithoutInputs.push(nodeId);\n } else if (inputNodes.length > 1) {\n return false;\n } else {\n inputNodeIds.push(...inputNodes);\n }\n }\n // if duplicates exist, it means that there is a branching\n const duplicateExists = new Set(inputNodeIds).size !== inputNodeIds.length;\n if (duplicateExists) {\n return false;\n }\n\n // Make sure there are no more than one upstream nodes\n return nodesWithoutInputs.length < 2;\n },\n\n getPipelineLinearSorted: function() {\n if (!this.isPipelineLinear()) {\n return null;\n }\n\n const sortedPipeline = [];\n const nodes = this.getNodes();\n for (const nodeId in nodes) {\n const node = nodes[nodeId];\n const inputNodes = node.getInputNodes();\n if (inputNodes.length === 0) {\n // first node\n sortedPipeline.splice(0, 0, nodeId);\n } else {\n // insert right after its input node\n const idx = sortedPipeline.indexOf(inputNodes[0]);\n sortedPipeline.splice(idx+1, 0, nodeId);\n }\n }\n return sortedPipeline;\n },\n\n getNode: function(nodeId) {\n const allNodes = this.getNodes();\n const exists = Object.prototype.hasOwnProperty.call(allNodes, nodeId);\n if (exists) {\n return allNodes[nodeId];\n }\n return null;\n },\n\n getNodes: function() {\n let nodes = Object.assign({}, this.__nodes);\n return nodes;\n },\n\n getConnectedEdges: function(nodeId) {\n const connectedEdges = [];\n const edges = Object.values(this.__edges);\n for (const edge of edges) {\n const inputNodeId = edge.getInputNodeId();\n const outputNodeId = edge.getOutputNodeId();\n if ([inputNodeId, outputNodeId].includes(nodeId)) {\n connectedEdges.push(edge.getEdgeId());\n }\n }\n return connectedEdges;\n },\n\n getEdge: function(edgeId, node1Id, node2Id) {\n const exists = Object.prototype.hasOwnProperty.call(this.__edges, edgeId);\n if (exists) {\n return this.__edges[edgeId];\n }\n const edges = Object.values(this.__edges);\n for (const edge of edges) {\n if (edge.getInputNodeId() === node1Id &&\n edge.getOutputNodeId() === node2Id) {\n return edge;\n }\n }\n return null;\n },\n\n createEdge: function(edgeId, nodeLeftId, nodeRightId, autoConnect = true) {\n const existingEdge = this.getEdge(edgeId, nodeLeftId, nodeRightId);\n if (existingEdge) {\n return existingEdge;\n }\n if (!osparc.data.Permissions.getInstance().canDo(\"study.edge.create\", true)) {\n return null;\n }\n const nodeLeft = this.getNode(nodeLeftId);\n const nodeRight = this.getNode(nodeRightId);\n if (nodeLeft && nodeRight) {\n const edge = new osparc.data.model.Edge(edgeId, nodeLeft, nodeRight);\n this.addEdge(edge);\n\n if (autoConnect) {\n nodeRight.createAutoPortConnection(nodeLeft, nodeRight);\n }\n\n nodeRight.addInputNode(nodeLeftId);\n\n return edge;\n }\n return null;\n },\n\n addEdge: function(edge) {\n const edgeId = edge.getEdgeId();\n const node1Id = edge.getInputNodeId();\n const node2Id = edge.getOutputNodeId();\n\n const exists = this.getEdge(edgeId, node1Id, node2Id);\n if (!exists) {\n this.__edges[edgeId] = edge;\n }\n\n const nodeLeft = this.getNode(node1Id);\n const nodeRight = this.getNode(node2Id);\n nodeLeft.setOutputConnected(true);\n nodeRight.setInputConnected(true);\n },\n\n __createNode: function(study, metadata, uuid) {\n osparc.utils.Utils.localCache.serviceToFavs(metadata.key);\n const node = new osparc.data.model.Node(study, metadata, uuid);\n node.addListener(\"keyChanged\", () => this.fireEvent(\"reloadModel\"), this);\n node.addListener(\"changeInputNodes\", () => this.fireDataEvent(\"pipelineChanged\"), this);\n node.addListener(\"reloadModel\", () => this.fireEvent(\"reloadModel\"), this);\n node.addListener(\"updateStudyDocument\", () => this.fireEvent(\"updateStudyDocument\"), this);\n return node;\n },\n\n createNode: async function(key, version) {\n if (!osparc.data.Permissions.getInstance().canDo(\"study.node.create\", true)) {\n osparc.FlashMessenger.getInstance().logAs(qx.locale.Manager.tr(\"You are not allowed to add nodes\"), \"ERROR\");\n return null;\n }\n if (this.getStudy().isPipelineRunning()) {\n osparc.FlashMessenger.getInstance().logAs(this.self().CANT_ADD_NODE, \"ERROR\");\n return null;\n }\n\n this.fireEvent(\"restartAutoSaveTimer\");\n // create the node in the backend first\n const params = {\n url: {\n studyId: this.getStudy().getUuid()\n },\n data: {\n \"service_key\": key,\n \"service_version\": version\n }\n };\n\n try {\n const metadata = await osparc.store.Services.getService(key, version);\n const resp = await osparc.data.Resources.fetch(\"studies\", \"addNode\", params);\n const nodeId = resp[\"node_id\"];\n\n this.fireEvent(\"restartAutoSaveTimer\");\n const node = this.__createNode(this.getStudy(), metadata, nodeId);\n this.__initNodeSignals(node);\n this.__addNode(node);\n\n node.populateNodeData();\n this.giveUniqueNameToNode(node, node.getLabel());\n node.checkState();\n\n return node;\n } catch (err) {\n let errorMsg = \"\";\n if (\"status\" in err && err.status === 406) {\n errorMsg = key + \":\" + version + qx.locale.Manager.tr(\" is retired\");\n } else {\n errorMsg = err.message || qx.locale.Manager.tr(\"Error creating \") + key + \":\" + version;\n }\n const errorMsgData = {\n msg: errorMsg,\n level: \"ERROR\"\n };\n this.fireDataEvent(\"showInLogger\", errorMsgData);\n osparc.FlashMessenger.getInstance().logAs(errorMsg, \"ERROR\");\n return null;\n }\n },\n\n __initNodeSignals: function(node) {\n if (node) {\n node.addListener(\"showInLogger\", e => this.fireDataEvent(\"showInLogger\", e.getData()), this);\n node.addListener(\"retrieveInputs\", e => this.fireDataEvent(\"retrieveInputs\", e.getData()), this);\n node.addListener(\"fileRequested\", e => this.fireDataEvent(\"fileRequested\", e.getData()), this);\n node.addListener(\"filePickerRequested\", e => {\n const {\n portId,\n nodeId,\n file\n } = e.getData();\n this.__filePickerNodeRequested(nodeId, portId, file);\n }, this);\n node.addListener(\"parameterRequested\", e => {\n const {\n portId,\n nodeId\n } = e.getData();\n this.__parameterNodeRequested(nodeId, portId);\n }, this);\n node.addListener(\"probeRequested\", e => {\n const {\n portId,\n nodeId\n } = e.getData();\n this.__probeNodeRequested(nodeId, portId);\n }, this);\n node.addListener(\"fileUploaded\", () => {\n // downstream nodes might have started downloading file picker's output.\n // show feedback to the user\n const downstreamNodes = this.__getDownstreamNodes(node);\n downstreamNodes.forEach(downstreamNode => {\n downstreamNode.getPortIds().forEach(portId => {\n const link = downstreamNode.getLink(portId);\n if (link && link[\"nodeUuid\"] === node.getNodeId() && link[\"output\"] === \"outFile\") {\n // connected to file picker's output\n setTimeout(() => {\n // start retrieving state after 2\"\n downstreamNode.retrieveInputs(portId);\n }, 2000);\n }\n });\n });\n }, this);\n }\n },\n\n getFreePosition: function(node, toTheLeft = true) {\n // do not overlap the new node2 with other nodes\n const pos = node.getPosition();\n const nodeWidth = osparc.workbench.NodeUI.NODE_WIDTH;\n const nodeHeight = osparc.workbench.NodeUI.NODE_HEIGHT;\n const xPos = toTheLeft ? Math.max(0, pos.x-nodeWidth-30) : pos.x+nodeWidth+30;\n let yPos = pos.y;\n const allNodes = this.getNodes();\n const avoidY = [];\n for (const nId in allNodes) {\n const node2 = allNodes[nId];\n if (node2.getPosition().x >= xPos-nodeWidth && node2.getPosition().x <= (xPos+nodeWidth)) {\n avoidY.push(node2.getPosition().y);\n }\n }\n avoidY.sort((a, b) => a - b); // For ascending sort\n avoidY.forEach(y => {\n if (yPos >= y-nodeHeight && yPos <= (y+nodeHeight)) {\n yPos = y+nodeHeight+20;\n }\n });\n\n return {\n x: xPos,\n y: yPos\n };\n },\n\n getFarthestPosition: function() {\n let x = 0;\n let y = 0;\n Object.values(this.getNodes()).forEach(node => {\n x = Math.max(x, node.getPosition().x);\n y = Math.max(y, node.getPosition().y);\n });\n x += osparc.workbench.NodeUI.NODE_WIDTH;\n y += osparc.workbench.NodeUI.NODE_HEIGHT;\n return {\n x,\n y\n };\n },\n\n __filePickerNodeRequested: async function(nodeId, portId, file) {\n const filePickerMetadata = osparc.service.Utils.getFilePicker();\n const filePicker = await this.createNode(filePickerMetadata[\"key\"], filePickerMetadata[\"version\"]);\n if (filePicker === null) {\n return;\n }\n\n const requesterNode = this.getNode(nodeId);\n const freePos = this.getFreePosition(requesterNode);\n filePicker.setPosition(freePos);\n\n // create connection\n const filePickerId = filePicker.getNodeId();\n requesterNode.addInputNode(filePickerId);\n // reload also before port connection happens\n this.fireEvent(\"reloadModel\");\n requesterNode.addPortLink(portId, filePickerId, \"outFile\")\n .then(success => {\n if (success) {\n if (file) {\n const fileObj = file.data;\n osparc.file.FilePicker.setOutputValueFromStore(\n filePicker,\n fileObj.getLocation(),\n fileObj.getDatasetId(),\n fileObj.getFileId(),\n fileObj.getLabel()\n );\n }\n this.fireDataEvent(\"openNode\", filePicker.getNodeId());\n this.fireEvent(\"reloadModel\");\n } else {\n this.removeNode(filePickerId);\n const msg = qx.locale.Manager.tr(\"File couldn't be assigned\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n }\n });\n },\n\n __parameterNodeRequested: async function(nodeId, portId) {\n const requesterNode = this.getNode(nodeId);\n\n // create a new ParameterNode\n const type = osparc.utils.Ports.getPortType(requesterNode.getMetaData()[\"inputs\"], portId);\n const parameterMetadata = osparc.service.Utils.getParameterMetadata(type);\n if (parameterMetadata) {\n const parameterNode = await this.createNode(parameterMetadata[\"key\"], parameterMetadata[\"version\"]);\n if (parameterNode === null) {\n return;\n }\n\n // do not overlap the new Parameter Node with other nodes\n const freePos = this.getFreePosition(requesterNode);\n parameterNode.setPosition(freePos);\n\n // create connection\n const pmId = parameterNode.getNodeId();\n requesterNode.addInputNode(pmId);\n // bypass the compatibility check\n if (requesterNode.getPropsForm().addPortLink(portId, pmId, \"out_1\") !== true) {\n this.removeNode(pmId);\n const msg = qx.locale.Manager.tr(\"Parameter couldn't be assigned\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n }\n this.fireEvent(\"reloadModel\");\n }\n },\n\n __probeNodeRequested: async function(nodeId, portId) {\n const requesterNode = this.getNode(nodeId);\n\n // create a new ProbeNode\n const requesterPortMD = requesterNode.getMetaData()[\"outputs\"][portId];\n const type = osparc.utils.Ports.getPortType(requesterNode.getMetaData()[\"outputs\"], portId);\n const probeMetadata = osparc.service.Utils.getProbeMetadata(type);\n if (probeMetadata) {\n const probeNode = await this.createNode(probeMetadata[\"key\"], probeMetadata[\"version\"]);\n if (probeNode === null) {\n return;\n }\n\n probeNode.setLabel(requesterPortMD.label);\n\n // do not overlap the new Parameter Node with other nodes\n const freePos = this.getFreePosition(requesterNode, false);\n probeNode.setPosition(freePos);\n\n // create connection\n const probeId = probeNode.getNodeId();\n probeNode.addInputNode(nodeId);\n // bypass the compatibility check\n if (probeNode.getPropsForm().addPortLink(\"in_1\", nodeId, portId) !== true) {\n this.removeNode(probeId);\n const msg = qx.locale.Manager.tr(\"Probe couldn't be assigned\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n }\n this.fireEvent(\"reloadModel\");\n }\n },\n\n __addNode: function(node) {\n const nodeId = node.getNodeId();\n this.__nodes[nodeId] = node;\n this.fireEvent(\"pipelineChanged\");\n },\n\n removeNode: async function(nodeId) {\n if (!osparc.data.Permissions.getInstance().canDo(\"study.node.delete\", true)) {\n return false;\n }\n if (this.getStudy().isPipelineRunning()) {\n osparc.FlashMessenger.getInstance().logAs(this.self().CANT_DELETE_NODE, \"ERROR\");\n return false;\n }\n\n let node = this.getNode(nodeId);\n if (node) {\n this.fireEvent(\"restartAutoSaveTimer\");\n // remove the node in the backend first\n const removed = await node.removeNode();\n if (removed) {\n this.fireEvent(\"restartAutoSaveTimer\");\n\n delete this.__nodes[nodeId];\n\n // remove first the connected edges\n const connectedEdges = this.getConnectedEdges(nodeId);\n connectedEdges.forEach(connectedEdgeId => {\n this.removeEdge(connectedEdgeId);\n });\n\n // remove it from ui model\n if (this.getStudy()) {\n this.getStudy().getUi().removeNode(nodeId);\n }\n\n this.fireEvent(\"pipelineChanged\");\n return true;\n }\n }\n return false;\n },\n\n addServiceBetween: async function(service, leftNodeId, rightNodeId) {\n // create node\n const node = await this.createNode(service.getKey(), service.getVersion());\n if (node === null) {\n return null;\n }\n if (leftNodeId) {\n const leftNode = this.getNode(leftNodeId);\n node.setPosition(this.getFreePosition(leftNode, false));\n } else if (rightNodeId) {\n const rightNode = this.getNode(rightNodeId);\n node.setPosition(this.getFreePosition(rightNode, true));\n } else {\n node.setPosition({\n x: 20,\n y: 20\n });\n }\n\n // break previous connection\n if (leftNodeId && rightNodeId) {\n const edge = this.getEdge(null, leftNodeId, rightNodeId);\n if (edge) {\n this.removeEdge(edge.getEdgeId());\n }\n }\n\n // create connections\n if (leftNodeId) {\n this.createEdge(null, leftNodeId, node.getNodeId(), true);\n }\n if (rightNodeId) {\n this.createEdge(null, node.getNodeId(), rightNodeId, true);\n }\n this.fireEvent(\"reloadModel\");\n\n return node;\n },\n\n removeEdge: function(edgeId) {\n if (!osparc.data.Permissions.getInstance().canDo(\"study.edge.delete\", true)) {\n return false;\n }\n\n const edge = this.getEdge(edgeId);\n if (edge) {\n const rightNodeId = edge.getOutputNodeId();\n const leftNodeId = edge.getInputNodeId();\n\n const rightNode = this.getNode(rightNodeId);\n if (rightNode) {\n // no need to make any changes to a just removed node (it would trigger a patch call)\n rightNode.removeInputNode(leftNodeId);\n rightNode.removeNodePortConnections(leftNodeId);\n }\n\n delete this.__edges[edgeId];\n\n // update the port decorations (remove dot if there are no more connections)\n const edges = Object.values(this.__edges);\n if (edges.findIndex(edg => edg.getInputNodeId() === leftNodeId) === -1) {\n const leftNode = this.getNode(leftNodeId);\n if (leftNode) {\n leftNode.setOutputConnected(false);\n }\n }\n if (edges.findIndex(edg => edg.getOutputNodeId() === rightNodeId) === -1) {\n if (rightNode) {\n rightNode.setInputConnected(false);\n }\n }\n\n return true;\n }\n return false;\n },\n\n giveUniqueNameToNode: function(node, label, suffix = 2) {\n const newLabel = label + \"_\" + suffix;\n const allModels = this.getNodes();\n const nodes = Object.values(allModels);\n for (const node2 of nodes) {\n if (node2.getNodeId() !== node.getNodeId() &&\n node2.getLabel().localeCompare(node.getLabel()) === 0) {\n node.setLabel(newLabel);\n this.giveUniqueNameToNode(node, label, suffix+1);\n }\n }\n },\n\n __populateNodesData: function(workbenchData, workbenchUIData) {\n Object.entries(workbenchData).forEach(([nodeId, nodeData]) => {\n this.getNode(nodeId).populateNodeData(nodeData);\n\n if (\"position\" in nodeData) {\n // old way for storing the position\n this.getNode(nodeId).populateNodeUIData(nodeData);\n }\n if (workbenchUIData && \"workbench\" in workbenchUIData && nodeId in workbenchUIData.workbench) {\n this.getNode(nodeId).populateNodeUIData(workbenchUIData.workbench[nodeId]);\n }\n });\n },\n\n __deserialize: function(workbenchInitData, workbenchUIInitData) {\n this.__deserializeNodes(workbenchInitData, workbenchUIInitData)\n .then(() => {\n this.__deserializeEdges(workbenchInitData);\n workbenchInitData = null;\n workbenchUIInitData = null;\n this.setDeserialized(true);\n });\n },\n\n __deserializeNodes: function(workbenchData, workbenchUIData = {}) {\n const nodeIds = Object.keys(workbenchData);\n\n const metadataPromises = [];\n nodeIds.forEach(nodeId => {\n const nodeData = workbenchData[nodeId];\n metadataPromises.push(osparc.store.Services.getService(nodeData.key, nodeData.version));\n });\n\n return Promise.all(metadataPromises)\n .then(values => {\n // Create first all the nodes\n for (let i=0; i {\n const node = this.getNode(nodeId);\n this.giveUniqueNameToNode(node, node.getLabel());\n });\n });\n },\n\n __deserializeEdges: function(workbenchData) {\n for (const nodeId in workbenchData) {\n const nodeData = workbenchData[nodeId];\n const node = this.getNode(nodeId);\n if (node === null) {\n continue;\n }\n this.__addInputOutputNodesAndEdges(node, nodeData.inputNodes);\n }\n },\n\n __addInputOutputNodesAndEdges: function(node, inputOutputNodeIds) {\n if (inputOutputNodeIds) {\n inputOutputNodeIds.forEach(inputOutputNodeId => {\n const node1 = this.getNode(inputOutputNodeId);\n if (node1 === null) {\n return;\n }\n const edge = new osparc.data.model.Edge(null, node1, node);\n this.addEdge(edge);\n node.addInputNode(inputOutputNodeId);\n });\n }\n },\n\n serialize: function(clean = true) {\n if (this.__workbenchInitData !== null) {\n // workbench is not initialized\n return this.__workbenchInitData;\n }\n let workbench = {};\n const allModels = this.getNodes();\n const nodes = Object.values(allModels);\n for (const node of nodes) {\n const data = node.serialize(clean);\n if (data) {\n workbench[node.getNodeId()] = data;\n }\n }\n return workbench;\n },\n\n serializeUI: function() {\n if (this.__workbenchUIInitData !== null) {\n // workbenchUI is not initialized\n return this.__workbenchUIInitData;\n }\n let workbenchUI = {};\n const nodes = this.getNodes();\n for (const nodeId in nodes) {\n const node = nodes[nodeId];\n workbenchUI[nodeId] = {};\n workbenchUI[nodeId][\"position\"] = node.getPosition();\n const marker = node.getMarker();\n if (marker) {\n workbenchUI[nodeId][\"marker\"] = {\n color: marker.getColor()\n };\n }\n }\n return workbenchUI;\n },\n\n /**\n * Call patch Node, but the changes were already applied on the frontend\n * @param workbenchDiffs {Object} Diff Object coming from the JsonDiffPatch lib. Use only the keys, not the changes.\n */\n patchWorkbenchDelayed: function(workbenchDiffs) {\n const promises = [];\n Object.keys(workbenchDiffs).forEach(nodeId => {\n const node = this.getNode(nodeId);\n if (node === null) {\n // the node was removed\n return;\n }\n\n const nodeData = node.serialize();\n let patchData = {};\n if (workbenchDiffs[nodeId] instanceof Array) {\n // if workbenchDiffs is an array means that the node was either added or removed\n // the node was added\n patchData = nodeData;\n } else {\n // patch only what was changed\n Object.keys(workbenchDiffs[nodeId]).forEach(changedFieldKey => {\n if (nodeData[changedFieldKey] !== undefined) {\n // do not patch if it's undefined\n patchData[changedFieldKey] = nodeData[changedFieldKey];\n }\n });\n }\n const params = {\n url: {\n \"studyId\": this.getStudy().getUuid(),\n \"nodeId\": nodeId\n },\n data: patchData\n };\n if (Object.keys(patchData).length) {\n promises.push(osparc.data.Resources.fetch(\"studies\", \"patchNode\", params));\n }\n })\n return Promise.all(promises);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n *\n */\n\nqx.Class.define(\"osparc.data.model.StudyUI\", {\n extend: qx.core.Object,\n\n /**\n * @param studyDataUI {Object} Object containing the serialized Study UI Data\n */\n construct: function(studyDataUI) {\n this.base(arguments);\n\n this.set({\n workbench: studyDataUI && studyDataUI.workbench ? studyDataUI.workbench : this.getWorkbench(),\n slideshow: new osparc.data.model.Slideshow(studyDataUI && studyDataUI.slideshow ? studyDataUI.slideshow : this.getSlideshow()),\n currentNodeId: studyDataUI && studyDataUI.currentNodeId ? studyDataUI.currentNodeId : this.initCurrentNodeId(),\n mode: studyDataUI && studyDataUI.mode ? studyDataUI.mode : this.initMode(),\n annotations: {}\n });\n\n if (\"annotations\" in studyDataUI) {\n this.__annotationsInitData = studyDataUI[\"annotations\"];\n }\n },\n\n properties: {\n // stores position and/or marker\n workbench: {\n check: \"Object\",\n init: {},\n nullable: true\n },\n\n slideshow: {\n check: \"osparc.data.model.Slideshow\",\n init: {},\n nullable: true\n },\n\n currentNodeId: {\n check: \"String\",\n init: null,\n nullable: true,\n event: \"changeCurrentNodeId\"\n },\n\n mode: {\n check: [\"workbench\", \"guided\", \"app\", \"standalone\"], // \"guided\" is no longer used\n init: \"workbench\",\n nullable: true,\n event: \"changeMode\",\n apply: \"__applyMode\"\n },\n\n annotations: {\n check: \"Object\",\n init: {},\n nullable: true\n }\n },\n\n members: {\n __annotationsInitData: null,\n\n __applyMode: function(mode) {\n if (mode === \"guided\") {\n this.setMode(\"app\");\n }\n },\n\n getAnnotationsInitData: function() {\n return this.__annotationsInitData;\n },\n\n nullAnnotationsInitData: function() {\n this.__annotationsInitData = null;\n },\n\n addAnnotation: function(annotation) {\n this.getAnnotations()[annotation.getId()] = annotation;\n },\n\n removeAnnotation: function(annotationId) {\n if (annotationId in this.getAnnotations()) {\n delete this.getAnnotations()[annotationId];\n }\n },\n\n removeNode: function(nodeId) {\n // remove it from slideshow\n this.getSlideshow().removeNode(nodeId);\n },\n\n serialize: function() {\n const currentStudy = osparc.store.Store.getInstance().getCurrentStudy();\n let jsonObject = {};\n jsonObject[\"workbench\"] = currentStudy ? currentStudy.getWorkbench().serializeUI() : this.getWorkbench();\n jsonObject[\"slideshow\"] = this.getSlideshow().serialize();\n jsonObject[\"currentNodeId\"] = this.getCurrentNodeId() || \"\";\n jsonObject[\"mode\"] = this.getMode();\n const annotations = this.getAnnotations();\n if (Object.keys(annotations).length) {\n jsonObject[\"annotations\"] = {};\n Object.keys(annotations).forEach(annotationId => {\n jsonObject[\"annotations\"][annotationId] = annotations[annotationId].serialize();\n });\n }\n return jsonObject;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Class that stores Node data.\n *\n * For the given version-key, this class will take care of pulling the metadata, store it and\n * fill in all the information.\n *\n * -> {EDGES}\n * STUDY -> METADATA + WORKBENCH ->|\n * -> {LINKS}\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let node = new osparc.data.model.Node(key, version, uuid);\n * node.populateNodeData(nodeData);\n *
\n */\n\nqx.Class.define(\"osparc.data.model.Node\", {\n extend: qx.core.Object,\n include: qx.locale.MTranslation,\n\n /**\n * @param study {osparc.data.model.Study} Study or Serialized Study Object\n * @param metadata {Object} service's metadata\n * @param nodeId {String} uuid of the service represented by the node (not needed for new Nodes)\n */\n construct: function(study, metadata, nodeId) {\n this.base(arguments);\n\n this.__metaData = metadata;\n this.setOutputs({});\n this.__inputNodes = [];\n this.__inputsRequired = [];\n\n if (study) {\n this.setStudy(study);\n }\n this.set({\n nodeId: nodeId || osparc.utils.Utils.uuidV4(),\n key: metadata[\"key\"],\n version: metadata[\"version\"],\n status: new osparc.data.model.NodeStatus(this)\n });\n\n this.populateWithMetadata();\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n init: null,\n nullable: false,\n event: \"changeStudy\"\n },\n\n key: {\n check: \"String\",\n nullable: true,\n apply: \"__applyNewMetaData\"\n },\n\n version: {\n check: \"String\",\n nullable: true,\n event: \"changeVersion\",\n apply: \"__applyNewMetaData\"\n },\n\n nodeId: {\n check: \"String\",\n nullable: false\n },\n\n label: {\n check: \"String\",\n init: \"Node\",\n nullable: true,\n event: \"changeLabel\"\n },\n\n inputAccess: {\n check: \"Object\",\n nullable: true\n },\n\n dynamicV2: {\n check: \"Boolean\",\n init: false,\n nullable: true\n },\n\n serviceUrl: {\n check: \"String\",\n nullable: true,\n event: \"changeServiceUrl\"\n },\n\n portsConnected: {\n check: \"Array\",\n init: [],\n event: \"changePortsConnected\"\n },\n\n inputs: {\n check: \"Object\",\n // nullable: false,\n event: \"changeInputs\"\n },\n\n outputs: {\n check: \"Object\",\n nullable: false,\n event: \"changeOutputs\",\n apply: \"__applyOutputs\",\n },\n\n status: {\n check: \"osparc.data.model.NodeStatus\",\n nullable: false\n },\n\n errors: {\n check: \"Array\",\n init: [],\n nullable: true,\n event: \"changeErrors\",\n apply: \"__applyErrors\"\n },\n\n bootOptions: {\n check: \"Object\",\n init: null,\n nullable: true\n },\n\n // GUI elements //\n propsForm: {\n check: \"osparc.form.renderer.PropForm\",\n init: null,\n nullable: true,\n apply: \"__applyPropsForm\"\n },\n\n outputsForm: {\n check: \"osparc.widget.NodeOutputs\",\n init: null,\n nullable: true\n },\n\n marker: {\n check: \"qx.core.Object\",\n init: null,\n nullable: true,\n event: \"changeMarker\"\n },\n\n inputConnected: {\n check: \"Boolean\",\n init: false,\n nullable: true,\n event: \"changeInputConnected\"\n },\n\n outputConnected: {\n check: \"Boolean\",\n init: false,\n nullable: true,\n event: \"changeOutputConnected\"\n },\n\n logger: {\n check: \"osparc.widget.logger.LoggerView\",\n init: null,\n nullable: true\n }\n // GUI elements //\n },\n\n events: {\n \"updateStudyDocument\": \"qx.event.type.Event\",\n \"reloadModel\": \"qx.event.type.Event\",\n \"retrieveInputs\": \"qx.event.type.Data\",\n \"keyChanged\": \"qx.event.type.Event\",\n \"fileRequested\": \"qx.event.type.Data\",\n \"parameterRequested\": \"qx.event.type.Data\",\n \"filePickerRequested\": \"qx.event.type.Data\",\n \"probeRequested\": \"qx.event.type.Data\",\n \"fileUploaded\": \"qx.event.type.Event\",\n \"showInLogger\": \"qx.event.type.Data\",\n \"outputListChanged\": \"qx.event.type.Event\",\n \"changeInputNodes\": \"qx.event.type.Event\",\n \"changeInputsRequired\": \"qx.event.type.Event\"\n },\n\n statics: {\n isFrontend: function(metadata) {\n return (metadata && metadata.key && metadata.key.includes(\"/frontend/\"));\n },\n\n isFilePicker: function(metadata) {\n return (metadata && metadata.key && metadata.key.includes(\"file-picker\"));\n },\n\n isParameter: function(metadata) {\n return (metadata && metadata.key && metadata.key.includes(\"/parameter/\"));\n },\n\n isIterator: function(metadata) {\n return (metadata && metadata.key && metadata.key.includes(\"/data-iterator/\"));\n },\n\n isProbe: function(metadata) {\n return (metadata && metadata.key && metadata.key.includes(\"/iterator-consumer/\"));\n },\n\n isDynamic: function(metadata) {\n return (metadata && metadata.type && metadata.type === \"dynamic\");\n },\n\n isComputational: function(metadata) {\n return (metadata && metadata.type && metadata.type === \"computational\");\n },\n\n isUpdatable: function(metadata) {\n return osparc.service.Utils.isUpdatable(metadata);\n },\n\n isDeprecated: function(metadata) {\n return osparc.service.Utils.isDeprecated(metadata);\n },\n\n isRetired: function(metadata) {\n return osparc.service.Utils.isRetired(metadata);\n },\n\n hasBootModes: function(metadata) {\n if (metadata[\"bootOptions\"] && \"boot_mode\" in metadata[\"bootOptions\"] && \"items\" in metadata[\"bootOptions\"][\"boot_mode\"]) {\n return Object.keys(metadata[\"bootOptions\"][\"boot_mode\"][\"items\"]).length;\n }\n return false;\n },\n\n populateBootModes: function(bootModeSB, nodeMetadata, workbench, nodeId) {\n if (!osparc.data.model.Node.hasBootModes(nodeMetadata)) {\n return;\n }\n\n const bootModesMD = nodeMetadata[\"bootOptions\"][\"boot_mode\"];\n const sbItems = [];\n bootModeSB.removeAll();\n Object.entries(bootModesMD[\"items\"]).forEach(([bootModeId, bootModeMD]) => {\n const sbItem = new qx.ui.form.ListItem(bootModeMD[\"label\"]);\n sbItem.bootModeId = bootModeId;\n bootModeSB.add(sbItem);\n sbItems.push(sbItem);\n });\n let defaultBMId = null;\n if (workbench && nodeId && \"bootOptions\" in workbench[nodeId] && \"boot_mode\" in workbench[nodeId][\"bootOptions\"]) {\n defaultBMId = workbench[nodeId][\"bootOptions\"][\"boot_mode\"];\n } else {\n defaultBMId = bootModesMD[\"default\"];\n }\n sbItems.forEach(sbItem => {\n if (defaultBMId === sbItem.bootModeId) {\n bootModeSB.setSelection([sbItem]);\n }\n });\n },\n\n getBootModesSelectBox: function(nodeMetadata, workbench, nodeId) {\n if (!osparc.data.model.Node.hasBootModes(nodeMetadata)) {\n return null;\n }\n\n const bootModeSB = new qx.ui.form.SelectBox();\n this.populateBootModes(bootModeSB, nodeMetadata, workbench, nodeId);\n return bootModeSB;\n },\n\n getMinVisibleInputs: function(metadata) {\n return (\"minVisibleInputs\" in metadata) ? metadata[\"minVisibleInputs\"] : null;\n },\n\n getOutput: function(outputs, outputKey) {\n if (outputKey in outputs && \"value\" in outputs[outputKey]) {\n return outputs[outputKey][\"value\"];\n }\n return null;\n },\n\n getLinkedNodeIds: function(nodeData) {\n const linkedNodeIds = new Set([]);\n if (\"inputs\" in nodeData) {\n Object.values(nodeData[\"inputs\"]).forEach(link => {\n if (link && typeof link === \"object\" && \"nodeUuid\" in link) {\n linkedNodeIds.add(link[\"nodeUuid\"]);\n }\n });\n }\n return Array.from(linkedNodeIds);\n },\n },\n\n members: {\n __metaData: null,\n __inputNodes: null,\n __inputsRequired: null,\n __settingsForm: null,\n __posX: null,\n __posY: null,\n __iframeHandler: null,\n\n getWorkbench: function() {\n return this.getStudy().getWorkbench();\n },\n\n getSlideshowInstructions: function() {\n const slideshow = this.getStudy().getUi().getSlideshow();\n return slideshow.getInstructions(this.getNodeId());\n },\n\n isInKey: function(str) {\n if (this.getMetaData() === null) {\n return false;\n }\n if (this.getKey() === null) {\n return false;\n }\n return this.getKey().includes(str);\n },\n\n isFilePicker: function() {\n return osparc.data.model.Node.isFilePicker(this.getMetaData());\n },\n\n isParameter: function() {\n return osparc.data.model.Node.isParameter(this.getMetaData());\n },\n\n isIterator: function() {\n return osparc.data.model.Node.isIterator(this.getMetaData());\n },\n\n isProbe: function() {\n return osparc.data.model.Node.isProbe(this.getMetaData());\n },\n\n isDynamic: function() {\n return osparc.data.model.Node.isDynamic(this.getMetaData());\n },\n\n isComputational: function() {\n return osparc.data.model.Node.isComputational(this.getMetaData());\n },\n\n isUpdatable: function() {\n return osparc.data.model.Node.isUpdatable(this.getMetaData());\n },\n\n isDeprecated: function() {\n return osparc.data.model.Node.isDeprecated(this.getMetaData());\n },\n\n isRetired: function() {\n return osparc.data.model.Node.isRetired(this.getMetaData());\n },\n\n hasBootModes: function() {\n return osparc.data.model.Node.hasBootModes(this.getMetaData());\n },\n\n getMinVisibleInputs: function() {\n return osparc.data.model.Node.getMinVisibleInputs(this.getMetaData());\n },\n\n __applyNewMetaData: function(newV, oldV) {\n if (oldV !== null) {\n const metadata = osparc.store.Services.getMetadata(this.getKey(), this.getVersion());\n if (metadata) {\n this.__metaData = metadata;\n }\n }\n },\n\n getMetaData: function() {\n return this.__metaData;\n },\n\n __getInputData: function() {\n if (this.isPropertyInitialized(\"propsForm\") && this.getPropsForm()) {\n return this.getPropsForm().getValues();\n }\n return {};\n },\n\n __getInputUnits: function() {\n if (this.isPropertyInitialized(\"propsForm\") && this.getPropsForm()) {\n const changedUnits = this.getPropsForm().getChangedXUnits();\n if (Object.keys(changedUnits).length) {\n return changedUnits;\n }\n }\n return null;\n },\n\n getInput: function(inputId) {\n return this.getInputs()[inputId];\n },\n\n getOutput: function(outputId) {\n return this.getOutputs()[outputId];\n },\n\n getFirstOutput: function() {\n const outputs = this.getOutputs();\n if (Object.keys(outputs).length) {\n return outputs[Object.keys(outputs)[0]];\n }\n return null;\n },\n\n hasInputs: function() {\n return Object.keys(this.getInputs()).length;\n },\n\n hasOutputs: function() {\n return Object.keys(this.getOutputs()).length;\n },\n\n populateWithMetadata: function() {\n const metadata = this.__metaData;\n if (metadata) {\n if (metadata.name) {\n this.setLabel(metadata.name);\n }\n if (metadata.inputs) {\n this.setInputs(metadata.inputs);\n if (Object.keys(metadata.inputs).length) {\n this.__addSettings(metadata.inputs);\n }\n if (this.getPropsForm()) {\n this.getPropsForm().makeInputsDynamic();\n }\n }\n if (metadata.outputs) {\n this.setOutputs(metadata.outputs);\n }\n }\n },\n\n populateNodeData: function(nodeData) {\n if (nodeData) {\n if (nodeData.label) {\n this.setLabel(nodeData.label);\n }\n this.populateInputOutputData(nodeData);\n this.populateStates(nodeData);\n if (nodeData.bootOptions) {\n this.setBootOptions(nodeData.bootOptions);\n }\n }\n\n this.__initLogger();\n\n this.initIframeHandler();\n\n if (this.isParameter()) {\n this.__initParameter();\n }\n },\n\n populateNodeUIData: function(nodeUIData) {\n if (\"position\" in nodeUIData) {\n this.setPosition(nodeUIData.position);\n }\n if (\"marker\" in nodeUIData) {\n this.__addMarker(nodeUIData.marker);\n }\n },\n\n populateInputOutputData: function(nodeData) {\n this.__setInputData(nodeData.inputs);\n this.__setInputUnits(nodeData.inputsUnits);\n this.__setInputDataAccess(nodeData.inputAccess);\n if (this.getPropsForm()) {\n this.getPropsForm().makeInputsDynamic();\n }\n this.setOutputData(nodeData.outputs);\n this.addInputNodes(nodeData.inputNodes);\n // backwards compatible\n this.setInputsRequired(nodeData.inputsRequired || []);\n },\n\n populateStates: function(nodeData) {\n if (\"progress\" in nodeData) {\n const progress = Number.parseInt(nodeData[\"progress\"]);\n const oldProgress = this.getStatus().getProgress();\n if (this.isFilePicker() && oldProgress > 0 && oldProgress < 100) {\n // file is being uploaded\n this.getStatus().setProgress(oldProgress);\n } else {\n this.getStatus().setProgress(progress);\n }\n }\n if (\"state\" in nodeData) {\n this.getStatus().setState(nodeData.state);\n }\n },\n\n initIframeHandler: function() {\n if (this.isDynamic()) {\n this.__iframeHandler = new osparc.data.model.IframeHandler(this.getStudy(), this);\n }\n },\n\n getIframeHandler: function() {\n return this.__iframeHandler;\n },\n\n getIFrame: function() {\n return this.getIframeHandler() ? this.getIframeHandler().getIFrame() : null;\n },\n\n setIFrame: function(iframe) {\n return this.getIframeHandler() ? this.getIframeHandler().setIFrame(iframe) : null;\n },\n\n getLoadingPage: function() {\n return this.getIframeHandler() ? this.getIframeHandler().getLoadingPage() : null;\n },\n\n __applyPropsForm: function(propsForm) {\n osparc.utils.Utils.setIdToWidget(propsForm, \"settingsForm_\" + this.getNodeId());\n\n const checkIsPipelineRunning = () => {\n const isPipelineRunning = this.getStudy().isPipelineRunning();\n this.getPropsForm().setEnabled(!isPipelineRunning);\n };\n this.getStudy().addListener(\"changeState\", () => checkIsPipelineRunning(), this);\n\n // potentially disabling the inputs form might have side effects if the deserialization is not over\n if (this.getWorkbench().isDeserialized()) {\n checkIsPipelineRunning();\n } else {\n this.getWorkbench().addListener(\"changeDeserialized\", e => {\n if (e.getData()) {\n checkIsPipelineRunning();\n }\n }, this);\n }\n },\n\n /**\n * Add settings widget with those inputs that can be represented in a form\n */\n __addSettings: function(inputs) {\n const form = this.__settingsForm = new osparc.form.Auto(inputs);\n const propsForm = new osparc.form.renderer.PropForm(form, this, this.getStudy());\n this.setPropsForm(propsForm);\n propsForm.addListener(\"linkFieldModified\", e => {\n const linkFieldModified = e.getData();\n const portId = linkFieldModified.portId;\n\n const oldPortsConnected = this.getPortsConnected();\n const portConnected = oldPortsConnected.find(connection => Object.keys(connection)[0] === portId);\n if (linkFieldModified.added && !(portConnected)) {\n const newConnection = {};\n newConnection[portId] = linkFieldModified.fromNodeId;\n const portsConnected = [];\n oldPortsConnected.forEach(oldPortConnected => portsConnected.push(oldPortConnected));\n portsConnected.push(newConnection);\n this.setPortsConnected(portsConnected);\n }\n if (!linkFieldModified.added && portConnected) {\n const idx = oldPortsConnected.indexOf(portConnected);\n if (idx > -1) {\n oldPortsConnected.splice(idx, 1);\n }\n const portsConnected = [];\n oldPortsConnected.forEach(oldPortConnected => portsConnected.push(oldPortConnected));\n this.setPortsConnected(portsConnected);\n }\n\n this.callRetrieveInputs(portId);\n }, this);\n\n [\n \"fileRequested\",\n \"parameterRequested\"\n ].forEach(nodeRequestSignal => {\n propsForm.addListener(nodeRequestSignal, e => {\n const portId = e.getData();\n this.fireDataEvent(nodeRequestSignal, {\n portId,\n nodeId: this.getNodeId()\n });\n }, this);\n });\n\n propsForm.addListener(\"filePickerRequested\", e => {\n const data = e.getData();\n this.fireDataEvent(\"filePickerRequested\", {\n portId: data.portId,\n nodeId: this.getNodeId(),\n file: data.file\n });\n }, this);\n },\n\n __applyOutputs: function() {\n if (!this.isPropertyInitialized(\"outputsForm\") || !this.getOutputsForm()) {\n const nodeOutputs = new osparc.widget.NodeOutputs(this);\n this.setOutputsForm(nodeOutputs);\n }\n },\n\n removeNodePortConnections: function(inputNodeId) {\n let inputs = this.__getInputData();\n for (const portId in inputs) {\n if (inputs[portId] && Object.prototype.hasOwnProperty.call(inputs[portId], \"nodeUuid\")) {\n if (inputs[portId][\"nodeUuid\"] === inputNodeId) {\n this.getPropsForm().removePortLink(portId);\n }\n }\n }\n },\n\n toggleMarker: function() {\n if (this.getMarker()) {\n this.__removeMarker();\n } else {\n this.__addMarker();\n }\n },\n\n __addMarker: function(marker) {\n if (marker === undefined) {\n marker = {\n color: osparc.utils.Utils.getRandomColor()\n };\n }\n const markerModel = qx.data.marshal.Json.createModel(marker, true);\n this.setMarker(markerModel);\n },\n\n __removeMarker: function() {\n this.setMarker(null);\n },\n\n __setInputData: function(inputs) {\n if (this.__settingsForm && inputs) {\n const inputData = {};\n const inputLinks = {};\n const inputsCopy = osparc.utils.Utils.deepCloneObject(inputs);\n for (let key in inputsCopy) {\n if (osparc.utils.Ports.isDataALink(inputsCopy[key])) {\n inputLinks[key] = inputsCopy[key];\n } else {\n inputData[key] = inputsCopy[key];\n }\n }\n this.getPropsForm().setInputLinks(inputLinks);\n this.__settingsForm.setData(inputData);\n }\n },\n\n __setInputUnits: function(inputsUnits) {\n if (this.__settingsForm && inputsUnits) {\n this.getPropsForm().setInputsUnits(inputsUnits);\n }\n },\n\n __setInputDataAccess: function(inputAccess) {\n if (inputAccess) {\n this.setInputAccess(inputAccess);\n this.getPropsForm().setAccessLevel(inputAccess);\n }\n\n const study = this.getStudy();\n if (study && study.isReadOnly() && this.getPropsForm()) {\n this.getPropsForm().setEnabled(false);\n }\n },\n\n setOutputData: function(outputs) {\n if (outputs) {\n let hasOutputs = false;\n Object.keys(this.getOutputs()).forEach(outputKey => {\n if (outputKey in outputs) {\n this.setOutputs({\n ...this.getOutputs(),\n [outputKey]: {\n ...this.getOutputs()[outputKey],\n value: outputs[outputKey]\n }\n });\n hasOutputs = true;\n } else {\n this.setOutputs({\n ...this.getOutputs(),\n [outputKey]: {\n ...this.getOutputs()[outputKey],\n value: \"\"\n }\n });\n }\n })\n this.getStatus().setHasOutputs(hasOutputs);\n\n if (hasOutputs && (this.isFilePicker() || this.isParameter() || this.isDynamic())) {\n this.getStatus().setModified(false);\n }\n\n this.fireDataEvent(\"changeOutputs\", this.getOutputs());\n }\n },\n\n __getOutputData: function(outputKey) {\n const outputs = this.getOutputs();\n if (outputKey in outputs && \"value\" in outputs[outputKey]) {\n return outputs[outputKey][\"value\"];\n }\n return null;\n },\n\n __getOutputsData: function() {\n const outputsData = {};\n Object.keys(this.getOutputs()).forEach(outKey => {\n const outData = this.__getOutputData(outKey);\n if (outData !== null) {\n outputsData[outKey] = outData;\n }\n });\n return outputsData;\n },\n\n requestFileUploadAbort: function() {\n if (this.isFilePicker()) {\n this[\"fileUploadAbortRequested\"] = true;\n }\n },\n\n __applyErrors: function(errors) {\n if (errors && errors.length) {\n errors.forEach(error => {\n const loc = error[\"loc\"];\n if (loc.length < 2) {\n return;\n }\n if (loc[1] === this.getNodeId()) {\n const errorMsgData = {\n nodeId: this.getNodeId(),\n msg: error[\"msg\"],\n level: \"ERROR\"\n };\n\n // errors to port\n if (loc.length > 2) {\n const portKey = loc[2];\n if (this.hasInputs() && portKey in this.getMetaData()[\"inputs\"]) {\n errorMsgData[\"msg\"] = this.getMetaData()[\"inputs\"][portKey][\"label\"] + \": \" + errorMsgData[\"msg\"];\n } else {\n errorMsgData[\"msg\"] = portKey + \": \" + errorMsgData[\"msg\"];\n }\n this.getPropsForm().setPortErrorMessage(portKey, errorMsgData[\"msg\"]);\n }\n\n // errors to logger\n this.fireDataEvent(\"showInLogger\", errorMsgData);\n }\n });\n } else if (this.hasInputs()) {\n // reset port errors\n Object.keys(this.getMetaData()[\"inputs\"]).forEach(portKey => {\n this.getPropsForm().setPortErrorMessage(portKey, null);\n });\n }\n },\n\n // Iterate over output ports and connect them to first compatible input port\n createAutoPortConnection: async function(node1, node2) {\n const preferencesSettings = osparc.Preferences.getInstance();\n if (!preferencesSettings.getAutoConnectPorts()) {\n return;\n }\n\n // create automatic port connections\n let autoConnections = 0;\n const outPorts = node1.getOutputs();\n const inPorts = node2.getInputs();\n for (const outPort in outPorts) {\n for (const inPort in inPorts) {\n if (await node2.addPortLink(inPort, node1.getNodeId(), outPort)) {\n autoConnections++;\n break;\n }\n }\n }\n if (autoConnections) {\n const flashMessenger = osparc.FlashMessenger.getInstance();\n flashMessenger.logAs(autoConnections + this.tr(\" ports auto connected\"), \"INFO\");\n }\n },\n\n addPortLink: function(toPortId, fromNodeId, fromPortId) {\n return new Promise(resolve => {\n const fromNode = this.getWorkbench().getNode(fromNodeId);\n osparc.utils.Ports.arePortsCompatible(fromNode, fromPortId, this, toPortId)\n .then(compatible => {\n if (compatible) {\n resolve(this.getPropsForm().addPortLink(toPortId, fromNodeId, fromPortId));\n } else {\n resolve(false);\n }\n });\n });\n },\n\n getLink: function(portId) {\n const link = this.getPropsForm() ? this.getPropsForm().getLink(portId) : null;\n return link;\n },\n\n getLinks: function() {\n const links = this.getPropsForm() ? this.getPropsForm().getLinks() : [];\n return links;\n },\n\n getPortIds: function() {\n const portIds = this.getPropsForm() ? this.getPropsForm().getPortIds() : [];\n return portIds;\n },\n\n // ----- Input Nodes -----\n getInputNodes: function() {\n return this.__inputNodes;\n },\n\n addInputNode: function(inputNodeId) {\n if (!this.__inputNodes.includes(inputNodeId)) {\n this.__inputNodes.push(inputNodeId);\n this.fireEvent(\"changeInputNodes\");\n return true;\n }\n return false;\n },\n\n addInputNodes: function(inputNodes) {\n if (inputNodes) {\n inputNodes.forEach(inputNode => {\n this.addInputNode(inputNode);\n });\n }\n },\n\n removeInputNode: function(inputNodeId) {\n const index = this.__inputNodes.indexOf(inputNodeId);\n if (index > -1) {\n // remove node connection\n this.__inputNodes.splice(index, 1);\n this.fireDataEvent(\"changeInputNodes\");\n return true;\n }\n return false;\n },\n\n isInputNode: function(inputNodeId) {\n const index = this.__inputNodes.indexOf(inputNodeId);\n return (index > -1);\n },\n // !---- Input Nodes -----\n\n // ----- Inputs Required -----\n getInputsRequired: function() {\n return this.__inputsRequired;\n },\n\n setInputsRequired: function(inputsRequired) {\n this.__inputsRequired = inputsRequired;\n this.fireEvent(\"changeInputsRequired\");\n },\n\n toggleInputRequired: function(portId) {\n const inputsRequired = this.getInputsRequired();\n const index = inputsRequired.indexOf(portId);\n if (index > -1) {\n inputsRequired.splice(index, 1);\n } else {\n inputsRequired.push(portId);\n }\n this.setInputsRequired(inputsRequired);\n },\n // !---- Inputs Required -----\n\n canNodeStart: function() {\n return this.isDynamic() && [\"idle\", \"failed\"].includes(this.getStatus().getInteractive());\n },\n\n requestStartNode: function() {\n if (!this.canNodeStart()) {\n return false;\n }\n const params = {\n url: {\n studyId: this.getStudy().getUuid(),\n nodeId: this.getNodeId()\n }\n };\n osparc.data.Resources.fetch(\"studies\", \"startNode\", params)\n .then(() => this.checkState())\n .catch(err => {\n if (\"status\" in err && (err.status === 409 || err.status === 402)) {\n osparc.FlashMessenger.getInstance().logAs(err.message, \"WARNING\");\n } else {\n console.error(err);\n }\n });\n return true;\n },\n\n requestStopNode: function(withConfirmationDialog=false) {\n const self = this;\n const stopService = () => {\n const params = {\n url: {\n studyId: self.getStudy().getUuid(),\n nodeId: self.getNodeId()\n }\n };\n osparc.data.Resources.fetch(\"studies\", \"stopNode\", params)\n .then(() => self.stopDynamicService())\n .catch(err => console.error(err));\n };\n\n if (withConfirmationDialog) {\n const preferencesSettings = osparc.Preferences.getInstance();\n if (preferencesSettings.getConfirmStopNode()) {\n const msg = this.tr(\"Do you really want Stop and Save the current state?\");\n const win = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Stop\"),\n confirmText: this.tr(\"Stop\")\n });\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n stopService();\n }\n }, this);\n }\n } else {\n stopService();\n }\n },\n\n renameNode: function(newLabel) {\n if (!osparc.data.Permissions.getInstance().canDo(\"study.node.rename\", true)) {\n return false;\n }\n this.setLabel(newLabel);\n return true;\n },\n\n __initLogger: function() {\n this.setLogger(new osparc.widget.logger.LoggerView());\n },\n\n __initParameter: function() {\n if (this.isParameter() && this.__getOutputData(\"out_1\") === null) {\n const type = osparc.node.ParameterEditor.getParameterOutputType(this);\n // set default values if none\n let val = null;\n switch (type) {\n case \"boolean\":\n val = true;\n break;\n case \"number\":\n case \"integer\":\n val = 1;\n break;\n case \"array\":\n val = \"[1]\";\n break;\n }\n if (val !== null) {\n osparc.node.ParameterEditor.setParameterOutputValue(this, val);\n }\n }\n },\n\n callRetrieveInputs: function(portKey) {\n const data = {\n node: this,\n portKey\n };\n if (this.isDynamic()) {\n this.fireDataEvent(\"retrieveInputs\", data);\n }\n },\n\n retrieveInputs: function(portKey) {\n if (this.isDynamic()) {\n if (!osparc.data.Permissions.getInstance().canDo(\"study.update\")) {\n return;\n }\n const srvUrl = this.getServiceUrl();\n if (srvUrl) {\n const urlRetrieve = this.isDynamicV2() ? osparc.utils.Utils.computeServiceV2RetrieveUrl(this.getStudy().getUuid(), this.getNodeId()) : osparc.utils.Utils.computeServiceRetrieveUrl(srvUrl);\n const updReq = new qx.io.request.Xhr();\n const reqData = {\n \"port_keys\": portKey ? [portKey] : []\n };\n updReq.setRequestHeader(\"Content-Type\", \"application/json\");\n updReq.set({\n url: urlRetrieve,\n method: \"POST\",\n requestData: qx.util.Serializer.toJson(reqData)\n });\n updReq.addListener(\"success\", e => {\n let resp = e.getTarget().getResponse();\n if (typeof resp === \"string\") {\n resp = JSON.parse(resp);\n }\n const {\n data\n } = resp;\n if (portKey) {\n const sizeBytes = (data && (\"size_bytes\" in data)) ? data[\"size_bytes\"] : 0;\n this.getPropsForm().retrievedPortData(portKey, true, sizeBytes);\n }\n }, this);\n [\n \"fail\",\n \"error\"\n ].forEach(failure => {\n updReq.addListener(failure, e => {\n const {\n error\n } = e.getTarget().getResponse();\n if (portKey) {\n this.getPropsForm().retrievedPortData(portKey, false);\n }\n console.error(failure, error);\n const errorMsgData = {\n nodeId: this.getNodeId(),\n msg: \"Failed retrieving inputs\",\n level: \"ERROR\"\n };\n this.fireDataEvent(\"showInLogger\", errorMsgData);\n }, this);\n });\n updReq.send();\n\n if (portKey) {\n this.getPropsForm().retrievingPortData(portKey);\n }\n }\n }\n },\n\n checkState: function() {\n if (this.isDynamic()) {\n const metadata = this.getMetaData();\n const msg = \"Starting \" + metadata.key + \":\" + metadata.version + \"...\";\n const msgData = {\n nodeId: this.getNodeId(),\n msg,\n level: \"INFO\"\n };\n this.fireDataEvent(\"showInLogger\", msgData);\n\n if (this.getIframeHandler()) {\n this.getIframeHandler().checkState();\n } else {\n console.error(this.getLabel() + \" iframe handler not ready\");\n }\n }\n },\n\n stopDynamicService: function() {\n if (this.isDynamic()) {\n const metadata = this.getMetaData();\n const msg = \"Stopping \" + metadata.key + \":\" + metadata.version + \"...\";\n const msgData = {\n nodeId: this.getNodeId(),\n msg,\n level: \"INFO\"\n };\n this.fireDataEvent(\"showInLogger\", msgData);\n\n this.getIframeHandler().stopIframe();\n }\n },\n\n setNodeProgressSequence: function(progressType, progressReport) {\n const nodeStatus = this.getStatus();\n if (nodeStatus.getProgressSequence()) {\n nodeStatus.getProgressSequence().addProgressMessage(progressType, progressReport);\n }\n // there might be some pending ``service_message`` still shown, remove it\n if (this.getIframeHandler()) {\n const loadingPage = this.getIframeHandler().getLoadingPage();\n loadingPage.clearMessages();\n }\n },\n\n attachHandlersToStartButton: function(startButton) {\n this.getStatus().bind(\"interactive\", startButton, \"visibility\", {\n converter: state => (state === \"ready\") ? \"excluded\" : \"visible\"\n });\n this.getStatus().bind(\"interactive\", startButton, \"enabled\", {\n converter: state => [\"idle\", \"failed\"].includes(state)\n });\n const executeListenerId = startButton.addListener(\"execute\", this.requestStartNode, this);\n startButton.executeListenerId = executeListenerId;\n },\n\n attachHandlersToStopButton: function(stopButton) {\n this.getStatus().bind(\"interactive\", stopButton, \"visibility\", {\n converter: state => (state === \"ready\") ? \"visible\" : \"excluded\"\n });\n this.getStatus().bind(\"interactive\", stopButton, \"enabled\", {\n converter: state => state === \"ready\"\n });\n const executeListenerId = stopButton.addListener(\"execute\", this.requestStopNode, this);\n stopButton.executeListenerId = executeListenerId;\n },\n\n removeNode: function() {\n return new Promise(resolve => {\n this.__deleteInBackend()\n .then(() => {\n resolve(true);\n this.removeIFrame();\n })\n .catch(err => {\n console.error(err);\n resolve(false);\n });\n });\n },\n\n __deleteInBackend: function() {\n // remove node in the backend\n const params = {\n url: {\n studyId: this.getStudy().getUuid(),\n nodeId: this.getNodeId()\n }\n };\n return osparc.data.Resources.fetch(\"studies\", \"deleteNode\", params);\n },\n\n stopRequestingStatus: function() {\n this.__stopRequestingStatus = true;\n },\n\n removeIFrame: function() {\n let iFrame = this.getIFrame();\n if (iFrame) {\n iFrame.destroy();\n this.setIFrame(null);\n }\n },\n\n setPosition: function(pos) {\n const {\n x,\n y\n } = pos;\n // keep positions positive\n this.__posX = parseInt(x) < 0 ? 0 : parseInt(x);\n this.__posY = parseInt(y) < 0 ? 0 : parseInt(y);\n },\n\n getPosition: function() {\n return {\n x: this.__posX || 0,\n y: this.__posY || 0\n };\n },\n\n // \"number\", \"boolean\", \"integer\"\n convertToParameter: function(type) {\n if (![\"int\"].includes(type)) {\n return;\n }\n const newMetadata = osparc.service.Utils.getParameterMetadata(\"integer\");\n if (newMetadata) {\n const value = this.__getInputData()[\"linspace_start\"];\n const label = this.getLabel();\n this.setKey(newMetadata[\"key\"]);\n this.populateWithMetadata();\n this.populateNodeData();\n this.setLabel(label);\n osparc.node.ParameterEditor.setParameterOutputValue(this, value);\n this.fireEvent(\"keyChanged\");\n }\n },\n\n convertToIterator: function(type) {\n if (![\"int\"].includes(type)) {\n return;\n }\n const metadata = osparc.service.Utils.getLatest(\"simcore/services/frontend/data-iterator/int-range\")\n if (metadata) {\n const value = this.__getOutputData(\"out_1\");\n const label = this.getLabel();\n this.setKey(metadata[\"key\"]);\n this.populateWithMetadata();\n this.populateNodeData();\n this.setLabel(label);\n this.__setInputData({\n \"linspace_start\": value,\n \"linspace_stop\": value,\n \"linspace_step\": 1\n });\n this.fireEvent(\"keyChanged\");\n }\n },\n\n serialize: function(clean = true) {\n // node generic\n let nodeEntry = {\n key: this.getKey(),\n version: this.getVersion(),\n label: this.getLabel(),\n inputs: this.__getInputData(),\n inputsUnits: this.__getInputUnits(),\n inputAccess: this.getInputAccess(),\n inputNodes: this.getInputNodes(),\n inputsRequired: this.getInputsRequired(),\n bootOptions: this.getBootOptions()\n };\n if (!clean) {\n nodeEntry.progress = this.getStatus().getProgress();\n nodeEntry.outputs = this.__getOutputsData();\n nodeEntry.state = this.getStatus().serialize();\n }\n\n if (this.isFilePicker()) {\n nodeEntry.outputs = osparc.file.FilePicker.serializeOutput(this.getOutputs());\n nodeEntry.progress = this.getStatus().getProgress();\n } else if (this.isParameter()) {\n nodeEntry.outputs = this.__getOutputsData();\n }\n\n // remove null entries from the payload\n let filteredNodeEntry = {};\n for (const key in nodeEntry) {\n if (nodeEntry[key] !== null) {\n filteredNodeEntry[key] = nodeEntry[key];\n }\n }\n\n return filteredNodeEntry;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.store.Folders\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n construct: function() {\n this.base(arguments);\n\n this.foldersCached = [];\n },\n\n events: {\n \"folderAdded\": \"qx.event.type.Data\",\n \"folderRemoved\": \"qx.event.type.Data\",\n },\n\n statics: {\n curateOrderBy: function(orderBy) {\n const curatedOrderBy = osparc.utils.Utils.deepCloneObject(orderBy);\n if (curatedOrderBy.field !== \"name\") {\n // only \"modified_at\" and \"name\" supported\n curatedOrderBy.field = \"modified_at\";\n }\n return curatedOrderBy;\n },\n },\n\n members: {\n foldersCached: null,\n\n fetchFolders: function(\n folderId = null,\n workspaceId = null,\n orderBy = {\n field: \"modified_at\",\n direction: \"desc\"\n },\n ) {\n if (osparc.auth.Data.getInstance().isGuest()) {\n return new Promise(resolve => {\n resolve([]);\n });\n }\n\n const curatedOrderBy = this.self().curateOrderBy(orderBy);\n const params = {\n url: {\n workspaceId,\n folderId,\n orderBy: JSON.stringify(curatedOrderBy),\n }\n };\n return osparc.data.Resources.getInstance().getAllPages(\"folders\", params)\n .then(foldersData => {\n const folders = [];\n foldersData.forEach(folderData => {\n const folder = this.__addToCache(folderData);\n folders.push(folder);\n });\n return folders;\n });\n },\n\n fetchAllTrashedFolders: function(orderBy = {\n field: \"modified_at\",\n direction: \"desc\"\n }) {\n if (osparc.auth.Data.getInstance().isGuest()) {\n return new Promise(resolve => {\n resolve([]);\n });\n }\n\n const curatedOrderBy = this.self().curateOrderBy(orderBy);\n const params = {\n url: {\n orderBy: JSON.stringify(curatedOrderBy),\n }\n };\n return osparc.data.Resources.getInstance().getAllPages(\"folders\", params, \"getPageTrashed\")\n .then(trashedFoldersData => {\n const folders = [];\n trashedFoldersData.forEach(folderData => {\n const folder = this.__addToCache(folderData);\n folders.push(folder);\n });\n return folders;\n });\n },\n\n searchFolders: function(\n text,\n orderBy = {\n field: \"modified_at\",\n direction: \"desc\"\n },\n ) {\n if (osparc.auth.Data.getInstance().isGuest()) {\n return new Promise(resolve => {\n resolve([]);\n });\n }\n\n const curatedOrderBy = this.self().curateOrderBy(orderBy);\n const params = {\n url: {\n text,\n orderBy: JSON.stringify(curatedOrderBy),\n }\n };\n return osparc.data.Resources.getInstance().getAllPages(\"folders\", params, \"getPageSearch\")\n .then(foldersData => {\n const folders = [];\n foldersData.forEach(folderData => {\n const folder = this.__addToCache(folderData);\n folders.push(folder);\n });\n return folders;\n });\n },\n\n postFolder: function(name, parentFolderId = null, workspaceId = null) {\n const newFolderData = {\n name,\n parentFolderId,\n workspaceId,\n };\n const params = {\n data: newFolderData\n };\n return osparc.data.Resources.getInstance().fetch(\"folders\", \"post\", params)\n .then(folderData => {\n const folder = this.__addToCache(folderData);\n this.fireDataEvent(\"folderAdded\", folder);\n return folder;\n });\n },\n\n trashFolder: function(folderId, workspaceId) {\n const params = {\n \"url\": {\n folderId\n }\n };\n return osparc.data.Resources.getInstance().fetch(\"folders\", \"trash\", params)\n .then(() => {\n const folder = this.getFolder(folderId);\n if (folder) {\n this.__deleteFromCache(folderId, workspaceId);\n this.fireDataEvent(\"folderRemoved\", folder);\n }\n })\n .catch(console.error);\n },\n\n untrashFolder: function(folder) {\n const params = {\n \"url\": {\n folderId: folder.getFolderId(),\n }\n };\n return osparc.data.Resources.getInstance().fetch(\"folders\", \"untrash\", params)\n .then(() => {\n this.foldersCached.unshift(folder);\n this.fireDataEvent(\"folderAdded\", folder);\n })\n .catch(console.error);\n },\n\n deleteFolder: function(folderId, workspaceId) {\n const params = {\n \"url\": {\n folderId\n }\n };\n return osparc.data.Resources.getInstance().fetch(\"folders\", \"delete\", params)\n .then(() => {\n const folder = this.getFolder(folderId);\n if (folder) {\n this.__deleteFromCache(folderId, workspaceId);\n this.fireDataEvent(\"folderRemoved\", folder);\n }\n })\n .catch(console.error);\n },\n\n putFolder: function(folderId, updateData) {\n const folder = this.getFolder(folderId);\n const oldParentFolderId = folder.getParentFolderId();\n const params = {\n \"url\": {\n folderId\n },\n data: updateData\n };\n return osparc.data.Resources.getInstance().fetch(\"folders\", \"update\", params)\n .then(folderData => {\n const folderMoved = updateData.parentFolderId !== oldParentFolderId;\n if (folderMoved) {\n this.fireDataEvent(\"folderRemoved\", folder);\n }\n this.__addToCache(folderData); // it will update the folder model\n if (folderMoved) {\n this.fireDataEvent(\"folderAdded\", folder);\n }\n })\n .catch(console.error);\n },\n\n moveFolderToFolder: function(folderId, destFolderId) {\n if (folderId === destFolderId) {\n // resolve right away\n return new Promise(resolve => resolve());\n }\n\n const folder = this.getFolder(folderId);\n const updatedData = {\n name: folder.getName(),\n parentFolderId: destFolderId,\n };\n return this.putFolder(folderId, updatedData)\n .then(() => folder.setParentFolderId(destFolderId))\n .catch(err => console.error(err));\n },\n\n moveFolderToWorkspace: function(folderId, destWorkspaceId) {\n const folder = this.getFolder(folderId);\n if (folder.getWorkspaceId() === destWorkspaceId) {\n // resolve right away\n return new Promise(resolve => resolve());\n }\n\n const params = {\n url: {\n folderId,\n workspaceId: destWorkspaceId,\n }\n };\n return osparc.data.Resources.fetch(\"folders\", \"moveToWorkspace\", params)\n .then(() => {\n this.fireDataEvent(\"folderRemoved\", folder);\n folder.setWorkspaceId(destWorkspaceId);\n this.fireDataEvent(\"folderAdded\", folder);\n })\n .catch(err => console.error(err));\n },\n\n getFolder: function(folderId = null) {\n return this.foldersCached.find(f => f.getFolderId() === folderId);\n },\n\n __addToCache: function(folderData) {\n let folder = this.foldersCached.find(f => f.getFolderId() === folderData[\"folderId\"] && f.getWorkspaceId() === folderData[\"workspaceId\"]);\n if (folder) {\n const props = Object.keys(qx.util.PropertyUtil.getProperties(osparc.data.model.Folder));\n // put\n Object.keys(folderData).forEach(key => {\n if (key === \"createdAt\") {\n folder.set(\"createdAt\", new Date(folderData[\"createdAt\"]));\n } else if (key === \"modifiedAt\") {\n folder.set(\"lastModified\", new Date(folderData[\"modifiedAt\"]));\n } else if (key === \"trashedAt\") {\n folder.set(\"trashedAt\", new Date(folderData[\"trashedAt\"]));\n } else if (props.includes(key)) {\n folder.set(key, folderData[key]);\n }\n });\n } else {\n // get and post\n folder = new osparc.data.model.Folder(folderData);\n this.foldersCached.unshift(folder);\n }\n return folder;\n },\n\n __deleteFromCache: function(folderId, workspaceId) {\n const idx = this.foldersCached.findIndex(f => f.getFolderId() === folderId && f.getWorkspaceId() === workspaceId);\n if (idx > -1) {\n this.foldersCached.splice(idx, 1);\n return true;\n }\n return false;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.store.Workspaces\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n construct: function() {\n this.base(arguments);\n\n this.workspacesCached = [];\n },\n\n events: {\n \"workspaceAdded\": \"qx.event.type.Data\",\n \"workspaceRemoved\": \"qx.event.type.Data\",\n },\n\n statics: {\n iconPath: function(iconsSize = 18) {\n const source = \"@MaterialIcons/folder_shared/\";\n if (iconsSize === -1) {\n return source;\n }\n return source+iconsSize;\n },\n\n createNewWorkspaceData: function(name, description = \"\", thumbnail = \"\") {\n return {\n name,\n description,\n thumbnail,\n };\n },\n\n curateOrderBy: function(orderBy) {\n const curatedOrderBy = osparc.utils.Utils.deepCloneObject(orderBy);\n if (curatedOrderBy.field !== \"name\") {\n // only \"modified_at\" and \"name\" supported\n curatedOrderBy.field = \"modified_at\";\n }\n return curatedOrderBy;\n },\n },\n\n members: {\n workspacesCached: null,\n\n fetchWorkspaces: function() {\n if (osparc.auth.Data.getInstance().isGuest()) {\n return new Promise(resolve => {\n resolve([]);\n });\n }\n\n return osparc.data.Resources.getInstance().getAllPages(\"workspaces\")\n .then(workspacesData => {\n workspacesData.forEach(workspaceData => {\n this.__addToCache(workspaceData);\n });\n return this.workspacesCached;\n });\n },\n\n fetchAllTrashedWorkspaces: function(orderBy = {\n field: \"modified_at\",\n direction: \"desc\"\n }) {\n if (osparc.auth.Data.getInstance().isGuest()) {\n return new Promise(resolve => {\n resolve([]);\n });\n }\n\n const curatedOrderBy = this.self().curateOrderBy(orderBy);\n const params = {\n url: {\n orderBy: JSON.stringify(curatedOrderBy),\n }\n };\n return osparc.data.Resources.getInstance().getAllPages(\"workspaces\", params, \"getPageTrashed\")\n .then(trashedWorkspacesData => {\n const workspaces = [];\n trashedWorkspacesData.forEach(workspaceData => {\n const workspace = this.__addToCache(workspaceData);\n workspaces.push(workspace);\n });\n return workspaces;\n });\n },\n\n searchWorkspaces: function(\n text,\n orderBy = {\n field: \"modified_at\",\n direction: \"desc\"\n },\n ) {\n if (osparc.auth.Data.getInstance().isGuest()) {\n return new Promise(resolve => {\n resolve([]);\n });\n }\n\n const curatedOrderBy = this.self().curateOrderBy(orderBy);\n const params = {\n url: {\n filters: JSON.stringify({text: text}),\n orderBy: JSON.stringify(curatedOrderBy),\n }\n };\n return osparc.data.Resources.getInstance().getAllPages(\"workspaces\", params, \"getPageSearch\")\n .then(workspacesData => {\n const workspaces = [];\n workspacesData.forEach(workspaceData => {\n const workspace = this.__addToCache(workspaceData);\n workspaces.push(workspace);\n });\n return workspaces;\n });\n },\n\n postWorkspace: function(newWorkspaceData) {\n const params = {\n data: newWorkspaceData\n };\n return osparc.data.Resources.getInstance().fetch(\"workspaces\", \"post\", params)\n .then(workspaceData => {\n const newWorkspace = this.__addToCache(workspaceData);\n this.fireDataEvent(\"workspaceAdded\", newWorkspace);\n return newWorkspace;\n });\n },\n\n trashWorkspace: function(workspaceId) {\n const params = {\n \"url\": {\n workspaceId\n }\n };\n return osparc.data.Resources.getInstance().fetch(\"workspaces\", \"trash\", params)\n .then(() => {\n const workspace = this.getWorkspace(workspaceId);\n if (workspace) {\n this.__deleteFromCache(workspaceId);\n this.fireDataEvent(\"workspaceRemoved\", workspace);\n }\n })\n .catch(console.error);\n },\n\n untrashWorkspace: function(workspace) {\n const params = {\n \"url\": {\n workspaceId: workspace.getWorkspaceId(),\n }\n };\n return osparc.data.Resources.getInstance().fetch(\"workspaces\", \"untrash\", params)\n .then(() => {\n this.workspacesCached.unshift(workspace);\n this.fireDataEvent(\"workspaceAdded\", workspace);\n })\n .catch(console.error);\n },\n\n deleteWorkspace: function(workspaceId) {\n const params = {\n \"url\": {\n workspaceId\n }\n };\n return osparc.data.Resources.getInstance().fetch(\"workspaces\", \"delete\", params)\n .then(() => {\n const workspace = this.getWorkspace(workspaceId);\n if (workspace) {\n this.__deleteFromCache(workspaceId);\n this.fireDataEvent(\"workspaceRemoved\", workspace);\n }\n })\n .catch(console.error);\n },\n\n putWorkspace: function(workspaceId, updateData) {\n return new Promise((resolve, reject) => {\n const params = {\n \"url\": {\n workspaceId\n },\n data: updateData\n };\n osparc.data.Resources.getInstance().fetch(\"workspaces\", \"update\", params)\n .then(() => {\n const workspace = this.getWorkspace(workspaceId);\n Object.keys(updateData).forEach(propKey => {\n const upKey = qx.lang.String.firstUp(propKey);\n const setter = \"set\" + upKey;\n if (workspace && setter in workspace) {\n workspace[setter](updateData[propKey]);\n }\n });\n workspace.set({\n modifiedAt: new Date()\n });\n resolve(workspace);\n })\n .catch(err => reject(err));\n });\n },\n\n addCollaborators: function(workspaceId, newCollaborators) {\n const promises = [];\n Object.keys(newCollaborators).forEach(groupId => {\n const params = {\n url: {\n workspaceId,\n groupId,\n },\n data: newCollaborators[groupId]\n };\n promises.push(osparc.data.Resources.fetch(\"workspaces\", \"postAccessRights\", params));\n });\n return Promise.all(promises)\n .then(() => {\n const workspace = this.getWorkspace(workspaceId);\n const newAccessRights = workspace.getAccessRights();\n Object.keys(newCollaborators).forEach(gid => {\n newAccessRights[gid] = newCollaborators[gid];\n });\n workspace.set({\n accessRights: newAccessRights,\n modifiedAt: new Date()\n });\n })\n .catch(console.error);\n },\n\n removeCollaborator: function(workspaceId, groupId) {\n const params = {\n url: {\n workspaceId,\n groupId,\n }\n };\n return osparc.data.Resources.fetch(\"workspaces\", \"deleteAccessRights\", params)\n .then(() => {\n const workspace = this.getWorkspace(workspaceId);\n const newAccessRights = workspace.getAccessRights();\n delete newAccessRights[groupId];\n workspace.set({\n accessRights: newAccessRights,\n modifiedAt: new Date()\n });\n })\n .catch(console.error);\n },\n\n updateCollaborator: function(workspaceId, groupId, newPermissions) {\n const params = {\n url: {\n workspaceId,\n groupId,\n },\n data: newPermissions\n };\n return osparc.data.Resources.fetch(\"workspaces\", \"putAccessRights\", params)\n .then(() => {\n const workspace = this.getWorkspace(workspaceId);\n const newAccessRights = workspace.getAccessRights();\n newAccessRights[groupId] = newPermissions;\n workspace.set({\n accessRights: workspace.newAccessRights,\n modifiedAt: new Date()\n });\n })\n .catch(console.error);\n },\n\n getWorkspace: function(workspaceId = null) {\n return this.workspacesCached.find(w => w.getWorkspaceId() === workspaceId);\n },\n\n getWorkspaces: function() {\n return this.workspacesCached;\n },\n\n __addToCache: function(workspaceData) {\n let workspace = this.workspacesCached.find(w => w.getWorkspaceId() === workspaceData[\"workspaceId\"]);\n if (workspace) {\n const props = Object.keys(qx.util.PropertyUtil.getProperties(osparc.data.model.Workspace));\n // put\n Object.keys(workspaceData).forEach(key => {\n if (key === \"createdAt\") {\n workspace.set(\"createdAt\", new Date(workspaceData[\"createdAt\"]));\n } else if (key === \"modifiedAt\") {\n workspace.set(\"modifiedAt\", new Date(workspaceData[\"modifiedAt\"]));\n } else if (key === \"trashedAt\") {\n workspace.set(\"trashedAt\", new Date(workspaceData[\"trashedAt\"]));\n } else if (props.includes(key)) {\n workspace.set(key, workspaceData[key]);\n }\n });\n } else {\n workspace = new osparc.data.model.Workspace(workspaceData);\n this.workspacesCached.unshift(workspace);\n }\n return workspace;\n },\n\n __deleteFromCache: function(workspaceId) {\n const idx = this.workspacesCached.findIndex(w => w.getWorkspaceId() === workspaceId);\n if (idx > -1) {\n this.workspacesCached.splice(idx, 1);\n return true;\n }\n return false;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.widget.ProgressSequence\", {\n extend: qx.ui.core.Widget,\n\n construct: function(title) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(9));\n\n this.set({\n backgroundColor: \"window-popup-background\",\n paddingBottom: 8,\n minWidth: 400,\n });\n\n this.__initLayout(title);\n\n this.__tasks = [];\n },\n\n statics: {\n POS: {\n LABEL: 0,\n CALC: 1,\n HALO: 2,\n },\n\n createTaskLayout: function(label) {\n const layout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5).set({\n alignY: \"middle\"\n })).set({\n padding: [2, 10]\n });\n\n const lbl = new qx.ui.basic.Label(label);\n lbl.set({\n textColor: \"text\",\n allowGrowX: true,\n allowShrinkX: true,\n });\n layout.addAt(lbl, this.POS.LABEL, {\n flex: 1\n });\n\n const iconContainer = new qx.ui.container.Composite(new qx.ui.layout.VBox().set({\n alignY: \"middle\",\n alignX: \"center\",\n })).set({\n height: 18,\n width: 18,\n allowGrowY: false,\n allowGrowX: false,\n });\n const icon = new qx.ui.basic.Image(\"@FontAwesome5Solid/check/10\").set({\n visibility: \"excluded\",\n textColor: \"success\"\n });\n iconContainer.add(icon);\n const progressColor = qx.theme.manager.Color.getInstance().resolve(\"progressbar\");\n osparc.service.StatusUI.getStatusHalo(iconContainer, progressColor, 0);\n layout.addAt(iconContainer, this.POS.HALO);\n\n const progressState = new qx.ui.basic.Label();\n progressState.set({\n value: qx.locale.Manager.tr(\"Waiting ...\"),\n textColor: \"text\",\n allowGrowX: true,\n allowShrinkX: true\n });\n layout.addAt(progressState, this.POS.CALC);\n\n return layout;\n },\n\n createProgressBar: function(max = 1) {\n const progressBar = new qx.ui.indicator.ProgressBar().set({\n maximum: max,\n height: 4,\n margin: 0,\n padding: 0\n });\n progressBar.exclude();\n return progressBar;\n },\n\n updateTaskProgress: function(atom, {value, progressLabel}) {\n if ([null, undefined].includes(value)) {\n return;\n }\n\n if (atom) {\n const halo = atom.getChildren()[this.POS.HALO];\n const icon = halo.getChildren()[0];\n icon.setVisibility(value === 1 ? \"visible\" : \"excluded\");\n const progressColor = qx.theme.manager.Color.getInstance().resolve(\"progressbar\")\n osparc.service.StatusUI.getStatusHalo(halo, progressColor, value * 100);\n\n const label = atom.getChildren()[this.POS.CALC];\n label.setValue(progressLabel);\n }\n },\n\n progressUpdate: function(pBar, value) {\n if ([null, undefined].includes(value)) {\n return;\n }\n\n if (pBar) {\n pBar.set({\n value,\n visibility: (value >= 0) ? \"visible\" : \"excluded\"\n });\n }\n }\n },\n\n properties: {\n overallProgress: {\n check: \"Number\",\n init: 0,\n nullable: false,\n apply: \"__applyOverallProgress\"\n }\n },\n\n members: {\n __tasks: null,\n\n __initLayout: function(title) {\n title = title || qx.locale.Manager.tr(\"CREATING ...\");\n const progressTitle = new qx.ui.basic.Label(title).set({\n font: \"text-12\",\n alignX: \"center\",\n alignY: \"middle\",\n margin: 10\n });\n this._add(progressTitle);\n },\n\n __applyOverallProgress: function(value) {\n this.self().progressUpdate(this.__overallProgressBar, value);\n },\n\n getTask: function(text) {\n const taskFound = this.__tasks.find(task => {\n if (task.getChildren().length > this.self().POS.LABEL) {\n return task.getChildren()[this.self().POS.LABEL].getValue() === text;\n }\n return false;\n });\n return taskFound;\n },\n\n getTasks: function() {\n return this.__tasks;\n },\n\n addOverallProgressBar: function(nTasks = 1) {\n const overallPBar = this.__overallProgressBar = osparc.widget.ProgressSequence.createProgressBar(nTasks);\n this._add(overallPBar);\n return overallPBar;\n },\n\n addNewTask: function(text) {\n const taskFound = this.getTask(text);\n if (taskFound) {\n return taskFound;\n }\n const newTask = osparc.widget.ProgressSequence.createTaskLayout(text);\n this._add(newTask);\n this.__tasks.push(newTask);\n return newTask;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Built-in service used for selecting a single file from storage and make it available in the workflow\n *\n * It consists of a widget containing a FilesTree, Add button and Select button:\n * - FilesTree will be populated with data provided by storage service (simcore.S3 and datcore)\n * - Add button will open a dialogue where the selected file will be upload to S3\n * - Select button puts the file in the output of the FilePicker node so that connected nodes can access it.\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let filePicker = new osparc.file.FilePicker(node);\n * this.getRoot().add(filePicker);\n *
\n */\n\nqx.Class.define(\"osparc.file.FilePicker\", {\n extend: qx.ui.core.Widget,\n\n /**\n * @param node {osparc.data.model.Node} Node owning the widget\n */\n construct: function(node, viewContext = \"workbench\") {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(20));\n\n this.set({\n node,\n });\n\n this.__buildLayout(viewContext);\n },\n\n properties: {\n node: {\n check: \"osparc.data.model.Node\"\n },\n },\n\n events: {\n \"itemReset\": \"qx.event.type.Event\",\n \"itemSelected\": \"qx.event.type.Event\",\n \"fileUploaded\": \"qx.event.type.Event\"\n },\n\n statics: {\n getOutput: function(outputs) {\n return osparc.data.model.Node.getOutput(outputs, \"outFile\");\n },\n\n getFilenameFromPath: function(output) {\n if (\"path\" in output) {\n const splitFilename = output.path.split(\"/\");\n return splitFilename[splitFilename.length-1];\n }\n return null;\n },\n\n getOutputLabel: function(outputs) {\n const outFileValue = osparc.file.FilePicker.getOutput(outputs);\n if (outFileValue) {\n if (\"label\" in outFileValue && outFileValue[\"label\"]) {\n return outFileValue.label;\n }\n if (\"path\" in outFileValue && outFileValue[\"path\"]) {\n return this.self().getFilenameFromPath(outFileValue);\n }\n if (\"downloadLink\" in outFileValue && outFileValue[\"downloadLink\"]) {\n return osparc.file.FileDownloadLink.extractLabelFromLink(outFileValue[\"downloadLink\"]);\n }\n }\n return null;\n },\n\n isOutputFromStore: function(outputs) {\n const outFileValue = osparc.file.FilePicker.getOutput(outputs);\n return (osparc.utils.Utils.isObject(outFileValue) && \"path\" in outFileValue);\n },\n\n isOutputDownloadLink: function(outputs) {\n const outFileValue = osparc.file.FilePicker.getOutput(outputs);\n return (osparc.utils.Utils.isObject(outFileValue) && \"downloadLink\" in outFileValue);\n },\n\n extractLabelFromLink: function(outputs) {\n const outFileValue = osparc.file.FilePicker.getOutput(outputs);\n return osparc.file.FileDownloadLink.extractLabelFromLink(outFileValue[\"downloadLink\"]);\n },\n\n hasOutputAssigned: function(outputs) {\n return osparc.file.FilePicker.isOutputFromStore(outputs) || osparc.file.FilePicker.isOutputDownloadLink(outputs);\n },\n\n setOutputValue: function(node, outputValue) {\n node.setOutputData({\n \"outFile\": outputValue\n });\n const outputs = node.getOutputs();\n const outLabel = osparc.file.FilePicker.getOutputLabel(outputs);\n if (outLabel && node.getLabel().includes(\"File Picker\")) {\n node.setLabel(outputValue.label);\n } else {\n node.setLabel(\"File Picker\");\n }\n node.getStatus().setProgress(outputValue ? 100 : 0);\n },\n\n setOutputValueFromStore: function(node, store, dataset, path, label) {\n if (store !== undefined && path) {\n osparc.file.FilePicker.setOutputValue(node, {\n store,\n dataset,\n path,\n label\n });\n }\n },\n\n setOutputValueFromLink: function(node, downloadLink, label) {\n if (downloadLink) {\n osparc.file.FilePicker.setOutputValue(node, {\n downloadLink,\n label: label ? label : \"\"\n });\n }\n },\n\n resetOutputValue: function(node) {\n osparc.file.FilePicker.setOutputValue(node, null);\n },\n\n getOutputFileMetadata: function(node) {\n return new Promise((resolve, reject) => {\n const outValue = osparc.file.FilePicker.getOutput(node.getOutputs());\n const params = {\n url: {\n locationId: outValue.store,\n datasetId: outValue.dataset\n }\n };\n osparc.data.Resources.fetch(\"storageFiles\", \"getByLocationAndDataset\", params)\n .then(files => {\n const fileMetadata = files.find(file => file.file_id === outValue.path);\n if (fileMetadata) {\n resolve(fileMetadata);\n } else {\n reject();\n }\n })\n .catch(() => reject());\n });\n },\n\n buildFileFromStoreInfoView: function(node, form) {\n const showFields = [\"file_name\", \"file_size\", \"last_modified\"];\n this.self().getOutputFileMetadata(node)\n .then(fileMetadata => {\n for (let [key, value] of Object.entries(fileMetadata)) {\n if (osparc.data.Permissions.getInstance().canDo(\"services.filePicker.read.all\") || showFields.includes(key)) {\n const entry = new qx.ui.form.TextField();\n form.add(entry, key, null, key);\n if (value) {\n if (key === \"file_size\") {\n const val = osparc.utils.Utils.bytesToSize(value);\n entry.setValue(val);\n } else if (key === \"last_modified\") {\n const val = osparc.utils.Utils.formatDateAndTime(new Date(value));\n entry.setValue(val);\n } else {\n entry.setValue(value.toString());\n }\n }\n }\n }\n });\n },\n\n buildDownloadLinkInfoView: function(node, form) {\n const outputs = node.getOutputs();\n\n const outFileValue = osparc.file.FilePicker.getOutput(outputs);\n const urlEntry = new qx.ui.form.TextField().set({\n value: outFileValue[\"downloadLink\"]\n });\n form.add(urlEntry, \"url\", null, \"url\");\n\n const label = osparc.file.FilePicker.extractLabelFromLink(outputs);\n if (label) {\n const labelEntry = new qx.ui.form.TextField().set({\n value: label\n });\n form.add(labelEntry, \"label\", null, \"label\");\n }\n },\n\n downloadOutput: function(node, downloadFileBtn) {\n const progressCb = () => downloadFileBtn.setFetching(true);\n const loadedCb = () => downloadFileBtn.setFetching(false);\n if (osparc.file.FilePicker.isOutputFromStore(node.getOutputs())) {\n this.self().getOutputFileMetadata(node)\n .then(fileMetadata => {\n if (\"location_id\" in fileMetadata && \"file_id\" in fileMetadata) {\n const locationId = fileMetadata[\"location_id\"];\n const fileId = fileMetadata[\"file_id\"];\n osparc.utils.Utils.retrieveURLAndDownload(locationId, fileId)\n .then(data => {\n if (data) {\n osparc.utils.Utils.downloadLink(data.link, \"GET\", data.fileName, progressCb, loadedCb);\n }\n });\n }\n });\n } else if (osparc.file.FilePicker.isOutputDownloadLink(node.getOutputs())) {\n const outFileValue = osparc.file.FilePicker.getOutput(node.getOutputs());\n if (osparc.utils.Utils.isObject(outFileValue) && \"downloadLink\" in outFileValue) {\n osparc.utils.Utils.downloadLink(outFileValue[\"downloadLink\"], \"GET\", outFileValue[\"label\"], progressCb, loadedCb);\n }\n }\n },\n\n serializeOutput: function(outputs) {\n let output = {};\n const outFileValue = osparc.file.FilePicker.getOutput(outputs);\n if (outFileValue) {\n output[\"outFile\"] = outFileValue;\n }\n return output;\n },\n\n POS: {\n RELOAD: 0,\n FILES_TREE: 1,\n TOOLBAR: 2,\n DOWNLOAD_LINK: 3\n }\n },\n\n members: {\n __filesTree: null,\n __selectButton: null,\n __selectedFile: null,\n __selectedFileFound: null,\n __fileDownloadLink: null,\n\n setOutputValueFromStore: function(store, dataset, path, label) {\n this.self().setOutputValueFromStore(this.getNode(), store, dataset, path, label);\n },\n\n __setOutputValueFromLink: function(downloadLink, label) {\n this.self().setOutputValueFromLink(this.getNode(), downloadLink, label);\n },\n\n __reloadFilesTree: function() {\n if (this.__filesTree) {\n this.__selectedFileFound = false;\n this.__filesTree.resetCache();\n this.__filesTree.populateTree();\n }\n },\n\n __buildLayout: function(viewContext) {\n this._removeAll();\n const hasOutput = osparc.file.FilePicker.hasOutputAssigned(this.getNode().getOutputs());\n if (hasOutput) {\n this.__buildInfoLayout();\n } else {\n this.__addProgressBar();\n if (viewContext === \"workbench\") {\n this.__buildWorkbenchLayout();\n } else {\n this.setMargin(10);\n this.__buildAppModeLayout();\n }\n }\n },\n\n __addProgressBar: function() {\n const progressLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5).set({\n alignY: \"middle\"\n }));\n progressLayout.alwaysEnabled = true;\n\n const progressBar = new qx.ui.indicator.ProgressBar();\n const nodeStatus = this.getNode().getStatus();\n nodeStatus.bind(\"progress\", progressBar, \"value\", {\n converter: val => osparc.data.model.NodeStatus.getValidProgress(val)\n });\n progressLayout.add(progressBar, {\n flex: 1\n });\n\n const stopButton = new osparc.ui.form.FetchButton().set({\n minHeight: 24,\n icon: \"@FontAwesome5Solid/times/16\",\n toolTipText: this.tr(\"Cancel upload\"),\n appearance: \"danger-button\",\n allowGrowX: false\n });\n stopButton.addListener(\"tap\", () => {\n stopButton.setFetching(true);\n this.getNode().requestFileUploadAbort();\n });\n progressLayout.add(stopButton);\n\n const progressChanged = () => {\n const progress = this.getNode().getStatus().getProgress();\n const validProgress = osparc.data.model.NodeStatus.getValidProgress(progress);\n const uploading = (validProgress > 0 && validProgress < 100);\n progressLayout.setVisibility(uploading ? \"visible\" : \"excluded\");\n this._getChildren().forEach(child => {\n if (!child.alwaysEnabled) {\n child.setEnabled(!uploading);\n }\n });\n };\n nodeStatus.addListener(\"changeProgress\", () => progressChanged());\n progressChanged();\n\n this._add(progressLayout);\n },\n\n __buildInfoLayout: function() {\n const node = this.getNode();\n\n const form = new qx.ui.form.Form();\n if (osparc.file.FilePicker.isOutputFromStore(node.getOutputs())) {\n this.self().buildFileFromStoreInfoView(node, form);\n } else if (osparc.file.FilePicker.isOutputDownloadLink(node.getOutputs())) {\n this.self().buildDownloadLinkInfoView(node, form);\n }\n const formRend = new qx.ui.form.renderer.Single(form);\n formRend.setEnabled(false);\n this._add(formRend);\n\n const hBox = new qx.ui.container.Composite(new qx.ui.layout.HBox(10));\n const downloadFileBtn = this.__getDownloadFileButton();\n hBox.add(downloadFileBtn);\n const resetFileBtn = this.__getResetFileButton();\n hBox.add(resetFileBtn);\n this._add(hBox);\n },\n\n __getDownloadFileButton: function() {\n const node = this.getNode();\n const downloadFileBtn = new osparc.ui.form.FetchButton(this.tr(\"Download\"), \"@FontAwesome5Solid/cloud-download-alt/14\").set({\n allowGrowX: false\n });\n downloadFileBtn.addListener(\"execute\", () => osparc.file.FilePicker.downloadOutput(node, downloadFileBtn));\n return downloadFileBtn;\n },\n\n __getResetFileButton: function() {\n const resetFileBtn = new qx.ui.form.Button(this.tr(\"Reset\"), \"@FontAwesome5Solid/sync-alt/14\").set({\n allowGrowX: false\n });\n resetFileBtn.addListener(\"execute\", () => this.__resetOutput());\n return resetFileBtn;\n },\n\n __getUploadFileSection: function() {\n const uploadFileSection = new osparc.ui.form.FileInput();\n uploadFileSection.addListener(\"selectionChanged\", () => {\n const file = uploadFileSection.getFile();\n if (file) {\n if (this.uploadPendingFiles([file])) {\n setTimeout(() => this.fireEvent(\"itemSelected\"), 500);\n }\n }\n });\n return uploadFileSection;\n },\n\n __getFileDropSection: function() {\n const fileDrop = new osparc.file.FileDrop();\n fileDrop.addListener(\"localFileDropped\", e => {\n const files = e.getData()[\"data\"];\n if (this.uploadPendingFiles(files)) {\n setTimeout(() => this.fireEvent(\"itemSelected\"), 500);\n }\n fileDrop.resetDropAction();\n });\n fileDrop.addListener(\"fileLinkDropped\", e => {\n const data = e.getData()[\"data\"];\n const node = this.getNode();\n osparc.file.FilePicker.setOutputValueFromStore(node, data.getLocation(), data.getDatasetId(), data.getFileId(), data.getLabel());\n this.fireEvent(\"itemSelected\");\n fileDrop.resetDropAction();\n });\n return fileDrop;\n },\n\n uploadPendingFiles: function(files) {\n if (files.length) {\n if (files.length === 1) {\n const fileUploader = new osparc.file.FileUploader(this.getNode());\n fileUploader.addListener(\"uploadAborted\", () => this.__resetOutput());\n fileUploader.addListener(\"fileUploaded\", e => {\n const fileMetadata = e.getData();\n if (\n \"location\" in fileMetadata &&\n \"dataset\" in fileMetadata &&\n \"path\" in fileMetadata &&\n \"name\" in fileMetadata\n ) {\n osparc.file.FilePicker.setOutputValueFromStore(this.getNode(), fileMetadata[\"location\"], fileMetadata[\"dataset\"], fileMetadata[\"path\"], fileMetadata[\"name\"]);\n } else {\n console.error(\"metadata info missing\", fileMetadata);\n }\n this.fireEvent(\"fileUploaded\");\n this.getNode().fireEvent(\"fileUploaded\");\n }, this);\n fileUploader.retrieveUrlAndUpload(files[0]);\n return true;\n }\n osparc.FlashMessenger.getInstance().logAs(osparc.file.FileDrop.ONE_FILE_ONLY, \"ERROR\");\n }\n return false;\n },\n\n __getDownloadLinkSection: function() {\n const layout = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n\n layout.add(new qx.ui.basic.Label(this.tr(\"Provide Link\")));\n\n const fileDownloadLink = this.__fileDownloadLink = new osparc.file.FileDownloadLink().set({\n allowGrowY: false\n });\n fileDownloadLink.addListener(\"fileLinkAdded\", e => {\n const downloadLink = e.getData();\n const label = osparc.file.FileDownloadLink.extractLabelFromLink(downloadLink);\n this.__setOutputValueFromLink(downloadLink, label);\n this.fireEvent(\"itemSelected\");\n }, this);\n layout.add(fileDownloadLink);\n\n return layout;\n },\n\n __buildWorkbenchLayout: function() {\n const uploadFileSection = this.__getUploadFileSection();\n this._add(uploadFileSection);\n\n const fileDrop = this.__getFileDropSection();\n this._add(fileDrop, {\n flex: 1\n });\n\n const downloadLinkSection = this.__getDownloadLinkSection();\n this._add(downloadLinkSection);\n },\n\n __buildAppModeLayout: function() {\n const msg = this.tr(\"In order to Select a File you have three options:\");\n const intro = new qx.ui.basic.Label(msg).set({\n font: \"text-16\",\n rich: true\n });\n this._add(intro);\n\n const collapsibleViews = [];\n const contentMargin = 10;\n\n const newFileSection = new qx.ui.container.Composite(new qx.ui.layout.VBox(10));\n const uploadFileSection = this.__getUploadFileSection();\n uploadFileSection.getButton().set({\n appearance: \"strong-button\",\n font: \"text-14\"\n });\n newFileSection.add(uploadFileSection);\n const fileDrop = this.__getFileDropSection();\n fileDrop.setDropHereMessage(this.tr(\"Drop file here\"));\n newFileSection.add(fileDrop, {\n flex: 1\n });\n const newFilePView = new osparc.desktop.PanelView().set({\n title: this.tr(\"Select New File\"),\n content: newFileSection\n });\n collapsibleViews.push(newFilePView);\n\n const downloadLinkSection = this.__getDownloadLinkSection();\n const downloadLinkPView = new osparc.desktop.PanelView().set({\n title: this.tr(\"Select Download Link\"),\n content: downloadLinkSection\n });\n collapsibleViews.push(downloadLinkPView);\n\n const fileBrowserLayout = this.__getFileBrowserLayout();\n const usedFilePView = new osparc.desktop.PanelView().set({\n title: this.tr(\"Select File from other \") + osparc.product.Utils.getStudyAlias(),\n content: fileBrowserLayout\n });\n collapsibleViews.push(usedFilePView);\n\n const radioCollapsibleViews = new osparc.desktop.RadioCollapsibleViews();\n collapsibleViews.forEach(cv => {\n cv.getInnerContainer().set({\n margin: contentMargin\n });\n this._add(cv, {\n flex: 1\n });\n radioCollapsibleViews.addCollapsibleView(cv);\n });\n radioCollapsibleViews.openCollapsibleView(0);\n },\n\n __getFileBrowserLayout: function() {\n const treeLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n\n const reloadButton = new qx.ui.form.Button().set({\n label: this.tr(\"Reload\"),\n icon: \"@FontAwesome5Solid/sync-alt/16\",\n allowGrowX: false\n });\n reloadButton.addListener(\"execute\", () => this.__reloadFilesTree(), this);\n treeLayout.add(reloadButton);\n\n const treeFolderLayout = new qx.ui.splitpane.Pane(\"horizontal\");\n treeFolderLayout.getChildControl(\"splitter\").set({\n width: 2\n });\n const filesTree = this.__filesTree = new osparc.file.FilesTree().set({\n showLeafs: false,\n minWidth: 150,\n width: 250\n });\n treeLayout.add(filesTree, {\n flex: 1\n });\n treeFolderLayout.add(treeLayout, 0);\n const allowMultiSelection = false;\n const folderViewer = new osparc.file.FolderViewer(allowMultiSelection);\n treeFolderLayout.add(folderViewer, 1);\n\n filesTree.addListener(\"selectionChanged\", () => {\n const selectionData = filesTree.getSelectedItem();\n this.__selectionChanged(selectionData);\n if (osparc.file.FilesTree.isDir(selectionData) || (selectionData.getChildren && selectionData.getChildren().length)) {\n folderViewer.setFolder(selectionData);\n }\n }, this);\n filesTree.addListener(\"filesAddedToTree\", () => this.__checkSelectedFileIsListed(), this);\n this.__reloadFilesTree();\n\n folderViewer.addListener(\"selectionChanged\", e => {\n const selectionData = e.getData();\n this.__selectionChanged(selectionData);\n }, this);\n folderViewer.addListener(\"openItemSelected\", e => {\n const selectionData = e.getData();\n this.__selectionChanged(selectionData);\n if (osparc.file.FilesTree.isFile(selectionData)) {\n this.__itemSelected();\n } else if (osparc.file.FilesTree.isDir(selectionData)) {\n filesTree.openNodeAndParents(selectionData);\n filesTree.setSelection(new qx.data.Array([selectionData]));\n }\n }, this);\n folderViewer.addListener(\"folderUp\", e => {\n const currentFolder = e.getData();\n const parent = filesTree.getParent(currentFolder);\n if (parent) {\n filesTree.setSelection(new qx.data.Array([parent]));\n folderViewer.setFolder(parent);\n }\n }, this);\n folderViewer.addListener(\"requestDatasetFiles\", e => {\n const data = e.getData();\n filesTree.requestDatasetFiles(data.locationId, data.datasetId);\n }, this);\n\n const selectBtn = this.__selectButton = new qx.ui.form.Button(this.tr(\"Select\")).set({\n allowGrowX: false,\n alignX: \"right\"\n });\n selectBtn.setEnabled(false);\n selectBtn.addListener(\"execute\", () => this.__itemSelected(), this);\n // eslint-disable-next-line no-underscore-dangle\n folderViewer._add(selectBtn);\n\n return treeFolderLayout;\n },\n\n init: function() {\n if (this.self().isOutputFromStore(this.getNode().getOutputs())) {\n const outFile = this.__getOutputFile();\n this.__filesTree.loadFilePath(outFile.value);\n }\n\n if (this.self().isOutputDownloadLink(this.getNode().getOutputs())) {\n const outFile = this.__getOutputFile();\n if (this.__fileDownloadLink) {\n this.__fileDownloadLink.setValue(outFile.value[\"downloadLink\"]);\n }\n }\n },\n\n __selectionChanged: function(selectedData) {\n this.__selectedFile = selectedData;\n const isFile = osparc.file.FilesTree.isFile(selectedData);\n if (this.__selectButton) {\n this.__selectButton.setEnabled(isFile);\n }\n },\n\n __itemSelected: function() {\n const selectedItem = this.__selectedFile;\n if (selectedItem && osparc.file.FilesTree.isFile(selectedItem)) {\n this.setOutputValueFromStore(selectedItem.getLocation(), selectedItem.getDatasetId(), selectedItem.getFileId(), selectedItem.getLabel());\n this.fireEvent(\"itemSelected\");\n }\n },\n\n __resetOutput: function() {\n const node = this.getNode();\n osparc.file.FilePicker.resetOutputValue(node);\n this.fireEvent(\"itemReset\");\n },\n\n __getOutputFile: function() {\n const outputs = this.getNode().getOutputs();\n return outputs[\"outFile\"];\n },\n\n __checkSelectedFileIsListed: function() {\n if (this.__selectedFileFound === false && this.self().isOutputFromStore(this.getNode().getOutputs())) {\n const outFile = this.__getOutputFile();\n const selected = this.__filesTree.setSelectedFile(outFile.value.path);\n if (selected) {\n this.__selectedFileFound = true;\n this.__filesTree.fireEvent(\"selectionChanged\");\n }\n }\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2019 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\nqx.Class.define(\"osparc.ui.basic.Chip\", {\n extend: qx.ui.basic.Atom,\n\n construct: function(label, icon) {\n this.base(arguments, label, icon);\n },\n\n properties: {\n appearance: {\n init: \"chip\",\n refine: true\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.task.Tasks\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n construct: function() {\n this.base(arguments);\n this.__tasks = new qx.data.Array();\n\n const tasksContainer = this.__tasksContainer = new qx.ui.container.Composite(new qx.ui.layout.VBox(3)).set({\n zIndex: osparc.utils.Utils.FLOATING_Z_INDEX,\n visibility: \"excluded\"\n });\n osparc.utils.Utils.setIdToWidget(tasksContainer, \"tasks\");\n const root = qx.core.Init.getApplication().getRoot();\n root.add(tasksContainer, {\n top: 0,\n right: 0\n });\n },\n\n members: {\n __tasks: null,\n __tasksContainer: null,\n\n addTask: function(task) {\n this.__tasks.push(task);\n this.__tasksContainer.addAt(task, 0);\n },\n\n removeTask: function(task) {\n if (this.__tasks.indexOf(task) > -1) {\n this.__tasks.remove(task);\n }\n if (this.__tasksContainer.indexOf(task) > -1) {\n this.__tasksContainer.remove(task);\n }\n },\n\n getTasks: function() {\n return this.__tasks;\n },\n\n getTasksContainer: function() {\n return this.__tasksContainer;\n },\n\n setTasksContainerPosition: function(x, y) {\n const root = qx.core.Init.getApplication().getRoot();\n if (root && root.getBounds()) {\n this.__tasksContainer.setLayoutProperties({\n left: x-osparc.task.TaskUI.MAX_WIDTH,\n top: y\n });\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Class that stores Service data.\n */\n\nqx.Class.define(\"osparc.data.model.Service\", {\n extend: qx.core.Object,\n\n /**\n * @param serviceData {Object} Object containing the serialized Service Data\n */\n construct: function(serviceData) {\n this.base(arguments);\n\n this.set({\n key: serviceData.key,\n version: serviceData.version,\n versionDisplay: serviceData.versionDisplay,\n name: serviceData.name,\n description: serviceData.description,\n thumbnail: serviceData.thumbnail,\n serviceType: serviceData.type,\n contact: serviceData.contact,\n authors: serviceData.authors,\n owner: serviceData.owner || \"\",\n accessRights: serviceData.accessRights,\n bootOptions: serviceData.bootOptions,\n classifiers: serviceData.classifiers || [],\n quality: serviceData.quality || null,\n xType: serviceData.xType || null,\n hits: serviceData.hits || 0,\n });\n },\n\n properties: {\n key: {\n check: \"String\",\n nullable: false,\n event: \"changeKey\",\n init: null\n },\n\n version: {\n check: \"String\",\n nullable: false,\n event: \"changeVersion\",\n init: null\n },\n\n versionDisplay: {\n check: \"String\",\n nullable: true,\n event: \"changeVersionDisplay\",\n init: null\n },\n\n name: {\n check: \"String\",\n nullable: false,\n event: \"changeName\",\n init: null\n },\n\n description: {\n check: \"String\",\n nullable: true,\n event: \"changeDescription\",\n init: null\n },\n\n thumbnail: {\n check: \"String\",\n nullable: true,\n event: \"changeThumbnail\",\n init: null\n },\n\n serviceType: {\n check: \"String\",\n nullable: true,\n event: \"changeServiceType\",\n init: \"\"\n },\n\n contact: {\n check: \"String\",\n nullable: true,\n event: \"changeContact\",\n init: \"\"\n },\n\n authors: {\n check: \"Object\",\n nullable: true,\n event: \"changeAuthors\",\n init: {}\n },\n\n owner: {\n check: \"String\",\n nullable: true,\n event: \"changeOwner\",\n init: \"\"\n },\n\n accessRights: {\n check: \"Object\",\n nullable: false,\n event: \"changeAccessRights\",\n init: {}\n },\n\n bootOptions: {\n check: \"Object\",\n init: {},\n event: \"changeBootOptions\",\n nullable: true\n },\n\n classifiers: {\n check: \"Array\",\n init: [],\n event: \"changeClassifiers\",\n nullable: false\n },\n\n quality: {\n check: \"Object\",\n init: {},\n event: \"changeQuality\",\n nullable: false\n },\n\n // ------ ignore for serializing ------\n xType: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeXType\",\n },\n\n hits: {\n check: \"Number\",\n init: 0,\n event: \"changeHits\",\n nullable: false\n }\n // ------ ignore for serializing ------\n },\n\n statics: {\n IgnoreSerializationProps: [\n \"xType\",\n \"hits\",\n ]\n },\n\n members: {\n __serviceData: null,\n\n serialize: function() {\n let jsonObject = {};\n const propertyKeys = this.self().getProperties();\n propertyKeys.forEach(key => {\n if (this.self().IgnoreSerializationProps.includes(key)) {\n return;\n }\n jsonObject[key] = this.get(key);\n });\n return jsonObject;\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Julian Querido (jsaq007)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.resources.pages.BasePage\", {\n extend: osparc.desktop.preferences.pages.BasePage,\n\n construct: function(title, iconSrc = null, id) {\n this.base(arguments, title, iconSrc);\n\n this.tabId = id;\n\n const grid = new qx.ui.layout.Grid(10, 10);\n grid.setColumnFlex(0, 1);\n grid.setRowFlex(0, 0); // header\n grid.setRowFlex(1, 1); // content\n grid.setRowFlex(2, 0); // footer\n grid.setRowAlign(0, \"right\", \"top\"); // header\n grid.setRowAlign(0, \"left\", \"top\"); // content\n grid.setRowAlign(0, \"right\", \"top\"); // footer\n\n this.setLayout(grid);\n },\n\n statics: {\n decorateHeaderButton: function(btn) {\n btn.set({\n appearance: \"form-button\",\n font: \"text-14\",\n alignX: \"right\",\n minWidth: 150,\n maxWidth: 150,\n height: 35,\n center: true\n });\n }\n },\n\n members: {\n addToHeader: function(widget) {\n this.add(widget, {\n column: 0,\n row: 0\n });\n },\n\n addToContent: function(widget) {\n const scrollContainer = new qx.ui.container.Scroll(widget);\n this.add(scrollContainer, {\n column: 0,\n row: 1\n });\n },\n\n addToFooter: function(widget) {\n this.add(widget, {\n column: 0,\n row: 2\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Collection of methods for studies\n */\n\nqx.Class.define(\"osparc.utils.Resources\", {\n type: \"static\",\n\n statics: {\n isStudy: function(studyData) {\n return ((studyData[\"resourceType\"] === \"study\") && (\"uuid\" in studyData));\n },\n\n isTemplate: function(templateData) {\n return ((templateData[\"resourceType\"] === \"template\") && (\"uuid\" in templateData));\n },\n\n isService: function(serviceData) {\n return ((serviceData[\"resourceType\"] === \"service\") && (\"key\" in serviceData) && (\"version\" in serviceData));\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Odei Maiz (odeimaiz)\n */\n\n/**\n * Widget that displays the services and their versions included in the Study\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * const servicesInStudy = new osparc.metadata.ServicesInStudy(study);\n * this.add(servicesInStudy);\n *
\n */\n\nqx.Class.define(\"osparc.metadata.ServicesInStudy\", {\n type: \"abstract\",\n extend: qx.ui.core.Widget,\n\n /**\n * @param studyData {Object|osparc.data.model.Study} studyData (metadata)\n */\n construct: function(studyData) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this._introText = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n this._add(this._introText);\n\n const grid = this.__grid = new qx.ui.layout.Grid(20, 5);\n grid.setColumnAlign(this.self().GRID_POS.LABEL, \"left\", \"middle\");\n grid.setColumnMinWidth(this.self().GRID_POS.LABEL, 80);\n grid.setColumnFlex(this.self().GRID_POS.LABEL, 1);\n this._servicesGrid = new qx.ui.container.Composite(grid);\n this._add(this._servicesGrid);\n\n this._studyData = osparc.data.model.Study.deepCloneStudyObject(studyData);\n\n const servicesInStudy = osparc.study.Utils.extractUniqueServices(this._studyData[\"workbench\"]);\n if (servicesInStudy.length) {\n const promises = [];\n servicesInStudy.forEach(srv => promises.push(osparc.store.Services.getService(srv.key, srv.version)));\n Promise.all(promises)\n .then(() => this._populateLayout());\n } else {\n this.__populateEmptyLayout();\n }\n },\n\n events: {\n \"updateService\": \"qx.event.type.Data\"\n },\n\n statics: {\n GRID_POS: {\n INFO_BUTTON: 0,\n LABEL: 1\n }\n },\n\n members: {\n _studyData: null,\n _introText: null,\n __grid: null,\n _servicesGrid: null,\n\n _patchNode: function(nodeId, patchData, fetchButton) {\n if (fetchButton) {\n fetchButton.setFetching(true);\n }\n this.setEnabled(false);\n\n osparc.store.Study.patchNodeData(this._studyData, nodeId, patchData)\n .then(() => {\n this.fireDataEvent(\"updateService\", this._studyData);\n this._populateLayout();\n })\n .catch(err => {\n if (\"message\" in err) {\n osparc.FlashMessenger.getInstance().logAs(err.message, \"ERROR\");\n } else {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong updating the Service\"), \"ERROR\");\n }\n })\n .finally(() => {\n if (fetchButton) {\n fetchButton.setFetching(false);\n }\n this.setEnabled(true);\n });\n },\n\n __populateEmptyLayout: function() {\n this._introText.removeAll();\n\n const emptyStudy = new qx.ui.basic.Label(this.tr(\"The Study is empty\")).set({\n font: \"text-14\"\n });\n this._introText.add(emptyStudy);\n },\n\n _populateLayout: function() {\n this._introText.removeAll();\n this._populateIntroText();\n\n this._servicesGrid.removeAll();\n this._populateHeader();\n this._populateRows();\n },\n\n _populateIntroText: function() {\n throw new Error(\"Abstract method called!\");\n },\n\n _populateHeader: function() {\n this._servicesGrid.add(new qx.ui.basic.Label(this.tr(\"Name\")).set({\n font: \"title-14\"\n }), {\n row: 0,\n column: this.self().GRID_POS.LABEL\n });\n this.__grid.setRowHeight(0, 24);\n },\n\n _populateRows: function() {\n let i=0;\n const workbench = this._studyData[\"workbench\"];\n for (const nodeId in workbench) {\n i++;\n const node = workbench[nodeId];\n\n const infoButton = new qx.ui.form.Button(null, \"@MaterialIcons/info_outline/14\");\n infoButton.addListener(\"execute\", () => {\n const metadata = osparc.store.Services.getMetadata(node[\"key\"], node[\"version\"]);\n if (metadata === null) {\n osparc.FlashMessenger.logAs(this.tr(\"Service information could not be retrieved\"), \"WARNING\");\n return;\n }\n const serviceDetails = new osparc.info.ServiceLarge(metadata, {\n nodeId,\n studyId: this._studyData[\"uuid\"],\n label: node[\"label\"]\n });\n osparc.info.ServiceLarge.popUpInWindow(serviceDetails);\n }, this);\n this._servicesGrid.add(infoButton, {\n row: i,\n column: this.self().GRID_POS.INFO_BUTTON\n });\n\n const labelLabel = new qx.ui.basic.Label(node[\"label\"]).set({\n toolTipText: node[\"label\"],\n font: \"text-14\"\n });\n this._servicesGrid.add(labelLabel, {\n row: i,\n column: this.self().GRID_POS.LABEL\n });\n this.__grid.setRowHeight(i, 24);\n\n const nodeMetadata = osparc.store.Services.getMetadata(node[\"key\"], node[\"version\"]);\n if (nodeMetadata === null) {\n osparc.FlashMessenger.logAs(this.tr(\"Some service information could not be retrieved\"), \"WARNING\");\n break;\n }\n }\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2022 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Odei Maiz (odeimaiz)\n */\n\nqx.Class.define(\"osparc.metadata.ServicesInStudyUpdate\", {\n extend: osparc.metadata.ServicesInStudy,\n\n /**\n * @param studyData {Object|osparc.data.model.Study} studyData (metadata)\n */\n construct: function(studyData) {\n this.base(arguments, studyData);\n\n const grid = this._servicesGrid.getLayout();\n grid.setColumnAlign(this.self().GRID_POS.CURRENT_VERSION, \"center\", \"middle\");\n grid.setColumnAlign(this.self().GRID_POS.COMPATIBLE_VERSION, \"center\", \"middle\");\n },\n\n statics: {\n GRID_POS: {\n ...osparc.metadata.ServicesInStudy.GRID_POS,\n CURRENT_VERSION: Object.keys(osparc.metadata.ServicesInStudy.GRID_POS).length,\n COMPATIBLE_VERSION: Object.keys(osparc.metadata.ServicesInStudy.GRID_POS).length+1,\n UPDATE_BUTTON: Object.keys(osparc.metadata.ServicesInStudy.GRID_POS).length+2\n },\n\n anyServiceDeprecated: function(studyData) {\n if (\"workbench\" in studyData) {\n return osparc.study.Utils.isWorkbenchDeprecated(studyData[\"workbench\"]);\n }\n return false;\n },\n\n anyServiceRetired: function(studyData) {\n if (\"workbench\" in studyData) {\n return osparc.study.Utils.isWorkbenchRetired(studyData[\"workbench\"]);\n }\n return false;\n },\n\n anyServiceInaccessible: function(studyData) {\n if (\"workbench\" in studyData) {\n const inaccessibles = osparc.study.Utils.getInaccessibleServices(studyData[\"workbench\"]);\n return inaccessibles.length;\n }\n return false;\n },\n\n updatableNodeIds: function(workbench) {\n const nodeIds = [];\n for (const nodeId in workbench) {\n const node = workbench[nodeId];\n if (osparc.service.Utils.isUpdatable(node)) {\n nodeIds.push(nodeId);\n }\n }\n return nodeIds;\n },\n\n getLatestVersion: function(studyData, nodeId) {\n if (nodeId in studyData[\"workbench\"]) {\n const node = studyData[\"workbench\"][nodeId];\n if (osparc.service.Utils.isUpdatable(node)) {\n const latestCompatible = osparc.service.Utils.getLatestCompatible(node[\"key\"], node[\"version\"]);\n if (latestCompatible[\"version\"] !== node[\"version\"]) {\n return latestCompatible[\"version\"];\n }\n }\n }\n return null;\n },\n\n colorVersionLabel: function(versionLabel, metadata) {\n const isDeprecated = osparc.service.Utils.isDeprecated(metadata);\n const isRetired = osparc.service.Utils.isRetired(metadata);\n if (isDeprecated) {\n versionLabel.set({\n textColor: \"text-on-warning\", // because the background is always yellow\n backgroundColor: osparc.service.StatusUI.getColor(\"deprecated\"),\n toolTipText: qx.locale.Manager.tr(\"Service deprecated, please update\")\n });\n } else if (isRetired) {\n versionLabel.set({\n textColor: \"text-on-warning\", // because the background is always red\n backgroundColor: osparc.service.StatusUI.getColor(\"retired\"),\n toolTipText: qx.locale.Manager.tr(\"Service retired, please update\")\n });\n }\n }\n },\n\n members: {\n __updateAllButton: null,\n\n _populateIntroText: async function() {\n const canIWrite = osparc.data.model.Study.canIWrite(this._studyData[\"accessRights\"]);\n const labels = [];\n if (this.self().anyServiceInaccessible(this._studyData)) {\n const inaccessibleText = this.tr(\"Some services' information is not accessible. Please contact service owner:\");\n const inaccessibleLabel = new qx.ui.basic.Label(inaccessibleText);\n labels.push(inaccessibleLabel);\n }\n if (this.self().anyServiceDeprecated(this._studyData)) {\n let deprecatedText = this.tr(\"Services marked in yellow are deprecated, they will be retired soon.\");\n if (canIWrite) {\n deprecatedText += \" \" + this.tr(\"They can be updated by pressing the Update button.\");\n }\n const deprecatedLabel = new qx.ui.basic.Label(deprecatedText);\n labels.push(deprecatedLabel);\n }\n if (this.self().anyServiceRetired(this._studyData)) {\n let retiredText = this.tr(\"Services marked in red are retired: you cannot use them anymore.\");\n if (canIWrite) {\n retiredText += \"
\" + this.tr(\"If the Update button is disabled, they might require manual intervention to be updated:\");\n retiredText += \"
- \" + this.tr(\"Open the study\");\n retiredText += \"
- \" + this.tr(\"Click on the retired service, download the data\");\n retiredText += \"
- \" + this.tr(\"Upload the data to an updated version\");\n }\n const retiredLabel = new qx.ui.basic.Label(retiredText);\n labels.push(retiredLabel);\n }\n const updatableServices = this.self().updatableNodeIds(this._studyData[\"workbench\"]);\n if (updatableServices.length === 0) {\n const upToDateText = this.tr(\"All services are up to date to their latest compatible version.\");\n const upToDateLabel = new qx.ui.basic.Label(upToDateText);\n labels.push(upToDateLabel);\n } else if (canIWrite) {\n const useUpdateButtonText = this.tr(\"Use the Update buttons to bring the services to their latest compatible version.\");\n const useUpdateButtonLabel = new qx.ui.basic.Label(useUpdateButtonText);\n labels.push(useUpdateButtonLabel);\n } else {\n const notUpToDateText = this.tr(\"Some services are not up to date.\");\n const notUpToDateLabel = new qx.ui.basic.Label(notUpToDateText);\n labels.push(notUpToDateLabel);\n }\n\n labels.forEach(label => {\n label.set({\n font: \"text-14\",\n rich: true\n });\n this._introText.add(label);\n });\n },\n\n __updateService: async function(nodeId, key, version, button) {\n const latestCompatible = osparc.service.Utils.getLatestCompatible(key, version);\n const patchData = {};\n if (key !== latestCompatible[\"key\"]) {\n patchData[\"key\"] = latestCompatible[\"key\"];\n }\n if (version !== latestCompatible[\"version\"]) {\n patchData[\"version\"] = latestCompatible[\"version\"];\n }\n await this._patchNode(nodeId, patchData, button);\n },\n\n __updateAllServices: async function(updatableNodeIds, button) {\n for (const nodeId of updatableNodeIds) {\n const workbench = this._studyData[\"workbench\"];\n await this.__updateService(nodeId, workbench[nodeId].key, workbench[nodeId].version, button);\n }\n },\n\n _populateHeader: function() {\n this.base(arguments);\n\n this._servicesGrid.add(new qx.ui.basic.Label(this.tr(\"Current\")).set({\n font: \"title-14\"\n }), {\n row: 0,\n column: this.self().GRID_POS.CURRENT_VERSION\n });\n\n this._servicesGrid.add(new qx.ui.basic.Label(this.tr(\"Compatible\")).set({\n font: \"title-14\",\n toolTipText: this.tr(\"Latest compatible version\")\n }), {\n row: 0,\n column: this.self().GRID_POS.COMPATIBLE_VERSION\n });\n\n const updateAllButton = this.__updateAllButton = new osparc.ui.form.FetchButton(this.tr(\"Update all\"), \"@MaterialIcons/update/14\").set({\n appearance: \"form-button\",\n padding: [2, 5],\n visibility: \"excluded\",\n center: true\n });\n this._servicesGrid.add(updateAllButton, {\n row: 0,\n column: this.self().GRID_POS.UPDATE_BUTTON\n });\n },\n\n _populateRows: function() {\n this.base(arguments);\n\n const canIWrite = osparc.data.model.Study.canIWrite(this._studyData[\"accessRights\"]);\n\n let i = 0;\n const workbench = this._studyData[\"workbench\"];\n for (const nodeId in workbench) {\n i++;\n const node = workbench[nodeId];\n const metadata = osparc.store.Services.getMetadata(node[\"key\"], node[\"version\"]);\n const currentVersionLabel = new qx.ui.basic.Label(osparc.service.Utils.extractVersionDisplay(metadata)).set({\n font: \"text-14\"\n });\n this.self().colorVersionLabel(currentVersionLabel, metadata);\n this._servicesGrid.add(currentVersionLabel, {\n row: i,\n column: this.self().GRID_POS.CURRENT_VERSION\n });\n\n const compatibleVersionLabel = new qx.ui.basic.Label().set({\n font: \"text-14\"\n });\n const latestCompatible = osparc.service.Utils.getLatestCompatible(node[\"key\"], node[\"version\"]);\n if (latestCompatible) {\n // updatable\n osparc.store.Services.getService(latestCompatible[\"key\"], latestCompatible[\"version\"])\n .then(latestMetadata => {\n let label = osparc.service.Utils.extractVersionDisplay(latestMetadata)\n if (node[\"key\"] !== latestMetadata[\"key\"]) {\n label = latestMetadata[\"name\"] + \":\" + label;\n }\n compatibleVersionLabel.setValue(label);\n })\n .catch(err => console.error(err));\n } else if (metadata) {\n // up to date\n compatibleVersionLabel.setValue(metadata[\"version\"]);\n } else {\n compatibleVersionLabel.setValue(this.tr(\"Unknown\"));\n }\n this._servicesGrid.add(compatibleVersionLabel, {\n row: i,\n column: this.self().GRID_POS.COMPATIBLE_VERSION\n });\n\n const isUpdatable = osparc.service.Utils.isUpdatable(node);\n if (latestCompatible && canIWrite) {\n const updateButton = new osparc.ui.form.FetchButton(null, \"@MaterialIcons/update/14\");\n updateButton.set({\n enabled: isUpdatable\n });\n if ((latestCompatible[\"key\"] === node[\"key\"]) && (latestCompatible[\"version\"] === node[\"version\"])) {\n updateButton.setLabel(this.tr(\"Up-to-date\"));\n }\n if (isUpdatable) {\n updateButton.set({\n appearance: \"form-button-outlined\",\n padding: [2, 5],\n label: this.tr(\"Update\"),\n center: true\n });\n }\n updateButton.addListener(\"execute\", () => this.__updateService(nodeId, node[\"key\"], node[\"version\"], updateButton), this);\n this._servicesGrid.add(updateButton, {\n row: i,\n column: this.self().GRID_POS.UPDATE_BUTTON\n });\n }\n }\n\n const updatableServices = osparc.metadata.ServicesInStudyUpdate.updatableNodeIds(workbench);\n if (updatableServices.length && canIWrite) {\n const updateAllButton = this.__updateAllButton;\n updateAllButton.show();\n updateAllButton.addListener(\"execute\", () => this.__updateAllServices(updatableServices, updateAllButton), this);\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.ResourceUpgradeHelper\", {\n extend: osparc.ui.window.Dialog,\n /**\n * @extends osparc.ui.window.Dialog\n * @param {String} message Message that will be displayed to the user.\n */\n construct: function(message) {\n this.base(arguments, this.tr(\"Outdated services\"));\n\n if (message) {\n this.setMessage(message);\n }\n\n // Secondary action - Left button\n const secondaryButton = this.__secondaryButton = new qx.ui.form.Button();\n secondaryButton.set({\n center: true,\n minWidth: 100\n });\n this.bind(\"secondaryText\", secondaryButton, \"label\");\n secondaryButton.addListener(\"execute\", () => {\n this.setConfirmed(false);\n }, this);\n this.addButton(secondaryButton);\n\n // Primary action - Right button\n const primaryButton = this.__confirmButton = new qx.ui.form.Button();\n primaryButton.set({\n center: true,\n minWidth: 100\n });\n this.bind(\"primaryText\", primaryButton, \"label\");\n primaryButton.addListener(\"execute\", () => {\n this.setConfirmed(true);\n }, this);\n const command = new qx.ui.command.Command(\"Enter\");\n primaryButton.setCommand(command);\n this.addButton(primaryButton);\n },\n\n properties: {\n primaryText: {\n check: \"String\",\n init: \"Yes\",\n event: \"changeConfirmText\"\n },\n\n primaryAction: {\n check: [null, \"create\", \"delete\"],\n init: null,\n nullable: true,\n apply: \"__applyPrimaryAppearance\"\n },\n\n secondaryText: {\n check: \"String\",\n init: \"No\",\n event: \"changeSecondaryText\"\n },\n\n secondaryAction: {\n check: [null, \"primary\", \"secondary\", \"text\"],\n init: null,\n nullable: true,\n apply: \"__applySecondaryAppearance\"\n },\n\n confirmed: {\n check: \"Boolean\",\n init: null,\n event: \"changeConfirmed\"\n }\n },\n\n members: {\n __primaryButton: null,\n __secondaryButton: null,\n\n getPrimaryButton: function() {\n return this.__primaryButton;\n },\n\n getSecondaryButton: function() {\n return this.__secondaryButton;\n },\n\n __applyPrimaryAppearance: function(primaryAction) {\n const primaryBtn = this.__confirmButton;\n switch (primaryAction) {\n case \"create\":\n primaryBtn.setAppearance(\"form-button\");\n break;\n default:\n primaryBtn.resetAppearance();\n break;\n }\n },\n\n __applySecondaryAppearance: function(secondaryAction) {\n const secondBtn = this.__secondaryButton;\n switch (secondaryAction) {\n case \"primary\":\n secondBtn.setAppearance(\"form-button-outlined\");\n break;\n default:\n secondBtn.setAppearance(\"form-button-text\");\n break;\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\n/**\n * SelectBox with its padding and margins adapted to be show inside a qx.ui.toolbar.ToolBar.\n */\nqx.Class.define(\"osparc.ui.toolbar.SelectBox\", {\n extend: qx.ui.form.SelectBox,\n\n construct: function() {\n this.base(arguments);\n },\n\n properties: {\n appearance: {\n refine: true,\n init: \"toolbar-selectbox\"\n }\n },\n\n members : {\n // overridden\n _applyVisibility : function(value, old) {\n this.base(arguments, value, old);\n // trigger a appearance recalculation of the parent\n var parent = this.getLayoutParent();\n if (parent && parent instanceof qx.ui.toolbar.PartContainer) {\n qx.ui.core.queue.Appearance.add(parent);\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.info.CardLarge\", {\n extend: qx.ui.core.Widget,\n type: \"abstract\",\n\n construct: function() {\n this.base(arguments);\n\n this.set({\n minHeight: 350,\n padding: this.self().PADDING\n });\n this._setLayout(new qx.ui.layout.VBox(15));\n },\n\n events: {\n \"openAccessRights\": \"qx.event.type.Event\",\n \"openClassifiers\": \"qx.event.type.Event\",\n \"openQuality\": \"qx.event.type.Event\",\n \"openTags\": \"qx.event.type.Event\"\n },\n\n properties: {\n openOptions: {\n check: \"Boolean\",\n init: true,\n nullable: false\n }\n },\n\n statics: {\n WIDTH: 650,\n HEIGHT: 700,\n PADDING: 5,\n EXTRA_INFO_WIDTH: 250,\n THUMBNAIL_MIN_WIDTH: 150,\n THUMBNAIL_MAX_WIDTH: 230\n },\n\n members: {\n _attachHandlers: function() {\n this.addListenerOnce(\"appear\", () => this._rebuildLayout(), this);\n // OM: Not so sure about this one\n // this.addListener(\"resize\", () => this._rebuildLayout(), this);\n },\n\n _rebuildLayout: function() {\n throw new Error(\"Abstract method called!\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.info.ServiceLarge\", {\n extend: osparc.info.CardLarge,\n\n /**\n * @param metadata {Object} Serialized Service Object\n * @param instance {Object} instance related data\n * @param openOptions {Boolean} open edit options in new window or fire event\n */\n construct: function(metadata, instance = null, openOptions = true) {\n this.base(arguments);\n\n this.setService(metadata);\n\n if (instance) {\n if (\"nodeId\" in instance) {\n this.setNodeId(instance[\"nodeId\"]);\n }\n if (\"label\" in instance) {\n this.setInstanceLabel(instance[\"label\"]);\n }\n if (\"studyId\" in instance) {\n this.setStudyId(instance[\"studyId\"]);\n }\n }\n\n if (openOptions !== undefined) {\n this.setOpenOptions(openOptions);\n }\n\n this._attachHandlers();\n },\n\n events: {\n \"updateService\": \"qx.event.type.Data\"\n },\n\n properties: {\n service: {\n check: \"Object\",\n init: null,\n nullable: false,\n apply: \"_rebuildLayout\"\n },\n\n nodeId: {\n check: \"String\",\n init: null,\n nullable: true\n },\n\n instanceLabel: {\n check: \"String\",\n init: null,\n nullable: true\n },\n\n studyId: {\n check: \"String\",\n init: null,\n nullable: true\n }\n },\n\n statics: {\n popUpInWindow: function(serviceLarge) {\n const metadata = serviceLarge.getService();\n const versionDisplay = osparc.service.Utils.extractVersionDisplay(metadata);\n const title = `${metadata[\"name\"]} ${versionDisplay}`;\n const width = osparc.info.CardLarge.WIDTH;\n const height = osparc.info.CardLarge.HEIGHT;\n osparc.ui.window.Window.popUpInWindow(serviceLarge, title, width, height).set({\n maxHeight: height\n });\n },\n },\n\n members: {\n _rebuildLayout: function() {\n this._removeAll();\n\n const vBox = new qx.ui.container.Composite(new qx.ui.layout.VBox(15));\n\n const deprecated = this.__createDeprecated();\n if (deprecated) {\n vBox.add(deprecated);\n }\n\n const description = this.__createDescription();\n const editInTitle = this.__createViewWithEdit(description.getChildren()[0], this.__openDescriptionEditor);\n description.addAt(editInTitle, 0);\n\n const copyMetadataButton = new qx.ui.form.Button(this.tr(\"Copy Raw metadata\"), \"@FontAwesome5Solid/copy/12\").set({\n allowGrowX: false\n });\n copyMetadataButton.addListener(\"execute\", () => osparc.utils.Utils.copyTextToClipboard(osparc.utils.Utils.prettifyJson(this.getService())), this);\n\n if (\n this.getService()[\"descriptionUi\"] &&\n !osparc.service.Utils.canIWrite(this.getService()[\"accessRights\"]) &&\n description.getChildren().length > 1\n ) {\n // Show also the copy Id buttons too\n const buttonsLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(10));\n if (this.getNodeId()) {\n const studyAlias = osparc.product.Utils.getStudyAlias({firstUpperCase: true});\n const copyStudyIdButton = new qx.ui.form.Button(this.tr(`Copy ${studyAlias} Id`), \"@FontAwesome5Solid/copy/12\").set({\n toolTipText: qx.locale.Manager.tr(\"Copy to clipboard\"),\n });\n copyStudyIdButton.addListener(\"execute\", this.__copyStudyIdToClipboard, this);\n buttonsLayout.add(copyStudyIdButton);\n vBox.add(buttonsLayout);\n\n const copyNodeIdButton = new qx.ui.form.Button(this.tr(\"Copy Service Id\"), \"@FontAwesome5Solid/copy/12\").set({\n toolTipText: qx.locale.Manager.tr(\"Copy to clipboard\"),\n });\n copyNodeIdButton.addListener(\"execute\", this.__copyNodeIdToClipboard, this);\n buttonsLayout.add(copyNodeIdButton);\n vBox.add(buttonsLayout);\n }\n // Also copyMetadataButton if tester\n if (osparc.data.Permissions.getInstance().isTester()) {\n buttonsLayout.add(copyMetadataButton);\n vBox.add(buttonsLayout);\n }\n // Show description only\n vBox.add(description.getChildren()[1]);\n } else {\n const hBox = new qx.ui.container.Composite(new qx.ui.layout.HBox(10));\n const icon = this.__createIcon();\n const iconLayout = this.__createViewWithEdit(icon, this.__openIconEditor);\n hBox.add(iconLayout);\n const title = this.__createName();\n const titleLayout = this.__createViewWithEdit(title, this.__openTitleEditor);\n hBox.add(titleLayout);\n vBox.add(hBox);\n\n const extraInfo = this.__extraInfo();\n const extraInfoLayout = this.__createExtraInfo(extraInfo);\n const bounds = this.getBounds();\n const offset = 30;\n const maxThumbnailHeight = extraInfo.length*20;\n let widgetWidth = bounds ? bounds.width - offset : 500 - offset;\n let thumbnailWidth = widgetWidth - 2 * osparc.info.CardLarge.PADDING - osparc.info.CardLarge.EXTRA_INFO_WIDTH;\n thumbnailWidth = Math.min(thumbnailWidth - 20, osparc.info.CardLarge.THUMBNAIL_MAX_WIDTH);\n const thumbnail = this.__createThumbnail(thumbnailWidth, maxThumbnailHeight);\n const thumbnailLayout = this.__createViewWithEdit(thumbnail, this.__openThumbnailEditor);\n thumbnailLayout.getLayout().set({\n alignX: \"center\"\n });\n const infoAndThumbnail = new qx.ui.container.Composite(new qx.ui.layout.HBox(3).set({\n alignX: \"center\"\n }));\n infoAndThumbnail.add(extraInfoLayout);\n infoAndThumbnail.add(thumbnailLayout, {\n flex: 1\n });\n vBox.add(infoAndThumbnail);\n\n if (osparc.service.Utils.canIWrite(this.getService()[\"accessRights\"])) {\n const descriptionUi = this.__createDescriptionUi();\n if (descriptionUi) {\n vBox.add(descriptionUi);\n }\n }\n vBox.add(description);\n\n if (!osparc.desktop.credits.Utils.areWalletsEnabled()) {\n const resources = this.__createResources();\n if (resources) {\n vBox.add(resources);\n }\n }\n vBox.add(copyMetadataButton);\n }\n\n const scrollContainer = new qx.ui.container.Scroll();\n scrollContainer.add(vBox);\n this._add(scrollContainer, {\n flex: 1\n });\n },\n\n __createViewWithEdit: function(view, cb) {\n const layout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5).set({\n alignY: \"middle\"\n }));\n layout.add(view);\n if (osparc.service.Utils.canIWrite(this.getService()[\"accessRights\"])) {\n const editBtn = osparc.utils.Utils.getEditButton();\n editBtn.addListener(\"execute\", () => cb.call(this), this);\n layout.add(editBtn);\n }\n\n return layout;\n },\n\n __createDeprecated: function() {\n const isDeprecated = osparc.service.Utils.isDeprecated(this.getService());\n const isRetired = osparc.service.Utils.isRetired(this.getService());\n if (isDeprecated) {\n return osparc.service.StatusUI.createServiceDeprecatedChip();\n } else if (isRetired) {\n return osparc.service.StatusUI.createServiceRetiredChip();\n }\n return null;\n },\n\n __createIcon: function() {\n const serviceIcon = this.getService()[\"icon\"] || \"osparc/no_photography_black_24dp.svg\";\n const icon = osparc.dashboard.CardBase.createCardIcon().set({\n source: serviceIcon,\n });\n osparc.utils.Utils.setAltToImage(icon.getChildControl(\"image\"), \"card-icon\");\n return icon;\n },\n\n __createName: function() {\n const serviceName = this.getService()[\"name\"];\n let text = \"\";\n if (this.getInstanceLabel()) {\n text = `${this.getInstanceLabel()} [${serviceName}]`;\n } else {\n text = serviceName;\n }\n const title = osparc.info.ServiceUtils.createTitle(text).set({\n font: \"text-14\"\n });\n return title;\n },\n\n __extraInfo: function() {\n const extraInfo = [];\n\n if (this.getNodeId()) {\n extraInfo.push({\n label: this.tr(\"SERVICE ID\"),\n view: this.__createNodeId(),\n action: {\n button: osparc.utils.Utils.getCopyButton(),\n callback: this.__copyNodeIdToClipboard,\n ctx: this\n }\n });\n }\n\n extraInfo.push({\n label: this.tr(\"KEY\"),\n view: this.__createKey(),\n action: {\n button: osparc.utils.Utils.getCopyButton(),\n callback: this.__copyKeyToClipboard,\n ctx: this\n }\n });\n\n if (osparc.data.Permissions.getInstance().isTester() || osparc.service.Utils.canIWrite(this.getService()[\"accessRights\"])) {\n extraInfo.push({\n label: this.tr(\"INTEGRATION VERSION\"),\n view: this.__createIntegrationVersion(),\n action: null\n });\n }\n\n extraInfo.push({\n label: this.tr(\"VERSION\"),\n view: this.__createDisplayVersion(),\n action: {\n button: osparc.service.Utils.canIWrite(this.getService()[\"accessRights\"]) ? osparc.utils.Utils.getEditButton() : null,\n callback: this.__openVersionDisplayEditor,\n ctx: this\n }\n }, {\n label: this.tr(\"RELEASE DATE\"),\n view: this.__createReleasedDate(),\n action: null\n }, {\n label: this.tr(\"CONTACT\"),\n view: this.__createContact(),\n action: null\n }, {\n label: this.tr(\"AUTHORS\"),\n view: this.__createAuthors(),\n action: null\n }, {\n label: this.tr(\"ACCESS RIGHTS\"),\n view: this.__createAccessRights(),\n action: {\n button: osparc.service.Utils.canIWrite(this.getService()[\"accessRights\"]) ? osparc.utils.Utils.getEditButton() : null,\n callback: this.isOpenOptions() ? this.__openAccessRights : \"openAccessRights\",\n ctx: this\n }\n });\n\n if (\n osparc.product.Utils.showClassifiers() &&\n this.getService()[\"classifiers\"]\n ) {\n extraInfo.push({\n label: this.tr(\"CLASSIFIERS\"),\n view: this.__createClassifiers(),\n action: {\n button: osparc.service.Utils.canIWrite(this.getService()[\"accessRights\"]) ? osparc.utils.Utils.getEditButton() : null,\n callback: this.isOpenOptions() ? this.__openClassifiers : \"openClassifiers\",\n ctx: this\n }\n });\n }\n\n if (\n osparc.product.Utils.showQuality() &&\n this.getService()[\"quality\"] &&\n osparc.metadata.Quality.isEnabled(this.getService()[\"quality\"])\n ) {\n extraInfo.push({\n label: this.tr(\"QUALITY\"),\n view: this.__createQuality(),\n action: {\n button: osparc.service.Utils.canIWrite(this.getService()[\"accessRights\"]) ? osparc.utils.Utils.getEditButton() : null,\n callback: this.isOpenOptions() ? this.__openQuality : \"openQuality\",\n ctx: this\n }\n });\n }\n\n return extraInfo;\n },\n\n __createExtraInfo: function(extraInfo) {\n const moreInfo = osparc.info.Utils.extraInfosToGrid(extraInfo).set({\n width: osparc.info.CardLarge.EXTRA_INFO_WIDTH\n });\n return moreInfo;\n },\n\n __createNodeId: function() {\n return osparc.info.ServiceUtils.createNodeId(this.getNodeId());\n },\n\n __createKey: function() {\n return osparc.info.ServiceUtils.createKey(this.getService()[\"key\"]);\n },\n\n __createIntegrationVersion: function() {\n return osparc.info.ServiceUtils.createVersion(this.getService()[\"version\"]);\n },\n\n __createDisplayVersion: function() {\n return osparc.info.ServiceUtils.createVersionDisplay(this.getService()[\"key\"], this.getService()[\"version\"]);\n },\n\n __createReleasedDate: function() {\n return osparc.info.ServiceUtils.createReleasedDate(this.getService()[\"key\"], this.getService()[\"version\"]);\n },\n\n __createContact: function() {\n return osparc.info.ServiceUtils.createContact(this.getService());\n },\n\n __createAuthors: function() {\n return osparc.info.ServiceUtils.createAuthors(this.getService());\n },\n\n __createAccessRights: function() {\n return osparc.info.ServiceUtils.createAccessRights(this.getService());\n },\n\n __createClassifiers: function() {\n return osparc.info.ServiceUtils.createClassifiers(this.getService());\n },\n\n __createQuality: function() {\n return osparc.info.ServiceUtils.createQuality(this.getService());\n },\n\n __createThumbnail: function(maxWidth, maxHeight = 160) {\n const serviceData = this.getService();\n const thumbnail = osparc.info.Utils.createThumbnail(maxWidth, maxHeight);\n if (serviceData[\"thumbnail\"]) {\n thumbnail.set({\n source: serviceData[\"thumbnail\"]\n });\n } else {\n const noThumbnail = \"osparc/no_photography_black_24dp.svg\";\n thumbnail.set({\n source: noThumbnail\n });\n thumbnail.getChildControl(\"image\").set({\n minWidth: Math.max(120, maxWidth),\n minHeight: Math.max(139, maxHeight)\n });\n }\n return thumbnail;\n },\n\n __createDescriptionUi: function() {\n const cbAutoPorts = new qx.ui.form.CheckBox().set({\n label: this.tr(\"Show Description only\"),\n toolTipText: this.tr(\"From all the metadata shown in this view,\\nonly the Description will be shown to Users.\"),\n iconPosition: \"right\",\n });\n cbAutoPorts.setValue(Boolean(this.getService()[\"descriptionUi\"]));\n cbAutoPorts.addListener(\"changeValue\", e => {\n this.__patchService(\"descriptionUi\", e.getData());\n });\n return cbAutoPorts;\n },\n\n __createDescription: function() {\n return osparc.info.ServiceUtils.createDescription(this.getService());\n },\n\n __createResources: function() {\n const resourcesLayout = osparc.info.ServiceUtils.createResourcesInfoCompact();\n resourcesLayout.exclude();\n let promise = null;\n if (this.getNodeId()) {\n const params = {\n url: {\n studyId: this.getStudyId(),\n nodeId: this.getNodeId()\n }\n };\n promise = osparc.data.Resources.get(\"nodesInStudyResources\", params);\n } else {\n promise = osparc.store.Services.getResources(this.getService()[\"key\"], this.getService()[\"version\"])\n }\n promise\n .then(serviceResources => {\n resourcesLayout.show();\n osparc.info.ServiceUtils.resourcesToResourcesInfoCompact(resourcesLayout, serviceResources);\n })\n .catch(err => console.error(err));\n return resourcesLayout;\n },\n\n __createRawMetadata: function() {\n const container = new qx.ui.container.Scroll();\n container.add(new osparc.ui.basic.JsonTreeWidget(this.getService(), \"serviceDescriptionSettings\"));\n return container;\n },\n\n __openIconEditor: function() {\n const iconEditor = new osparc.widget.Renamer(this.getService()[\"icon\"], null, this.tr(\"Edit Icon\"));\n iconEditor.addListener(\"labelChanged\", e => {\n iconEditor.close();\n const newIcon = e.getData()[\"newLabel\"];\n this.__patchService(\"icon\", newIcon);\n }, this);\n iconEditor.center();\n iconEditor.open();\n },\n\n __openTitleEditor: function() {\n const titleEditor = new osparc.widget.Renamer(this.getService()[\"name\"], null, this.tr(\"Edit Name\"));\n titleEditor.addListener(\"labelChanged\", e => {\n titleEditor.close();\n const newLabel = e.getData()[\"newLabel\"];\n this.__patchService(\"name\", newLabel);\n }, this);\n titleEditor.center();\n titleEditor.open();\n },\n\n __copyStudyIdToClipboard: function() {\n osparc.utils.Utils.copyTextToClipboard(this.getStudyId());\n },\n\n __copyNodeIdToClipboard: function() {\n osparc.utils.Utils.copyTextToClipboard(this.getNodeId());\n },\n\n __copyKeyToClipboard: function() {\n osparc.utils.Utils.copyTextToClipboard(this.getService()[\"key\"]);\n },\n\n __openVersionDisplayEditor: function() {\n const title = this.tr(\"Edit Version Display\");\n const oldVersionDisplay = osparc.service.Utils.extractVersionDisplay(this.getService());\n const versionDisplayEditor = new osparc.widget.Renamer(oldVersionDisplay, null, title);\n versionDisplayEditor.addListener(\"labelChanged\", e => {\n versionDisplayEditor.close();\n const newVersionDisplay = e.getData()[\"newLabel\"];\n this.__patchService(\"versionDisplay\", newVersionDisplay);\n }, this);\n versionDisplayEditor.center();\n versionDisplayEditor.open();\n },\n\n __openAccessRights: function() {\n const permissionsView = osparc.info.ServiceUtils.openAccessRights(this.getService());\n permissionsView.addListener(\"updateAccessRights\", e => {\n const updatedServiceData = e.getData();\n this.setService(updatedServiceData);\n this.fireDataEvent(\"updateService\", updatedServiceData);\n }, this);\n },\n\n __openClassifiers: function() {\n const title = this.tr(\"Classifiers\");\n let classifiers = null;\n if (osparc.service.Utils.canIWrite(this.getService()[\"accessRights\"])) {\n classifiers = new osparc.metadata.ClassifiersEditor(this.getService());\n const win = osparc.ui.window.Window.popUpInWindow(classifiers, title, 400, 400);\n classifiers.addListener(\"updateClassifiers\", e => {\n win.close();\n const updatedServiceData = e.getData();\n this.setService(updatedServiceData);\n this.fireDataEvent(\"updateService\", updatedServiceData);\n }, this);\n } else {\n classifiers = new osparc.metadata.ClassifiersViewer(this.getService());\n osparc.ui.window.Window.popUpInWindow(classifiers, title, 400, 400);\n }\n },\n\n __openQuality: function() {\n const qualityEditor = osparc.info.ServiceUtils.openQuality(this.getService());\n qualityEditor.addListener(\"updateQuality\", e => {\n const updatedServiceData = e.getData();\n this.setService(updatedServiceData);\n this.fireDataEvent(\"updateService\", updatedServiceData);\n });\n },\n\n __openThumbnailEditor: function() {\n const title = this.tr(\"Edit Thumbnail\");\n const thumbnailEditor = new osparc.editor.ThumbnailEditor(this.getService()[\"thumbnail\"]);\n const win = osparc.ui.window.Window.popUpInWindow(thumbnailEditor, title, 300, 115);\n thumbnailEditor.addListener(\"updateThumbnail\", e => {\n win.close();\n const validUrl = e.getData();\n this.__patchService(\"thumbnail\", validUrl);\n }, this);\n thumbnailEditor.addListener(\"cancel\", () => win.close());\n },\n\n __openDescriptionEditor: function() {\n const title = this.tr(\"Edit Description\");\n const textEditor = new osparc.editor.MarkdownEditor(this.getService()[\"description\"]);\n const win = osparc.ui.window.Window.popUpInWindow(textEditor, title, 400, 300);\n textEditor.addListener(\"textChanged\", e => {\n win.close();\n const newDescription = e.getData();\n this.__patchService(\"description\", newDescription);\n }, this);\n textEditor.addListener(\"cancel\", () => {\n win.close();\n }, this);\n },\n\n __patchService: function(key, value) {\n this.setEnabled(false);\n const serviceDataCopy = osparc.utils.Utils.deepCloneObject(this.getService());\n osparc.store.Services.patchServiceData(serviceDataCopy, key, value)\n .then(() => {\n this.setService(serviceDataCopy);\n this.fireDataEvent(\"updateService\", this.getService());\n })\n .catch(err => {\n console.error(err);\n const msg = err.message || this.tr(\"There was an error while updating the information.\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n })\n .finally(() => this.setEnabled(true));\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.info.StudyLarge\", {\n extend: osparc.info.CardLarge,\n\n /**\n * @param study {osparc.data.model.Study} Study model\n * @param openOptions {Boolean} open edit options in new window or fire event\n */\n construct: function(study, openOptions = true) {\n this.base(arguments);\n\n this.setStudy(study);\n if (\"resourceType\" in study) {\n this.__isTemplate = study[\"resourceType\"] === \"template\";\n }\n\n if (openOptions !== undefined) {\n this.setOpenOptions(openOptions);\n }\n\n this._attachHandlers();\n },\n\n events: {\n \"updateStudy\": \"qx.event.type.Data\"\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n init: null,\n nullable: false\n }\n },\n\n members: {\n __isTemplate: null,\n\n __canIWrite: function() {\n return osparc.data.model.Study.canIWrite(this.getStudy().getAccessRights());\n },\n\n _rebuildLayout: function() {\n this._removeAll();\n\n const vBox = new qx.ui.container.Composite(new qx.ui.layout.VBox(10));\n\n const infoElements = this.__infoElements();\n const infoLayout = osparc.info.StudyUtils.infoElementsToLayout(infoElements);\n vBox.add(infoLayout);\n\n let text = osparc.product.Utils.getStudyAlias({firstUpperCase: true}) + \" Id\";\n if (this.__isTemplate) {\n text = osparc.product.Utils.getTemplateAlias({firstUpperCase: true}) + \" Id\";\n }\n const copyIdButton = new qx.ui.form.Button(null, \"@FontAwesome5Solid/copy/12\").set({\n label: text,\n toolTipText: \"Copy \" + text,\n marginTop: 15,\n allowGrowX: false\n });\n copyIdButton.addListener(\"execute\", () => osparc.utils.Utils.copyTextToClipboard(this.getStudy().getUuid()));\n vBox.add(copyIdButton);\n\n const scrollContainer = new qx.ui.container.Scroll();\n scrollContainer.add(vBox);\n\n this._add(scrollContainer, {\n flex: 1\n });\n },\n\n __infoElements: function() {\n const infoLayout = {\n \"TITLE\": {\n label: this.tr(\"Title:\"),\n view: osparc.info.StudyUtils.createTitle(this.getStudy()),\n action: {\n button: osparc.utils.Utils.getEditButton(this.__canIWrite()),\n callback: this.__canIWrite() ? this.__openTitleEditor : null,\n ctx: this\n }\n },\n \"THUMBNAIL\": {\n label: this.tr(\"Thumbnail:\"),\n view: this.__createThumbnail(),\n action: {\n button: osparc.utils.Utils.getEditButton(this.__canIWrite()),\n callback: this.__canIWrite() ? this.__openThumbnailEditor : null,\n ctx: this\n }\n },\n \"DESCRIPTION\": {\n label: this.tr(\"Description:\"),\n view: osparc.info.StudyUtils.createDescriptionMD(this.getStudy(), 150),\n action: {\n button: osparc.utils.Utils.getEditButton(this.__canIWrite()),\n callback: this.__canIWrite() ? this.__openDescriptionEditor : null,\n ctx: this\n }\n },\n \"AUTHOR\": {\n label: this.tr(\"Author:\"),\n view: osparc.info.StudyUtils.createOwner(this.getStudy()),\n action: null\n },\n \"ACCESS_RIGHTS\": {\n label: this.tr(\"Access:\"),\n view: osparc.info.StudyUtils.createAccessRights(this.getStudy()),\n action: {\n button: osparc.utils.Utils.getLinkButton(this.__canIWrite()),\n callback: this.isOpenOptions() ? this.__openAccessRights : \"openAccessRights\",\n ctx: this\n }\n },\n \"CREATED\": {\n label: this.tr(\"Created:\"),\n view: osparc.info.StudyUtils.createCreationDate(this.getStudy()),\n action: null\n },\n \"MODIFIED\": {\n label: this.tr(\"Modified:\"),\n view: osparc.info.StudyUtils.createLastChangeDate(this.getStudy()),\n action: null\n },\n \"TAGS\": {\n label: this.tr(\"Tags:\"),\n view: osparc.info.StudyUtils.createTags(this.getStudy()),\n action: {\n button: osparc.utils.Utils.getLinkButton(this.__canIWrite()),\n callback: this.isOpenOptions() ? this.__openTagsEditor : \"openTags\",\n ctx: this\n }\n }\n };\n\n if (\n osparc.product.Utils.showQuality() &&\n this.getStudy().getQuality() &&\n osparc.metadata.Quality.isEnabled(this.getStudy().getQuality())\n ) {\n infoLayout[\"QUALITY\"] = {\n label: this.tr(\"Quality:\"),\n view: osparc.info.StudyUtils.createQuality(this.getStudy()),\n action: {\n button: osparc.utils.Utils.getLinkButton(),\n callback: this.isOpenOptions() ? this.__openQuality : \"openQuality\",\n ctx: this\n }\n };\n }\n\n if (osparc.product.Utils.showClassifiers()) {\n infoLayout[\"CLASSIFIERS\"] = {\n label: this.tr(\"Classifiers:\"),\n view: osparc.info.StudyUtils.createClassifiers(this.getStudy()),\n action: (this.getStudy().getClassifiers().length || this.__canIWrite()) ? {\n button: osparc.utils.Utils.getLinkButton(),\n callback: this.isOpenOptions() ? this.__openClassifiers : \"openClassifiers\",\n ctx: this\n } : null\n };\n }\n\n if (!this.__isTemplate) {\n const pathLabel = new qx.ui.basic.Label();\n pathLabel.setValue(this.getStudy().getLocationString());\n infoLayout[\"LOCATION\"] = {\n label: this.tr(\"Location:\"),\n view: pathLabel,\n action: null\n };\n }\n\n return infoLayout;\n },\n\n __createStudyId: function() {\n return osparc.info.StudyUtils.createUuid(this.getStudy());\n },\n\n __createThumbnail: function(maxWidth = 190, maxHeight = 220) {\n const thumb = osparc.info.StudyUtils.createThumbnail(this.getStudy(), maxWidth, maxHeight);\n thumb.set({\n maxWidth: 120,\n maxHeight: 139\n });\n thumb.getChildControl(\"image\").set({\n width: 120,\n height: 139,\n scale: true,\n });\n\n return thumb;\n },\n\n __openTitleEditor: function() {\n const title = this.tr(\"Edit Title\");\n const titleEditor = new osparc.widget.Renamer(this.getStudy().getName(), null, title);\n titleEditor.addListener(\"labelChanged\", e => {\n titleEditor.close();\n const newLabel = e.getData()[\"newLabel\"];\n this.__patchStudy(\"name\", newLabel);\n }, this);\n titleEditor.center();\n titleEditor.open();\n },\n\n __openAccessRights: function() {\n const studyData = this.getStudy().serialize();\n studyData[\"resourceType\"] = this.__isTemplate ? \"template\" : \"study\";\n const permissionsView = osparc.info.StudyUtils.openAccessRights(studyData);\n permissionsView.addListener(\"updateAccessRights\", e => {\n const updatedData = e.getData();\n this.getStudy().setAccessRights(updatedData[\"accessRights\"]);\n this.fireDataEvent(\"updateStudy\", updatedData);\n }, this);\n },\n\n __openClassifiers: function() {\n const title = this.tr(\"Classifiers\");\n let classifiers = null;\n if (this.__canIWrite()) {\n classifiers = new osparc.metadata.ClassifiersEditor(this.getStudy().serialize());\n const win = osparc.ui.window.Window.popUpInWindow(classifiers, title, 400, 400);\n classifiers.addListener(\"updateClassifiers\", e => {\n win.close();\n const updatedData = e.getData();\n this.getStudy().setClassifiers(updatedData[\"classifiers\"]);\n this.fireDataEvent(\"updateStudy\", updatedData);\n }, this);\n } else {\n classifiers = new osparc.metadata.ClassifiersViewer(this.getStudy().serialize());\n osparc.ui.window.Window.popUpInWindow(classifiers, title, 400, 400);\n }\n },\n\n __openQuality: function() {\n const qualityEditor = osparc.info.StudyUtils.openQuality(this.getStudy().serialize());\n qualityEditor.addListener(\"updateQuality\", e => {\n const updatedData = e.getData();\n this.getStudy().setQuality(updatedData[\"quality\"]);\n this.fireDataEvent(\"updateStudy\", updatedData);\n });\n },\n\n __openTagsEditor: function() {\n const tagManager = new osparc.form.tag.TagManager(this.getStudy().serialize());\n const win = osparc.form.tag.TagManager.popUpInWindow(tagManager);\n tagManager.addListener(\"updateTags\", e => {\n win.close();\n const updatedData = e.getData();\n this.getStudy().setTags(updatedData[\"tags\"]);\n this.fireDataEvent(\"updateStudy\", updatedData);\n }, this);\n },\n\n __openThumbnailEditor: function() {\n osparc.editor.ThumbnailSuggestions.extractThumbnailSuggestions(this.getStudy())\n .then(suggestions => {\n const title = this.tr(\"Edit Thumbnail\");\n const oldThumbnail = this.getStudy().getThumbnail();\n const thumbnailEditor = new osparc.editor.ThumbnailEditor(oldThumbnail, suggestions);\n const win = osparc.ui.window.Window.popUpInWindow(thumbnailEditor, title, suggestions.length > 2 ? 500 : 350, suggestions.length ? 280 : 115);\n thumbnailEditor.addListener(\"updateThumbnail\", e => {\n win.close();\n const validUrl = e.getData();\n this.__patchStudy(\"thumbnail\", validUrl);\n }, this);\n thumbnailEditor.addListener(\"cancel\", () => win.close());\n })\n .catch(err => console.error(err));\n },\n\n __openDescriptionEditor: function() {\n const title = this.tr(\"Edit Description\");\n const textEditor = new osparc.editor.MarkdownEditor(this.getStudy().getDescription());\n textEditor.setMaxHeight(570);\n const win = osparc.ui.window.Window.popUpInWindow(textEditor, title, 400, 300);\n textEditor.addListener(\"textChanged\", e => {\n win.close();\n const newDescription = e.getData();\n this.__patchStudy(\"description\", newDescription);\n }, this);\n textEditor.addListener(\"cancel\", () => {\n win.close();\n }, this);\n },\n\n __patchStudy: function(fieldKey, value) {\n this.getStudy().patchStudy({[fieldKey]: value})\n .then(studyData => {\n studyData[\"resourceType\"] = this.__isTemplate ? \"template\" : \"study\";\n this.fireDataEvent(\"updateStudy\", studyData);\n qx.event.message.Bus.getInstance().dispatchByName(\"updateStudy\", studyData);\n if (this.__isTemplate) {\n // reload templates\n osparc.data.Resources.get(\"templates\", {}, false)\n }\n })\n .catch(err => {\n console.error(err);\n const msg = err.message || this.tr(\"There was an error while updating the information.\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.study.BillingSettings\", {\n extend: qx.ui.core.Widget,\n\n /**\n * @param studyData {Object} Object containing part or the entire serialized Study Data\n */\n construct: function(studyData) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this.__studyData = studyData;\n\n this.__buildLayout();\n },\n\n events: {\n \"debtPayed\": \"qx.event.type.Event\",\n },\n\n members: {\n __studyData: null,\n __studyWalletId: null,\n __debtMessage: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"credit-account-box\":\n control = osparc.study.StudyOptions.createGroupBox(this.tr(\"Credit Account\"));\n this._add(control);\n break;\n case \"wallet-selector\":\n control = osparc.desktop.credits.Utils.createWalletSelector(\"read\");\n this.getChildControl(\"credit-account-box\").add(control);\n break;\n case \"pay-debt-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox(5).set({\n alignY: \"middle\",\n }));\n this.getChildControl(\"credit-account-box\").add(control);\n break;\n case \"debt-explanation\":\n control = new qx.ui.basic.Label().set({\n rich: true,\n wrap: true,\n });\n this.getChildControl(\"pay-debt-layout\").add(control);\n break;\n case \"buy-credits-button\":\n control = new qx.ui.form.Button().set({\n label: this.tr(\"Buy Credits\"),\n icon: \"@FontAwesome5Solid/dollar-sign/14\",\n allowGrowX: false\n });\n this.getChildControl(\"pay-debt-layout\").add(control);\n break;\n case \"transfer-debt-button\":\n control = new qx.ui.form.Button().set({\n label: this.tr(\"Transfer from this Credit Account\"),\n icon: \"@FontAwesome5Solid/exchange-alt/14\",\n allowGrowX: false\n });\n this.getChildControl(\"pay-debt-layout\").add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __buildLayout: function() {\n if (osparc.study.Utils.isInDebt(this.__studyData)) {\n this.__buildDebtMessage();\n }\n this.__buildWalletGroup();\n this.__buildPricingUnitsGroup();\n },\n\n __buildDebtMessage: function() {\n const border = new qx.ui.decoration.Decorator().set({\n radius: 4,\n width: 1,\n style: \"solid\",\n color: \"danger-red\",\n });\n const studyAlias = osparc.product.Utils.getStudyAlias();\n let msg = this.tr(`This ${studyAlias} is currently Embargoed.
`);\n msg += this.tr(\"Last charge:\") + \"
\";\n msg += this.__studyData[\"debt\"] + \" \" + this.tr(\"credits\");\n const debtMessage = this.__debtMessage = new qx.ui.basic.Label(msg).set({\n decorator: border,\n font: \"text-14\",\n rich: true,\n padding: 10,\n marginBottom: 5,\n });\n this._add(debtMessage);\n },\n\n __buildWalletGroup: function() {\n const boxContent = this.getChildControl(\"credit-account-box\");\n\n const walletSelector = this.getChildControl(\"wallet-selector\");\n\n const paramsGet = {\n url: {\n studyId: this.__studyData[\"uuid\"]\n }\n };\n osparc.data.Resources.fetch(\"studies\", \"getWallet\", paramsGet)\n .then(wallet => {\n if (wallet) {\n this.__studyWalletId = wallet[\"walletId\"];\n const walletFound = walletSelector.getSelectables().find(selectables => selectables.walletId === wallet[\"walletId\"]);\n if (walletFound) {\n walletSelector.setSelection([walletFound]);\n if (osparc.study.Utils.isInDebt(this.__studyData)) {\n this.__addDebtLayout(wallet[\"walletId\"]);\n }\n } else {\n const emptyItem = new qx.ui.form.ListItem(\"\");\n emptyItem.walletId = null;\n walletSelector.add(emptyItem);\n walletSelector.setSelection([emptyItem]);\n const label = new qx.ui.basic.Label(this.tr(\"You don't have access to the last used Credit Account\"));\n boxContent.add(label);\n }\n }\n })\n .finally(() => {\n walletSelector.addListener(\"changeSelection\", () => {\n const wallet = this.__getSelectedWallet();\n if (wallet) {\n const walletId = wallet.getWalletId();\n if (osparc.study.Utils.isInDebt(this.__studyData)) {\n this.__addDebtLayout(walletId);\n } else {\n this.__switchWallet(walletId);\n }\n }\n });\n });\n },\n\n __getSelectedWallet: function() {\n const walletSelector = this.getChildControl(\"wallet-selector\");\n const selection = walletSelector.getSelection();\n if (selection.length) {\n const walletId = selection[0].walletId;\n if (walletId) {\n const wallet = osparc.desktop.credits.Utils.getWallet(walletId);\n if (wallet) {\n return wallet;\n }\n }\n }\n return null;\n },\n\n __getStudyWallet: function() {\n if (this.__studyWalletId) {\n const wallet = osparc.desktop.credits.Utils.getWallet(this.__studyWalletId);\n if (wallet) {\n return wallet;\n }\n }\n return null;\n },\n\n __addDebtLayout: function(walletId) {\n const payDebtLayout = this.getChildControl(\"pay-debt-layout\");\n payDebtLayout.removeAll();\n\n const wallet = osparc.desktop.credits.Utils.getWallet(walletId);\n const myWallets = osparc.desktop.credits.Utils.getMyWallets();\n if (myWallets.find(wllt => wllt === wallet)) {\n // It's my wallet\n this._createChildControlImpl(\"debt-explanation\").set({\n value: this.tr(\"Top up the Credit Account:
Purchase additional credits to bring the Credit Account balance back to a positive value.\")\n });\n const buyCreditsButton = this._createChildControlImpl(\"buy-credits-button\");\n buyCreditsButton.addListener(\"execute\", () => this.__openBuyCreditsWindow(), this);\n } else {\n // It's a shared wallet\n this._createChildControlImpl(\"debt-explanation\").set({\n value: this.tr(\"Transfer credits from another Account:
Use this Credit Account to cover the negative balance.\")\n });\n const transferDebtButton = this._createChildControlImpl(\"transfer-debt-button\");\n transferDebtButton.addListener(\"execute\", () => this.__transferCredits(), this);\n }\n },\n\n __openBuyCreditsWindow: function() {\n const wallet = this.__getSelectedWallet();\n if (wallet) {\n osparc.desktop.credits.Utils.getPaymentMethods(wallet.getWalletId())\n .then(paymentMethods => {\n const {\n buyCreditsWidget\n } = osparc.desktop.credits.Utils.openBuyCredits(paymentMethods);\n buyCreditsWidget.addListener(\"completed\", () => {\n // at this point we can assume that the study got unblocked\n this.__debtPayed();\n })\n });\n }\n },\n\n __transferCredits: function() {\n const originWallet = this.__getSelectedWallet();\n const destWallet = this.__getStudyWallet();\n let msg = this.tr(\"A credits transfer will be initiated to cover the negative balance:\");\n msg += \"
- \" + this.tr(\"Credits to transfer: \") + -1*this.__studyData[\"debt\"];\n msg += \"
- \" + this.tr(\"From: \") + originWallet.getName();\n msg += \"
- \" + this.tr(\"To: \") + destWallet.getName();\n const confirmationWin = new osparc.ui.window.Confirmation(msg).set({\n confirmText: this.tr(\"Transfer\"),\n });\n confirmationWin.open();\n confirmationWin.addListener(\"close\", () => {\n if (confirmationWin.getConfirmed()) {\n this.__doTransferCredits();\n }\n }, this);\n },\n\n __doTransferCredits: function() {\n const wallet = this.__getSelectedWallet();\n const params = {\n url: {\n studyId: this.__studyData[\"uuid\"],\n walletId: wallet.getWalletId(),\n },\n data: {\n amount: this.__studyData[\"debt\"],\n }\n };\n osparc.data.Resources.fetch(\"studies\", \"payDebt\", params)\n .then(() => {\n // at this point we can assume that the study got unblocked\n this.__debtPayed();\n // also switch the study's wallet to this one\n this.__switchWallet(wallet.getWalletId());\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n });\n },\n\n __debtPayed: function() {\n delete this.__studyData[\"debt\"];\n osparc.store.Store.getInstance().setStudyDebt(this.__studyData[\"uuid\"], 0);\n this.fireEvent(\"debtPayed\");\n if (this.__debtMessage) {\n this._remove(this.__debtMessage);\n }\n this.getChildControl(\"pay-debt-layout\").removeAll();\n },\n\n __switchWallet: function(walletId) {\n const creditAccountBox = this.getChildControl(\"credit-account-box\");\n creditAccountBox.setEnabled(false);\n const paramsPut = {\n url: {\n studyId: this.__studyData[\"uuid\"],\n walletId\n }\n };\n osparc.data.Resources.fetch(\"studies\", \"selectWallet\", paramsPut)\n .then(() => {\n this.__studyWalletId = walletId;\n const msg = this.tr(\"Credit Account saved\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"INFO\");\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n })\n .finally(() => {\n creditAccountBox.setEnabled(true);\n });\n },\n\n __buildPricingUnitsGroup: function() {\n const pricingUnitsLayout = osparc.study.StudyOptions.createGroupBox(this.tr(\"Tiers\"));\n const pricingUnits = new osparc.study.StudyPricingUnits(this.__studyData);\n pricingUnitsLayout.add(pricingUnits);\n this._add(pricingUnitsLayout);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.service.PricingUnitsList\", {\n extend: qx.ui.core.Widget,\n\n construct: function(serviceMetadata) {\n this.base(arguments);\n\n this.__serviceMetadata = serviceMetadata;\n\n this._setLayout(new qx.ui.layout.VBox(5));\n\n this.getChildControl(\"pricing-units-container\");\n\n this.__fetchUnits();\n },\n\n members: {\n __serviceMetadata: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"pricing-units-container\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n this._addAt(control, 0, {\n flex: 1\n });\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __fetchUnits: function() {\n osparc.store.Pricing.getInstance().fetchPricingPlansService(this.__serviceMetadata[\"key\"], this.__serviceMetadata[\"version\"])\n .then(data => this.__populateList(data[\"pricingUnits\"]))\n .catch(err => {\n console.error(err);\n this.__populateList([]);\n });\n },\n\n __populateList: function(pricingUnitsData) {\n this.getChildControl(\"pricing-units-container\").removeAll();\n\n if (pricingUnitsData.length) {\n const pUnits = new osparc.study.PricingUnitTiers(pricingUnitsData, null, false);\n this.getChildControl(\"pricing-units-container\").add(pUnits);\n } else {\n const notFound = new qx.ui.basic.Label().set({\n value: this.tr(\"No Tiers found\"),\n font: \"text-14\"\n });\n this.getChildControl(\"pricing-units-container\").add(notFound);\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Julian Querido (jsaq007)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.study.StudyPreview\", {\n extend: qx.ui.core.Widget,\n\n /**\n * @param study {osparc.data.model.Study} Study model\n */\n construct: function(study) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(5));\n\n this.__study = study;\n\n this.__buildPreview();\n },\n\n members: {\n __study: null,\n\n __buildPreview: function() {\n const study = this.__study;\n const uiMode = study.getUi().getMode();\n if (uiMode === \"workbench\" && !study.isPipelineEmpty()) {\n const workbenchUIPreview = new osparc.workbench.WorkbenchUIPreview();\n workbenchUIPreview.setStudy(study);\n workbenchUIPreview.loadModel(study.getWorkbench());\n workbenchUIPreview.setMaxHeight(550);\n this._add(workbenchUIPreview);\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.info.CommentsList\", {\n extend: qx.ui.core.Widget,\n\n /**\n * @param studyId {String} Study Id\n */\n construct: function(studyId) {\n this.base(arguments);\n\n this.__studyId = studyId;\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this.__buildLayout();\n\n this.fetchComments();\n },\n\n members: {\n __nextRequestParams: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"title\":\n control = new qx.ui.basic.Label().set({\n value: this.tr(\"0 Comments\")\n });\n this._add(control);\n break;\n case \"comments-list\":\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox(5)).set({\n alignY: \"middle\"\n });\n this._add(control);\n break;\n case \"load-more-button\":\n control = new osparc.ui.form.FetchButton(this.tr(\"Load more comments...\"));\n control.addListener(\"execute\", () => this.fetchComments(false));\n this._add(control);\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n __buildLayout: function() {\n this.getChildControl(\"title\");\n this.getChildControl(\"comments-list\");\n this.getChildControl(\"load-more-button\");\n },\n\n fetchComments: function(removeComments = true) {\n const loadMoreButton = this.getChildControl(\"load-more-button\");\n loadMoreButton.show();\n loadMoreButton.setFetching(true);\n\n if (removeComments) {\n this.getChildControl(\"comments-list\").removeAll();\n }\n\n this.__getNextRequest()\n .then(resp => {\n const comments = resp[\"data\"];\n this.__addComments(comments);\n this.__nextRequestParams = resp[\"_links\"][\"next\"];\n if (this.__nextRequestParams === null) {\n loadMoreButton.exclude();\n }\n })\n .finally(() => loadMoreButton.setFetching(false));\n },\n\n __getNextRequest: function() {\n const params = {\n url: {\n studyId: this.__studyId,\n offset: 0,\n limit: 20\n }\n };\n const nextRequestParams = this.__nextRequestParams;\n if (nextRequestParams) {\n params.url.offset = nextRequestParams.offset;\n params.url.limit = nextRequestParams.limit;\n }\n const options = {\n resolveWResponse: true\n };\n return osparc.data.Resources.fetch(\"studyComments\", \"getPage\", params, options);\n },\n\n __addComments: function(comments) {\n const commentsTitle = this.getChildControl(\"title\");\n if (comments.length === 1) {\n commentsTitle.setValue(this.tr(\"1 Comment\"));\n } else if (comments.length > 1) {\n commentsTitle.setValue(comments.length + this.tr(\" Comments\"));\n }\n\n const commentsList = this.getChildControl(\"comments-list\");\n comments.forEach(comment => {\n const commentUi = new osparc.info.CommentUI(comment);\n commentsList.add(commentUi);\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.info.CommentAdd\", {\n extend: qx.ui.core.Widget,\n\n /**\n * @param studyId {String} Study Id\n */\n construct: function(studyId) {\n this.base(arguments);\n\n this.__studyId = studyId;\n\n this._setLayout(new qx.ui.layout.VBox(5));\n\n this.__buildLayout();\n },\n\n events: {\n \"commentAdded\": \"qx.event.type.Event\"\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"add-comment-label\":\n control = new qx.ui.basic.Label().set({\n value: this.tr(\"Add comment\")\n });\n this._add(control);\n break;\n case \"add-comment-layout\": {\n const grid = new qx.ui.layout.Grid(8, 5);\n grid.setColumnWidth(0, 32);\n grid.setColumnFlex(1, 1);\n control = new qx.ui.container.Composite(grid);\n this._add(control, {\n flex: 1\n });\n break;\n }\n case \"thumbnail\": {\n control = new qx.ui.basic.Image().set({\n alignY: \"middle\",\n scale: true,\n allowGrowX: true,\n allowGrowY: true,\n allowShrinkX: true,\n allowShrinkY: true,\n maxWidth: 32,\n maxHeight: 32,\n decorator: \"rounded\",\n });\n const authData = osparc.auth.Data.getInstance();\n const myUsername = authData.getUsername();\n const myEmail = authData.getEmail();\n control.set({\n source: osparc.utils.Avatar.emailToThumbnail(myEmail, myUsername, 32)\n });\n const layout = this.getChildControl(\"add-comment-layout\");\n layout.add(control, {\n row: 0,\n column: 0\n });\n break;\n }\n case \"comment-field\": {\n control = new osparc.editor.MarkdownEditor();\n control.getChildControl(\"buttons\").exclude();\n const layout = this.getChildControl(\"add-comment-layout\");\n layout.add(control, {\n row: 0,\n column: 1\n });\n break;\n }\n case \"add-comment-button\": {\n control = new qx.ui.form.Button(this.tr(\"Add\")).set({\n appearance: \"form-button\",\n allowGrowX: false,\n alignX: \"right\"\n });\n this._add(control);\n break;\n }\n }\n\n return control || this.base(arguments, id);\n },\n\n __buildLayout: function() {\n this.getChildControl(\"thumbnail\");\n const commentField = this.getChildControl(\"comment-field\");\n const addButton = this.getChildControl(\"add-comment-button\");\n addButton.addListener(\"execute\", () => {\n const commentText = commentField.getChildControl(\"text-area\").getValue();\n if (commentText) {\n const params = {\n url: {\n studyId: this.__studyId\n },\n data: {\n \"contents\": commentText\n }\n };\n osparc.data.Resources.fetch(\"studyComments\", \"addComment\", params)\n .then(() => {\n this.fireEvent(\"commentAdded\");\n commentField.getChildControl(\"text-area\").setValue(\"\");\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n });\n }\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget for modifying Service permissions. This is the way for sharing studies\n * - Creates a copy of service data\n * - It allows changing study's access right, so that the study owners can:\n * - Share it with Organizations and/or Organization Members (Editors)\n * - Make other Editors Owner\n * - Remove Editors\n */\n\nqx.Class.define(\"osparc.share.CollaboratorsService\", {\n extend: osparc.share.Collaborators,\n\n /**\n * @param serviceData {Object} Object containing the Service Data\n */\n construct: function(serviceData) {\n this._resourceType = \"service\";\n const serviceDataCopy = osparc.utils.Utils.deepCloneObject(serviceData);\n\n this.base(arguments, serviceDataCopy);\n },\n\n statics: {\n canGroupsWrite: function(accessRights, gIds) {\n let canWrite = false;\n for (let i=0; i {\n newAccessRights[gid] = this.self().getCollaboratorAccessRight();\n });\n osparc.store.Services.patchServiceData(this._serializedDataCopy, \"accessRights\", newAccessRights)\n .then(() => {\n this.fireDataEvent(\"updateAccessRights\", this._serializedDataCopy);\n const text = this.tr(\"Service successfully shared\");\n osparc.FlashMessenger.getInstance().logAs(text);\n this._reloadCollaboratorsList();\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong sharing the Service\"), \"ERROR\");\n });\n },\n\n _deleteMember: function(collaborator, item) {\n if (item) {\n item.setEnabled(false);\n }\n\n const success = delete this._serializedDataCopy[\"accessRights\"][collaborator[\"gid\"]];\n if (!success) {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong removing Member\"), \"ERROR\");\n if (item) {\n item.setEnabled(true);\n }\n return;\n }\n\n osparc.store.Services.patchServiceData(this._serializedDataCopy, \"accessRights\", this._serializedDataCopy[\"accessRights\"])\n .then(() => {\n this.fireDataEvent(\"updateAccessRights\", this._serializedDataCopy);\n osparc.FlashMessenger.getInstance().logAs(collaborator[\"name\"] + this.tr(\" successfully removed\"));\n this._reloadCollaboratorsList();\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong removing \") + collaborator[\"name\"], \"ERROR\");\n })\n .finally(() => {\n if (item) {\n item.setEnabled(true);\n }\n });\n },\n\n __make: function(collaboratorGId, newAccessRights, successMsg, failureMsg, item) {\n item.setEnabled(false);\n this._serializedDataCopy[\"accessRights\"][collaboratorGId] = newAccessRights;\n osparc.store.Services.patchServiceData(this._serializedDataCopy, \"accessRights\", this._serializedDataCopy[\"accessRights\"])\n .then(() => {\n this.fireDataEvent(\"updateAccessRights\", this._serializedDataCopy);\n osparc.FlashMessenger.getInstance().logAs(successMsg);\n this._reloadCollaboratorsList();\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(failureMsg, \"ERROR\");\n })\n .finally(() => item.setEnabled(true));\n },\n\n _promoteToEditor: function(collaborator, item) {\n this.__make(\n collaborator[\"gid\"],\n this.self().getOwnerAccessRight(),\n this.tr(`Successfully promoted to ${osparc.data.Roles.SERVICE[2].label}`),\n this.tr(`Something went wrong promoting to ${osparc.data.Roles.SERVICE[2].label}`),\n item\n );\n },\n\n _promoteToOwner: function(collaborator, item) {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Operation not available\"), \"WARNING\");\n },\n\n _demoteToUser: function(collaborator, item) {\n this.__make(\n collaborator[\"gid\"],\n this.self().getCollaboratorAccessRight(),\n this.tr(`Successfully demoted to ${osparc.data.Roles.SERVICE[1].label}`),\n this.tr(`Something went wrong demoting ${osparc.data.Roles.SERVICE[1].label}`),\n item\n );\n },\n\n _demoteToEditor: function(collaborator, item) {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Operation not available\"), \"WARNING\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.metadata.ClassifiersEditor\", {\n extend: qx.ui.core.Widget,\n\n construct: function(resourceData) {\n this.base(arguments);\n\n if (osparc.utils.Resources.isService(resourceData)) {\n this.__resourceData = osparc.utils.Utils.deepCloneObject(resourceData);\n } else {\n this.__resourceData = osparc.data.model.Study.deepCloneStudyObject(resourceData);\n }\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this.__buildLayout();\n },\n\n events: {\n \"updateClassifiers\": \"qx.event.type.Data\"\n },\n\n members: {\n __resourceData: null,\n __classifiersTree: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"rrid\": {\n control = this.__createRRIDSection();\n break;\n }\n case \"classifiers\": {\n control = this.__createClassifiersTree();\n break;\n }\n case \"buttons\": {\n control = this.__createButtons();\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __buildLayout: function() {\n this._add(this.getChildControl(\"rrid\"));\n this._add(this.getChildControl(\"classifiers\"), {\n flex: 1\n });\n this._add(this.getChildControl(\"buttons\"));\n },\n\n __createRRIDSection: function() {\n const rridLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n\n const logo = new qx.ui.basic.Image(\"osparc/rrid-logo.png\").set({\n height: 22,\n width: 20,\n scale: true\n });\n rridLayout.add(logo);\n\n const linkLabel = new osparc.ui.basic.LinkLabel(this.tr(\"RRID:\"), \"https://scicrunch.org/resources\").set({\n alignY: \"middle\"\n });\n rridLayout.add(linkLabel);\n\n const textField = new qx.ui.form.TextField().set({\n placeholder: \"SCR_018997\"\n });\n rridLayout.add(textField, {\n flex: 1\n });\n\n const addRRIDClassifierBtn = new osparc.ui.form.FetchButton(this.tr(\"Add Classifier\"));\n addRRIDClassifierBtn.addListener(\"execute\", () => {\n this.__addRRIDClassifier(textField.getValue(), addRRIDClassifierBtn);\n }, this);\n rridLayout.add(addRRIDClassifierBtn);\n\n return rridLayout;\n },\n\n __createClassifiersTree: function() {\n const resourceData = this.__resourceData;\n const classifiers = resourceData.classifiers && resourceData.classifiers ? resourceData.classifiers : [];\n const classifiersTree = this.__classifiersTree = new osparc.filter.ClassifiersFilter(\"classifiersEditor\", \"searchBarFilter\", classifiers);\n osparc.store.Store.getInstance().addListener(\"changeClassifiers\", e => {\n classifiersTree.recreateTree();\n }, this);\n return classifiersTree;\n },\n\n __createButtons: function() {\n const buttons = new qx.ui.container.Composite(new qx.ui.layout.HBox(8).set({\n alignX: \"right\"\n }));\n const saveBtn = new osparc.ui.form.FetchButton(this.tr(\"Save\"));\n saveBtn.addListener(\"execute\", () => {\n this.__saveClassifiers(saveBtn);\n }, this);\n buttons.add(saveBtn);\n return buttons;\n },\n\n __addRRIDClassifier: function(rrid, btn) {\n rrid = rrid.replace(\"RRID:\", \"\");\n const params = {\n url: {\n \"rrid\": rrid\n }\n };\n btn.setFetching(true);\n osparc.data.Resources.fetch(\"classifiers\", \"postRRID\", params)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"RRID classifier successfully added\"), \"INFO\");\n osparc.store.Store.getInstance().getAllClassifiers(true);\n })\n .catch(err => {\n osparc.FlashMessenger.getInstance().logAs(err, \"ERROR\");\n })\n .finally(() => {\n btn.setFetching(false);\n });\n },\n\n __saveClassifiers: function(saveBtn) {\n saveBtn.setFetching(true);\n\n const newClassifiers = this.__classifiersTree.getCheckedClassifierIDs();\n if (osparc.utils.Resources.isStudy(this.__resourceData) || osparc.utils.Resources.isTemplate(this.__resourceData)) {\n osparc.store.Study.patchStudyData(this.__resourceData, \"classifiers\", newClassifiers)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Classifiers successfully edited\"));\n saveBtn.setFetching(false);\n this.fireDataEvent(\"updateClassifiers\", this.__resourceData);\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong editing Classifiers\"), \"ERROR\");\n });\n } else {\n const serviceDataCopy = osparc.utils.Utils.deepCloneObject(this.__resourceData);\n osparc.store.Services.patchServiceData(serviceDataCopy, \"classifiers\", newClassifiers)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Classifiers successfully edited\"));\n saveBtn.setFetching(false);\n this.fireDataEvent(\"updateClassifiers\", serviceDataCopy);\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong editing Classifiers\"), \"ERROR\");\n });\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.metadata.ClassifiersViewer\", {\n extend: qx.ui.core.Widget,\n\n construct: function(studyData) {\n this.base(arguments);\n\n let studyDataCopy = null;\n if (osparc.utils.Resources.isService(studyData)) {\n studyDataCopy = osparc.utils.Utils.deepCloneObject(studyData);\n } else {\n studyDataCopy = osparc.data.model.Study.deepCloneStudyObject(studyData);\n }\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this.__createClassifiersTree(studyDataCopy);\n },\n\n members: {\n __createClassifiersTree: function(studyData) {\n const selectedClassifiers = studyData.classifiers && studyData.classifiers ? studyData.classifiers : [];\n osparc.utils.Classifiers.getClassifiersAsTree(false, selectedClassifiers)\n .then(classifiers => {\n this._removeAll();\n let control = null;\n if (classifiers && classifiers.children.length) {\n control = new osparc.ui.tree.ClassifiersTree(classifiers);\n } else {\n control = new qx.ui.basic.Label(this.tr(\"No Classifiers assigned\"));\n }\n this._add(control, {\n flex: 1\n });\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * @asset(form/resource-quality.json)\n * @asset(object-path/object-path-0-11-4.min.js)\n * @asset(ajv/ajv-6-11-0.min.js)\n * @ignore(Ajv)\n */\n\nqx.Class.define(\"osparc.metadata.QualityEditor\", {\n extend: qx.ui.core.Widget,\n\n /**\n * @param resourceData {Object} Object containing the Resource Data\n */\n construct: function(resourceData) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(8));\n\n this.set({\n height: 600\n });\n\n this.__initResourceData(resourceData);\n },\n\n events: {\n \"updateQuality\": \"qx.event.type.Data\"\n },\n\n properties: {\n mode: {\n check: [\"display\", \"edit\"],\n init: \"display\",\n nullable: false,\n event: \"changeMode\"\n }\n },\n\n statics: {\n GridPos: {\n rule: 0,\n clCurrent: 1,\n clTarget: 2,\n reference: 3,\n edit: 4\n }\n },\n\n members: {\n __resourceData: null,\n __copyQualityData: null,\n __schema: null,\n __enabledQuality: null,\n __TSRSection: null,\n __tsrGrid: null,\n\n __initResourceData: function(resourceData) {\n if (!(\"quality\" in resourceData)) {\n osparc.FlashMessenger.logAs(this.tr(\"Quality Assessment data not found\"), \"ERROR\");\n return;\n }\n\n this.__resourceData = resourceData;\n this.__copyQualityData = osparc.utils.Utils.deepCloneObject(resourceData[\"quality\"]);\n\n const ajvLoader = new qx.util.DynamicScriptLoader([\n \"/resource/ajv/ajv-6-11-0.min.js\",\n \"/resource/object-path/object-path-0-11-4.min.js\"\n ]);\n ajvLoader.addListener(\"ready\", () => {\n this.__ajv = new Ajv();\n const schemaUrl = \"/resource/form/resource-quality.json\";\n osparc.utils.Utils.fetchJSON(schemaUrl)\n .then(schema => {\n if (this.__validate(schema.$schema, schema)) {\n // Schema is valid\n const data = resourceData[\"quality\"];\n if (this.__validate(schema, data)) {\n // Validate data if present\n this.__resourceData = resourceData;\n }\n return schema;\n }\n return null;\n })\n .then(schema => {\n this.__render(schema);\n this.setMode(\"display\");\n })\n .catch(err => {\n console.error(err);\n this.__render(null);\n });\n }, this);\n ajvLoader.addListener(\"failed\", console.error, this);\n this.__render = this.__render.bind(this);\n ajvLoader.start();\n },\n\n /**\n * Uses Ajv library to validate data against a schema.\n *\n * @param {Object} schema JSONSchema to validate against\n * @param {Object} data Data to be validated\n * @param {Boolean} showMessage Determines whether an error message is displayed to the user\n */\n __validate: function(schema, data, showMessage=true) {\n this.__ajv.validate(schema, data);\n const errors = this.__ajv.errors;\n if (errors) {\n console.error(errors);\n if (showMessage) {\n let message = `${errors[0].dataPath} ${errors[0].message}`;\n osparc.FlashMessenger.logAs(message, \"ERROR\");\n }\n return false;\n }\n return true;\n },\n\n __render: function(schema) {\n if (schema) {\n this._removeAll();\n\n this.__schema = schema;\n\n if (this.__canIWrite()) {\n this.__createEditButtons();\n }\n\n this.__createTSRSection();\n\n this.__createEnableSection();\n if (!this.__canIWrite()) {\n this.__enabledQuality.exclude();\n }\n\n this.__populateForms();\n } else {\n osparc.FlashMessenger.logAs(this.tr(\"There was an error validating the metadata.\"), \"ERROR\");\n }\n },\n\n __createEnableSection: function() {\n const enabledQuality = this.__enabledQuality = new qx.ui.form.CheckBox(this.tr(\"Enabled\"));\n this.bind(\"mode\", enabledQuality, \"enabled\", {\n converter: value => value === \"edit\"\n });\n this._add(enabledQuality);\n },\n\n __createTSRSection: function() {\n const box = this.__TSRSection = new qx.ui.groupbox.GroupBox(this.tr(\"Ten Simple Rules\"));\n box.getChildControl(\"legend\").set({\n font: \"text-14\"\n });\n box.getChildControl(\"frame\").set({\n backgroundColor: \"transparent\"\n });\n box.setLayout(new qx.ui.layout.VBox(10));\n\n const helpText = \"[10 Simple Rules with Conformance Rubric](https://www.imagwiki.nibib.nih.gov/content/10-simple-rules-conformance-rubric)\";\n const helpTextMD = new osparc.ui.markdown.Markdown(helpText).set({\n noMargin: true,\n });\n box.add(helpTextMD);\n\n const grid = new qx.ui.layout.Grid(10, 6);\n Object.values(this.self().GridPos).forEach(gridPos => {\n grid.setColumnAlign(gridPos, \"left\", \"middle\");\n });\n grid.setColumnFlex(this.self().GridPos.reference, 1);\n this.__tsrGrid = new qx.ui.container.Composite(grid);\n box.add(this.__tsrGrid);\n\n this._add(box);\n },\n\n __populateForms: function() {\n this.__populateEnable();\n this.__populateTSR();\n },\n\n __populateEnable: function() {\n this.__enabledQuality.setValue(this.__copyQualityData[\"enabled\"]);\n this.__enabledQuality.addListener(\"changeValue\", e => {\n const value = e.getData();\n this.__copyQualityData[\"enabled\"] = value;\n }, this);\n this.__enabledQuality.bind(\"value\", this.__TSRSection, \"visibility\", {\n converter: value => value ? \"visible\" : \"excluded\"\n });\n },\n\n __populateTSR: function() {\n this.__tsrGrid.removeAll();\n this.__populateTSRHeaders();\n this.__populateTSRData();\n },\n\n __populateTSRHeaders: function() {\n const schemaRules = this.__schema[\"properties\"][\"tsr_current\"][\"properties\"];\n\n const headerTSR = new qx.ui.basic.Label(this.tr(\"Rules\")).set({\n font: \"text-14\"\n });\n this.__tsrGrid.add(headerTSR, {\n row: 0,\n column: this.self().GridPos.rule\n });\n\n const headerCL = new qx.ui.basic.Label(this.tr(\"Conformance Level\")).set({\n font: \"text-14\"\n });\n this.__tsrGrid.add(headerCL, {\n row: 0,\n column: this.self().GridPos.clCurrent\n });\n\n const headerTargetCL = new qx.ui.basic.Label(this.tr(\"Target\")).set({\n toolTipText: this.tr(\"Conformance Level Target\"),\n font: \"text-14\"\n });\n this.bind(\"mode\", headerTargetCL, \"visibility\", {\n converter: mode => mode === \"edit\" ? \"visible\" : \"excluded\"\n });\n this.__tsrGrid.add(headerTargetCL, {\n row: 0,\n column: this.self().GridPos.clTarget\n });\n\n const headerRef = new qx.ui.basic.Label(this.tr(\"References\")).set({\n font: \"text-14\"\n });\n this.__tsrGrid.add(headerRef, {\n row: 0,\n column: this.self().GridPos.reference\n });\n\n let row = 1;\n Object.values(schemaRules).forEach(rule => {\n const label = new qx.ui.basic.Label(rule.title).set({\n marginTop: 5\n });\n const ruleWHint = new osparc.form.FieldWHint(null, rule.description, label).set({\n allowGrowX: false\n });\n this.__tsrGrid.add(ruleWHint, {\n row,\n column: this.self().GridPos.rule\n });\n row++;\n });\n const label = new qx.ui.basic.Label(this.tr(\"TSR SCORE\")).set({\n font: \"text-14\"\n });\n this.__tsrGrid.add(label, {\n row,\n column: this.self().GridPos.rule\n });\n row++;\n },\n\n __populateTSRData: function() {\n const copyTSRCurrent = this.__copyQualityData[\"tsr_current\"];\n const copyTSRTarget = this.__copyQualityData[\"tsr_target\"];\n const tsrTotalRating = new osparc.ui.basic.StarsRating();\n tsrTotalRating.set({\n nStars: 4,\n showScore: true,\n marginTop: 5\n });\n const updateTotalTSR = () => {\n osparc.ui.basic.StarsRating.scoreToStarsRating(copyTSRCurrent, copyTSRTarget, tsrTotalRating);\n };\n updateTotalTSR();\n\n let row = 1;\n const schemaRules = this.__schema[\"properties\"][\"tsr_current\"][\"properties\"];\n Object.keys(schemaRules).forEach(ruleKey => {\n const currentRule = copyTSRCurrent[ruleKey];\n\n // current\n const currentRuleLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignY: \"middle\"\n }));\n const updateCurrentLevel = value => {\n currentRuleLayout.removeAll();\n const ruleRating = new osparc.ui.basic.StarsRating();\n ruleRating.set({\n maxScore: copyTSRTarget[ruleKey].level,\n nStars: copyTSRTarget[ruleKey].level,\n score: value,\n marginTop: 5,\n showEmptyStars: true\n });\n this.bind(\"mode\", ruleRating, \"mode\");\n ruleRating.addListener(\"changeScore\", e => {\n const newScore = e.getData();\n copyTSRCurrent[ruleKey].level = newScore;\n updateCurrentLevel(newScore);\n updateTotalTSR();\n }, this);\n const confLevel = osparc.metadata.Quality.findConformanceLevel(value);\n let hint = confLevel.title + \"
\" + confLevel.description;\n if (copyTSRTarget[ruleKey].level === 0) {\n hint = this.tr(\"Not Applicable\");\n }\n const ruleRatingWHint = new osparc.form.FieldWHint(null, hint, ruleRating).set({\n hintPosition: \"left\"\n });\n currentRuleLayout.add(ruleRatingWHint);\n };\n if (currentRule.level !== undefined) {\n updateCurrentLevel(currentRule.level);\n this.__tsrGrid.add(currentRuleLayout, {\n row,\n column: this.self().GridPos.clCurrent\n });\n }\n\n // target\n const targetRule = copyTSRTarget[ruleKey];\n if (targetRule.level !== undefined) {\n const targetsBox = new qx.ui.form.SelectBox();\n const conformanceLevels = osparc.metadata.Quality.getConformanceLevel();\n Object.values(conformanceLevels).forEach(conformanceLevel => {\n let text = `${conformanceLevel.level} - `;\n if (conformanceLevel.level === 0) {\n text += \"Not Applicable\";\n } else {\n text += conformanceLevel.title;\n }\n const targetItem = new qx.ui.form.ListItem(text);\n targetItem.level = conformanceLevel.level;\n targetsBox.add(targetItem);\n if (targetRule.level === conformanceLevel.level) {\n targetsBox.setSelection([targetItem]);\n }\n });\n targetsBox.addListener(\"changeSelection\", e => {\n const selection = e.getData();\n if (selection.length) {\n const newMaxScore = selection[0].level;\n copyTSRTarget[ruleKey].level = newMaxScore;\n copyTSRCurrent[ruleKey].level = Math.min(newMaxScore, copyTSRCurrent[ruleKey].level);\n updateCurrentLevel(copyTSRCurrent[ruleKey].level);\n updateTotalTSR();\n }\n }, this);\n this.bind(\"mode\", targetsBox, \"visibility\", {\n converter: mode => mode === \"edit\" ? \"visible\" : \"excluded\"\n });\n this.__tsrGrid.add(targetsBox, {\n row,\n column: this.self().GridPos.clTarget\n });\n }\n\n // reference\n if (currentRule.references !== undefined) {\n const referenceMD = new osparc.ui.markdown.Markdown(currentRule.references).set({\n noMargin: true,\n });\n this.__tsrGrid.add(referenceMD, {\n row,\n column: this.self().GridPos.reference\n });\n\n const button = osparc.utils.Utils.getEditButton();\n button.addListener(\"execute\", () => {\n const title = this.tr(\"Edit References\");\n const textEditor = new osparc.editor.MarkdownEditor(currentRule.references);\n textEditor.getChildControl(\"accept-button\").setLabel(this.tr(\"Accept\"));\n const win = osparc.ui.window.Window.popUpInWindow(textEditor, title, 400, 300);\n textEditor.addListener(\"textChanged\", e => {\n const newText = e.getData();\n referenceMD.setValue(newText);\n currentRule.references = newText;\n win.close();\n }, this);\n textEditor.addListener(\"cancel\", () => {\n win.close();\n }, this);\n }, this);\n this.bind(\"mode\", button, \"visibility\", {\n converter: mode => mode === \"edit\" ? \"visible\" : \"excluded\"\n });\n this.__tsrGrid.add(button, {\n row,\n column: this.self().GridPos.edit\n });\n }\n\n row++;\n });\n\n this.__tsrGrid.add(tsrTotalRating, {\n row,\n column: this.self().GridPos.clCurrent\n });\n },\n\n __createEditButtons: function() {\n const editButton = new qx.ui.form.Button(this.tr(\"Edit\"));\n this.bind(\"mode\", editButton, \"visibility\", {\n converter: value => value === \"display\" ? \"visible\" : \"excluded\"\n });\n editButton.addListener(\"execute\", () => this.setMode(\"edit\"), this);\n\n const saveButton = new osparc.ui.form.FetchButton(this.tr(\"Save\")).set({\n appearance: \"form-button\"\n });\n this.bind(\"mode\", saveButton, \"visibility\", {\n converter: value => value === \"edit\" ? \"visible\" : \"excluded\"\n });\n saveButton.addListener(\"execute\", () => this.__save(saveButton), this);\n\n const cancelButton = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"form-button-text\"\n });\n this.bind(\"mode\", cancelButton, \"visibility\", {\n converter: value => value === \"edit\" ? \"visible\" : \"excluded\"\n });\n cancelButton.addListener(\"execute\", () => this.setMode(\"display\"), this);\n\n const buttonsToolbar = new qx.ui.container.Composite(new qx.ui.layout.HBox(10));\n buttonsToolbar.add(cancelButton);\n buttonsToolbar.add(editButton);\n buttonsToolbar.add(saveButton);\n this._add(buttonsToolbar);\n },\n\n __save: function(btn) {\n const newQuality = {\n \"enabled\": this.__copyQualityData[\"enabled\"],\n \"tsr_current\": this.__copyQualityData[\"tsr_current\"],\n \"tsr_target\": this.__copyQualityData[\"tsr_target\"]\n };\n const patchData = {\n \"quality\": newQuality\n };\n if (this.__validate(this.__schema, patchData[\"quality\"])) {\n btn.setFetching(true);\n if (osparc.utils.Resources.isService(this.__resourceData)) {\n const serviceDataCopy = osparc.utils.Utils.deepCloneObject(this.__resourceData);\n osparc.store.Services.patchServiceData(serviceDataCopy, \"quality\", newQuality)\n .then(() => {\n this.__initResourceData(serviceDataCopy);\n this.fireDataEvent(\"updateQuality\", serviceDataCopy);\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"There was an error while updating the Quality Assessment.\"), \"ERROR\");\n })\n .finally(() => btn.setFetching(false));\n } else {\n osparc.store.Study.patchStudyData(this.__resourceData, \"quality\", newQuality)\n .then(() => {\n this.__initResourceData(this.__resourceData);\n this.fireDataEvent(\"updateQuality\", this.__resourceData);\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"There was an error while updating the Quality Assessment.\"), \"ERROR\");\n })\n .finally(() => btn.setFetching(false));\n }\n }\n },\n\n __canIWrite: function() {\n const myGid = osparc.auth.Data.getInstance().getGroupId();\n if (myGid) {\n if (osparc.utils.Resources.isService(this.__resourceData)) {\n return osparc.service.Utils.canIWrite(this.__resourceData[\"accessRights\"]);\n }\n return osparc.data.model.Study.canIWrite(this.__resourceData[\"accessRights\"]);\n }\n return false;\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n * Odei Maiz (odeimaiz)\n */\n\n/**\n * Tag manager server to manage one resource's related tags.\n */\nqx.Class.define(\"osparc.form.tag.TagManager\", {\n extend: qx.ui.core.Widget,\n\n construct: function(studyData) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox());\n\n this.__selectedTags = new qx.data.Array();\n this.__renderLayout();\n this.__attachEventHandlers();\n\n this.setStudyData(studyData);\n },\n\n events: {\n \"updateTags\": \"qx.event.type.Data\",\n \"changeSelected\": \"qx.event.type.Data\"\n },\n\n properties: {\n liveUpdate: {\n check: \"Boolean\",\n event: \"changeLiveUpdate\",\n init: false\n }\n },\n\n statics: {\n popUpInWindow: function(tagManager, title) {\n if (!title) {\n title = qx.locale.Manager.tr(\"Apply Tags\");\n }\n return osparc.ui.window.Window.popUpInWindow(tagManager, title, 280, null).set({\n allowMinimize: false,\n allowMaximize: false,\n showMinimize: false,\n showMaximize: false,\n clickAwayClose: true,\n movable: true,\n resizable: true,\n showClose: true\n });\n }\n },\n\n members: {\n __studyData: null,\n __resourceId: null,\n __selectedTags: null,\n __tagsContainer: null,\n __addTagButton: null,\n\n __renderLayout: function() {\n const filter = new osparc.filter.TextFilter(\"name\", \"studyBrowserTagManager\").set({\n allowStretchX: true,\n margin: [0, 10, 5, 10]\n });\n this._add(filter);\n\n const tagsContainer = this.__tagsContainer = new qx.ui.container.Composite(new qx.ui.layout.VBox());\n const scrollTags = new qx.ui.container.Scroll();\n scrollTags.add(tagsContainer);\n this._add(scrollTags, {\n flex: 1\n });\n\n const addTagButton = this.__addTagButton = new qx.ui.form.Button().set({\n appearance: \"form-button-outlined\",\n label: this.tr(\"New Tag\"),\n icon: \"@FontAwesome5Solid/plus/14\",\n alignX: \"center\",\n allowGrowX: false\n });\n addTagButton.addListener(\"execute\", () => {\n this.__repopulateTags();\n const newItem = new osparc.form.tag.TagItem().set({\n mode: osparc.form.tag.TagItem.modes.EDIT\n });\n newItem.addListener(\"tagSaved\", () => this.__repopulateTags(), this);\n newItem.addListener(\"cancelNewTag\", e => tagsContainer.remove(e.getTarget()), this);\n newItem.addListener(\"deleteTag\", e => tagsContainer.remove(e.getTarget()), this);\n tagsContainer.add(newItem);\n\n // scroll down\n const height = scrollTags.getSizeHint().height;\n scrollTags.scrollToY(height);\n });\n this._add(addTagButton);\n\n const buttons = new qx.ui.container.Composite(new qx.ui.layout.HBox().set({\n alignX: \"right\"\n }));\n const saveButton = new osparc.ui.form.FetchButton(this.tr(\"Save\"));\n saveButton.set({\n appearance: \"strong-button\"\n });\n osparc.utils.Utils.setIdToWidget(saveButton, \"saveTagsBtn\");\n saveButton.addListener(\"execute\", () => this.__save(saveButton), this);\n buttons.add(saveButton);\n this.bind(\"liveUpdate\", buttons, \"visibility\", {\n converter: value => value ? \"excluded\" : \"visible\"\n });\n this._add(buttons);\n },\n\n setStudyData: function(studyData) {\n this.__studyData = studyData;\n this.__resourceId = studyData[\"uuid\"];\n this.__selectedTags.removeAll();\n this.__selectedTags.append(studyData[\"tags\"]);\n this.__repopulateTags();\n },\n\n __repopulateTags: function() {\n this.__tagsContainer.removeAll();\n const tags = osparc.store.Tags.getInstance().getTags();\n const tagButtons = [];\n tags.forEach(tag => tagButtons.push(this.__tagButton(tag)));\n // list the selected tags first\n tagButtons.sort((a, b) => b.getValue() - a.getValue());\n tagButtons.forEach(tagButton => this.__tagsContainer.add(tagButton));\n },\n\n __tagButton: function(tag) {\n const tagId = tag.getTagId();\n const tagButton = new osparc.form.tag.TagToggleButton(tag, this.__selectedTags.includes(tagId));\n tagButton.addListener(\"changeValue\", evt => {\n const selected = evt.getData();\n if (this.isLiveUpdate()) {\n tagButton.setFetching(true);\n if (selected) {\n this.__saveAddTag(tagId, tagButton);\n } else {\n this.__saveRemoveTag(tagId, tagButton);\n }\n } else if (selected) {\n this.__selectedTags.push(tagId);\n } else {\n this.__selectedTags.remove(tagId);\n }\n }, this);\n tagButton.subscribeToFilterGroup(\"studyBrowserTagManager\");\n return tagButton;\n },\n\n __getAddTagPromise: function(tagId) {\n const params = {\n url: {\n tagId,\n studyId: this.__resourceId\n }\n };\n return osparc.data.Resources.fetch(\"studies\", \"addTag\", params);\n },\n\n __getRemoveTagPromise: function(tagId) {\n const params = {\n url: {\n tagId,\n studyId: this.__resourceId\n }\n };\n return osparc.data.Resources.fetch(\"studies\", \"removeTag\", params);\n },\n\n __saveAddTag: function(tagId, tagButton) {\n this.__getAddTagPromise(tagId)\n .then(() => this.__selectedTags.push(tagId))\n .catch(err => {\n console.error(err);\n tagButton.setValue(false);\n })\n .finally(() => tagButton.setFetching(false));\n },\n\n __saveRemoveTag: function(tagId, tagButton) {\n this.__getRemoveTagPromise(tagId)\n .then(() => this.__selectedTags.remove(tagId))\n .catch(err => {\n console.error(err);\n tagButton.setValue(true);\n })\n .finally(() => tagButton.setFetching(false));\n },\n\n __save: async function(saveButton) {\n saveButton.setFetching(true);\n\n // call them sequentially\n let updatedStudy = null;\n for (let i=0; i updatedData);\n }\n }\n for (let i=0; i updatedData);\n }\n }\n\n saveButton.setFetching(false);\n if (updatedStudy) {\n this.fireDataEvent(\"updateTags\", updatedStudy);\n }\n },\n\n __attachEventHandlers: function() {\n this.__selectedTags.addListener(\"change\", evt => {\n this.fireDataEvent(\"changeSelected\", {\n ...evt.getData(),\n selected: this.__selectedTags.toArray()\n });\n }, this);\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2022 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Odei Maiz (odeimaiz)\n */\n\nqx.Class.define(\"osparc.metadata.ServicesInStudyBootOpts\", {\n extend: osparc.metadata.ServicesInStudy,\n\n /**\n * @param studyData {Object|osparc.data.model.Study} studyData (metadata)\n */\n construct: function(studyData) {\n this.base(arguments, studyData);\n },\n\n statics: {\n GRID_POS: {\n ...osparc.metadata.ServicesInStudy.GRID_POS,\n BOOT_MODE: Object.keys(osparc.metadata.ServicesInStudy.GRID_POS).length\n },\n\n anyBootOptions: function(studyData) {\n if (\"workbench\" in studyData) {\n for (const nodeId in studyData[\"workbench\"]) {\n const node = studyData[\"workbench\"][nodeId];\n const metadata = osparc.store.Services.getMetadata(node[\"key\"], node[\"version\"]);\n if (metadata && osparc.data.model.Node.hasBootModes(metadata)) {\n return true;\n }\n }\n }\n return false;\n }\n },\n\n members: {\n _populateIntroText: function() {\n const text = this.tr(\"Here you can select in which mode the services will be started:\");\n const introText = new qx.ui.basic.Label(text).set({\n font: \"text-14\"\n });\n this._introText.add(introText);\n },\n\n __updateBootMode: function(nodeId, newBootModeId) {\n const workbench = this._studyData[\"workbench\"];\n let newBootOptions = \"bootOptions\" in workbench[nodeId] ? osparc.utils.Utils.deepCloneObject(workbench[nodeId][\"bootOptions\"]) : {};\n newBootOptions[\"boot_mode\"] = newBootModeId;\n\n this._patchNode(nodeId, {\n \"bootOptions\": newBootOptions\n });\n },\n\n _populateHeader: function() {\n this.base(arguments);\n\n this._servicesGrid.add(new qx.ui.basic.Label(this.tr(\"Boot Mode\")).set({\n font: \"title-14\",\n toolTipText: this.tr(\"Select boot type\")\n }), {\n row: 0,\n column: this.self().GRID_POS.BOOT_MODE\n });\n },\n\n _populateRows: function() {\n this.base(arguments);\n\n let i = 0;\n const workbench = this._studyData[\"workbench\"];\n for (const nodeId in workbench) {\n i++;\n const node = workbench[nodeId];\n const nodeMetadata = osparc.store.Services.getMetadata(node[\"key\"], node[\"version\"]);\n if (nodeMetadata === null) {\n osparc.FlashMessenger.logAs(this.tr(\"Some service information could not be retrieved\"), \"WARNING\");\n break;\n }\n const canIWrite = osparc.data.model.Study.canIWrite(this._studyData[\"accessRights\"]);\n const hasBootModes = osparc.data.model.Node.hasBootModes(nodeMetadata);\n if (canIWrite && hasBootModes) {\n const bootModeSB = osparc.data.model.Node.getBootModesSelectBox(nodeMetadata, workbench, nodeId);\n bootModeSB.addListener(\"changeSelection\", e => {\n const selection = e.getData();\n if (selection.length) {\n const newBootModeId = selection[0].bootModeId;\n this.__updateBootMode(nodeId, newBootModeId);\n }\n }, this);\n this._servicesGrid.add(bootModeSB, {\n row: i,\n column: this.self().GRID_POS.BOOT_MODE\n });\n }\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.info.StudyUtils\", {\n type: \"static\",\n\n statics: {\n /**\n * @param study {osparc.data.model.Study} Study Model\n */\n createTitle: function(study) {\n const title = osparc.info.Utils.createTitle();\n study.bind(\"name\", title, \"value\");\n return title;\n },\n\n /**\n * @param study {osparc.data.model.Study} Study Model\n */\n createUuid: function(study) {\n const uuid = osparc.info.Utils.createLabel();\n study.bind(\"uuid\", uuid, \"value\");\n study.bind(\"uuid\", uuid, \"toolTipText\");\n return uuid;\n },\n\n /**\n * @param study {osparc.data.model.Study} Study Model\n */\n createOwner: function(study) {\n const owner = new qx.ui.basic.Label();\n study.bind(\"prjOwner\", owner, \"value\", {\n converter: email => {\n if (email === osparc.auth.Data.getInstance().getEmail()) {\n return qx.locale.Manager.tr(\"me\");\n }\n return osparc.utils.Utils.getNameFromEmail(email);\n },\n onUpdate: (source, target) => {\n target.setToolTipText(source.getPrjOwner());\n }\n });\n return owner;\n },\n\n /**\n * @param study {osparc.data.model.Study} Study Model\n */\n createCreationDate: function(study) {\n const creationDate = new qx.ui.basic.Label();\n study.bind(\"creationDate\", creationDate, \"value\", {\n converter: date => osparc.utils.Utils.formatDateAndTime(date)\n });\n return creationDate;\n },\n\n /**\n * @param study {osparc.data.model.Study} Study Model\n */\n createLastChangeDate: function(study) {\n const lastChangeDate = new qx.ui.basic.Label();\n study.bind(\"lastChangeDate\", lastChangeDate, \"value\", {\n converter: date => osparc.utils.Utils.formatDateAndTime(date)\n });\n return lastChangeDate;\n },\n\n /**\n * @param study {osparc.data.model.Study} Study Model\n */\n createAccessRights: function(study) {\n const accessRights = new qx.ui.basic.Label();\n let permissions = \"\";\n const myGID = osparc.auth.Data.getInstance().getGroupId();\n const ar = study.getAccessRights();\n if (myGID in ar) {\n if (ar[myGID][\"delete\"]) {\n permissions = qx.locale.Manager.tr(\"Owner\");\n } else if (ar[myGID][\"write\"]) {\n permissions = qx.locale.Manager.tr(\"Editor\");\n } else if (ar[myGID][\"read\"]) {\n permissions = qx.locale.Manager.tr(\"User\");\n }\n }\n accessRights.setValue(permissions);\n return accessRights;\n },\n\n /**\n * @param study {osparc.data.model.Study} Study Model\n */\n createClassifiers: function(study) {\n const nClassifiers = new qx.ui.basic.Label();\n study.bind(\"classifiers\", nClassifiers, \"value\", {\n converter: classifiers => `(${classifiers.length})`\n });\n return nClassifiers;\n },\n\n /**\n * @param study {osparc.data.model.Study} Study Model\n */\n createQuality: function(study) {\n const tsrLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(2)).set({\n toolTipText: qx.locale.Manager.tr(\"Ten Simple Rules score\")\n });\n const addStars = model => {\n tsrLayout.removeAll();\n const quality = model.getQuality();\n if (osparc.metadata.Quality.isEnabled(quality)) {\n const tsrRating = new osparc.ui.basic.StarsRating();\n tsrRating.set({\n nStars: 4,\n showScore: true\n });\n osparc.ui.basic.StarsRating.scoreToStarsRating(quality[\"tsr_current\"], quality[\"tsr_target\"], tsrRating);\n tsrLayout.add(tsrRating);\n } else {\n tsrLayout.exclude();\n }\n };\n study.addListener(\"changeQuality\", () => addStars(study), this);\n addStars(study);\n return tsrLayout;\n },\n\n /**\n * @param study {osparc.data.model.Study} Study Model\n * @param maxWidth {Number} thumbnail's maxWidth\n * @param maxHeight {Number} thumbnail's maxHeight\n */\n createThumbnail: function(study, maxWidth, maxHeight) {\n const thumbnail = osparc.info.Utils.createThumbnail(maxWidth, maxHeight);\n const noThumbnail = \"osparc/no_photography_black_24dp.svg\";\n study.bind(\"thumbnail\", thumbnail, \"source\", {\n converter: thumb => thumb ? thumb : noThumbnail,\n onUpdate: (source, target) => {\n if (source.getThumbnail() === \"\") {\n target.getChildControl(\"image\").set({\n minWidth: 120,\n minHeight: 139\n });\n }\n }\n });\n return thumbnail;\n },\n\n /**\n * @param study {osparc.data.model.Study} Study Model\n * @param maxHeight {Number} description's maxHeight\n */\n createDescriptionMD: function(study, maxHeight) {\n const description = new osparc.ui.markdown.Markdown();\n study.bind(\"description\", description, \"value\", {\n converter: desc => desc ? desc : \"Add description\"\n });\n const scrollContainer = new qx.ui.container.Scroll();\n if (maxHeight) {\n scrollContainer.setMaxHeight(maxHeight);\n }\n scrollContainer.add(description);\n return scrollContainer;\n },\n\n /**\n * @param study {osparc.data.model.Study} Study Model\n */\n createDisableServiceAutoStart: function(study) {\n // the wording is now opposite to the value of the property\n // Autostart services to true by default\n const devObj = study.getDev();\n const cb = new qx.ui.form.CheckBox().set({\n value: \"disableServiceAutoStart\" in devObj ? !devObj[\"disableServiceAutoStart\"] : true,\n label: qx.locale.Manager.tr(\"Autostart services\"),\n font: \"text-14\",\n toolTipText: qx.locale.Manager.tr(\"Disabling this will help opening and closing studies/projects faster\"),\n iconPosition: \"right\"\n });\n cb.addListener(\"changeValue\", e => {\n const newVal = e.getData();\n const devObjCopy = osparc.utils.Utils.deepCloneObject(devObj);\n devObjCopy[\"disableServiceAutoStart\"] = !newVal;\n study.patchStudy({\"dev\": devObjCopy});\n });\n return cb;\n },\n\n /**\n * @param study {osparc.data.model.Study} Study Model\n */\n createTags: function(study) {\n const tagsContainer = new qx.ui.container.Composite(new qx.ui.layout.Flow(5, 5)).set({\n maxWidth: 420\n });\n\n const addTags = model => {\n tagsContainer.removeAll();\n const noTagsLabel = new qx.ui.basic.Label(qx.locale.Manager.tr(\"Add tags\"));\n tagsContainer.add(noTagsLabel);\n osparc.store.Tags.getInstance().getTags().filter(tag => model.getTags().includes(tag.getTagId()))\n .forEach(selectedTag => {\n if (tagsContainer.indexOf(noTagsLabel) > -1) {\n tagsContainer.remove(noTagsLabel);\n }\n tagsContainer.add(new osparc.ui.basic.Tag(selectedTag));\n });\n };\n study.addListener(\"changeTags\", () => addTags(study), this);\n osparc.store.Tags.getInstance().addListener(\"tagsChanged\", () => addTags(study), this);\n addTags(study);\n\n return tagsContainer;\n },\n\n __titleWithEditLayout: function(data, titleWidth = 75) {\n const titleLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n const hasButton = Boolean(data.action && data.action.button);\n // use the width for aligning the buttons\n const title = new qx.ui.basic.Label(data.label).set({\n allowGrowX: true,\n maxWidth: hasButton ? titleWidth : titleWidth + 35 // spacer for the button\n });\n titleLayout.add(title, {\n flex: 1\n });\n if (hasButton) {\n const button = data.action.button;\n titleLayout.add(button);\n button.addListener(\"execute\", () => {\n const cb = data.action.callback;\n if (typeof cb === \"string\") {\n data.action.ctx.fireEvent(cb);\n } else {\n cb.call(data.action.ctx);\n }\n }, this);\n }\n return titleLayout;\n },\n\n infoElementsToLayout: function(extraInfos) {\n const positions = {\n TITLE: {\n column: 0,\n row: 0,\n },\n THUMBNAIL: {\n column: 0,\n row: 1,\n },\n DESCRIPTION: {\n column: 0,\n row: 2,\n },\n AUTHOR: {\n inline: true,\n column: 0,\n row: 0,\n },\n CREATED: {\n inline: true,\n column: 0,\n row: 1,\n },\n MODIFIED: {\n inline: true,\n column: 0,\n row: 2,\n },\n ACCESS_RIGHTS: {\n inline: true,\n column: 0,\n row: 3,\n },\n TAGS: {\n inline: true,\n column: 0,\n row: 4,\n },\n QUALITY: {\n inline: true,\n column: 0,\n row: 5,\n },\n CLASSIFIERS: {\n inline: true,\n column: 0,\n row: 6,\n },\n LOCATION: {\n inline: true,\n column: 0,\n row: 7,\n },\n };\n\n const mainInfoGrid = new qx.ui.layout.Grid(15, 5);\n mainInfoGrid.setColumnAlign(0, \"left\", \"top\");\n mainInfoGrid.setColumnFlex(0, 1);\n const mainInfoLayout = new qx.ui.container.Composite(mainInfoGrid);\n\n const extraInfoGrid = new qx.ui.layout.Grid(15, 5);\n const extraInfoLayout = new qx.ui.container.Composite(extraInfoGrid);\n extraInfoGrid.setColumnFlex(0, 1);\n\n let row = 0;\n let row2 = 0;\n Object.keys(positions).forEach(key => {\n if (key in extraInfos) {\n const extraInfo = extraInfos[key];\n const gridInfo = positions[key];\n\n if (gridInfo.inline) {\n const titleLayout = this.__titleWithEditLayout(extraInfo);\n if (extraInfo.action && extraInfo.action.button) {\n extraInfo.action.button.set({\n marginRight: 15\n });\n }\n titleLayout.add(extraInfo.view, {\n flex: 1\n });\n extraInfoLayout.add(titleLayout, {\n row: row2,\n column: gridInfo.column\n });\n row2++;\n extraInfoGrid.setRowHeight(row2, 5); // spacer\n row2++;\n } else {\n const titleLayout = this.__titleWithEditLayout(extraInfo);\n mainInfoLayout.add(titleLayout, {\n row,\n column: gridInfo.column\n });\n row++;\n mainInfoLayout.add(extraInfo.view, {\n row,\n column: gridInfo.column\n });\n row++;\n mainInfoGrid.setRowHeight(row, 5); // spacer\n row++;\n }\n }\n });\n\n\n const container = new qx.ui.container.Composite(new qx.ui.layout.VBox());\n const box1 = this.__createSectionBox(qx.locale.Manager.tr(\"Details\"));\n box1.add(mainInfoLayout);\n container.addAt(box1, 0);\n\n const box2 = this.__createSectionBox(qx.locale.Manager.tr(\"Meta details\"));\n box2.add(extraInfoLayout);\n container.addAt(box2, 1);\n\n return container;\n },\n\n /**\n * @param studyData {Object} Serialized Study Object\n */\n openAccessRights: function(studyData) {\n const permissionsView = new osparc.share.CollaboratorsStudy(studyData);\n const title = qx.locale.Manager.tr(\"Share with Editors and Organizations\");\n osparc.ui.window.Window.popUpInWindow(permissionsView, title, 500, 500);\n return permissionsView;\n },\n\n /**\n * @param resourceData {Object} Serialized Resource Object\n */\n openQuality: function(resourceData) {\n const qualityEditor = new osparc.metadata.QualityEditor(resourceData);\n const title = resourceData[\"name\"] + \" - \" + qx.locale.Manager.tr(\"Quality Assessment\");\n osparc.ui.window.Window.popUpInWindow(qualityEditor, title, 650, 700);\n return qualityEditor;\n },\n\n /**\n * Common layout of section's box\n * @param {page section's name} sectionName\n */\n __createSectionBox: function(sectionName) {\n const box = new qx.ui.groupbox.GroupBox(sectionName);\n box.getChildControl(\"legend\").set({\n font: \"text-14\"\n });\n box.getChildControl(\"frame\").set({\n backgroundColor: \"transparent\"\n });\n box.setLayout(new qx.ui.layout.VBox(10));\n return box;\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget for creating a template from a study\n * - Creates a copy of study data\n * - Using the ShareWith widget allows to publish the template\n */\n\nqx.Class.define(\"osparc.study.SaveAsTemplate\", {\n extend: qx.ui.core.Widget,\n\n /**\n * @param studyData {Object} Object containing part or the entire serialized Study Data\n */\n construct: function(studyData) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(20));\n\n this.__studyDataClone = osparc.data.model.Study.deepCloneStudyObject(studyData);\n\n this.__buildLayout();\n },\n\n events: {\n \"publishTemplate\": \"qx.event.type.Data\"\n },\n\n members: {\n __studyDataClone: null,\n __shareWith: null,\n __publishTemplateBtn: null,\n __copyWData: null,\n\n __buildLayout: function() {\n const publishWithData = this.__copyWData = new qx.ui.form.CheckBox(this.tr(\"Publish with data\")).set({\n value: true\n });\n this._add(publishWithData);\n\n const shareWith = this.__shareWith = new osparc.share.PublishTemplate(this.__studyDataClone);\n this._add(shareWith);\n\n const publishTemplateBtn = this.__publishTemplateBtn = new qx.ui.form.Button().set({\n appearance: \"strong-button\",\n label: this.tr(\"Publish\"),\n allowGrowX: false,\n alignX: \"right\"\n });\n publishTemplateBtn.addListener(\"execute\", () => this.__publishTemplate(), this);\n this._add(publishTemplateBtn);\n },\n\n __publishTemplate: function() {\n // AccessRights will be POSTed after the template is created.\n // No need to add myself, backend will automatically do it\n const accessRights = {}\n this.__studyDataClone[\"accessRights\"] = {};\n const selectedGroupIDs = this.__shareWith.getSelectedGroups();\n selectedGroupIDs.forEach(gid => {\n accessRights[gid] = osparc.share.CollaboratorsStudy.getViewerAccessRight();\n });\n\n this.fireDataEvent(\"publishTemplate\", {\n \"studyData\": this.__studyDataClone,\n \"copyData\": this.__copyWData.getValue(),\n \"accessRights\": accessRights\n });\n },\n\n getPublishTemplateButton: function() {\n return this.__publishTemplateBtn;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.study.StudyOptions\", {\n extend: qx.ui.core.Widget,\n\n construct: function(studyId) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(15));\n this.__buildLayout();\n\n if (studyId) {\n this.setStudyId(studyId);\n }\n },\n\n properties: {\n studyId: {\n check: \"String\",\n init: null,\n nullable: false,\n apply: \"__fetchStudy\"\n },\n\n wallet: {\n check: \"osparc.data.model.Wallet\",\n init: null,\n nullable: true,\n event: \"changeWallet\",\n apply: \"__applyWallet\"\n },\n\n patchStudy: {\n check: \"Boolean\",\n init: true,\n nullable: false,\n event: \"changePatchStudy\",\n },\n },\n\n events: {\n \"startStudy\": \"qx.event.type.Event\",\n \"cancel\": \"qx.event.type.Event\"\n },\n\n statics: {\n popUpInWindow: function(resourceSelector) {\n const title = osparc.product.Utils.getStudyAlias({\n firstUpperCase: true\n }) + qx.locale.Manager.tr(\" Options\");\n const width = 550;\n const minHeight = 270;\n const win = osparc.ui.window.Window.popUpInWindow(resourceSelector, title, width, minHeight).set({\n clickAwayClose: false\n });\n\n win.set({\n maxHeight: 600\n });\n return win;\n },\n\n createGroupBox: function(label) {\n const box = new qx.ui.groupbox.GroupBox(label);\n box.getChildControl(\"legend\").set({\n font: \"text-14\",\n padding: 2\n });\n box.getChildControl(\"frame\").set({\n backgroundColor: \"transparent\",\n marginTop: 15,\n padding: 2\n });\n box.setLayout(new qx.ui.layout.VBox(5));\n return box;\n },\n\n updateName: function(studyData, name) {\n return osparc.store.Study.patchStudyData(studyData, \"name\", name)\n .catch(err => {\n console.error(err);\n const msg = err.message || qx.locale.Manager.tr(\"Something went wrong Renaming\");\n osparc.FlashMessenger.logAs(msg, \"ERROR\");\n });\n },\n\n updateWallet: function(studyId, walletId) {\n const params = {\n url: {\n studyId,\n walletId,\n }\n };\n return osparc.data.Resources.fetch(\"studies\", \"selectWallet\", params)\n .catch(err => {\n console.error(err);\n const msg = err.message || qx.locale.Manager.tr(\"Error selecting Credit Account\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n });\n },\n },\n\n members: {\n __studyData: null,\n __studyWalletId: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"title-layout\":\n control = osparc.study.StudyOptions.createGroupBox(this.tr(\"Title\"));\n this._addAt(control, 0);\n break;\n case \"title-field\":\n control = new qx.ui.form.TextField().set({\n maxWidth: 220\n });\n control.addListener(\"changeValue\", () => this.__evaluateOpenButton());\n osparc.utils.Utils.setIdToWidget(control, \"studyTitleField\");\n this.getChildControl(\"title-layout\").add(control);\n break;\n case \"wallet-selector-layout\":\n control = osparc.study.StudyOptions.createGroupBox(this.tr(\"Credit Account\"));\n this._addAt(control, 1);\n break;\n case \"wallet-selector\":\n control = osparc.desktop.credits.Utils.createWalletSelector(\"read\").set({\n allowGrowX: false\n });\n control.addListener(\"changeSelection\", () => this.__evaluateOpenButton());\n this.getChildControl(\"wallet-selector-layout\").add(control);\n break;\n case \"advanced-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox(15));\n this._addAt(control, 2, {\n flex: 1\n });\n break;\n case \"advanced-checkbox\":\n control = new qx.ui.form.CheckBox().set({\n label: this.tr(\"Advanced options\"),\n value: false\n });\n this.getChildControl(\"advanced-layout\").add(control);\n break;\n case \"options-layout\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox(10));\n const scroll = new qx.ui.container.Scroll();\n this.getChildControl(\"advanced-checkbox\").bind(\"value\", scroll, \"visibility\", {\n converter: checked => checked ? \"visible\" : \"excluded\"\n });\n scroll.add(control);\n this.getChildControl(\"advanced-layout\").add(scroll, {\n flex: 1\n });\n break;\n }\n case \"loading-units-spinner\":\n control = new qx.ui.basic.Image().set({\n source: \"@FontAwesome5Solid/circle-notch/48\",\n alignX: \"center\",\n alignY: \"middle\",\n marginTop: 20\n });\n control.getContentElement().addClass(\"rotate\");\n this.getChildControl(\"options-layout\").add(control);\n break;\n case \"services-resources-layout\":\n control = this.self().createGroupBox(this.tr(\"Tiers\"));\n this.getChildControl(\"options-layout\").add(control);\n break;\n case \"study-pricing-units\": {\n control = new osparc.study.StudyPricingUnits();\n const loadingImage = this.getChildControl(\"loading-units-spinner\");\n const unitsBoxesLayout = this.getChildControl(\"services-resources-layout\");\n const unitsLoading = () => {\n loadingImage.show();\n unitsBoxesLayout.exclude();\n };\n const unitsReady = () => {\n loadingImage.exclude();\n unitsBoxesLayout.show();\n control.getNodePricingUnits().forEach(nodePricingUnits => {\n this.bind(\"patchStudy\", nodePricingUnits, \"patchNode\");\n });\n };\n unitsLoading();\n control.addListener(\"loadingUnits\", () => unitsLoading());\n control.addListener(\"unitsReady\", () => unitsReady());\n unitsBoxesLayout.add(control);\n break;\n }\n case \"buttons-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(5).set({\n alignX: \"right\"\n }));\n this._addAt(control, 3);\n break;\n case \"cancel-button\":\n control = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"form-button-text\",\n font: \"text-14\",\n minWidth: 150,\n maxWidth: 150,\n height: 35,\n center: true\n });\n this.getChildControl(\"buttons-layout\").addAt(control, 0);\n break;\n case \"open-button\":\n control = new osparc.ui.form.FetchButton(this.tr(\"Open\")).set({\n appearance: \"form-button\",\n font: \"text-14\",\n minWidth: 150,\n maxWidth: 150,\n height: 35,\n center: true,\n enabled: false,\n });\n this.getChildControl(\"buttons-layout\").addAt(control, 1);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __fetchStudy: function(studyId) {\n const params = {\n url: {\n studyId\n }\n };\n Promise.all([\n osparc.data.Resources.getOne(\"studies\", params),\n osparc.data.Resources.fetch(\"studies\", \"getWallet\", params)\n ])\n .then(values => {\n const studyData = values[0];\n this.setStudyData(studyData);\n\n if (values[1] && \"walletId\" in values[1]) {\n this.__studyWalletId = values[1][\"walletId\"];\n }\n this.__buildLayout();\n });\n },\n\n setStudyData: function(studyData) {\n this.__studyData = osparc.data.model.Study.deepCloneStudyObject(studyData);\n\n const titleField = this.getChildControl(\"title-field\");\n titleField.setValue(this.__studyData[\"name\"]);\n\n const studyPricingUnits = this.getChildControl(\"study-pricing-units\");\n studyPricingUnits.setStudyData(this.__studyData);\n },\n\n __applyWallet: function(wallet) {\n if (wallet) {\n const walletSelector = this.getChildControl(\"wallet-selector\");\n walletSelector.getSelectables().forEach(selectable => {\n if (selectable.walletId === wallet.getWalletId()) {\n walletSelector.setSelection([selectable]);\n }\n });\n osparc.utils.Utils.growSelectBox(walletSelector, 220);\n }\n },\n\n __evaluateOpenButton: function() {\n const hasTitle = Boolean(this.getChildControl(\"title-field\").getValue());\n const walletSelected = Boolean(this.getChildControl(\"wallet-selector\").getSelection().length);\n const openButton = this.getChildControl(\"open-button\");\n openButton.setEnabled(hasTitle && walletSelected);\n if (hasTitle && walletSelected) {\n osparc.utils.Utils.setIdToWidget(openButton, \"openWithResources\");\n } else {\n osparc.utils.Utils.removeIdAttribute(openButton);\n }\n },\n\n __buildLayout: function() {\n this.__buildTopSummaryLayout();\n this.__buildOptionsLayout();\n this.__buildButtons();\n\n this.__evaluateOpenButton();\n },\n\n __buildTopSummaryLayout: function() {\n const store = osparc.store.Store.getInstance();\n\n const titleField = this.getChildControl(\"title-field\");\n titleField.addListener(\"appear\", () => {\n titleField.focus();\n titleField.activate();\n });\n\n // Wallet Selector\n const walletSelector = this.getChildControl(\"wallet-selector\");\n\n const wallets = store.getWallets();\n const selectWallet = walletId => {\n const found = wallets.find(wallet => wallet.getWalletId() === parseInt(walletId));\n if (found) {\n this.setWallet(found);\n } else {\n this.setWallet(null);\n }\n };\n walletSelector.addListener(\"changeSelection\", e => {\n const selection = e.getData();\n if (selection.length) {\n selectWallet(selection[0].walletId);\n }\n });\n const preferredWallet = store.getPreferredWallet();\n if (wallets.find(wallet => wallet.getWalletId() === parseInt(this.__studyWalletId))) {\n selectWallet(this.__studyWalletId);\n } else if (preferredWallet) {\n selectWallet(preferredWallet.getWalletId());\n } else if (!osparc.desktop.credits.Utils.autoSelectActiveWallet(walletSelector)) {\n walletSelector.setSelection([]);\n }\n },\n\n __buildOptionsLayout: function() {\n this.getChildControl(\"study-pricing-units\");\n },\n\n __buildButtons: function() {\n // Open/Cancel buttons\n const cancelButton = this.getChildControl(\"cancel-button\");\n cancelButton.addListener(\"execute\", () => this.fireEvent(\"cancel\"));\n\n const openButton = this.getChildControl(\"open-button\");\n openButton.addListener(\"execute\", () => this.__openStudy());\n },\n\n __openStudy: async function() {\n const openButton = this.getChildControl(\"open-button\");\n openButton.setFetching(true);\n\n if (this.isPatchStudy()) {\n // first, update the name if necessary\n const titleSelection = this.getChildControl(\"title-field\").getValue();\n if (this.__studyData[\"name\"] !== titleSelection) {\n await this.self().updateName(this.__studyData, titleSelection);\n }\n\n // second, update the wallet if necessary\n const store = osparc.store.Store.getInstance();\n const walletSelection = this.getChildControl(\"wallet-selector\").getSelection();\n if (walletSelection.length && walletSelection[0][\"walletId\"]) {\n const studyId = this.getStudyId();\n const walletId = walletSelection[0][\"walletId\"];\n this.self().updateWallet(studyId, walletId)\n .then(() => {\n store.setActiveWallet(this.getWallet());\n this.fireEvent(\"startStudy\");\n })\n .finally(() => openButton.setFetching(false));\n } else {\n store.setActiveWallet(this.getWallet());\n this.fireEvent(\"startStudy\");\n openButton.setFetching(false);\n }\n } else {\n this.fireEvent(\"startStudy\");\n openButton.setFetching(false);\n }\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n * Tobias Oetiker (oetiker)\n\n************************************************************************ */\n\n/* eslint \"qx-rules/no-refs-in-members\": \"warn\" */\n\n/**\n * Widget used mainly by StudyBrowser for displaying Studies\n *\n * It consists of a thumbnail and creator and last change as caption\n */\n\nqx.Class.define(\"osparc.dashboard.GridButtonNew\", {\n extend: osparc.dashboard.GridButtonBase,\n\n construct: function(title, description) {\n this.base(arguments);\n\n this.setPriority(osparc.dashboard.CardBase.CARD_PRIORITY.NEW);\n\n this.set({\n appearance: \"pb-new\"\n });\n\n if (title) {\n title = osparc.utils.Utils.replaceTokens(\n title,\n \"replace_me_product_name\",\n osparc.store.StaticInfo.getInstance().getDisplayName()\n );\n\n const titleLabel = this.getChildControl(\"title\");\n titleLabel.set({\n value: title,\n rich: true\n });\n }\n\n if (description) {\n description = osparc.utils.Utils.replaceTokens(\n description,\n \"replace_me_product_name\",\n osparc.store.StaticInfo.getInstance().getDisplayName()\n );\n\n const descLabel = this.getChildControl(\"subtitle-text\");\n descLabel.setValue(description.toString());\n }\n\n this.setThumbnail(osparc.dashboard.CardBase.NEW_ICON);\n\n this.getChildControl(\"footer\").exclude();\n },\n\n members: {\n _shouldApplyFilter: function(data) {\n return false;\n },\n\n _shouldReactToFilter: function(data) {\n return false;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget used mainly by StudyBrowser for displaying Studies\n *\n * It consists of a thumbnail and creator and last change as caption\n */\n\nqx.Class.define(\"osparc.dashboard.ListButtonBase\", {\n extend: osparc.dashboard.CardBase,\n type: \"abstract\",\n\n construct: function() {\n this.base(arguments);\n\n const layout = new qx.ui.layout.Grid();\n layout.setSpacing(10);\n layout.setColumnFlex(osparc.dashboard.ListButtonBase.POS.SPACER, 1);\n this._setLayout(layout);\n\n this.set({\n minHeight: osparc.dashboard.ListButtonBase.ITEM_HEIGHT,\n allowGrowX: true\n });\n\n this.getChildControl(\"spacer\");\n },\n\n statics: {\n ITEM_HEIGHT: 35,\n SPACING: 5,\n POS: {\n THUMBNAIL: 0,\n LOCK_STATUS: 1,\n TITLE: 2,\n SPACER: 3,\n PROGRESS: 4,\n TAGS: 5,\n ICONS_LAYOUT: 6,\n OWNER: 7,\n SHARED: 8,\n LAST_CHANGE: 9,\n TSR: 10,\n HITS: 11,\n OPTIONS: 12\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"icon\": {\n control = osparc.dashboard.CardBase.createCardIcon();\n this._add(control, {\n row: 0,\n column: osparc.dashboard.ListButtonBase.POS.THUMBNAIL\n });\n break;\n }\n case \"title\":\n control = new qx.ui.basic.Label().set({\n textColor: \"contrasted-text-light\",\n font: \"text-14\",\n alignY: \"middle\",\n maxWidth: 300,\n rich: true,\n });\n this._add(control, {\n row: 0,\n column: osparc.dashboard.ListButtonBase.POS.TITLE\n });\n break;\n case \"spacer\":\n control = new qx.ui.core.Spacer();\n this._add(control, {\n row: 0,\n column: osparc.dashboard.ListButtonBase.POS.SPACER\n });\n break;\n case \"owner\":\n control = new qx.ui.basic.Label().set({\n textColor: \"contrasted-text-dark\",\n font: \"text-12\",\n alignY: \"middle\",\n allowGrowX: true\n });\n this._add(control, {\n row: 0,\n column: osparc.dashboard.ListButtonBase.POS.OWNER\n });\n break;\n case \"icons-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignY: \"middle\"\n }))\n this._add(control, {\n row: 0,\n column: osparc.dashboard.ListButtonBase.POS.ICONS_LAYOUT\n });\n break;\n case \"project-status\":\n control = new qx.ui.basic.Image().set({\n alignY: \"middle\",\n textColor: \"text\",\n height: 12,\n width: 12\n });\n this.getChildControl(\"icons-layout\").add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n _applyIcon: function(value, old) {\n if (value) {\n if (value.includes(\"@FontAwesome5Solid/\")) {\n value += \"22\";\n }\n const image = this.getChildControl(\"icon\").getChildControl(\"image\");\n image.set({\n source: value\n });\n osparc.utils.Utils.setAltToImage(image, \"card-icon\");\n }\n },\n\n _applyThumbnail: function(value, old) {\n // do not shot thumbnail in list button, icon takes over\n return;\n },\n\n _applyTitle: function(value, old) {\n const label = this.getChildControl(\"title\");\n label.setValue(value);\n },\n\n _applyDescription: function(value, old) {\n return;\n }\n },\n\n destruct : function() {\n this.removeListener(\"pointerover\", this._onPointerOver, this);\n this.removeListener(\"pointerout\", this._onPointerOut, this);\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget used mainly by StudyBrowser for displaying Studies\n *\n * It consists of a thumbnail and creator and last change as caption\n */\n\nqx.Class.define(\"osparc.dashboard.ListButtonNew\", {\n extend: osparc.dashboard.ListButtonBase,\n\n construct: function(title) {\n this.base(arguments);\n\n this.setPriority(osparc.dashboard.CardBase.CARD_PRIORITY.NEW);\n\n this.set({\n appearance: \"pb-new\"\n });\n\n if (title) {\n title = osparc.utils.Utils.replaceTokens(\n title,\n \"replace_me_product_name\",\n osparc.store.StaticInfo.getInstance().getDisplayName()\n );\n\n const titleLabel = this.getChildControl(\"title\");\n titleLabel.set({\n value: title,\n rich: true\n });\n }\n\n this.setIcon(osparc.dashboard.CardBase.NEW_ICON);\n },\n\n members: {\n _shouldApplyFilter: function(data) {\n return false;\n },\n\n _shouldReactToFilter: function(data) {\n return false;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n * Tobias Oetiker (oetiker)\n\n************************************************************************ */\n\n/* eslint \"qx-rules/no-refs-in-members\": \"warn\" */\n\n/**\n * Widget used mainly by StudyBrowser for displaying Studies\n *\n * It consists of a thumbnail and creator and last change as caption\n */\n\nqx.Class.define(\"osparc.dashboard.GridButtonItem\", {\n extend: osparc.dashboard.GridButtonBase,\n\n construct: function() {\n this.base(arguments);\n\n this.setPriority(osparc.dashboard.CardBase.CARD_PRIORITY.ITEM);\n },\n\n statics: {\n MENU_BTN_DIMENSIONS: 24\n },\n\n members: {\n // overridden\n _createChildControlImpl: function(id) {\n let control;\n let layout;\n switch (id) {\n case \"tsr-rating\":\n control = osparc.dashboard.CardBase.createTSRLayout();\n layout = this.getChildControl(\"footer\");\n layout.add(control, osparc.dashboard.GridButtonBase.FPOS.TSR);\n break;\n case \"workbench-mode\":\n control = new qx.ui.basic.Image().set({\n alignY: \"middle\",\n padding: [0, 5]\n });\n layout = this.getChildControl(\"footer\");\n layout.add(control, osparc.dashboard.GridButtonBase.FPOS.UI_MODE);\n break;\n case \"empty-workbench\": {\n control = this._getEmptyWorkbenchIcon();\n layout = this.getChildControl(\"footer\");\n layout.add(control, osparc.dashboard.GridButtonBase.FPOS.UPDATES);\n break;\n }\n case \"update-study\":\n control = new qx.ui.basic.Image().set({\n source: \"@MaterialIcons/update/16\",\n visibility: \"excluded\",\n alignY: \"middle\",\n padding: [0, 5]\n });\n osparc.utils.Utils.setIdToWidget(control, \"updateStudyBtn\");\n layout = this.getChildControl(\"footer\");\n layout.add(control, osparc.dashboard.GridButtonBase.FPOS.UPDATES);\n break;\n case \"hits-service\":\n control = new qx.ui.basic.Label().set({\n toolTipText: this.tr(\"Number of times you instantiated it\"),\n alignY: \"middle\"\n });\n layout = this.getChildControl(\"footer\");\n layout.add(control, osparc.dashboard.GridButtonBase.FPOS.HITS);\n break;\n case \"tags\":\n control = new qx.ui.container.Composite(new qx.ui.layout.Flow(5, 3)).set({\n anonymous: true,\n paddingLeft: osparc.dashboard.GridButtonBase.PADDING,\n paddingRight: osparc.dashboard.GridButtonBase.PADDING,\n paddingBottom: osparc.dashboard.GridButtonBase.PADDING / 2\n });\n layout = this.getChildControl(\"main-layout\");\n layout.add(control, osparc.dashboard.GridButtonBase.POS.TAGS);\n break;\n case \"menu-button\":\n this.getChildControl(\"title\").set({\n maxWidth: osparc.dashboard.GridButtonBase.ITEM_WIDTH - osparc.dashboard.CardBase.ICON_SIZE - this.self().MENU_BTN_DIMENSIONS - 2,\n });\n control = new qx.ui.form.MenuButton().set({\n appearance: \"form-button-outlined\",\n width: this.self().MENU_BTN_DIMENSIONS,\n height: this.self().MENU_BTN_DIMENSIONS,\n padding: [0, 8, 0, 8],\n alignX: \"center\",\n alignY: \"middle\",\n icon: \"@FontAwesome5Solid/ellipsis-v/14\",\n focusable: false\n });\n // make it circular\n control.getContentElement().setStyles({\n \"border-radius\": `${this.self().MENU_BTN_DIMENSIONS / 2}px`\n });\n osparc.utils.Utils.setIdToWidget(control, \"studyItemMenuButton\");\n this._add(control, {\n top: 6,\n right: 6,\n });\n break;\n case \"tick-unselected\":\n control = new qx.ui.basic.Atom().set({\n appearance: \"form-button-outlined\",\n width: this.self().MENU_BTN_DIMENSIONS,\n height: this.self().MENU_BTN_DIMENSIONS,\n focusable: false\n });\n // make it circular\n control.getContentElement().setStyles({\n \"border-radius\": `${this.self().MENU_BTN_DIMENSIONS / 2}px`\n });\n this._add(control, {\n top: 8,\n right: 8\n });\n break;\n case \"tick-selected\":\n control = new qx.ui.basic.Image().set({\n appearance: \"form-button\",\n width: this.self().MENU_BTN_DIMENSIONS,\n height: this.self().MENU_BTN_DIMENSIONS,\n padding: 5,\n alignX: \"center\",\n alignY: \"middle\",\n source: \"@FontAwesome5Solid/check/12\",\n focusable: false\n });\n // make it circular\n control.getContentElement().setStyles({\n \"border-radius\": `${this.self().MENU_BTN_DIMENSIONS / 2}px`\n });\n this._add(control, {\n top: 8,\n right: 8\n });\n break;\n case \"lock-status\":\n control = new osparc.ui.basic.Thumbnail();\n this._add(control, {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n });\n break;\n case \"permission-icon\":\n control = new qx.ui.basic.Image(osparc.dashboard.CardBase.PERM_READ).set({\n alignY: \"middle\",\n padding: [0, 5],\n toolTipText: this.tr(\"Viewer only\")\n });\n layout = this.getChildControl(\"footer\");\n layout.add(control, osparc.dashboard.GridButtonBase.FPOS.PERMISSION);\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n // overridden\n _applyLastChangeDate: function(value, old) {\n if (value) {\n if (this.isResourceType(\"study\") || this.isResourceType(\"template\")) {\n const dateBy = this.getChildControl(\"date-by\");\n dateBy.set({\n date: value,\n toolTipText: this.tr(\"Last modified\"),\n });\n }\n }\n },\n\n // overridden\n _applyTrashedAt: function(value) {\n if (value && value.getTime() !== new Date(0).getTime()) {\n if (this.isResourceType(\"study\") || this.isResourceType(\"template\")) {\n const dateBy = this.getChildControl(\"date-by\");\n dateBy.set({\n date: value,\n toolTipText: this.tr(\"Deleted\"),\n });\n }\n }\n },\n\n // overridden\n _applyTrashedBy: function(gid) {\n if (gid) {\n if (this.isResourceType(\"study\") || this.isResourceType(\"template\")) {\n const dateBy = this.getChildControl(\"date-by\");\n dateBy.setGroupId(gid);\n }\n }\n },\n\n __createOwner: function(label) {\n if (label === osparc.auth.Data.getInstance().getEmail()) {\n const resourceAlias = osparc.utils.Utils.resourceTypeToAlias(this.getResourceType());\n return qx.locale.Manager.tr(`My ${resourceAlias}`);\n }\n return osparc.utils.Utils.getNameFromEmail(label);\n },\n\n // overridden\n _applyOwner: function(value, old) {\n const label = this.getChildControl(\"subtitle-text\");\n const user = this.__createOwner(value);\n label.setValue(user);\n label.setVisibility(value ? \"visible\" : \"excluded\");\n },\n\n _applyAccessRights: function(value) {\n if (value && Object.keys(value).length) {\n const shareIcon = this.getChildControl(\"subtitle-icon\");\n shareIcon.addListener(\"tap\", e => {\n e.stopPropagation();\n this.openAccessRights();\n }, this);\n shareIcon.addListener(\"pointerdown\", e => e.stopPropagation());\n osparc.dashboard.CardBase.populateShareIcon(shareIcon, value);\n\n if (this.isResourceType(\"study\")) {\n this._setStudyPermissions(value);\n }\n }\n },\n\n _applyTags: function(tags) {\n if (osparc.data.Permissions.getInstance().canDo(\"study.tag\")) {\n const maxTags = 2;\n const tagsContainer = this.getChildControl(\"tags\");\n tagsContainer.setVisibility(tags.length ? \"visible\" : \"excluded\");\n tagsContainer.removeAll();\n for (let i=0; i<=tags.length && i this.fireDataEvent(\"tagClicked\", tag));\n tagsContainer.add(tagUI);\n }\n if (tags.length > maxTags) {\n const moreButton = new qx.ui.basic.Label(this.tr(\"More...\")).set({\n font: \"text-12\",\n backgroundColor: \"strong-main\",\n appearance: \"tag\",\n });\n tagsContainer.add(moreButton);\n }\n }\n },\n\n // overridden\n _applyMenu: function(menu, old) {\n const menuButton = this.getChildControl(\"menu-button\");\n if (menu) {\n menuButton.setMenu(menu).set({\n appearance: \"menu-wider\",\n position: \"bottom-left\",\n });\n osparc.utils.Utils.setIdToWidget(menu, \"studyItemMenuMenu\");\n this.evaluateMenuButtons();\n }\n menuButton.setVisibility(menu ? \"visible\" : \"excluded\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget used mainly by StudyBrowser for displaying Studies\n */\n\nqx.Class.define(\"osparc.dashboard.ListButtonItem\", {\n extend: osparc.dashboard.ListButtonBase,\n\n construct: function() {\n this.base(arguments);\n\n this.setPriority(osparc.dashboard.CardBase.CARD_PRIORITY.ITEM);\n },\n\n statics: {\n MENU_BTN_DIMENSIONS: 24\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"lock-status\":\n control = new osparc.ui.basic.Thumbnail().set({\n minWidth: 40\n });\n this._add(control, {\n row: 0,\n column: osparc.dashboard.ListButtonBase.POS.LOCK_STATUS\n });\n break;\n case \"tags\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(3).set({\n alignY: \"middle\"\n })).set({\n anonymous: true,\n });\n this._add(control, {\n row: 0,\n column: osparc.dashboard.ListButtonBase.POS.TAGS\n });\n break;\n case \"shared-icon\":\n control = new qx.ui.basic.Image().set({\n minWidth: 30,\n alignY: \"middle\"\n });\n this._add(control, {\n row: 0,\n column: osparc.dashboard.ListButtonBase.POS.SHARED\n });\n break;\n case \"date-by\":\n control = new osparc.ui.basic.DateAndBy();\n this._add(control, {\n row: 0,\n column: osparc.dashboard.ListButtonBase.POS.LAST_CHANGE\n });\n break;\n case \"tsr-rating\":\n control = osparc.dashboard.CardBase.createTSRLayout();\n this.__makeItemResponsive(control);\n this._add(control, {\n row: 0,\n column: osparc.dashboard.ListButtonBase.POS.TSR\n });\n break;\n case \"permission-icon\":\n control = new qx.ui.basic.Image(osparc.dashboard.CardBase.PERM_READ).set({\n alignY: \"middle\",\n });\n this.getChildControl(\"icons-layout\").add(control);\n break;\n case \"workbench-mode\":\n control = new qx.ui.basic.Image().set({\n alignY: \"middle\"\n });\n this.getChildControl(\"icons-layout\").add(control);\n break;\n case \"empty-workbench\":\n control = this._getEmptyWorkbenchIcon();\n control.set({\n alignY: \"middle\",\n alignX: \"center\"\n });\n this.getChildControl(\"icons-layout\").add(control);\n break;\n case \"update-study\":\n control = new qx.ui.basic.Image().set({\n alignY: \"middle\",\n source: \"@MaterialIcons/update/18\",\n visibility: \"excluded\"\n });\n osparc.utils.Utils.setIdToWidget(control, \"updateStudyBtn\");\n this.getChildControl(\"icons-layout\").add(control);\n break;\n case \"hits-service\":\n control = new qx.ui.basic.Label().set({\n alignY: \"middle\",\n toolTipText: this.tr(\"Number of times you instantiated it\")\n });\n this._add(control, {\n row: 0,\n column: osparc.dashboard.ListButtonBase.POS.HITS\n });\n break;\n case \"menu-selection-stack\":\n control = new qx.ui.container.Stack();\n control.set({\n alignX: \"center\",\n alignY: \"middle\"\n });\n osparc.utils.Utils.setIdToWidget(control, \"studyItemMenuButton\");\n this._add(control, {\n row: 0,\n column: osparc.dashboard.ListButtonBase.POS.OPTIONS\n });\n break;\n case \"tick-unselected\": {\n const menuSelectionStack = this.getChildControl(\"menu-selection-stack\");\n control = new qx.ui.basic.Atom().set({\n appearance: \"form-button-outlined\",\n width: this.self().MENU_BTN_DIMENSIONS,\n height: this.self().MENU_BTN_DIMENSIONS,\n focusable: false\n });\n control.getContentElement().setStyles({\n \"border-radius\": `${this.self().MENU_BTN_DIMENSIONS / 2}px`\n });\n menuSelectionStack.addAt(control, 1);\n break;\n }\n case \"tick-selected\": {\n const menuSelectionStack = this.getChildControl(\"menu-selection-stack\");\n control = new qx.ui.basic.Image(\"@FontAwesome5Solid/check/12\").set({\n appearance: \"form-button-outlined\",\n width: this.self().MENU_BTN_DIMENSIONS,\n height: this.self().MENU_BTN_DIMENSIONS,\n padding: [6, 5],\n focusable: false\n });\n control.getContentElement().setStyles({\n \"border-radius\": `${this.self().MENU_BTN_DIMENSIONS / 2}px`\n });\n menuSelectionStack.addAt(control, 2);\n break;\n }\n case \"menu-button\": {\n const menuSelectionStack = this.getChildControl(\"menu-selection-stack\");\n control = new qx.ui.form.MenuButton().set({\n appearance: \"form-button-outlined\",\n padding: [0, 8],\n maxWidth: this.self().MENU_BTN_DIMENSIONS,\n maxHeight: this.self().MENU_BTN_DIMENSIONS,\n icon: \"@FontAwesome5Solid/ellipsis-v/14\",\n focusable: false\n });\n // make it circular\n control.getContentElement().setStyles({\n \"border-radius\": `${this.self().MENU_BTN_DIMENSIONS / 2}px`\n });\n osparc.utils.Utils.setIdToWidget(control, \"studyItemMenuButton\");\n menuSelectionStack.addAt(control, 0);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n // overridden\n _applyLastChangeDate: function(value, old) {\n if (value) {\n if (this.isResourceType(\"study\") || this.isResourceType(\"template\")) {\n const dateBy = this.getChildControl(\"date-by\");\n dateBy.set({\n date: value,\n toolTipText: this.tr(\"Last modified\"),\n });\n }\n }\n },\n\n // overridden\n _applyTrashedAt: function(value) {\n if (value && value.getTime() !== new Date(0).getTime()) {\n if (this.isResourceType(\"study\") || this.isResourceType(\"template\")) {\n const dateBy = this.getChildControl(\"date-by\");\n dateBy.set({\n date: value,\n toolTipText: this.tr(\"Deleted\"),\n });\n }\n }\n },\n\n // overridden\n _applyTrashedBy: function(gid) {\n if (gid) {\n if (this.isResourceType(\"study\") || this.isResourceType(\"template\")) {\n const dateBy = this.getChildControl(\"date-by\");\n dateBy.setGroupId(gid);\n }\n }\n },\n\n __createOwner: function(label) {\n if (label === osparc.auth.Data.getInstance().getEmail()) {\n const resourceAlias = osparc.utils.Utils.resourceTypeToAlias(this.getResourceType());\n return qx.locale.Manager.tr(`My ${resourceAlias}`);\n }\n return osparc.utils.Utils.getNameFromEmail(label);\n },\n\n _applyOwner: function(value, old) {\n const label = this.getChildControl(\"owner\");\n const user = this.__createOwner(value);\n label.setValue(user);\n this.__makeItemResponsive(label);\n return;\n },\n\n _applyAccessRights: function(value) {\n if (value && Object.keys(value).length) {\n const shareIcon = this.getChildControl(\"shared-icon\");\n shareIcon.addListener(\"tap\", e => {\n e.stopPropagation();\n this.openAccessRights();\n }, this);\n shareIcon.addListener(\"pointerdown\", e => e.stopPropagation());\n osparc.dashboard.CardBase.populateShareIcon(shareIcon, value);\n\n if (this.isResourceType(\"study\")) {\n this._setStudyPermissions(value);\n }\n }\n },\n\n _applyTags: function(tags) {\n if (osparc.data.Permissions.getInstance().canDo(\"study.tag\")) {\n const maxTags = 2;\n const tagsContainer = this.getChildControl(\"tags\");\n tagsContainer.removeAll();\n for (let i=0; i<=tags.length && i this.fireDataEvent(\"tagClicked\", tag));\n tagsContainer.add(tagUI);\n }\n if (tags.length > maxTags) {\n const moreButton = new qx.ui.basic.Label(this.tr(\"More...\")).set({\n font: \"text-12\",\n backgroundColor: \"strong-main\",\n appearance: \"tag\",\n });\n tagsContainer.add(moreButton);\n }\n this.__makeItemResponsive(tagsContainer);\n }\n },\n\n __makeItemResponsive: function(item) {\n [\n \"appear\",\n \"resize\",\n ].forEach(ev => {\n this.addListener(ev, () => {\n const bounds = this.getBounds() || this.getSizeHint();\n item.setVisibility(bounds.width > 700 ? \"visible\" : \"excluded\");\n });\n });\n },\n\n _applyMenu: function(menu, old) {\n const menuButton = this.getChildControl(\"menu-button\");\n if (menu) {\n menuButton.setMenu(menu).set({\n appearance: \"menu-wider\",\n position: \"bottom-left\",\n });\n osparc.utils.Utils.setIdToWidget(menu, \"studyItemMenuMenu\");\n this.evaluateMenuButtons();\n }\n menuButton.setVisibility(menu ? \"visible\" : \"excluded\");\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Andreas Ecker (ecker)\n * Martin Wittemann (martinwittemann)\n\n************************************************************************ */\n\n/**\n * Radio buttons are used to manage a single selection. Radio buttons only\n * make sense used in a group of two or more of them. They are managed (connected)\n * to a {@link qx.ui.form.RadioGroup} to handle the selection.\n */\nqx.Class.define(\"qx.ui.toolbar.RadioButton\",\n{\n extend : qx.ui.toolbar.CheckBox,\n include : [qx.ui.form.MModelProperty],\n implement : [qx.ui.form.IModel, qx.ui.form.IRadioItem],\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n /*\n ---------------------------------------------------------------------------\n PROPERTY APPLY ROUTINES\n ---------------------------------------------------------------------------\n */\n\n // overridden\n _applyValue : function(value, old)\n {\n this.base(arguments, value, old);\n\n if (value)\n {\n var grp = this.getGroup();\n if (grp) {\n grp.setSelection([this]);\n }\n }\n },\n\n\n // overridden\n _onExecute : function(e) {\n var grp = this.getGroup();\n if (grp && grp.getAllowEmptySelection()) {\n this.toggleValue();\n } else {\n this.setValue(true);\n }\n }\n }\n});","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\n/**\n * Defines the methods all UIFilter elements should implement.\n */\nqx.Interface.define(\"osparc.filter.IFilter\", {\n members:{\n /**\n * Function in charge of resetting the filter.\n */\n reset: function() {\n this.assertArgumentsCount(arguments, 0, 0);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\n/**\n * Base class for GUI filters. Stores the filter id and group id and implements common filter operations\n * like dispatching changes.\n */\nqx.Class.define(\"osparc.filter.UIFilter\", {\n extend: qx.ui.core.Widget,\n implement: osparc.filter.IFilter,\n type: \"abstract\",\n\n /**\n * Base constructor for UIFilter takes the mandatory ids for the filter and the filter group it belongs to.\n *\n * @param {string} filterId Group-unique id for the filter.\n * @param {string} filterGroupId Unique group id where the filter belongs.\n */\n construct: function(filterId, filterGroupId) {\n this.base(arguments);\n this.set({\n filterId,\n filterGroupId\n });\n\n osparc.filter.UIFilterController.getInstance().registerFilter(this);\n },\n\n properties: {\n filterId: {\n nullable: false,\n check: \"String\"\n },\n filterGroupId: {\n nullable: false,\n check: \"String\"\n }\n },\n\n members: {\n /**\n * Function that returns the name of the dispatched message when a filter changes.\n *\n * @param {string} suffix Will be added at the end of the message name to decrease the probability of message name collision.\n */\n _getMessageName: function(suffix = \"filter\") {\n return osparc.utils.Utils.capitalize(this.getFilterId(), this.getFilterGroupId(), suffix);\n },\n\n /**\n * Function that should be call whenever the filter wants to send its data to the controller and trigger some filtering.\n *\n * @param {Object} data Raw data coming from the filter.\n */\n _filterChange: function(data) {\n const filterData = {\n filterGroupId: this.getFilterGroupId(),\n filterId: this.getFilterId(),\n data\n };\n osparc.filter.UIFilterController.getInstance().publish(filterData);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\n/**\n * GUI filter controller. Stores the state of all grouped filters and dispatches it when they trigger a change.\n */\nqx.Class.define(\"osparc.filter.UIFilterController\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n construct: function() {\n this.base(arguments);\n },\n\n statics: {\n registerFilter: function(filterId) {\n this.getInstance().registerFilter(filterId);\n },\n registerContainer: function(containerId, container) {\n this.getInstance().registerFilterContainer(containerId, container);\n },\n resetGroup: function(filterGroupId) {\n this.getInstance().resetGroup(filterGroupId);\n },\n setContainerVisibility: function(containerId, visibility) {\n this.getInstance().setFilterContainerVisibility(containerId, visibility);\n },\n dispatch: function(filterGroupId) {\n this.getInstance().dispatch(filterGroupId);\n }\n },\n\n members: {\n __state: null,\n __filters: null,\n __filterContainers: null,\n\n /**\n * Function called by the base filter class to register a filter when after creating it.\n *\n * @param {osparc.filter.UIFilter} filter The filter to be registered.\n */\n registerFilter: function(filter) {\n const filterId = filter.getFilterId();\n const filterGroupId = filter.getFilterGroupId();\n // Store filter reference for managing\n this.__filters = this.__filters || {};\n this.__filters[filterGroupId] = this.__filters[filterGroupId] || {};\n this.__filters[filterGroupId][filterId] = filter;\n },\n\n /**\n * Function that registers a filter container for changing its visibility when required.\n *\n * @param {string} containerId Given id for the container.\n * @param {qx.ui.core.Widget} container Container widget for the filters.\n */\n registerContainer: function(containerId, container) {\n this.__filterContainers = this.__filterContainers || {};\n this.__filterContainers[containerId] = container;\n },\n\n /**\n * Function that calls the reset functions for all filters in a group.\n *\n * @param {string} filterGroupId Id of the filter group to be reset.\n */\n resetGroup: function(filterGroupId) {\n if (this.__filters[filterGroupId]) {\n for (let filterId in this.__filters[filterGroupId]) {\n this.__filters[filterGroupId][filterId].reset();\n }\n }\n },\n\n /**\n * Function to set the visibility of a previously registered filter container.\n *\n * @param {string} containerId Id of the container to change the visibility.\n * @param {string} visibility New visibility setting for the container.\n */\n setContainerVisibility: function(containerId, visibility) {\n if (this.__filterContainers[containerId]) {\n this.__filterContainers[containerId].setVisibility(visibility);\n }\n },\n\n __getInputMessageName: function(filterId, filterGroupId, suffix = \"filter\") {\n return osparc.utils.Utils.capitalize(filterId, filterGroupId, suffix);\n },\n\n __getOutputMessageName: function(filterGroupId, suffix = \"filter\") {\n return osparc.utils.Utils.capitalize(filterGroupId, suffix);\n },\n\n /**\n * Function called when a filter state changes and it wants to publish those changes to trigger the filtering.\n *\n * @param {Object} filterData Mandatory data coming from the filter.\n * @param {String} filterData.filterGroupId Group id of the filter that changed.\n * @param {String} filterData.filterId Filter id of the filter that changed.\n * @param {Object} filterData.data Data contained by the filter.\n */\n publish: function(filterData) {\n // Update state\n const {\n filterGroupId,\n filterId,\n data\n } = filterData;\n this.__state = this.__state || {};\n this.__state[filterGroupId] = this.__state[filterGroupId] || {};\n this.__state[filterGroupId][filterId] = data;\n // Dispatch relevant message\n this.dispatch(filterGroupId);\n },\n\n /**\n * This function actually dispatches the data for a filter group to apply filtering. It gets called\n * whenever a filter changes or can also be programmatically called.\n *\n * @param {String} filterGroupId Id of the filtering group whose data needs to be dispatched.\n */\n dispatch: function(filterGroupId) {\n if (this.__state && this.__state[filterGroupId]) {\n qx.event.message.Bus.getInstance().dispatchByName(this.__getOutputMessageName(filterGroupId), this.__state[filterGroupId]);\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.SearchBarFilter\", {\n extend: osparc.filter.UIFilter,\n\n construct: function(resourceType) {\n this.__resourceType = resourceType;\n\n this.base(arguments, \"searchBarFilter-\"+resourceType, \"searchBarFilter\");\n\n this._setLayout(new qx.ui.layout.HBox(5));\n\n this.set({\n backgroundColor: \"input_background\",\n paddingLeft: 6,\n height: this.self().HEIGHT,\n decorator: \"rounded\",\n });\n\n this.__buildLayout();\n\n this.__buildFiltersMenu();\n\n this.__attachEventHandlers();\n\n this.__currentFilter = null;\n },\n\n statics: {\n HEIGHT: 36,\n\n getSharedWithOptions: function(resourceType) {\n return [{\n id: \"show-all\",\n label: qx.locale.Manager.tr(\"All \") + osparc.product.Utils.resourceTypeToAlias(resourceType, {\n firstUpperCase: true,\n plural: true\n }),\n icon: \"@FontAwesome5Solid/home/20\"\n }, {\n id: \"my-resources\",\n label: qx.locale.Manager.tr(\"My \") + osparc.product.Utils.resourceTypeToAlias(resourceType, {\n firstUpperCase: true,\n plural: true\n }),\n icon: \"@FontAwesome5Solid/user/20\"\n }, {\n id: \"shared-with-me\",\n label: qx.locale.Manager.tr(\"Shared with Me\"),\n icon: \"@FontAwesome5Solid/users/20\"\n }, {\n id: \"shared-with-everyone\",\n label: qx.locale.Manager.tr(\"Shared with Everyone\"),\n icon: \"@FontAwesome5Solid/globe/20\"\n }];\n }\n },\n\n events: {\n \"filterChanged\": \"qx.event.type.Data\"\n },\n\n members: {\n __resourceType: null,\n __currentFilter: null,\n __filtersMenu: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"search-icon\":\n control = new qx.ui.basic.Image(\"@FontAwesome5Solid/search/16\").set({\n backgroundColor: \"transparent\",\n alignY: \"middle\",\n paddingLeft: 6,\n opacity: 0.5\n });\n this._add(control);\n break;\n case \"active-filters\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(4));\n this._add(control);\n break;\n case \"text-field\":\n control = new qx.ui.form.TextField().set({\n backgroundColor: \"input_background\",\n font: \"text-16\",\n placeholder: this.tr(\"search\"),\n alignY: \"bottom\",\n marginBottom: 4\n });\n control.getContentElement().setStyles({\n \"border-bottom\": \"none\"\n });\n this._add(control, {\n flex: 1\n });\n break;\n case \"reset-button\":\n control = new qx.ui.toolbar.Button(null, \"@MaterialIcons/close/20\").set({\n cursor: \"pointer\",\n paddingLeft: 0,\n paddingRight: 10,\n alignY: \"middle\",\n opacity: 0.7\n });\n this._add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __buildLayout: function() {\n this.getChildControl(\"search-icon\");\n this.getChildControl(\"active-filters\");\n this.getChildControl(\"text-field\");\n this.getChildControl(\"reset-button\");\n },\n\n __buildFiltersMenu: function() {\n if (this.__filtersMenu === null) {\n this.__filtersMenu = new qx.ui.menu.Menu();\n }\n const menu = this.__filtersMenu;\n menu.removeAll();\n\n const sharedWithButton = new qx.ui.menu.Button(this.tr(\"Shared with\"), \"@FontAwesome5Solid/share-alt/12\");\n this.__addSharedWith(sharedWithButton);\n menu.add(sharedWithButton);\n\n if (this.__resourceType !== \"service\") {\n const tagsButton = new qx.ui.menu.Button(this.tr(\"Tags\"), \"@FontAwesome5Solid/tags/12\");\n osparc.utils.Utils.setIdToWidget(tagsButton, \"searchBarFilter-tags-button\");\n this.__addTags(tagsButton);\n menu.add(tagsButton);\n\n const classifiersButton = new qx.ui.menu.Button(this.tr(\"Classifiers\"), \"@FontAwesome5Solid/search/12\");\n this.__addClassifiers(classifiersButton);\n menu.add(classifiersButton);\n }\n\n if (this.__resourceType === \"service\") {\n const serviceTypeButton = new qx.ui.menu.Button(this.tr(\"Service Type\"), \"@FontAwesome5Solid/cogs/12\");\n this.__addServiceTypes(serviceTypeButton);\n menu.add(serviceTypeButton);\n }\n },\n\n __attachEventHandlers: function() {\n const textField = this.getChildControl(\"text-field\");\n textField.addListener(\"tap\", () => this.__showFilterMenu(), this);\n textField.addListener(\"deactivate\", () => this.__hideFilterMenu(), this);\n textField.addListener(\"keypress\", e => {\n if (e.getKeyIdentifier() === \"Enter\") {\n this.__filter();\n } else {\n this.__hideFilterMenu();\n }\n }, this);\n textField.addListener(\"changeValue\", () => this.__filter(), this);\n\n const resetButton = this.getChildControl(\"reset-button\");\n resetButton.addListener(\"execute\", () => this.__resetFilters(), this);\n\n osparc.store.Store.getInstance().addListener(\"changeTags\", () => this.__buildFiltersMenu(), this);\n },\n\n getTextFilterValue: function() {\n return this.getChildControl(\"text-field\").getValue();\n },\n\n __showFilterMenu: function() {\n if (this.getTextFilterValue()) {\n return;\n }\n\n const textField = this.getChildControl(\"text-field\");\n const element = textField.getContentElement().getDomElement();\n const {\n top,\n left\n } = qx.bom.element.Location.get(element);\n this.__filtersMenu.setLayoutProperties({\n top: top + 30,\n left: left\n });\n\n this.__filtersMenu.show();\n },\n\n __hideFilterMenu: function() {\n this.__filtersMenu.exclude();\n },\n\n __addTags: function(menuButton) {\n const tags = osparc.store.Tags.getInstance().getTags();\n menuButton.setVisibility(tags.length ? \"visible\" : \"excluded\");\n if (tags.length) {\n const tagsMenu = new qx.ui.menu.Menu();\n osparc.utils.Utils.setIdToWidget(tagsMenu, \"searchBarFilter-tags-menu\");\n tags.forEach(tag => {\n const tagButton = new qx.ui.menu.Button(tag.getName(), \"@FontAwesome5Solid/tag/12\");\n tagButton.getChildControl(\"icon\").setTextColor(tag.getColor());\n tagsMenu.add(tagButton);\n tagButton.addListener(\"execute\", () => this.addTagActiveFilter(tag), this);\n });\n menuButton.setMenu(tagsMenu);\n }\n },\n\n __addSharedWith: function(menuButton) {\n const options = this.self().getSharedWithOptions(this.__resourceType);\n const sharedWithMenu = new qx.ui.menu.Menu();\n const sharedWithRadioGroup = new qx.ui.form.RadioGroup();\n options.forEach((option, idx) => {\n const button = new qx.ui.menu.RadioButton(option.label);\n sharedWithMenu.add(button);\n button.addListener(\"execute\", () => this.setSharedWithActiveFilter(option.id, option.label), this);\n sharedWithRadioGroup.add(button);\n // preselect show-all\n if (idx === 0) {\n sharedWithRadioGroup.setSelection([button]);\n }\n });\n menuButton.setMenu(sharedWithMenu);\n },\n\n __addClassifiers: function(menuButton) {\n const classifiers = osparc.store.Store.getInstance().getClassifiers();\n menuButton.setVisibility(classifiers && classifiers.length ? \"visible\" : \"excluded\");\n if (classifiers && classifiers.length) {\n const classifiersMenu = new qx.ui.menu.Menu();\n classifiers.forEach(classifier => {\n const classifierButton = new qx.ui.menu.Button(classifier.display_name);\n classifiersMenu.add(classifierButton);\n classifierButton.addListener(\"execute\", () => this.__addChip(\"classifier\", classifier.classifier, classifier.display_name), this);\n });\n menuButton.setMenu(classifiersMenu);\n }\n },\n\n __addServiceTypes: function(menuButton) {\n const serviceTypeMenu = new qx.ui.menu.Menu();\n menuButton.setMenu(serviceTypeMenu);\n const serviceTypes = osparc.service.Utils.TYPES;\n Object.keys(serviceTypes).forEach(serviceId => {\n if (![\"computational\", \"dynamic\"].includes(serviceId)) {\n return;\n }\n const serviceType = serviceTypes[serviceId];\n const iconSize = 12;\n const serviceTypeButton = new qx.ui.menu.Button(serviceType.label, serviceType.icon+iconSize);\n serviceTypeMenu.add(serviceTypeButton);\n serviceTypeButton.addListener(\"execute\", () => this.__addChip(\"service-type\", serviceId, serviceType.label), this);\n });\n },\n\n addTagActiveFilter: function(tag) {\n this.__addChip(\"tag\", tag.getTagId(), tag.getName());\n },\n\n setTagsActiveFilter: function(tagIds) {\n const tags = osparc.store.Tags.getInstance().getTags();\n tags.forEach(tag => {\n const tagId = tag.getTagId();\n if (tagIds.includes(tagId)) {\n this.__addChip(\"tag\", tagId, tag.getName());\n } else {\n this.__removeChip(\"tag\", tagId, tag.getName());\n }\n });\n },\n\n\n setSharedWithActiveFilter: function(optionId, optionLabel) {\n this.__removeChips(\"shared-with\");\n if (optionId === \"show-all\") {\n this.__filter();\n } else {\n this.__addChip(\"shared-with\", optionId, optionLabel);\n }\n },\n\n setServiceTypeActiveFilter: function(optionId, optionLabel) {\n this.__removeChips(\"service-type\");\n if (optionId && optionLabel) {\n this.__addChip(\"service-type\", optionId, optionLabel);\n } else {\n this.__filter();\n }\n },\n\n __addChip: function(type, id, label) {\n const activeFilter = this.getChildControl(\"active-filters\");\n const chipFound = activeFilter.getChildren().find(chip => chip.type === type && chip.id === id);\n if (chipFound) {\n return;\n }\n const chip = this.__createChip(type, id, label);\n activeFilter.add(chip);\n this.__filter();\n },\n\n __createChip: function(chipType, chipId, chipLabel) {\n const chipButton = new qx.ui.form.Button().set({\n label: osparc.utils.Utils.capitalize(chipType) + \" = '\" + chipLabel + \"'\",\n icon: \"@MaterialIcons/close/12\",\n toolTipText: chipLabel,\n appearance: \"chip-button\"\n });\n chipButton.type = chipType;\n chipButton.id = chipId;\n chipButton.addListener(\"execute\", () => this.__removeChip(chipType, chipId), this);\n return chipButton;\n },\n\n __removeChip: function(type, id) {\n const activeFilter = this.getChildControl(\"active-filters\");\n const chipFound = activeFilter.getChildren().find(chip => chip.type === type && chip.id === id);\n if (chipFound) {\n activeFilter.remove(chipFound);\n this.__filter();\n }\n },\n\n __removeChips: function(type) {\n const activeFilter = this.getChildControl(\"active-filters\");\n if (type) {\n const chipsFounds = activeFilter.getChildren().filter(chip => chip.type === type);\n for (let i=chipsFounds.length-1; i>=0; i--) {\n activeFilter.remove(chipsFounds[i]);\n }\n } else {\n activeFilter.removeAll();\n }\n },\n\n resetFilters: function() {\n this.__removeChips();\n this.getChildControl(\"text-field\").resetValue();\n },\n\n __resetFilters: function() {\n this.resetFilters();\n this.__filter();\n },\n\n getFilterData: function() {\n const filterData = {\n tags: [],\n classifiers: [],\n sharedWith: null,\n serviceType: null,\n text: \"\"\n };\n const textFilter = this.getTextFilterValue();\n filterData[\"text\"] = textFilter ? textFilter : \"\";\n this.getChildControl(\"active-filters\").getChildren().forEach(chip => {\n switch (chip.type) {\n case \"tag\":\n filterData.tags.push(chip.id);\n break;\n case \"classifier\":\n filterData.classifiers.push(chip.id);\n break;\n case \"shared-with\":\n filterData.sharedWith = chip.id === \"show-all\" ? null : chip.id;\n break;\n case \"service-type\":\n filterData.serviceType = chip.id;\n break;\n }\n });\n return filterData;\n },\n\n __filter: function() {\n const filterData = this.getFilterData();\n if (JSON.stringify(this.__currentFilter) !== JSON.stringify(filterData)) {\n this.__currentFilter = filterData;\n this.fireDataEvent(\"filterChanged\", filterData);\n this._filterChange(filterData);\n }\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Andreas Ecker (ecker)\n * Jonathan Weiß (jonathan_rass)\n\n************************************************************************ */\n\n/**\n * A part is a container for multiple toolbar buttons. Each part comes\n * with a handle which may be used in later versions to drag the part\n * around and move it to another position. Currently mainly used\n * for structuring large toolbars beyond the capabilities of the\n * {@link Separator}.\n *\n * @childControl handle {qx.ui.basic.Image} prat handle to visualize the separation\n * @childControl container {qx.ui.toolbar.PartContainer} holds the content of the toolbar part\n */\nqx.Class.define(\"qx.ui.toolbar.Part\",\n{\n extend : qx.ui.core.Widget,\n include : [qx.ui.core.MRemoteChildrenHandling],\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n construct : function()\n {\n this.base(arguments);\n\n // Hard coded HBox layout\n this._setLayout(new qx.ui.layout.HBox);\n\n // Force creation of the handle\n this._createChildControl(\"handle\");\n },\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n appearance :\n {\n refine : true,\n init : \"toolbar/part\"\n },\n\n /** Whether icons, labels, both or none should be shown. */\n show :\n {\n init : \"both\",\n check : [ \"both\", \"label\", \"icon\" ],\n inheritable : true,\n event : \"changeShow\"\n },\n\n /** The spacing between every child of the toolbar */\n spacing :\n {\n nullable : true,\n check : \"Integer\",\n themeable : true,\n apply : \"_applySpacing\"\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n /*\n ---------------------------------------------------------------------------\n WIDGET API\n ---------------------------------------------------------------------------\n */\n\n // overridden\n _createChildControlImpl : function(id, hash)\n {\n var control;\n\n switch(id)\n {\n case \"handle\":\n control = new qx.ui.basic.Image();\n control.setAlignY(\"middle\");\n this._add(control);\n break;\n\n case \"container\":\n control = new qx.ui.toolbar.PartContainer();\n control.addListener(\"syncAppearance\", this.__onSyncAppearance, this);\n this._add(control);\n control.addListener(\"changeChildren\", function() {\n this.__onSyncAppearance();\n }, this);\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n // overridden\n getChildrenContainer : function() {\n return this.getChildControl(\"container\");\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n PROPERTY APPLY ROUTINES\n ---------------------------------------------------------------------------\n */\n\n _applySpacing : function(value, old)\n {\n var layout = this.getChildControl(\"container\").getLayout();\n value == null ? layout.resetSpacing() : layout.setSpacing(value);\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n UTILITIES\n ---------------------------------------------------------------------------\n */\n /**\n * Helper which applies the left, right and middle states.\n */\n __onSyncAppearance : function() {\n // check every child\n var children = this.getChildrenContainer().getChildren();\n children = children.filter(function(child) {\n return child.getVisibility() == \"visible\";\n });\n for (var i = 0; i < children.length; i++) {\n // if its the first child\n if (i == 0 && i != children.length - 1) {\n children[i].addState(\"left\");\n children[i].removeState(\"right\");\n children[i].removeState(\"middle\");\n // if its the last child\n } else if (i == children.length - 1 && i != 0) {\n children[i].addState(\"right\");\n children[i].removeState(\"left\");\n children[i].removeState(\"middle\");\n // if there is only one child\n } else if (i == 0 && i == children.length - 1) {\n children[i].removeState(\"left\");\n children[i].removeState(\"middle\");\n children[i].removeState(\"right\");\n } else {\n children[i].addState(\"middle\");\n children[i].removeState(\"right\");\n children[i].removeState(\"left\");\n }\n };\n },\n\n\n /**\n * Adds a separator to the toolbar part.\n */\n addSeparator : function() {\n this.add(new qx.ui.toolbar.Separator);\n },\n\n\n /**\n * Returns all nested buttons which contains a menu to show. This is mainly\n * used for keyboard support.\n *\n * @return {Array} List of all menu buttons\n */\n getMenuButtons : function()\n {\n var children = this.getChildren();\n var buttons = [];\n var child;\n\n for (var i=0, l=children.length; i {\n let sortingValue = a.getPriority() - b.getPriority();\n return sortingValue;\n });\n }\n },\n\n cardExists: function(container, newCard) {\n const cardKey = newCard.isPropertyInitialized(\"cardKey\") ? newCard.getCardKey() : null;\n if (cardKey) {\n const idx = container.getChildren().findIndex(card => card.isPropertyInitialized(\"cardKey\") && newCard.getCardKey() === card.getCardKey());\n if (idx > -1) {\n return true;\n }\n }\n return false;\n }\n },\n\n members: {\n __foldersList: null,\n __workspacesList: null,\n __resourcesList: null,\n __groupedContainersList: null,\n __foldersContainer: null,\n __workspacesContainer: null,\n __nonGroupedContainer: null,\n __groupedContainers: null,\n\n addNonResourceCard: function(card) {\n if (osparc.dashboard.CardContainer.isValidCard(card)) {\n if (this.getGroupBy()) {\n // it will always go to the no-group group\n const noGroupContainer = this.__getGroupContainer(\"no-group\");\n this.__addCardToContainer(card, noGroupContainer);\n this.self().sortListByPriority(noGroupContainer.getContentContainer());\n } else {\n this.__addCardToContainer(card, this.__nonGroupedContainer);\n this.self().sortListByPriority(this.__nonGroupedContainer);\n }\n } else {\n console.error(\"CardContainer only allows CardBase as its children.\");\n }\n },\n\n removeNonResourceCard: function(card) {\n if (osparc.dashboard.CardContainer.isValidCard(card)) {\n if (this.getGroupBy()) {\n const noGroupContainer = this.__getGroupContainer(\"no-group\");\n if (noGroupContainer.getContentContainer().getChildren().indexOf(card) > -1) {\n noGroupContainer.getContentContainer().remove(card);\n }\n } else if (this.__nonGroupedContainer.getChildren().indexOf(card) > -1) {\n this.__nonGroupedContainer.remove(card);\n }\n } else {\n console.error(\"CardContainer only allows CardBase as its children.\");\n }\n },\n\n removeCard: function(uuid) {\n if (this.getGroupBy()) {\n this.__groupedContainersList.forEach(groupedContainer => groupedContainer.removeCard(uuid));\n } else {\n this.__nonGroupedContainer.removeCard(uuid);\n }\n },\n\n getFlatList: function() {\n return this.__nonGroupedContainer;\n },\n\n __createGroupContainer: function(groupId, headerLabel, headerColor = \"text\") {\n const groupContainer = new osparc.dashboard.GroupedCardContainer().set({\n groupId: groupId.toString(),\n headerLabel,\n headerIcon: \"\",\n headerColor,\n visibility: \"excluded\"\n });\n this.__groupedContainersList.push(groupContainer);\n return groupContainer;\n },\n\n areMoreResourcesRequired: function(loadingResourcesBtn) {\n if (this.__nonGroupedContainer) {\n return this.__nonGroupedContainer.areMoreResourcesRequired(loadingResourcesBtn);\n }\n // If containers are grouped all the resources are expected to be fetched\n return false;\n },\n\n getCards: function() {\n if (this.__nonGroupedContainer) {\n return this.__nonGroupedContainer.getChildren();\n }\n const cards = [];\n this.__groupedContainersList.forEach(groupedContainer => cards.push(...groupedContainer.getCards()));\n return cards;\n },\n\n getSelection: function() {\n if (this.getGroupBy() === null) {\n return this.__nonGroupedContainer.getSelection();\n }\n return [];\n },\n\n resetSelection: function() {\n if (this.getGroupBy() === null && this.__nonGroupedContainer) {\n this.__nonGroupedContainer.resetSelection();\n }\n },\n\n __getGroupContainer: function(gid) {\n const idx = this.__groupedContainersList.findIndex(groupContainer => groupContainer.getGroupId() === gid.toString());\n if (idx > -1) {\n return this.__groupedContainersList[idx];\n }\n return null;\n },\n\n __createCard: function(resourceData) {\n const tags = resourceData.tags ? osparc.store.Tags.getInstance().getTags().filter(tag => resourceData.tags.includes(tag.getTagId())) : [];\n const card = this.getMode() === \"grid\" ? new osparc.dashboard.GridButtonItem() : new osparc.dashboard.ListButtonItem();\n card.set({\n appearance: resourceData.type ? `pb-${resourceData.type}` : `pb-${resourceData.resourceType}`,\n resourceData: resourceData,\n tags\n });\n const menu = new qx.ui.menu.Menu().set({\n position: \"bottom-right\"\n });\n card.setMenu(menu);\n if (resourceData.type !== \"study\") {\n // the backend will do the projects:search\n card.subscribeToFilterGroup(\"searchBarFilter\");\n }\n\n [\n \"updateStudy\",\n \"updateTemplate\",\n \"updateService\",\n \"publishTemplate\",\n \"tagClicked\",\n \"emptyStudyClicked\"\n ].forEach(eName => card.addListener(eName, e => this.fireDataEvent(eName, e.getData())));\n return card;\n },\n\n __addCardToContainer: function(card, container) {\n if (container == null) {\n return;\n }\n\n container.add(card);\n\n if (this.getMode() === \"list\") {\n const fitToContainer = () => {\n const bounds = container.getBounds() || container.getSizeHint();\n card.setWidth(bounds.width);\n };\n [\n \"appear\",\n \"resize\",\n ].forEach(ev => {\n container.addListener(ev, () => fitToContainer());\n });\n fitToContainer();\n }\n },\n\n setResourcesToList: function(resourcesList) {\n this.__resourcesList = resourcesList;\n },\n\n __cleanAll: function() {\n if (this._getChildren().includes(this.__nonGroupedContainer)) {\n this._remove(this.__nonGroupedContainer);\n }\n if (this._getChildren().includes(this.__groupedContainers)) {\n this._remove(this.__groupedContainers);\n }\n\n if (this.__nonGroupedContainer) {\n this.__nonGroupedContainer.removeAll();\n this.__nonGroupedContainer = null;\n }\n if (this.__groupedContainers) {\n this.__groupedContainers.removeAll();\n }\n this.__groupedContainersList.forEach(groupedContainer => {\n groupedContainer.getContentContainer().removeAll();\n });\n this.__groupedContainersList = [];\n },\n\n __addFoldersContainer: function() {\n // add foldersContainer dynamically\n [\n \"addChildWidget\",\n \"removeChildWidget\"\n ].forEach(ev => {\n this.__foldersContainer.addListener(ev, () => {\n const children = this.__foldersContainer.getChildren();\n if (children.length && !children.includes(this.__foldersContainer)) {\n this._addAt(this.__foldersContainer, 0);\n return;\n }\n if (children.length === 0 && children.includes(this.__foldersContainer)) {\n this._remove(this.__foldersContainer);\n return;\n }\n })\n });\n },\n\n __rebuildLayout: function(resourceType) {\n this.__cleanAll();\n if (this.getGroupBy()) {\n const noGroupContainer = this.__createGroupContainer(\"no-group\", \"No Group\", \"transparent\");\n this.__groupedContainers.add(noGroupContainer);\n this._add(this.__groupedContainers);\n } else {\n const flatList = this.__nonGroupedContainer = this.__createFlatList();\n osparc.utils.Utils.setIdToWidget(flatList, resourceType + \"List\");\n this._add(flatList);\n }\n },\n\n __createFlatList: function() {\n const flatList = new osparc.dashboard.CardContainer();\n const setContainerSpacing = () => {\n const spacing = this.getMode() === \"grid\" ? osparc.dashboard.GridButtonBase.SPACING : osparc.dashboard.ListButtonBase.SPACING;\n flatList.getLayout().set({\n spacingX: spacing,\n spacingY: spacing\n });\n };\n setContainerSpacing();\n this.addListener(\"changeMode\", () => setContainerSpacing());\n [\n \"changeSelection\",\n \"changeVisibility\"\n ].forEach(signalName => {\n flatList.addListener(signalName, e => this.fireDataEvent(signalName, e.getData()), this);\n });\n return flatList;\n },\n\n reloadCards: function(resourceType) {\n this.__rebuildLayout(resourceType);\n\n const cards = [];\n this.__resourcesList.forEach(resourceData => {\n Array.prototype.push.apply(cards, this.__resourceToCards(resourceData));\n });\n return cards;\n },\n\n reloadNewCards: function() {\n let newCards = [];\n const currentCards = this.getCards();\n this.__resourcesList.forEach(resourceData => {\n const idx = currentCards.findIndex(card => card.isPropertyInitialized(\"uuid\") && resourceData[\"uuid\"] === card.getUuid());\n if (idx === -1) {\n Array.prototype.push.apply(newCards, this.__resourceToCards(resourceData));\n }\n });\n return newCards;\n },\n\n // WORKSPACES\n setWorkspacesToList: function(workspacesList) {\n this.__workspacesList = workspacesList;\n },\n\n reloadWorkspaces: function() {\n if (this.__workspacesContainer) {\n this.__workspacesContainer.removeAll();\n }\n let workspacesCards = [];\n this.__workspacesList.forEach(workspaceData => workspacesCards.push(this.__workspaceToCard(workspaceData)));\n return workspacesCards;\n },\n\n addNewWorkspaceCard: function(newWorkspaceCard) {\n this.__workspacesContainer.addAt(newWorkspaceCard, 0);\n },\n\n __workspaceToCard: function(workspaceData) {\n const card = this.__createWorkspaceCard(workspaceData);\n this.__workspacesContainer.add(card);\n return card;\n },\n\n __createWorkspaceCard: function(workspace) {\n const card = new osparc.dashboard.WorkspaceButtonItem(workspace);\n [\n \"workspaceSelected\",\n \"workspaceUpdated\",\n \"trashWorkspaceRequested\",\n \"untrashWorkspaceRequested\",\n \"deleteWorkspaceRequested\",\n ].forEach(eName => card.addListener(eName, e => this.fireDataEvent(eName, e.getData())));\n return card;\n },\n // /WORKSPACES\n\n // FOLDERS\n setFoldersToList: function(foldersList) {\n this.__foldersList = foldersList;\n },\n\n reloadFolders: function() {\n if (this.__foldersContainer) {\n this.__foldersContainer.removeAll();\n }\n let folderCards = [];\n this.__foldersList.forEach(folderData => folderCards.push(this.__folderToCard(folderData)));\n return folderCards;\n },\n\n addNewFolderCard: function(newFolderCard) {\n this.__foldersContainer.addAt(newFolderCard, 0);\n },\n\n __folderToCard: function(folderData) {\n const card = this.__createFolderCard(folderData);\n this.__foldersContainer.add(card);\n return card;\n },\n\n __createFolderCard: function(folder) {\n const card = new osparc.dashboard.FolderButtonItem(folder);\n [\n \"folderSelected\",\n \"folderUpdated\",\n \"moveFolderToRequested\",\n \"trashFolderRequested\",\n \"untrashFolderRequested\",\n \"deleteFolderRequested\",\n \"changeContext\",\n \"studyToFolderRequested\",\n \"folderToFolderRequested\",\n ].forEach(eName => card.addListener(eName, e => this.fireDataEvent(eName, e.getData())));\n return card;\n },\n // /FOLDERS\n\n __moveNoGroupToLast: function() {\n const idx = this.__groupedContainers.getChildren().findIndex(grpContainer => grpContainer === this.__getGroupContainer(\"no-group\"));\n if (idx > -1) {\n this.__groupedContainers.getChildren().push(this.__groupedContainers.getChildren().splice(idx, 1)[0]);\n }\n },\n\n __groupByTags: function(cards, resourceData) {\n const tags = resourceData.tags ? osparc.store.Tags.getInstance().getTags().filter(tag => resourceData.tags.includes(tag.getTagId())) : [];\n if (tags.length === 0) {\n let noGroupContainer = this.__getGroupContainer(\"no-group\");\n const card = this.__createCard(resourceData);\n this.__addCardToContainer(card, noGroupContainer);\n this.self().sortListByPriority(noGroupContainer.getContentContainer());\n cards.push(card);\n } else {\n tags.forEach(tag => {\n let groupContainer = this.__getGroupContainer(tag.getTagId());\n if (groupContainer === null) {\n groupContainer = this.__createGroupContainer(tag.getTagId(), tag.getName(), tag.getColor());\n tag.bind(\"name\", groupContainer, \"headerLabel\");\n tag.bind(\"color\", groupContainer, \"headerColor\");\n groupContainer.setHeaderIcon(\"@FontAwesome5Solid/tag/24\");\n this.__groupedContainers.add(groupContainer);\n this.__groupedContainers.getChildren().sort((a, b) => a.getHeaderLabel().localeCompare(b.getHeaderLabel()));\n this.__moveNoGroupToLast();\n }\n const card = this.__createCard(resourceData);\n this.__addCardToContainer(card, groupContainer);\n this.self().sortListByPriority(groupContainer.getContentContainer());\n cards.push(card);\n });\n }\n },\n\n __groupByShareWith: function(cards, resourceData) {\n const orgIds = resourceData.accessRights ? Object.keys(resourceData[\"accessRights\"]) : [];\n if (orgIds.length === 0) {\n let noGroupContainer = this.__getGroupContainer(\"no-group\");\n const card = this.__createCard(resourceData);\n this.__addCardToContainer(card, noGroupContainer);\n this.self().sortListByPriority(noGroupContainer.getContentContainer());\n cards.push(card);\n } else {\n orgIds.forEach(orgId => {\n let groupContainer = this.__getGroupContainer(orgId);\n if (groupContainer === null) {\n groupContainer = this.__createGroupContainer(orgId, \"loading-label\");\n const groupsStore = osparc.store.Groups.getInstance();\n const group = groupsStore.getGroup(orgId);\n if (group) {\n let icon = \"\";\n if (group.getThumbnail()) {\n icon = group.getThumbnail();\n } else if (group[\"collabType\"] === 0) {\n icon = \"@FontAwesome5Solid/globe/24\";\n } else if (group[\"collabType\"] === 1) {\n icon = \"@FontAwesome5Solid/users/24\";\n } else if (group[\"collabType\"] === 2) {\n icon = \"@FontAwesome5Solid/user/24\";\n }\n groupContainer.set({\n headerIcon: icon,\n headerLabel: group.getLabel(),\n });\n } else {\n groupContainer.exclude();\n }\n this.__groupedContainers.add(groupContainer);\n this.__moveNoGroupToLast();\n }\n const card = this.__createCard(resourceData);\n this.__addCardToContainer(card, groupContainer);\n this.self().sortListByPriority(groupContainer.getContentContainer());\n cards.push(card);\n });\n }\n },\n\n __resourceToCards: function(resourceData) {\n const cardsCreated = [];\n if (this.getGroupBy() === \"tags\") {\n this.__groupByTags(cardsCreated, resourceData);\n } else if (this.getGroupBy() === \"shared\") {\n this.__groupByShareWith(cardsCreated, resourceData);\n } else {\n const card = this.__createCard(resourceData);\n this.__addCardToContainer(card, this.__nonGroupedContainer);\n this.self().sortListByPriority(this.__nonGroupedContainer);\n cardsCreated.push(card);\n }\n return cardsCreated;\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Fabian Jakobs (fjakobs)\n\n************************************************************************ */\n\n/**\n * Renders a special radio button inside a menu. The button behaves like\n * a normal {@link qx.ui.form.RadioButton} and shows a radio icon when\n * checked; normally shows no icon when not checked (depends on the theme).\n */\nqx.Class.define(\"qx.ui.menu.RadioButton\",\n{\n extend : qx.ui.menu.AbstractButton,\n include : [qx.ui.form.MModelProperty],\n implement : [qx.ui.form.IRadioItem, qx.ui.form.IBooleanForm, qx.ui.form.IModel],\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param label {String} Initial label\n * @param menu {qx.ui.menu.Menu} Initial sub menu\n */\n construct : function(label, menu)\n {\n this.base(arguments);\n\n // Initialize with incoming arguments\n if (label != null) {\n this.setLabel(label);\n }\n\n if (menu != null) {\n this.setMenu(menu);\n }\n\n this.addListener(\"execute\", this._onExecute, this);\n },\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n // overridden\n appearance :\n {\n refine : true,\n init : \"menu-radiobutton\"\n },\n\n /** The value of the widget. True, if the widget is checked. */\n value :\n {\n check : \"Boolean\",\n nullable : true,\n event : \"changeValue\",\n apply : \"_applyValue\",\n init : false\n },\n\n /** The assigned qx.ui.form.RadioGroup which handles the switching between registered buttons */\n group :\n {\n check : \"qx.ui.form.RadioGroup\",\n nullable : true,\n apply : \"_applyGroup\"\n }\n },\n\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n // overridden (from MExecutable to keep the icon out of the binding)\n /**\n * @lint ignoreReferenceField(_bindableProperties)\n */\n _bindableProperties :\n [\n \"enabled\",\n \"label\",\n \"toolTipText\",\n \"value\",\n \"menu\"\n ],\n\n\n // property apply\n _applyValue : function(value, old) {\n value ? this.addState(\"checked\") : this.removeState(\"checked\");\n },\n\n\n // property apply\n _applyGroup : function(value, old)\n {\n if (old) {\n old.remove(this);\n }\n\n if (value) {\n value.add(this);\n }\n },\n\n\n /**\n * Handler for the execute event.\n *\n * @param e {qx.event.type.Event} The execute event.\n */\n _onExecute : function(e) {\n var grp = this.getGroup();\n if (grp && grp.getAllowEmptySelection()) {\n this.toggleValue();\n } else {\n this.setValue(true);\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.dashboard.ResourceFilter\", {\n extend: qx.ui.core.Widget,\n\n construct: function(resourceType) {\n this.base(arguments);\n\n osparc.utils.Utils.setIdToWidget(this, resourceType + \"-resourceFilter\");\n\n this.__resourceType = resourceType;\n this.__sharedWithButtons = [];\n this.__tagButtons = [];\n this.__serviceTypeButtons = [];\n\n this._setLayout(new qx.ui.layout.VBox(15));\n this.__buildLayout();\n },\n\n events: {\n \"trashContext\": \"qx.event.type.Event\",\n \"changeTab\": \"qx.event.type.Data\",\n \"trashStudyRequested\": \"qx.event.type.Data\",\n \"trashFolderRequested\": \"qx.event.type.Data\",\n \"changeSharedWith\": \"qx.event.type.Data\",\n \"changeSelectedTags\": \"qx.event.type.Data\",\n \"changeServiceType\": \"qx.event.type.Data\"\n },\n\n members: {\n __resourceType: null,\n __workspacesAndFoldersTree: null,\n __trashButton: null,\n __sharedWithButtons: null,\n __tagButtons: null,\n __serviceTypeButtons: null,\n\n __buildLayout: function() {\n const filtersSpacer = new qx.ui.core.Spacer(10, 10);\n switch (this.__resourceType) {\n case \"study\": {\n this._add(this.__createWorkspacesAndFoldersTree());\n this._add(this.__createTrashBin());\n // this._add(this.__createResourceTypeContextButtons());\n this._add(filtersSpacer);\n const scrollView = new qx.ui.container.Scroll();\n scrollView.add(this.__createTagsFilterLayout());\n this._add(scrollView, {\n flex: 1\n });\n break;\n }\n case \"template\": {\n // this._add(this.__createResourceTypeContextButtons());\n this._add(filtersSpacer);\n this._add(this.__createSharedWithFilterLayout());\n const scrollView = new qx.ui.container.Scroll();\n scrollView.add(this.__createTagsFilterLayout());\n this._add(scrollView, {\n flex: 1\n });\n break;\n }\n case \"service\":\n // this._add(this.__createResourceTypeContextButtons());\n this._add(filtersSpacer);\n this._add(this.__createSharedWithFilterLayout());\n this._add(this.__createServiceTypeFilterLayout());\n break;\n }\n },\n\n contextChanged: function(context, workspaceId, folderId) {\n this.__workspacesAndFoldersTree.set({\n currentWorkspaceId: workspaceId,\n currentFolderId: folderId,\n });\n this.__workspacesAndFoldersTree.contextChanged(context);\n\n this.__trashButton.setValue(context === \"trash\");\n },\n\n /* WORKSPACES AND FOLDERS */\n __createWorkspacesAndFoldersTree: function() {\n const workspacesAndFoldersTree = this.__workspacesAndFoldersTree = new osparc.dashboard.WorkspacesAndFoldersTree();\n osparc.utils.Utils.setIdToWidget(workspacesAndFoldersTree, \"contextTree\");\n // Height needs to be calculated manually to make it flexible\n workspacesAndFoldersTree.set({\n minHeight: 60, // two entries\n maxHeight: 400,\n height: 60,\n });\n workspacesAndFoldersTree.addListener(\"openChanged\", () => {\n const rowConfig = workspacesAndFoldersTree.getPane().getRowConfig();\n const totalHeight = rowConfig.itemCount * rowConfig.defaultItemSize;\n workspacesAndFoldersTree.setHeight(totalHeight + 2);\n });\n return workspacesAndFoldersTree;\n },\n\n getWorkspacesAndFoldersTree: function() {\n return this.__workspacesAndFoldersTree;\n },\n /* /WORKSPACES AND FOLDERS */\n\n /* TRASH BIN */\n __createTrashBin: function() {\n const trashButton = this.__trashButton = new qx.ui.toolbar.RadioButton().set({\n value: false,\n appearance: \"filter-toggle-button\",\n label: this.tr(\"Recently Deleted\"),\n icon: \"@FontAwesome5Solid/trash-alt/16\",\n paddingLeft: 10, // align it with the context\n });\n trashButton.addListener(\"changeValue\", e => {\n const trashEnabled = e.getData();\n if (trashEnabled) {\n this.fireEvent(\"trashContext\");\n }\n });\n this.evaluateTrashEmpty();\n this.__attachDropHandlers(trashButton);\n return trashButton;\n },\n\n __attachDropHandlers: function(trashButton) {\n trashButton.setDroppable(true);\n\n trashButton.addListener(\"dragover\", e => {\n if (e.supportsType(\"osparc-moveStudy\")) {\n osparc.dashboard.DragDropHelpers.trashStudy.dragOver(e);\n } else if (e.supportsType(\"osparc-moveFolder\")) {\n osparc.dashboard.DragDropHelpers.trashFolder.dragOver(e);\n }\n });\n\n trashButton.addListener(\"dragleave\", () => {\n osparc.dashboard.DragDropHelpers.dragLeave();\n });\n\n trashButton.addListener(\"drop\", e => {\n if (e.supportsType(\"osparc-moveStudy\")) {\n const studyData = osparc.dashboard.DragDropHelpers.trashStudy.drop(e);\n this.fireDataEvent(\"trashStudyRequested\", studyData);\n } else if (e.supportsType(\"osparc-moveFolder\")) {\n const folderId = osparc.dashboard.DragDropHelpers.trashFolder.drop(e);\n this.fireDataEvent(\"trashFolderRequested\", folderId);\n }\n });\n },\n\n evaluateTrashEmpty: function() {\n if (osparc.auth.Data.getInstance().isGuest()) {\n // Guests do not have access to folders and workspaces\n return;\n }\n\n const studiesParams = {\n url: {\n offset: 0,\n limit: 1, // just one\n orderBy: JSON.stringify({\n field: \"last_change_date\",\n direction: \"desc\"\n }),\n }\n };\n const foldersParams = {\n url: {\n offset: 0,\n limit: 1, // just one\n orderBy: JSON.stringify({\n field: \"modified_at\",\n direction: \"desc\"\n }),\n }\n };\n const workspacesParams = {\n url: {\n offset: 0,\n limit: 1, // just one\n orderBy: JSON.stringify({\n field: \"modified_at\",\n direction: \"desc\"\n }),\n }\n };\n Promise.all([\n osparc.data.Resources.fetch(\"studies\", \"getPageTrashed\", studiesParams),\n osparc.data.Resources.fetch(\"folders\", \"getPageTrashed\", foldersParams),\n osparc.data.Resources.fetch(\"workspaces\", \"getPageTrashed\", workspacesParams),\n ])\n .then(values => {\n const nTrashedStudies = values[0].length;\n const nTrashedFolders = values[1].length;\n const nTrashedWorkspaces = values[2].length;\n this.setTrashEmpty((nTrashedStudies+nTrashedFolders+nTrashedWorkspaces) === 0);\n })\n .catch(err => console.error(err));\n },\n\n setTrashEmpty: function(isEmpty) {\n this.__trashButton.set({\n icon: isEmpty ? \"@FontAwesome5Solid/trash-alt/16\" : \"@FontAwesome5Solid/trash/16\"\n });\n },\n /* /TRASH BIN */\n\n /* RESOURCE TYPE CONTEXT */\n __createResourceTypeContextButtons: function() {\n const resourceTypeContextButtons = new qx.ui.container.Composite(new qx.ui.layout.VBox(2));\n\n const studiesButton = this.__createStudiesButton().set({\n value: this.__resourceType === \"study\",\n visibility: this.__resourceType === \"study\" ? \"excluded\" : \"visible\",\n });\n resourceTypeContextButtons.add(studiesButton);\n\n const permissions = osparc.data.Permissions.getInstance();\n const templatesButton = this.__createTemplatesButton().set({\n value: this.__resourceType === \"template\",\n });\n if (permissions.canDo(\"dashboard.templates.read\")) {\n resourceTypeContextButtons.add(templatesButton);\n }\n\n const servicesButton = this.__createServicesButton().set({\n value: this.__resourceType === \"service\",\n });\n if (permissions.canDo(\"dashboard.services.read\")) {\n resourceTypeContextButtons.add(servicesButton);\n }\n\n return resourceTypeContextButtons;\n },\n\n __createStudiesButton: function() {\n const studyAlias = osparc.product.Utils.getStudyAlias({\n firstUpperCase: true,\n plural: true\n });\n const studiesButton = new qx.ui.toolbar.RadioButton().set({\n value: false,\n appearance: \"filter-toggle-button\",\n label: studyAlias,\n icon: \"@FontAwesome5Solid/file/16\",\n paddingLeft: 10, // align it with the context\n });\n osparc.utils.Utils.setIdToWidget(studiesButton, \"studiesTabBtn\");\n studiesButton.addListener(\"tap\", () => {\n studiesButton.setValue(this.__resourceType === \"study\");\n this.fireDataEvent(\"changeTab\", \"studiesTab\");\n });\n return studiesButton;\n },\n\n __createTemplatesButton: function() {\n const templateAlias = osparc.product.Utils.getTemplateAlias({\n firstUpperCase: true,\n plural: true\n });\n const templatesButton = new qx.ui.toolbar.RadioButton().set({\n value: false,\n appearance: \"filter-toggle-button\",\n label: templateAlias,\n icon: \"@FontAwesome5Solid/copy/16\",\n paddingLeft: 10, // align it with the context\n });\n osparc.utils.Utils.setIdToWidget(templatesButton, \"templatesTabBtn\");\n templatesButton.addListener(\"tap\", () => {\n templatesButton.setValue(this.__resourceType === \"template\");\n this.fireDataEvent(\"changeTab\", \"templatesTab\");\n });\n return templatesButton;\n },\n\n __createServicesButton: function() {\n const servicesButton = new qx.ui.toolbar.RadioButton().set({\n value: false,\n appearance: \"filter-toggle-button\",\n label: this.tr(\"Services\"),\n icon: \"@FontAwesome5Solid/cogs/16\",\n paddingLeft: 10, // align it with the context\n });\n osparc.utils.Utils.setIdToWidget(servicesButton, \"servicesTabBtn\");\n servicesButton.addListener(\"tap\", () => {\n servicesButton.setValue(this.__resourceType === \"service\");\n this.fireDataEvent(\"changeTab\", \"servicesTab\");\n });\n return servicesButton;\n },\n /* /RESOURCE TYPE CONTEXT */\n\n /* SHARED WITH */\n __createSharedWithFilterLayout: function() {\n const sharedWithLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(2));\n\n const sharedWithRadioGroup = new qx.ui.form.RadioGroup();\n sharedWithRadioGroup.setAllowEmptySelection(false);\n\n const options = osparc.dashboard.SearchBarFilter.getSharedWithOptions(this.__resourceType);\n options.forEach(option => {\n if (this.__resourceType === \"study\" && option.id === \"shared-with-everyone\") {\n return;\n }\n const button = new qx.ui.toolbar.RadioButton().set({\n appearance: \"filter-toggle-button\",\n label: option.label,\n icon: option.icon,\n });\n osparc.utils.Utils.setIdToWidget(button, this.__resourceType + \"-sharedWithFilterItem\");\n if (this.__resourceType === \"study\") {\n if (option.id === \"show-all\") {\n button.set({\n label: this.tr(\"My Workspace\")\n });\n } else if (option.id === \"shared-with-me\") {\n button.set({\n label: this.tr(\"Shared\") + \" \" + osparc.product.Utils.getStudyAlias({\n firstUpperCase: true,\n plural: true,\n })\n });\n }\n }\n button.id = option.id;\n\n sharedWithLayout.add(button);\n sharedWithRadioGroup.add(button);\n\n button.addListener(\"execute\", () => {\n this.fireDataEvent(\"changeSharedWith\", {\n id: option.id,\n label: option.label\n });\n }, this);\n\n this.__sharedWithButtons.push(button);\n });\n\n return sharedWithLayout;\n },\n /* /SHARED WITH */\n\n /* TAGS */\n __createTagsFilterLayout: function() {\n const tagsLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(2));\n osparc.utils.Utils.setIdToWidget(tagsLayout, this.__resourceType + \"-tagsFilter\");\n\n this.__populateTags(tagsLayout, []);\n osparc.store.Tags.getInstance().addListener(\"tagsChanged\", () => {\n this.__populateTags(tagsLayout, this.__getSelectedTagIds());\n }, this);\n\n return tagsLayout;\n },\n\n __getSelectedTagIds: function() {\n const selectedTagIds = this.__tagButtons.filter(btn => btn.getValue()).map(btn => btn.id);\n return selectedTagIds;\n },\n\n __populateTags: function(tagsLayout, selectedTagIds) {\n const maxTags = 5;\n this.__tagButtons = [];\n tagsLayout.removeAll();\n osparc.store.Tags.getInstance().getTags().forEach((tag, idx) => {\n const button = new qx.ui.form.ToggleButton(null, \"@FontAwesome5Solid/tag/16\");\n button.id = tag.getTagId();\n tag.bind(\"name\", button, \"label\");\n tag.bind(\"name\", button, \"toolTipText\");\n tag.bind(\"color\", button.getChildControl(\"icon\"), \"textColor\");\n osparc.utils.Utils.setIdToWidget(button, this.__resourceType + \"-tagFilterItem\");\n button.set({\n appearance: \"filter-toggle-button\",\n value: selectedTagIds.includes(tag.getTagId())\n });\n\n tagsLayout.add(button);\n\n button.addListener(\"execute\", () => {\n const selection = this.__getSelectedTagIds();\n this.fireDataEvent(\"changeSelectedTags\", selection);\n }, this);\n\n button.setVisibility(idx >= maxTags ? \"excluded\" : \"visible\");\n\n this.__tagButtons.push(button);\n });\n\n\n if (this.__tagButtons.length > maxTags) {\n const showAllButton = new qx.ui.form.Button(this.tr(\"All Tags...\"), \"@FontAwesome5Solid/tags/16\");\n showAllButton.set({\n appearance: \"filter-toggle-button\"\n });\n showAllButton.showingAll = false;\n showAllButton.addListener(\"execute\", () => {\n if (showAllButton.showingAll) {\n this.__tagButtons.forEach((btn, idx) => btn.setVisibility(idx >= maxTags ? \"excluded\" : \"visible\"));\n showAllButton.setLabel(this.tr(\"All Tags...\"));\n showAllButton.showingAll = false;\n } else {\n this.__tagButtons.forEach(btn => btn.setVisibility(\"visible\"));\n showAllButton.setLabel(this.tr(\"Less Tags...\"));\n showAllButton.showingAll = true;\n }\n });\n tagsLayout.add(showAllButton);\n }\n\n const editTagsButton = new qx.ui.form.Button(this.tr(\"Edit Tags...\"), \"@FontAwesome5Solid/pencil-alt/14\");\n editTagsButton.set({\n appearance: \"filter-toggle-button\"\n });\n editTagsButton.addListener(\"execute\", () => {\n const myAccountWindow = osparc.desktop.account.MyAccountWindow.openWindow();\n myAccountWindow.openTags();\n });\n tagsLayout.add(editTagsButton);\n\n if (this.__resourceType === \"study\") {\n tagsLayout.getChildren().forEach(item => item.setPaddingLeft(10)); // align them with the context\n }\n },\n /* /TAGS */\n\n /* SERVICE TYPE */\n __createServiceTypeFilterLayout: function() {\n const layout = new qx.ui.container.Composite(new qx.ui.layout.VBox(2));\n\n const radioGroup = new qx.ui.form.RadioGroup();\n radioGroup.setAllowEmptySelection(true);\n\n const serviceTypes = osparc.service.Utils.TYPES;\n Object.keys(serviceTypes).forEach(serviceId => {\n if (![\"computational\", \"dynamic\"].includes(serviceId)) {\n return;\n }\n const serviceType = serviceTypes[serviceId];\n const iconSize = 20;\n const button = new qx.ui.toolbar.RadioButton(serviceType.label, serviceType.icon+iconSize);\n button.id = serviceId;\n osparc.utils.Utils.setIdToWidget(button, this.__resourceType + \"-serviceTypeFilterItem\");\n button.set({\n appearance: \"filter-toggle-button\",\n value: false\n });\n\n layout.add(button);\n radioGroup.add(button);\n\n button.addListener(\"execute\", () => {\n const checked = button.getValue();\n this.fireDataEvent(\"changeServiceType\", {\n id: checked ? serviceId : null,\n label: checked ? serviceType.label : null\n });\n }, this);\n\n this.__serviceTypeButtons.push(button);\n });\n\n return layout;\n },\n /* /SERVICE TYPE */\n\n filterChanged: function(filterData) {\n if (\"sharedWith\" in filterData) {\n const foundBtn = this.__sharedWithButtons.find(btn => btn.id === filterData[\"sharedWith\"]);\n if (foundBtn) {\n foundBtn.setValue(true);\n }\n }\n if (\"tags\" in filterData) {\n this.__tagButtons.forEach(btn => {\n btn.setValue(filterData[\"tags\"].includes(btn.id));\n });\n }\n if (\"serviceType\" in filterData) {\n this.__serviceTypeButtons.forEach(btn => {\n btn.setValue(filterData[\"serviceType\"] === btn.id);\n });\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Reload button\n * -------------------------------- =/- -\n * | root | content1 content2 |\n * | folder1 | content3 content4 |\n * | folder2 | content5 content6 |\n * --------------------------------------\n * selected_file Down Del\n */\n\nqx.Class.define(\"osparc.file.TreeFolderView\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this.__buildLayout();\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"reload-button\":\n control = new qx.ui.form.Button().set({\n label: this.tr(\"Reload\"),\n font: \"text-14\",\n icon: \"@FontAwesome5Solid/sync-alt/14\",\n allowGrowX: false\n });\n this._add(control);\n break;\n case \"tree-folder-layout\":\n control = new qx.ui.splitpane.Pane(\"horizontal\");\n control.getChildControl(\"splitter\").set({\n width: 2,\n backgroundColor: \"scrollbar-passive\"\n });\n this._add(control, {\n flex: 1\n });\n break;\n case \"folder-tree\": {\n const treeFolderLayout = this.getChildControl(\"tree-folder-layout\");\n control = new osparc.file.FilesTree().set({\n showLeafs: false,\n minWidth: 150,\n width: 250\n });\n treeFolderLayout.add(control, 0);\n break;\n }\n case \"folder-viewer\": {\n const treeFolderLayout = this.getChildControl(\"tree-folder-layout\");\n control = new osparc.file.FolderViewer();\n treeFolderLayout.add(control, 1);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __buildLayout: function() {\n this.getChildControl(\"reload-button\");\n const folderTree = this.getChildControl(\"folder-tree\");\n const folderViewer = this.getChildControl(\"folder-viewer\");\n\n // Connect elements\n folderTree.addListener(\"selectionChanged\", () => {\n const selectedFolder = folderTree.getSelectedItem();\n if (selectedFolder && (osparc.file.FilesTree.isDir(selectedFolder) || (selectedFolder.getChildren && selectedFolder.getChildren().length))) {\n folderViewer.setFolder(selectedFolder);\n }\n }, this);\n\n folderViewer.addListener(\"openItemSelected\", e => {\n const data = e.getData();\n folderTree.openNodeAndParents(data);\n folderTree.setSelection(new qx.data.Array([data]));\n }, this);\n\n folderViewer.addListener(\"folderUp\", e => {\n const currentFolder = e.getData();\n const parent = folderTree.getParent(currentFolder);\n if (parent) {\n folderTree.setSelection(new qx.data.Array([parent]));\n folderViewer.setFolder(parent);\n }\n }, this);\n\n folderViewer.addListener(\"requestDatasetFiles\", e => {\n const data = e.getData();\n folderTree.requestDatasetFiles(data.locationId, data.datasetId);\n }, this);\n },\n\n openPath: function(path) {\n const foldersTree = this.getChildControl(\"folder-tree\");\n const folderViewer = this.getChildControl(\"folder-viewer\");\n let found = false;\n while (!found && path.length) {\n found = foldersTree.findItemId(path.join(\"/\"));\n // look for next parent\n path.pop();\n }\n if (found) {\n foldersTree.openNodeAndParents(found);\n foldersTree.setSelection(new qx.data.Array([found]));\n foldersTree.fireEvent(\"selectionChanged\");\n } else {\n folderViewer.resetFolder();\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.SlidesBase\", {\n extend: osparc.ui.window.SingletonWindow,\n type: \"abstract\",\n\n construct: function(id, caption, icon) {\n this.base(arguments, id, caption, icon);\n\n this.set({\n layout: new qx.ui.layout.VBox(20),\n modal: true,\n width: this.self().WINDOW_WIDTH,\n height: 700,\n contentPadding: this.self().CONTENT_PADDING,\n showMaximize: false,\n showMinimize: false\n });\n\n const closeBtn = this.getChildControl(\"close-button\");\n osparc.utils.Utils.setIdToWidget(closeBtn, \"quickStartWindowCloseBtn\");\n\n const arrowsLayout = this.__createArrows();\n this.add(arrowsLayout);\n\n const stack = this.__stack = this.__createStack();\n this.add(stack, {\n flex: 1\n });\n\n const footer = this.__createFooter();\n this.add(footer);\n\n this.__setSlideIdx(0);\n },\n\n statics: {\n WINDOW_WIDTH: 700,\n CONTENT_PADDING: 20,\n CONTENT_WIDTH: 660\n },\n\n members: {\n __currentIdx: null,\n __slideCounter: null,\n __prevBtn: null,\n __nextBtn: null,\n __stack: null,\n\n __createArrows: function() {\n const arrowsLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox());\n\n const prevBtn = this.__prevBtn = new qx.ui.form.Button().set({\n icon: \"@FontAwesome5Solid/arrow-left/20\",\n allowGrowX: true,\n backgroundColor: \"transparent\",\n iconPosition: \"left\",\n alignX: \"left\"\n });\n prevBtn.addListener(\"execute\", () => this.__setSlideIdx(this.__currentIdx-1), this);\n arrowsLayout.add(prevBtn);\n\n arrowsLayout.add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n\n const slideCounter = this.__slideCounter = new qx.ui.container.Composite(new qx.ui.layout.HBox(2)).set({\n alignY: \"middle\",\n maxWidth: 160,\n maxHeight: 10\n });\n arrowsLayout.add(slideCounter);\n\n arrowsLayout.add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n\n const nextBtn = this.__nextBtn = new qx.ui.form.Button().set({\n icon: \"@FontAwesome5Solid/arrow-right/20\",\n allowGrowX: true,\n backgroundColor: \"transparent\",\n iconPosition: \"right\",\n alignX: \"right\"\n });\n nextBtn.addListener(\"execute\", () => this.__setSlideIdx(this.__currentIdx+1), this);\n arrowsLayout.add(nextBtn);\n\n return arrowsLayout;\n },\n\n __setSlideIdx: function(idx) {\n const selectables = this.__stack.getSelectables();\n if (idx > -1 && idx < selectables.length) {\n this.__currentIdx = idx;\n this.__stack.setSelection([selectables[idx]]);\n const firstSlide = (idx === 0);\n const lastSlide = (idx === selectables.length-1);\n this.__prevBtn.setEnabled(!firstSlide);\n this.__nextBtn.setEnabled(!lastSlide);\n this.set({\n showClose: lastSlide\n });\n }\n this.__slideCounter.removeAll();\n for (let i=0; i {\n const slideContainer = new qx.ui.container.Scroll();\n slideContainer.add(slide);\n stack.add(slideContainer);\n });\n return stack;\n },\n\n __createFooter: function() {\n const footer = new qx.ui.container.Composite(new qx.ui.layout.HBox(10)).set({\n alignX: \"center\"\n });\n\n const footerItems = this._getFooterItems();\n footerItems.forEach((footerItem, idx) => {\n footer.add(footerItem);\n if (idx !== footerItems.length-1) {\n footer.add(new qx.ui.core.Widget().set({\n maxHeight: 15\n }), {\n flex: 1\n });\n }\n });\n\n return footer;\n },\n\n _getSlides: function() {\n throw new Error(\"Abstract method called!\");\n },\n\n _getFooterItems: function() {\n throw new Error(\"Abstract method called!\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.tis.Slides\", {\n extend: osparc.product.quickStart.SlidesBase,\n\n construct: function() {\n this.base(arguments, \"ti-slides\", this.tr(\"Quick Start\"));\n },\n\n statics: {\n footerLinks: function() {\n const footerLinks = [];\n\n const videoText = osparc.utils.Utils.createHTMLLink(\"TIP videos\", \"https://www.youtube.com/playlist?list=PLcJQYcVCSqDu5gXnJj-_vS_spGhZOe-jF\");\n const videoLabel = new qx.ui.basic.Label(videoText).set({\n textAlign: \"center\",\n rich : true\n });\n footerLinks.push(videoLabel);\n\n const manualsLabel = new qx.ui.basic.Label().set({\n visibility: \"excluded\",\n textAlign: \"center\",\n rich : true\n });\n const manuals = osparc.store.Support.getManuals();\n if (manuals.length > 0) {\n const manualText = osparc.utils.Utils.createHTMLLink(\"Documentation\", manuals[0].url);\n manualsLabel.setValue(manualText);\n manualsLabel.show();\n }\n footerLinks.push(manualsLabel);\n\n const licenseText = osparc.utils.Utils.createHTMLLink(\"Privacy Policy\", \"https://itis.swiss/meta-navigation/privacy-policy/\");\n const licenseLabel = new qx.ui.basic.Label(licenseText).set({\n textAlign: \"center\",\n rich : true\n });\n footerLinks.push(licenseLabel);\n\n return footerLinks;\n }\n },\n\n members: {\n // overriden\n _getSlides: function() {\n return [\n new osparc.product.quickStart.tis.Welcome(),\n new osparc.product.quickStart.tis.Dashboard(),\n new osparc.product.quickStart.tis.ElectrodeSelector(),\n new osparc.product.quickStart.tis.PostPro(),\n new osparc.product.quickStart.tis.S4LPostPro(),\n new osparc.product.quickStart.tis.MoreInformation()\n ];\n },\n\n // overriden\n _getFooterItems: function() {\n const footerItems = this.self().footerLinks();\n\n const dontShowCB = osparc.product.quickStart.Utils.createDontShowAgain(\"tiDontShowQuickStart\");\n footerItems.push(dontShowCB);\n\n return footerItems;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.s4llite.Slides\", {\n extend: osparc.product.quickStart.SlidesBase,\n\n construct: function() {\n this.base(arguments, \"s4llite-slides\", this.tr(\"Quick Start\"));\n },\n\n members: {\n _getSlides: function() {\n return [\n new osparc.product.quickStart.s4llite.Welcome(),\n new osparc.product.quickStart.s4llite.Dashboard(),\n new osparc.product.quickStart.s4llite.S4LLiteSpecs(),\n new osparc.product.quickStart.s4llite.S4LLiteUI()\n ];\n },\n // overriden\n _getFooterItems: function() {\n const footerItems = [];\n\n const docLink = new qx.ui.basic.Label().set({\n visibility: \"excluded\",\n textAlign: \"center\",\n rich : true\n });\n const manuals = osparc.store.Support.getManuals();\n if (manuals.length > 0) {\n const link = osparc.utils.Utils.createHTMLLink(\"Documentation\", manuals[0].url);\n docLink.setValue(link);\n docLink.show();\n }\n footerItems.push(docLink);\n\n const licenseLink = new qx.ui.basic.Label().set({\n visibility: \"excluded\",\n textAlign: \"center\",\n rich : true\n });\n const licenseUrl = osparc.store.Support.getLicenseURL();\n if (licenseUrl) {\n const link = osparc.utils.Utils.createHTMLLink(\"Licensing\", licenseUrl);\n licenseLink.setValue(link);\n licenseLink.show();\n }\n footerItems.push(licenseLink);\n\n const dontShowCB = osparc.product.quickStart.Utils.createDontShowAgain(\"s4lliteDontShowQuickStart\");\n footerItems.push(dontShowCB);\n\n return footerItems;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.s4l.Welcome\", {\n extend: osparc.ui.window.SingletonWindow,\n\n construct: function() {\n this.base(arguments, \"s4l-welcome\", this.tr(\"Welcome to Sim4Life\"));\n\n this.set({\n layout: new qx.ui.layout.VBox(20),\n contentPadding: 15,\n modal: true,\n width: 500,\n height: 500,\n showMaximize: false,\n showMinimize: false\n });\n\n this.__buildLayout();\n },\n\n members: {\n __buildLayout: function() {\n const content = this.__createContent();\n this.add(content, {\n flex: 1\n });\n\n const footer = this.__createFooter();\n this.add(footer);\n },\n\n __createContent: function() {\n const content = new qx.ui.container.Composite(new qx.ui.layout.VBox(10));\n\n const introTitle = this.tr(\"Experience Most Advanced Simulations – All In The Cloud\");\n const intro1 = osparc.product.quickStart.Utils.createLabel(introTitle);\n intro1.set({\n font: \"text-16\"\n });\n content.add(intro1);\n\n const welcomeText = this.tr(\"Welcome onboard \") + osparc.utils.Utils.capitalize(osparc.auth.Data.getInstance().getFriendlyUsername()) + \",\";\n const welcome = osparc.product.quickStart.Utils.createLabel(welcomeText);\n content.add(welcome);\n\n const introText = this.tr(\"\\\n Sim4Life is a revolutionary simulation platform, combining computable human phantoms with the most powerful physics solvers and the most advanced tissue models, for directly analyzing biological real-world phenomena and complex technical devices in a validated biological and anatomical environment.\\\n
\\\n
\\\n In order to facilitate the introduction to the platform, we have some Guided Tours that can be found under the User Menu.\\\n
\\\n
\\\n For more specific technical information, please refer to the Manuals on the Navigation Bar.\\\n \");\n const intro2 = osparc.product.quickStart.Utils.createLabel(introText);\n content.add(intro2);\n\n content.add(new qx.ui.core.Spacer(null, 20));\n\n const logo = new osparc.ui.basic.Logo().set({\n width: 260,\n height: 110\n });\n content.add(logo);\n\n content.add(new qx.ui.core.Spacer(null, 20));\n\n return content;\n },\n\n __createFooter: function() {\n const footer = new qx.ui.container.Composite(new qx.ui.layout.HBox(10)).set({\n alignX: \"center\"\n });\n\n const footerItems = this.__getFooterItems();\n footerItems.forEach((footerItem, idx) => {\n footer.add(footerItem);\n if (idx !== footerItems.length-1) {\n footer.add(new qx.ui.core.Widget().set({\n maxHeight: 15\n }), {\n flex: 1\n });\n }\n });\n\n return footer;\n },\n\n __getFooterItems: function() {\n const footerItems = [];\n\n const docLink = new qx.ui.basic.Label().set({\n visibility: \"excluded\",\n textAlign: \"center\",\n rich : true\n });\n const manuals = osparc.store.Support.getManuals();\n if (manuals.length > 0) {\n const link = osparc.utils.Utils.createHTMLLink(\"Documentation\", manuals[0].url);\n docLink.setValue(link);\n docLink.show();\n }\n footerItems.push(docLink);\n\n const licenseLink = new qx.ui.basic.Label().set({\n visibility: \"excluded\",\n textAlign: \"center\",\n rich : true\n });\n const licenseUrl = osparc.store.Support.getLicenseURL();\n if (licenseUrl) {\n const link = osparc.utils.Utils.createHTMLLink(\"Licensing\", licenseUrl);\n licenseLink.setValue(link);\n licenseLink.show();\n }\n footerItems.push(licenseLink);\n\n const dontShowCB = osparc.product.quickStart.Utils.createDontShowAgain(\"s4lDontShowQuickStart\");\n footerItems.push(dontShowCB);\n\n return footerItems;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.s4lacad.Welcome\", {\n extend: osparc.ui.window.SingletonWindow,\n\n construct: function() {\n this.base(arguments, \"s4l-acad-welcome\", this.tr(\"Welcome to Sim4Life Science\"));\n\n this.set({\n layout: new qx.ui.layout.VBox(20),\n contentPadding: 15,\n modal: true,\n width: 500,\n height: 500,\n showMaximize: false,\n showMinimize: false\n });\n\n this.__buildLayout();\n },\n\n members: {\n __buildLayout: function() {\n const content = this.__createContent();\n this.add(content, {\n flex: 1\n });\n\n const footer = this.__createFooter();\n this.add(footer);\n },\n\n __createContent: function() {\n const content = new qx.ui.container.Composite(new qx.ui.layout.VBox(10));\n\n const introTitle = this.tr(\"Experience Most Advanced Simulations – All In The Cloud\");\n const intro1 = osparc.product.quickStart.Utils.createLabel(introTitle);\n intro1.set({\n font: \"text-16\"\n });\n content.add(intro1);\n\n const welcomeText = this.tr(\"Welcome onboard \") + osparc.utils.Utils.capitalize(osparc.auth.Data.getInstance().getFriendlyUsername()) + \",\";\n const welcome = osparc.product.quickStart.Utils.createLabel(welcomeText);\n content.add(welcome);\n\n const introText = this.tr(\"\\\n Sim4Life is a revolutionary simulation platform, combining computable human phantoms with the most powerful physics solvers and the most advanced tissue models, for directly analyzing biological real-world phenomena and complex technical devices in a validated biological and anatomical environment.\\\n
\\\n
\\\n In order to facilitate the introduction to the platform, we have some Guided Tours that can be found under the User Menu.\\\n
\\\n
\\\n For more specific technical information, please refer to the Manuals on the Navigation Bar.\\\n \");\n const intro2 = osparc.product.quickStart.Utils.createLabel(introText);\n content.add(intro2);\n\n content.add(new qx.ui.core.Spacer(null, 20));\n\n const logo = new osparc.ui.basic.Logo().set({\n width: 260,\n height: 110\n });\n content.add(logo);\n\n content.add(new qx.ui.core.Spacer(null, 20));\n\n return content;\n },\n\n __createFooter: function() {\n const footer = new qx.ui.container.Composite(new qx.ui.layout.HBox(10)).set({\n alignX: \"center\"\n });\n\n const footerItems = this.__getFooterItems();\n footerItems.forEach((footerItem, idx) => {\n footer.add(footerItem);\n if (idx !== footerItems.length-1) {\n footer.add(new qx.ui.core.Widget().set({\n maxHeight: 15\n }), {\n flex: 1\n });\n }\n });\n\n return footer;\n },\n\n __getFooterItems: function() {\n const footerItems = [];\n\n const docLink = new qx.ui.basic.Label().set({\n visibility: \"excluded\",\n textAlign: \"center\",\n rich : true\n });\n const manuals = osparc.store.Support.getManuals();\n if (manuals.length > 0) {\n const link = osparc.utils.Utils.createHTMLLink(\"Documentation\", manuals[0].url);\n docLink.setValue(link);\n docLink.show();\n }\n footerItems.push(docLink);\n\n const licenseLink = new qx.ui.basic.Label().set({\n visibility: \"excluded\",\n textAlign: \"center\",\n rich : true\n });\n const licenseUrl = osparc.store.Support.getLicenseURL();\n if (licenseUrl) {\n const link = osparc.utils.Utils.createHTMLLink(\"Licensing\", licenseUrl);\n licenseLink.setValue(link);\n licenseLink.show();\n }\n footerItems.push(licenseLink);\n\n const dontShowCB = osparc.product.quickStart.Utils.createDontShowAgain(\"s4lDontShowQuickStart\");\n footerItems.push(dontShowCB);\n\n return footerItems;\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Andreas Ecker (ecker)\n\n************************************************************************ */\n\n/**\n * This singleton manages visible menu instances and supports some\n * core features to schedule menu open/close with timeout support.\n *\n * It also manages the whole keyboard support for the currently\n * registered widgets.\n *\n * The zIndex order is also managed by this class.\n */\nqx.Class.define(\"qx.ui.menu.Manager\",\n{\n type : \"singleton\",\n extend : qx.core.Object,\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n construct : function()\n {\n this.base(arguments);\n\n // Create data structure\n this.__objects = [];\n\n var el = document.body;\n var Registration = qx.event.Registration;\n\n // React on pointer/mouse events, but on native, to support inline applications\n Registration.addListener(window.document.documentElement, \"pointerdown\", this._onPointerDown, this, true);\n Registration.addListener(el, \"roll\", this._onRoll, this, true);\n\n // React on keypress events\n Registration.addListener(el, \"keydown\", this._onKeyUpDown, this, true);\n Registration.addListener(el, \"keyup\", this._onKeyUpDown, this, true);\n Registration.addListener(el, \"keypress\", this._onKeyPress, this, true);\n\n // only use the blur event to hide windows on non touch devices [BUG #4033]\n // When the menu is located on top of an iFrame, the select will fail\n if (!qx.core.Environment.get(\"event.touch\")) {\n // Hide all when the window is blurred\n qx.bom.Element.addListener(window, \"blur\", this.hideAll, this);\n }\n\n // Create open timer\n this.__openTimer = new qx.event.Timer();\n this.__openTimer.addListener(\"interval\", this._onOpenInterval, this);\n\n // Create close timer\n this.__closeTimer = new qx.event.Timer();\n this.__closeTimer.addListener(\"interval\", this._onCloseInterval, this);\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n __scheduleOpen : null,\n __scheduleClose : null,\n __openTimer : null,\n __closeTimer : null,\n __objects : null,\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n HELPER METHODS\n ---------------------------------------------------------------------------\n */\n\n /**\n * Query engine for menu children.\n *\n * @param menu {qx.ui.menu.Menu} Any menu instance\n * @param start {Integer} Child index to start with\n * @param iter {Integer} Iteration count, normally +1
or -1
\n * @param loop {Boolean?false} Whether to wrap when reaching the begin/end of the list\n * @return {qx.ui.menu.Button} Any menu button or null
\n */\n _getChild : function(menu, start, iter, loop)\n {\n var children = menu.getChildren();\n var length = children.length;\n var child;\n\n for (var i=start; i=0; i+=iter)\n {\n child = children[i];\n if (child.isEnabled() && !child.isAnonymous() && child.isVisible()) {\n return child;\n }\n }\n\n if (loop)\n {\n i = i == length ? 0 : length-1;\n for (; i!=start; i+=iter)\n {\n child = children[i];\n if (child.isEnabled() && !child.isAnonymous() && child.isVisible()) {\n return child;\n }\n }\n }\n\n return null;\n },\n\n\n /**\n * Whether the given widget is inside any Menu instance.\n *\n * @param widget {qx.ui.core.Widget} Any widget\n * @return {Boolean} true
when the widget is part of any menu\n */\n _isInMenu : function(widget)\n {\n while(widget)\n {\n if (widget instanceof qx.ui.menu.Menu) {\n return true;\n }\n\n widget = widget.getLayoutParent();\n }\n\n return false;\n },\n\n\n /**\n * Whether the given widget is one of the menu openers.\n *\n * @param widget {qx.ui.core.Widget} Any widget\n * @return {Boolean} true
if the widget is a menu opener\n */\n _isMenuOpener : function(widget)\n {\n var menus = this.__objects;\n\n for (var i = 0; i < menus.length; i++) {\n if (menus[i].getOpener() === widget) {\n return true;\n }\n }\n\n return false;\n },\n\n\n /**\n * Returns an instance of a menu button if the given widget is a child\n *\n * @param widget {qx.ui.core.Widget} any widget\n * @return {qx.ui.menu.Button} Any menu button instance or null
\n */\n _getMenuButton : function(widget)\n {\n while(widget)\n {\n if (widget instanceof qx.ui.menu.AbstractButton) {\n return widget;\n }\n\n widget = widget.getLayoutParent();\n }\n\n return null;\n },\n\n\n /*\n ---------------------------------------------------------------------------\n PUBLIC METHODS\n ---------------------------------------------------------------------------\n */\n\n /**\n * Adds a menu to the list of visible menus.\n *\n * @param obj {qx.ui.menu.Menu} Any menu instance.\n */\n add : function(obj)\n {\n if (qx.core.Environment.get(\"qx.debug\"))\n {\n if (!(obj instanceof qx.ui.menu.Menu)) {\n throw new Error(\"Object is no menu: \" + obj);\n }\n }\n\n var reg = this.__objects;\n reg.push(obj);\n obj.setZIndex(1e6+reg.length);\n },\n\n\n /**\n * Remove a menu from the list of visible menus.\n *\n * @param obj {qx.ui.menu.Menu} Any menu instance.\n */\n remove : function(obj)\n {\n if (qx.core.Environment.get(\"qx.debug\"))\n {\n if (!(obj instanceof qx.ui.menu.Menu)) {\n throw new Error(\"Object is no menu: \" + obj);\n }\n }\n\n var reg = this.__objects;\n if (reg) {\n qx.lang.Array.remove(reg, obj);\n }\n },\n\n\n /**\n * Hides all currently opened menus.\n */\n hideAll : function()\n {\n var reg = this.__objects;\n if (reg)\n {\n for (var i=reg.length-1; i>=0; i--) {\n reg[i].exclude();\n }\n }\n },\n\n\n /**\n * Returns the menu which was opened at last (which\n * is the active one this way)\n *\n * @return {qx.ui.menu.Menu} The current active menu or null
\n */\n getActiveMenu : function()\n {\n var reg = this.__objects;\n return reg.length > 0 ? reg[reg.length-1] : null;\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n SCHEDULED OPEN/CLOSE SUPPORT\n ---------------------------------------------------------------------------\n */\n\n /**\n * Schedules the given menu to be opened after the\n * {@link qx.ui.menu.Menu#openInterval} configured by the\n * menu instance itself.\n *\n * @param menu {qx.ui.menu.Menu} The menu to schedule for open\n */\n scheduleOpen : function(menu)\n {\n // Cancel close of given menu first\n this.cancelClose(menu);\n\n // When the menu is already visible\n if (menu.isVisible())\n {\n // Cancel all other open requests\n if (this.__scheduleOpen) {\n this.cancelOpen(this.__scheduleOpen);\n }\n }\n\n // When the menu is not visible and not scheduled already\n // then schedule it for opening\n else if (this.__scheduleOpen != menu)\n {\n // menu.debug(\"Schedule open\");\n this.__scheduleOpen = menu;\n this.__openTimer.restartWith(menu.getOpenInterval());\n }\n },\n\n\n /**\n * Schedules the given menu to be closed after the\n * {@link qx.ui.menu.Menu#closeInterval} configured by the\n * menu instance itself.\n *\n * @param menu {qx.ui.menu.Menu} The menu to schedule for close\n */\n scheduleClose : function(menu)\n {\n // Cancel open of the menu first\n this.cancelOpen(menu);\n\n // When the menu is already invisible\n if (!menu.isVisible())\n {\n // Cancel all other close requests\n if (this.__scheduleClose) {\n this.cancelClose(this.__scheduleClose);\n }\n }\n\n // When the menu is visible and not scheduled already\n // then schedule it for closing\n else if (this.__scheduleClose != menu)\n {\n // menu.debug(\"Schedule close\");\n this.__scheduleClose = menu;\n this.__closeTimer.restartWith(menu.getCloseInterval());\n }\n },\n\n\n /**\n * When the given menu is scheduled for open this pending\n * request is canceled.\n *\n * @param menu {qx.ui.menu.Menu} The menu to cancel for open\n */\n cancelOpen : function(menu)\n {\n if (this.__scheduleOpen == menu)\n {\n // menu.debug(\"Cancel open\");\n this.__openTimer.stop();\n this.__scheduleOpen = null;\n }\n },\n\n\n /**\n * When the given menu is scheduled for close this pending\n * request is canceled.\n *\n * @param menu {qx.ui.menu.Menu} The menu to cancel for close\n */\n cancelClose : function(menu)\n {\n if (this.__scheduleClose == menu)\n {\n // menu.debug(\"Cancel close\");\n this.__closeTimer.stop();\n this.__scheduleClose = null;\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n TIMER EVENT HANDLERS\n ---------------------------------------------------------------------------\n */\n\n /**\n * Event listener for a pending open request. Configured to the interval\n * of the current menu to open.\n *\n * @param e {qx.event.type.Event} Interval event\n */\n _onOpenInterval : function(e)\n {\n // Stop timer\n this.__openTimer.stop();\n\n // Open menu and reset flag\n this.__scheduleOpen.open();\n this.__scheduleOpen = null;\n },\n\n\n /**\n * Event listener for a pending close request. Configured to the interval\n * of the current menu to close.\n *\n * @param e {qx.event.type.Event} Interval event\n */\n _onCloseInterval : function(e)\n {\n // Stop timer, reset scheduling flag\n this.__closeTimer.stop();\n\n // Close menu and reset flag\n this.__scheduleClose.exclude();\n this.__scheduleClose = null;\n },\n\n\n /*\n ---------------------------------------------------------------------------\n CONTEXTMENU EVENT HANDLING\n ---------------------------------------------------------------------------\n */\n\n\n /**\n * Internal function registers a handler to stop next\n * contextmenu
event.\n * This function will be called by {@link qx.ui.menu.Button#_onTap}, if\n * right click was pressed.\n *\n * @internal\n */\n preventContextMenuOnce : function()\n {\n qx.event.Registration.addListener(document.body, \"contextmenu\", this.__onPreventContextMenu, this, true);\n },\n\n\n /**\n * Internal event handler to stop contextmenu
event bubbling,\n * if target is inside the opened menu.\n *\n * @param e {qx.event.type.Mouse} contextmenu event\n *\n * @internal\n */\n __onPreventContextMenu : function(e)\n {\n var target = e.getTarget();\n target = qx.ui.core.Widget.getWidgetByElement(target, true);\n if (this._isInMenu(target)) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n // stop only once\n qx.event.Registration.removeListener(document.body, \"contextmenu\", this.__onPreventContextMenu, this, true);\n },\n\n\n /*\n ---------------------------------------------------------------------------\n POINTER EVENT HANDLERS\n ---------------------------------------------------------------------------\n */\n\n /**\n * Event handler for pointerdown events\n *\n * @param e {qx.event.type.Pointer} pointerdown event\n */\n _onPointerDown : function(e)\n {\n var target = e.getTarget();\n target = qx.ui.core.Widget.getWidgetByElement(target, true);\n\n // If the target is 'null' the tap appears on a DOM element witch is not\n // a widget. This happens normally with an inline application, when the user\n // taps not in the inline application. In this case all all currently\n // open menus should be closed.\n if (target == null) {\n this.hideAll();\n return;\n }\n\n // If the target is the one which has opened the current menu\n // we ignore the pointerdown to let the button process the event\n // further with toggling or ignoring the tap.\n if (target.getMenu && target.getMenu() && target.getMenu().isVisible()) {\n return;\n }\n\n // All taps not inside a menu will hide all currently open menus\n if (this.__objects.length > 0 && !this._isInMenu(target)) {\n this.hideAll();\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n KEY EVENT HANDLING\n ---------------------------------------------------------------------------\n */\n\n /**\n * @type {Map} Map of all keys working on an active menu selection\n * @lint ignoreReferenceField(__selectionKeys)\n */\n __selectionKeys :\n {\n \"Enter\" : 1,\n \"Space\" : 1\n },\n\n\n /**\n * @type {Map} Map of all keys working without a selection\n * @lint ignoreReferenceField(__navigationKeys)\n */\n __navigationKeys :\n {\n \"Escape\" : 1,\n \"Up\" : 1,\n \"Down\" : 1,\n \"Left\" : 1,\n \"Right\" : 1\n },\n\n\n /**\n * Event handler for all keyup/keydown events. Stops all events\n * when any menu is opened.\n *\n * @param e {qx.event.type.KeySequence} Keyboard event\n */\n _onKeyUpDown : function(e)\n {\n var menu = this.getActiveMenu();\n if (!menu) {\n return;\n }\n\n // Stop for all supported key combos\n var iden = e.getKeyIdentifier();\n if (this.__navigationKeys[iden] || (this.__selectionKeys[iden] && menu.getSelectedButton())) {\n e.stopPropagation();\n }\n },\n\n\n /**\n * Event handler for all keypress events. Delegates the event to the more\n * specific methods defined in this class.\n *\n * Currently processes the keys: Up
, Down
,\n * Left
, Right
and Enter
.\n *\n * @param e {qx.event.type.KeySequence} Keyboard event\n */\n _onKeyPress : function(e)\n {\n var menu = this.getActiveMenu();\n if (!menu) {\n return;\n }\n\n var iden = e.getKeyIdentifier();\n var navigation = this.__navigationKeys[iden];\n var selection = this.__selectionKeys[iden];\n\n if (navigation)\n {\n switch(iden)\n {\n case \"Up\":\n this._onKeyPressUp(menu);\n break;\n\n case \"Down\":\n this._onKeyPressDown(menu);\n break;\n\n case \"Left\":\n this._onKeyPressLeft(menu);\n break;\n\n case \"Right\":\n this._onKeyPressRight(menu);\n break;\n\n case \"Escape\":\n this.hideAll();\n break;\n }\n\n e.stopPropagation();\n e.preventDefault();\n }\n else if (selection)\n {\n // Do not process these events when no item is hovered\n var button = menu.getSelectedButton();\n if (button)\n {\n switch(iden)\n {\n case \"Enter\":\n this._onKeyPressEnter(menu, button, e);\n break;\n\n case \"Space\":\n this._onKeyPressSpace(menu, button, e);\n break;\n }\n\n e.stopPropagation();\n e.preventDefault();\n }\n }\n },\n\n\n /**\n * Event handler for Up
key\n *\n * @param menu {qx.ui.menu.Menu} The active menu\n */\n _onKeyPressUp : function(menu)\n {\n // Query for previous child\n var selectedButton = menu.getSelectedButton();\n var children = menu.getChildren();\n var start = selectedButton ? menu.indexOf(selectedButton)-1 : children.length-1;\n var nextItem = this._getChild(menu, start, -1, true);\n\n // Reconfigure property\n if (nextItem) {\n menu.setSelectedButton(nextItem);\n } else {\n menu.resetSelectedButton();\n }\n },\n\n\n /**\n * Event handler for Down
key\n *\n * @param menu {qx.ui.menu.Menu} The active menu\n */\n _onKeyPressDown : function(menu)\n {\n // Query for next child\n var selectedButton = menu.getSelectedButton();\n var start = selectedButton ? menu.indexOf(selectedButton)+1 : 0;\n var nextItem = this._getChild(menu, start, 1, true);\n\n // Reconfigure property\n if (nextItem) {\n menu.setSelectedButton(nextItem);\n } else {\n menu.resetSelectedButton();\n }\n },\n\n\n /**\n * Event handler for Left
key\n *\n * @param menu {qx.ui.menu.Menu} The active menu\n */\n _onKeyPressLeft : function(menu)\n {\n var menuOpener = menu.getOpener();\n if (!menuOpener) {\n return;\n }\n\n // Back to the \"parent\" menu\n if (menuOpener instanceof qx.ui.menu.AbstractButton)\n {\n var parentMenu = menuOpener.getLayoutParent();\n\n parentMenu.resetOpenedButton();\n parentMenu.setSelectedButton(menuOpener);\n }\n\n // Goto the previous toolbar button\n else if (menuOpener instanceof qx.ui.menubar.Button)\n {\n var buttons = menuOpener.getMenuBar().getMenuButtons();\n var index = buttons.indexOf(menuOpener);\n\n // This should not happen, definitely!\n if (index === -1) {\n return;\n }\n\n // Get previous button, fallback to end if first arrived\n var prevButton = null;\n var length = buttons.length;\n for (var i = 1; i <= length; i++)\n {\n var button = buttons[(index - i + length) % length];\n if(button.isEnabled() && button.isVisible()) {\n prevButton = button;\n break;\n }\n }\n\n if (prevButton && prevButton != menuOpener) {\n prevButton.open(true);\n }\n }\n },\n\n\n /**\n * Event handler for Right
key\n *\n * @param menu {qx.ui.menu.Menu} The active menu\n */\n _onKeyPressRight : function(menu)\n {\n var selectedButton = menu.getSelectedButton();\n\n // Open sub-menu of hovered item and select first child\n if (selectedButton)\n {\n var subMenu = selectedButton.getMenu();\n\n if (subMenu)\n {\n // Open previously hovered item\n menu.setOpenedButton(selectedButton);\n\n // Hover first item in new submenu\n var first = this._getChild(subMenu, 0, 1);\n if (first) {\n subMenu.setSelectedButton(first);\n }\n\n return;\n }\n }\n\n // No hover and no open item\n // When first button has a menu, open it, otherwise only hover it\n else if (!menu.getOpenedButton())\n {\n var first = this._getChild(menu, 0, 1);\n\n if (first)\n {\n menu.setSelectedButton(first);\n\n if (first.getMenu()) {\n menu.setOpenedButton(first);\n }\n\n return;\n }\n }\n\n // Jump to the next toolbar button\n var menuOpener = menu.getOpener();\n\n // Look up opener hierarchy for menu button\n if (menuOpener instanceof qx.ui.menu.Button && selectedButton)\n {\n // From one inner selected button try to find the top level\n // menu button which has opened the whole menu chain.\n while (menuOpener)\n {\n menuOpener = menuOpener.getLayoutParent();\n if (menuOpener instanceof qx.ui.menu.Menu)\n {\n menuOpener = menuOpener.getOpener();\n if (menuOpener instanceof qx.ui.menubar.Button) {\n break;\n }\n }\n else\n {\n break;\n }\n }\n\n if (!menuOpener) {\n return;\n }\n }\n\n // Ask the toolbar for the next menu button\n if (menuOpener instanceof qx.ui.menubar.Button)\n {\n var buttons = menuOpener.getMenuBar().getMenuButtons();\n var index = buttons.indexOf(menuOpener);\n\n // This should not happen, definitely!\n if (index === -1) {\n return;\n }\n\n // Get next button, fallback to first if end arrived\n var nextButton = null;\n var length = buttons.length;\n for (var i = 1; i <= length; i++)\n {\n var button = buttons[(index + i) % length];\n if(button.isEnabled() && button.isVisible()) {\n nextButton = button;\n break;\n }\n }\n\n if (nextButton && nextButton != menuOpener) {\n nextButton.open(true);\n }\n }\n },\n\n\n /**\n * Event handler for Enter
key\n *\n * @param menu {qx.ui.menu.Menu} The active menu\n * @param button {qx.ui.menu.AbstractButton} The selected button\n * @param e {qx.event.type.KeySequence} The keypress event\n */\n _onKeyPressEnter : function(menu, button, e)\n {\n // Route keypress event to the selected button\n if (button.hasListener(\"keypress\"))\n {\n // Clone and reconfigure event\n var clone = e.clone();\n clone.setBubbles(false);\n clone.setTarget(button);\n\n // Finally dispatch the clone\n button.dispatchEvent(clone);\n }\n\n // Hide all open menus\n this.hideAll();\n },\n\n\n /**\n * Event handler for Space
key\n *\n * @param menu {qx.ui.menu.Menu} The active menu\n * @param button {qx.ui.menu.AbstractButton} The selected button\n * @param e {qx.event.type.KeySequence} The keypress event\n */\n _onKeyPressSpace : function(menu, button, e)\n {\n // Route keypress event to the selected button\n if (button.hasListener(\"keypress\"))\n {\n // Clone and reconfigure event\n var clone = e.clone();\n clone.setBubbles(false);\n clone.setTarget(button);\n\n // Finally dispatch the clone\n button.dispatchEvent(clone);\n }\n },\n\n\n /**\n * Event handler for roll which hides all windows on scroll.\n *\n * @param e {qx.event.type.Roll} The roll event.\n */\n _onRoll : function(e) {\n var target = e.getTarget();\n target = qx.ui.core.Widget.getWidgetByElement(target, true);\n\n if (\n this.__objects.length > 0\n && !this._isInMenu(target)\n && !this._isMenuOpener(target)\n && !e.getMomentum()\n ) {\n this.hideAll();\n }\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n DESTRUCTOR\n *****************************************************************************\n */\n\n destruct : function()\n {\n var Registration = qx.event.Registration;\n var el = document.body;\n\n // React on pointerdown events\n Registration.removeListener(window.document.documentElement, \"pointerdown\", this._onPointerDown, this, true);\n\n // React on keypress events\n Registration.removeListener(el, \"keydown\", this._onKeyUpDown, this, true);\n Registration.removeListener(el, \"keyup\", this._onKeyUpDown, this, true);\n Registration.removeListener(el, \"keypress\", this._onKeyPress, this, true);\n\n this._disposeObjects(\"__openTimer\", \"__closeTimer\");\n this._disposeArray(\"__objects\");\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.tours.List\", {\n extend: qx.ui.core.Widget,\n\n construct: function(tours) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(8));\n\n this.getChildControl(\"tours-layout\");\n\n if (tours) {\n this.setTours(tours);\n }\n },\n\n events: {\n \"tourSelected\": \"qx.event.type.Data\"\n },\n\n properties: {\n tours: {\n check: \"Array\",\n init: [],\n nullable: true,\n event: \"changeTours\",\n apply: \"__applyTours\"\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"tours-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n this._add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __isSelectorVisible: function(contextSelector) {\n const element = document.querySelector(`[${contextSelector}]`);\n if (element) {\n const widget = qx.ui.core.Widget.getWidgetByElement(element);\n if (qx.ui.core.queue.Visibility.isVisible(widget)) {\n return true;\n }\n }\n return false;\n },\n\n __getTourButton: function(tour) {\n const seqButton = new osparc.tours.ListItem(tour);\n seqButton.setEnabled(this.__isSelectorVisible(tour.context));\n seqButton.addListener(\"tap\", () => this.fireDataEvent(\"tourSelected\", tour), this);\n return seqButton;\n },\n\n __applyTours: function(tours) {\n const toursLayout = this.getChildControl(\"tours-layout\");\n tours.forEach(tour => toursLayout.add(this.__getTourButton(tour)));\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.tours.Step\", {\n extend: osparc.ui.basic.FloatingHelper,\n\n construct: function(tourTitle) {\n this.base(arguments, null, \"large\");\n\n this.setLayout(new qx.ui.layout.VBox(10));\n\n const hintContainer = this.getChildControl(\"hint-container\");\n hintContainer.setPadding(15);\n\n this.getChildControl(\"title\");\n this.getChildControl(\"message\");\n this.getChildControl(\"skip-button\");\n const titleLabel = this.getChildControl(\"tour-title\");\n if (tourTitle) {\n titleLabel.setValue(tourTitle);\n }\n this.getChildControl(\"step-label\");\n },\n\n events: {\n \"skipPressed\": \"qx.event.type.Event\",\n \"nextPressed\": \"qx.event.type.Event\",\n \"endPressed\": \"qx.event.type.Event\",\n \"toTours\": \"qx.event.type.Event\"\n },\n\n properties: {\n title: {\n check: \"String\",\n init: \"\",\n nullable: true,\n event: \"changeTitle\"\n },\n\n text: {\n check: \"String\",\n init: \"\",\n nullable: true,\n event: \"changeText\"\n },\n\n stepIndex: {\n check: \"Integer\",\n nullable: true,\n init: 0,\n apply: \"__updateButtons\"\n },\n\n nSteps: {\n check: \"Integer\",\n nullable: true,\n init: 0,\n apply: \"__updateButtons\"\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"title\":\n control = new qx.ui.basic.Label().set({\n rich: true,\n font: \"text-16\"\n });\n this.bind(\"title\", control, \"value\");\n this.bind(\"title\", control, \"visibility\", {\n converter: title => title ? \"visible\" : \"excluded\"\n });\n this.add(control);\n break;\n case \"message\":\n control = new qx.ui.basic.Label().set({\n rich: true,\n font: \"text-14\"\n });\n this.bind(\"text\", control, \"value\");\n this.bind(\"text\", control, \"visibility\", {\n converter: text => text ? \"visible\" : \"excluded\"\n });\n this.add(control);\n break;\n case \"bottom-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignX: \"center\"\n }));\n this.add(control);\n break;\n case \"skip-button\": {\n control = new qx.ui.form.Button().set({\n label: this.tr(\"Skip\"),\n allowGrowX: false,\n alignX: \"left\"\n });\n control.addListener(\"execute\", () => this.fireEvent(\"skipPressed\"), this);\n const bottomLayout = this.getChildControl(\"bottom-layout\");\n bottomLayout.add(control);\n break;\n }\n case \"bottom-center-layout\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox(3).set({\n alignX: \"center\"\n }));\n const bottomLayout = this.getChildControl(\"bottom-layout\");\n bottomLayout.add(control, {\n flex: 1\n });\n break;\n }\n case \"tour-title\": {\n control = new qx.ui.basic.Label().set({\n alignX: \"center\",\n alignY: \"middle\",\n textAlign: \"center\",\n allowGrowX: true\n });\n const bottomLayout = this.getChildControl(\"bottom-center-layout\");\n bottomLayout.add(control);\n break;\n }\n case \"step-label\": {\n control = new qx.ui.basic.Label().set({\n alignX: \"center\",\n alignY: \"middle\",\n textAlign: \"center\",\n allowGrowX: true\n });\n const bottomLayout = this.getChildControl(\"bottom-center-layout\");\n bottomLayout.add(control);\n break;\n }\n case \"next-button\": {\n control = new qx.ui.form.Button().set({\n label: this.tr(\"Next\"),\n icon: \"@FontAwesome5Solid/arrow-right/16\",\n iconPosition: \"right\",\n appearance: \"strong-button\",\n allowGrowX: false,\n alignX: \"right\"\n });\n control.addListener(\"execute\", () => this.__nextRequested(), this);\n const bottomLayout = this.getChildControl(\"bottom-layout\");\n bottomLayout.add(control);\n break;\n }\n case \"to-tours-button\": {\n control = new qx.ui.form.Button().set({\n label: this.tr(\"To Tours\"),\n iconPosition: \"right\",\n allowGrowX: false,\n alignX: \"right\"\n });\n control.addListener(\"execute\", () => this.fireEvent(\"toTours\"), this);\n const bottomLayout = this.getChildControl(\"bottom-layout\");\n bottomLayout.add(control);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n // override\n _elementAppearDisappearHandler: function(e) {\n // If the element is a floating view, when clicking away it will disappear\n // Treat that event as a \"nextPressed\"\n switch (e.getType()) {\n case \"disappear\":\n if (this.isVisible()) {\n this.__nextRequested();\n }\n break;\n }\n\n this.base(arguments, e);\n },\n\n __nextRequested: function() {\n if (this.getStepIndex() === this.getNSteps()) {\n this.fireEvent(\"endPressed\");\n } else {\n this.fireEvent(\"nextPressed\");\n }\n },\n\n __updateButtons: function() {\n const stepLabel = this.getChildControl(\"step-label\");\n stepLabel.setValue(this.tr(\"Step: \") + this.getStepIndex() + \"/\" + this.getNSteps());\n\n const nextButton = this.getChildControl(\"next-button\");\n const lastStep = this.getStepIndex() === this.getNSteps();\n if (lastStep) {\n nextButton.set({\n label: this.tr(\"End\"),\n icon: null\n });\n }\n const toTours = this.getChildControl(\"to-tours-button\");\n toTours.setVisibility(lastStep ? \"visible\" : \"excluded\");\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2009 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Christian Hagendorn (chris_schmidt)\n\n************************************************************************ */\n/**\n * Defines the callback for the single selection manager.\n *\n * @internal\n */\nqx.Interface.define(\"qx.ui.core.ISingleSelectionProvider\",\n{\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n /**\n * Returns the elements which are part of the selection.\n *\n * @return {qx.ui.core.Widget[]} The widgets for the selection.\n */\n getItems: function() {},\n\n /**\n * Returns whether the given item is selectable.\n *\n * @param item {qx.ui.core.Widget} The item to be checked\n * @return {Boolean} Whether the given item is selectable\n */\n isItemSelectable : function(item) {}\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2023 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\nqx.Class.define(\"osparc.desktop.credits.BuyCreditsForm\", {\n extend: qx.ui.core.Widget,\n construct: function(paymentMethods=[]) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10).set({\n alignX: \"center\"\n }));\n\n const title = new qx.ui.basic.Label(this.tr(\"Buy Credits\")).set({\n marginTop: 35,\n font: \"title-18\"\n });\n this._add(title);\n\n const subtitleLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5).set({\n alignX: \"center\"\n }));\n const subtitle = new qx.ui.basic.Label(this.tr(\"A one-off, non recurring payment.\")).set({\n font: \"text-14\"\n });\n subtitleLayout.add(subtitle);\n const tooltip = new osparc.ui.hint.InfoHint();\n osparc.store.Store.getInstance().getMinimumAmount()\n .then(minimum => tooltip.setHintText(`A minimum amount of ${minimum} USD is required`));\n subtitleLayout.add(tooltip);\n this._add(subtitleLayout);\n\n this._add(this.__getForm(paymentMethods));\n\n this._add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n\n this._add(this.__getButtons());\n },\n\n properties: {\n fetching: {\n check: \"Boolean\",\n nullable: false,\n init: false,\n event: \"changeFetching\"\n }\n },\n\n events: {\n \"submit\": \"qx.event.type.Data\",\n \"cancel\": \"qx.event.type.Event\"\n },\n\n members: {\n __amountInput: null,\n\n __getButtons: function() {\n const buttonsContainer = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignX: \"center\"\n })).set({\n marginBottom: 35\n });\n\n const cancelBtn = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"appmotion-button\"\n });\n cancelBtn.addListener(\"execute\", () => this.fireEvent(\"cancel\"));\n buttonsContainer.add(cancelBtn);\n\n const buyBtn = this.__buyBtn = new osparc.ui.form.FetchButton(this.tr(\"Buy Credits\")).set({\n appearance: \"appmotion-button-action\",\n enabled: false\n });\n this.bind(\"fetching\", buyBtn, \"fetching\");\n const isValid = (osparcCredits, amountDollars) => !isNaN(osparcCredits) && !isNaN(amountDollars);\n const enabled = isValid(...Object.values(this.__amountInput.getValues()));\n buyBtn.setEnabled(enabled);\n this.__amountInput.addListener(\"input\", e => {\n const {osparcCredits, amountDollars} = e.getData();\n if (!this.__buyBtn.isFetching()) {\n this.__buyBtn.setEnabled(isValid(osparcCredits, amountDollars));\n }\n });\n buyBtn.addListener(\"execute\", () => this.fireDataEvent(\"submit\", {\n paymentMethodId: this.__paymentMethods.getSelection()[0].getModel(),\n ...this.__amountInput.getValues()\n }));\n buttonsContainer.add(buyBtn);\n\n return buttonsContainer;\n },\n\n __getForm: function(paymentMethods) {\n const formContainer = new qx.ui.container.Composite(new qx.ui.layout.VBox(10).set({\n alignX: \"center\"\n })).set({\n marginTop: 30\n });\n const amountContainer = this.__amountInput = new osparc.desktop.credits.BuyCreditsInput(osparc.store.Store.getInstance().getCreditPrice());\n formContainer.add(amountContainer);\n\n const paymentMethodContainer = new qx.ui.container.Composite(new qx.ui.layout.VBox(5)).set({\n marginTop: 30,\n allowStretchX: false\n });\n const paymentMethodLabel = new qx.ui.basic.Label(this.tr(\"Pay with\")).set({\n marginLeft: 15\n });\n paymentMethodContainer.add(paymentMethodLabel);\n const paymentMethodSelect = this.__paymentMethods = new osparc.form.AppMotionSelect().set({\n width: 300,\n allowStretchX: false\n });\n const unsavedCardOption = new qx.ui.form.ListItem(this.tr(\"Enter card details in the next step...\"), null, null);\n paymentMethodSelect.add(unsavedCardOption);\n paymentMethods.forEach(({id, label}) => {\n const item = new qx.ui.form.ListItem(label, null, id);\n paymentMethodSelect.add(item);\n });\n if (paymentMethods.length < 1) {\n paymentMethodSelect.setEnabled(false);\n paymentMethodSelect.setSelection([unsavedCardOption]);\n } else {\n paymentMethodSelect.setSelection([paymentMethodSelect.getChildren()[1]]);\n }\n paymentMethodContainer.add(paymentMethodSelect);\n formContainer.add(paymentMethodContainer);\n return formContainer;\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Fabian Jakobs (fjakobs)\n\n************************************************************************ */\n\n/**\n * A Collection of utility functions to escape and unescape strings.\n */\nqx.Bootstrap.define(\"qx.bom.String\",\n{\n /*\n *****************************************************************************\n STATICS\n *****************************************************************************\n */\n\n statics :\n {\n /** Mapping of HTML entity names to the corresponding char code */\n TO_CHARCODE :\n {\n \"quot\" : 34, // \" - double-quote\n \"amp\" : 38, // &\n \"lt\" : 60, // <\n \"gt\" : 62, // >\n\n // http://www.w3.org/TR/REC-html40/sgml/entities.html\n // ISO 8859-1 characters\n \"nbsp\" : 160, // no-break space\n \"iexcl\" : 161, // inverted exclamation mark\n \"cent\" : 162, // cent sign\n \"pound\" : 163, // pound sterling sign\n \"curren\" : 164, // general currency sign\n \"yen\" : 165, // yen sign\n \"brvbar\" : 166, // broken (vertical) bar\n \"sect\" : 167, // section sign\n \"uml\" : 168, // umlaut (dieresis)\n \"copy\" : 169, // copyright sign\n \"ordf\" : 170, // ordinal indicator, feminine\n \"laquo\" : 171, // angle quotation mark, left\n \"not\" : 172, // not sign\n \"shy\" : 173, // soft hyphen\n \"reg\" : 174, // registered sign\n \"macr\" : 175, // macron\n \"deg\" : 176, // degree sign\n \"plusmn\" : 177, // plus-or-minus sign\n \"sup2\" : 178, // superscript two\n \"sup3\" : 179, // superscript three\n \"acute\" : 180, // acute accent\n \"micro\" : 181, // micro sign\n \"para\" : 182, // pilcrow (paragraph sign)\n \"middot\" : 183, // middle dot\n \"cedil\" : 184, // cedilla\n \"sup1\" : 185, // superscript one\n \"ordm\" : 186, // ordinal indicator, masculine\n \"raquo\" : 187, // angle quotation mark, right\n \"frac14\" : 188, // fraction one-quarter\n \"frac12\" : 189, // fraction one-half\n \"frac34\" : 190, // fraction three-quarters\n \"iquest\" : 191, // inverted question mark\n \"Agrave\" : 192, // capital A, grave accent\n \"Aacute\" : 193, // capital A, acute accent\n \"Acirc\" : 194, // capital A, circumflex accent\n \"Atilde\" : 195, // capital A, tilde\n \"Auml\" : 196, // capital A, dieresis or umlaut mark\n \"Aring\" : 197, // capital A, ring\n \"AElig\" : 198, // capital AE diphthong (ligature)\n \"Ccedil\" : 199, // capital C, cedilla\n \"Egrave\" : 200, // capital E, grave accent\n \"Eacute\" : 201, // capital E, acute accent\n \"Ecirc\" : 202, // capital E, circumflex accent\n \"Euml\" : 203, // capital E, dieresis or umlaut mark\n \"Igrave\" : 204, // capital I, grave accent\n \"Iacute\" : 205, // capital I, acute accent\n \"Icirc\" : 206, // capital I, circumflex accent\n \"Iuml\" : 207, // capital I, dieresis or umlaut mark\n \"ETH\" : 208, // capital Eth, Icelandic\n \"Ntilde\" : 209, // capital N, tilde\n \"Ograve\" : 210, // capital O, grave accent\n \"Oacute\" : 211, // capital O, acute accent\n \"Ocirc\" : 212, // capital O, circumflex accent\n \"Otilde\" : 213, // capital O, tilde\n \"Ouml\" : 214, // capital O, dieresis or umlaut mark\n \"times\" : 215, // multiply sign\n \"Oslash\" : 216, // capital O, slash\n \"Ugrave\" : 217, // capital U, grave accent\n \"Uacute\" : 218, // capital U, acute accent\n \"Ucirc\" : 219, // capital U, circumflex accent\n \"Uuml\" : 220, // capital U, dieresis or umlaut mark\n \"Yacute\" : 221, // capital Y, acute accent\n \"THORN\" : 222, // capital THORN, Icelandic\n \"szlig\" : 223, // small sharp s, German (sz ligature)\n \"agrave\" : 224, // small a, grave accent\n \"aacute\" : 225, // small a, acute accent\n \"acirc\" : 226, // small a, circumflex accent\n \"atilde\" : 227, // small a, tilde\n \"auml\" : 228, // small a, dieresis or umlaut mark\n \"aring\" : 229, // small a, ring\n \"aelig\" : 230, // small ae diphthong (ligature)\n \"ccedil\" : 231, // small c, cedilla\n \"egrave\" : 232, // small e, grave accent\n \"eacute\" : 233, // small e, acute accent\n \"ecirc\" : 234, // small e, circumflex accent\n \"euml\" : 235, // small e, dieresis or umlaut mark\n \"igrave\" : 236, // small i, grave accent\n \"iacute\" : 237, // small i, acute accent\n \"icirc\" : 238, // small i, circumflex accent\n \"iuml\" : 239, // small i, dieresis or umlaut mark\n \"eth\" : 240, // small eth, Icelandic\n \"ntilde\" : 241, // small n, tilde\n \"ograve\" : 242, // small o, grave accent\n \"oacute\" : 243, // small o, acute accent\n \"ocirc\" : 244, // small o, circumflex accent\n \"otilde\" : 245, // small o, tilde\n \"ouml\" : 246, // small o, dieresis or umlaut mark\n \"divide\" : 247, // divide sign\n \"oslash\" : 248, // small o, slash\n \"ugrave\" : 249, // small u, grave accent\n \"uacute\" : 250, // small u, acute accent\n \"ucirc\" : 251, // small u, circumflex accent\n \"uuml\" : 252, // small u, dieresis or umlaut mark\n \"yacute\" : 253, // small y, acute accent\n \"thorn\" : 254, // small thorn, Icelandic\n \"yuml\" : 255, // small y, dieresis or umlaut mark\n\n // Latin Extended-B\n \"fnof\" : 402, // latin small f with hook = function= florin, U+0192 ISOtech\n\n // Greek\n \"Alpha\" : 913, // greek capital letter alpha, U+0391\n \"Beta\" : 914, // greek capital letter beta, U+0392\n \"Gamma\" : 915, // greek capital letter gamma,U+0393 ISOgrk3\n \"Delta\" : 916, // greek capital letter delta,U+0394 ISOgrk3\n \"Epsilon\" : 917, // greek capital letter epsilon, U+0395\n \"Zeta\" : 918, // greek capital letter zeta, U+0396\n \"Eta\" : 919, // greek capital letter eta, U+0397\n \"Theta\" : 920, // greek capital letter theta,U+0398 ISOgrk3\n \"Iota\" : 921, // greek capital letter iota, U+0399\n \"Kappa\" : 922, // greek capital letter kappa, U+039A\n \"Lambda\" : 923, // greek capital letter lambda,U+039B ISOgrk3\n \"Mu\" : 924, // greek capital letter mu, U+039C\n \"Nu\" : 925, // greek capital letter nu, U+039D\n \"Xi\" : 926, // greek capital letter xi, U+039E ISOgrk3\n \"Omicron\" : 927, // greek capital letter omicron, U+039F\n \"Pi\" : 928, // greek capital letter pi, U+03A0 ISOgrk3\n \"Rho\" : 929, // greek capital letter rho, U+03A1\n\n // there is no Sigmaf, and no U+03A2 character either\n \"Sigma\" : 931, // greek capital letter sigma,U+03A3 ISOgrk3\n \"Tau\" : 932, // greek capital letter tau, U+03A4\n \"Upsilon\" : 933, // greek capital letter upsilon,U+03A5 ISOgrk3\n \"Phi\" : 934, // greek capital letter phi,U+03A6 ISOgrk3\n \"Chi\" : 935, // greek capital letter chi, U+03A7\n \"Psi\" : 936, // greek capital letter psi,U+03A8 ISOgrk3\n \"Omega\" : 937, // greek capital letter omega,U+03A9 ISOgrk3\n \"alpha\" : 945, // greek small letter alpha,U+03B1 ISOgrk3\n \"beta\" : 946, // greek small letter beta, U+03B2 ISOgrk3\n \"gamma\" : 947, // greek small letter gamma,U+03B3 ISOgrk3\n \"delta\" : 948, // greek small letter delta,U+03B4 ISOgrk3\n \"epsilon\" : 949, // greek small letter epsilon,U+03B5 ISOgrk3\n \"zeta\" : 950, // greek small letter zeta, U+03B6 ISOgrk3\n \"eta\" : 951, // greek small letter eta, U+03B7 ISOgrk3\n \"theta\" : 952, // greek small letter theta,U+03B8 ISOgrk3\n \"iota\" : 953, // greek small letter iota, U+03B9 ISOgrk3\n \"kappa\" : 954, // greek small letter kappa,U+03BA ISOgrk3\n \"lambda\" : 955, // greek small letter lambda,U+03BB ISOgrk3\n \"mu\" : 956, // greek small letter mu, U+03BC ISOgrk3\n \"nu\" : 957, // greek small letter nu, U+03BD ISOgrk3\n \"xi\" : 958, // greek small letter xi, U+03BE ISOgrk3\n \"omicron\" : 959, // greek small letter omicron, U+03BF NEW\n \"pi\" : 960, // greek small letter pi, U+03C0 ISOgrk3\n \"rho\" : 961, // greek small letter rho, U+03C1 ISOgrk3\n \"sigmaf\" : 962, // greek small letter final sigma,U+03C2 ISOgrk3\n \"sigma\" : 963, // greek small letter sigma,U+03C3 ISOgrk3\n \"tau\" : 964, // greek small letter tau, U+03C4 ISOgrk3\n \"upsilon\" : 965, // greek small letter upsilon,U+03C5 ISOgrk3\n \"phi\" : 966, // greek small letter phi, U+03C6 ISOgrk3\n \"chi\" : 967, // greek small letter chi, U+03C7 ISOgrk3\n \"psi\" : 968, // greek small letter psi, U+03C8 ISOgrk3\n \"omega\" : 969, // greek small letter omega,U+03C9 ISOgrk3\n \"thetasym\" : 977, // greek small letter theta symbol,U+03D1 NEW\n \"upsih\" : 978, // greek upsilon with hook symbol,U+03D2 NEW\n \"piv\" : 982, // greek pi symbol, U+03D6 ISOgrk3\n\n // General Punctuation\n \"bull\" : 8226, // bullet = black small circle,U+2022 ISOpub\n\n // bullet is NOT the same as bullet operator, U+2219\n \"hellip\" : 8230, // horizontal ellipsis = three dot leader,U+2026 ISOpub\n \"prime\" : 8242, // prime = minutes = feet, U+2032 ISOtech\n \"Prime\" : 8243, // double prime = seconds = inches,U+2033 ISOtech\n \"oline\" : 8254, // overline = spacing overscore,U+203E NEW\n \"frasl\" : 8260, // fraction slash, U+2044 NEW\n\n // Letterlike Symbols\n \"weierp\" : 8472, // script capital P = power set= Weierstrass p, U+2118 ISOamso\n \"image\" : 8465, // blackletter capital I = imaginary part,U+2111 ISOamso\n \"real\" : 8476, // blackletter capital R = real part symbol,U+211C ISOamso\n \"trade\" : 8482, // trade mark sign, U+2122 ISOnum\n \"alefsym\" : 8501, // alef symbol = first transfinite cardinal,U+2135 NEW\n\n // alef symbol is NOT the same as hebrew letter alef,U+05D0 although the same glyph could be used to depict both characters\n // Arrows\n \"larr\" : 8592, // leftwards arrow, U+2190 ISOnum\n \"uarr\" : 8593, // upwards arrow, U+2191 ISOnum-->\n \"rarr\" : 8594, // rightwards arrow, U+2192 ISOnum\n \"darr\" : 8595, // downwards arrow, U+2193 ISOnum\n \"harr\" : 8596, // left right arrow, U+2194 ISOamsa\n \"crarr\" : 8629, // downwards arrow with corner leftwards= carriage return, U+21B5 NEW\n \"lArr\" : 8656, // leftwards double arrow, U+21D0 ISOtech\n\n // ISO 10646 does not say that lArr is the same as the 'is implied by' arrow but also does not have any other character for that function. So ? lArr can be used for 'is implied by' as ISOtech suggests\n \"uArr\" : 8657, // upwards double arrow, U+21D1 ISOamsa\n \"rArr\" : 8658, // rightwards double arrow,U+21D2 ISOtech\n\n // ISO 10646 does not say this is the 'implies' character but does not have another character with this function so ?rArr can be used for 'implies' as ISOtech suggests\n \"dArr\" : 8659, // downwards double arrow, U+21D3 ISOamsa\n \"hArr\" : 8660, // left right double arrow,U+21D4 ISOamsa\n\n // Mathematical Operators\n \"forall\" : 8704, // for all, U+2200 ISOtech\n \"part\" : 8706, // partial differential, U+2202 ISOtech\n \"exist\" : 8707, // there exists, U+2203 ISOtech\n \"empty\" : 8709, // empty set = null set = diameter,U+2205 ISOamso\n \"nabla\" : 8711, // nabla = backward difference,U+2207 ISOtech\n \"isin\" : 8712, // element of, U+2208 ISOtech\n \"notin\" : 8713, // not an element of, U+2209 ISOtech\n \"ni\" : 8715, // contains as member, U+220B ISOtech\n\n // should there be a more memorable name than 'ni'?\n \"prod\" : 8719, // n-ary product = product sign,U+220F ISOamsb\n\n // prod is NOT the same character as U+03A0 'greek capital letter pi' though the same glyph might be used for both\n \"sum\" : 8721, // n-ary summation, U+2211 ISOamsb\n\n // sum is NOT the same character as U+03A3 'greek capital letter sigma' though the same glyph might be used for both\n \"minus\" : 8722, // minus sign, U+2212 ISOtech\n \"lowast\" : 8727, // asterisk operator, U+2217 ISOtech\n \"radic\" : 8730, // square root = radical sign,U+221A ISOtech\n \"prop\" : 8733, // proportional to, U+221D ISOtech\n \"infin\" : 8734, // infinity, U+221E ISOtech\n \"ang\" : 8736, // angle, U+2220 ISOamso\n \"and\" : 8743, // logical and = wedge, U+2227 ISOtech\n \"or\" : 8744, // logical or = vee, U+2228 ISOtech\n \"cap\" : 8745, // intersection = cap, U+2229 ISOtech\n \"cup\" : 8746, // union = cup, U+222A ISOtech\n \"int\" : 8747, // integral, U+222B ISOtech\n \"there4\" : 8756, // therefore, U+2234 ISOtech\n \"sim\" : 8764, // tilde operator = varies with = similar to,U+223C ISOtech\n\n // tilde operator is NOT the same character as the tilde, U+007E,although the same glyph might be used to represent both\n \"cong\" : 8773, // approximately equal to, U+2245 ISOtech\n \"asymp\" : 8776, // almost equal to = asymptotic to,U+2248 ISOamsr\n \"ne\" : 8800, // not equal to, U+2260 ISOtech\n \"equiv\" : 8801, // identical to, U+2261 ISOtech\n \"le\" : 8804, // less-than or equal to, U+2264 ISOtech\n \"ge\" : 8805, // greater-than or equal to,U+2265 ISOtech\n \"sub\" : 8834, // subset of, U+2282 ISOtech\n \"sup\" : 8835, // superset of, U+2283 ISOtech\n\n // note that nsup, 'not a superset of, U+2283' is not covered by the Symbol font encoding and is not included. Should it be, for symmetry?It is in ISOamsn --> String
using HTML entities.\n *\n * For example: \"bread\" & \"butter\" => "bread" & "butter".\n * Supports all known HTML 4.0 entities, including funky accents.\n *\n * * HTML 3.2 Character Entities for ISO Latin-1\n * * HTML 4.0 Character entity references\n * * HTML 4.01 Character References\n * * HTML 4.01 Code positions\n *\n * @param str {String} the String to escape\n * @return {String} a new escaped String\n * @see #unescape\n */\n escape : function(str) {\n return qx.util.StringEscape.escape(str, qx.bom.String.FROM_CHARCODE);\n },\n\n\n /**\n * Unescapes a string containing entity escapes to a string\n * containing the actual Unicode characters corresponding to the\n * escapes. Supports HTML 4.0 entities.\n *\n * For example, the string \"<Français>\"\n * will become \"<Français>\"\n *\n * If an entity is unrecognized, it is left alone, and inserted\n * verbatim into the result string. e.g. \">&zzzz;x\" will\n * become \">&zzzz;x\".\n *\n * @param str {String} the String to unescape, may be null\n * @return {var} a new unescaped String\n * @see #escape\n */\n unescape : function(str) {\n return qx.util.StringEscape.unescape(str, qx.bom.String.TO_CHARCODE);\n },\n\n\n /**\n * Converts a plain text string into HTML.\n * This is similar to {@link #escape} but converts new lines to\n * <:br>: and preserves whitespaces.\n *\n * @param str {String} the String to convert\n * @return {String} a new converted String\n * @see #escape\n */\n fromText : function(str)\n {\n return qx.bom.String.escape(str).replace(/( |\\n)/g, function(chr)\n {\n var map =\n {\n \" \" : \" \",\n \"\\n\" : \"
\"\n };\n\n return map[chr] || chr;\n });\n },\n\n\n /**\n * Converts HTML to plain text.\n *\n * * Strips all HTML tags\n * * converts <:br>: to new line\n * * unescapes HTML entities\n *\n * @param str {String} HTML string to converts\n * @return {String} plain text representation of the HTML string\n */\n toText : function(str)\n {\n return qx.bom.String.unescape(str.replace(/\\s+|<([^>])+>/gi, function(chr)\n //return qx.bom.String.unescape(str.replace(/<\\/?[^>]+(>|$)/gi, function(chr)\n {\n if (chr.indexOf(\"
0 && chr.replace(/^\\s*/, \"\").replace(/\\s*$/, \"\") == \"\") {\n return \" \";\n } else {\n return \"\";\n }\n }));\n }\n },\n\n\n\n /*\n *****************************************************************************\n DEFER\n *****************************************************************************\n */\n\n defer : function(statics)\n {\n /** Mapping of char codes to HTML entity names */\n statics.FROM_CHARCODE = qx.lang.Object.invert(statics.TO_CHARCODE)\n; }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Ignacio Pascual (ignapas)\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.ui.hint.InfoHint\", {\n extend: osparc.ui.basic.IconButton,\n\n /**\n * Info button with hint as tooltip\n *\n * @extends osparc.ui.basic.IconButton\n */\n construct: function(hintText) {\n this.base(arguments, this.self().INFO_ICON + \"/14\");\n\n this.__createHint();\n\n this.bind(\"hintText\", this, \"visibility\", {\n converter: text => (text && text !== \"\") ? \"visible\" : \"excluded\"\n });\n\n if (hintText) {\n this.setHintText(hintText);\n }\n },\n\n statics: {\n INFO_ICON: \"@MaterialIcons/info_outline\"\n },\n\n properties: {\n hintText: {\n check: \"String\",\n init: null,\n event: \"changeHintText\",\n apply: \"__applyHintText\"\n }\n },\n\n members: {\n _hint: null,\n\n __createHint: function() {\n const hint = this._hint = new osparc.ui.hint.Hint(this).set({\n active: false\n });\n this.addListenerOnce(\"appear\", () => hint.attachShowHideHandlers());\n },\n\n __applyHintText: function(hintText) {\n this._hint.setText(hintText);\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2023 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Odei Maiz (odeimaiz)\n */\n\nqx.Class.define(\"osparc.share.NewCollaboratorsManager\", {\n extend: osparc.ui.window.SingletonWindow,\n\n construct: function(resourceData, showOrganizations = true) {\n this.base(arguments, \"collaboratorsManager\", this.tr(\"Share with\"));\n this.set({\n layout: new qx.ui.layout.VBox(5),\n allowMinimize: false,\n allowMaximize: false,\n showMinimize: false,\n showMaximize: false,\n autoDestroy: true,\n modal: true,\n width: 350,\n maxHeight: 500,\n clickAwayClose: true\n });\n\n this.__resourceData = resourceData;\n this.__showOrganizations = showOrganizations;\n\n this.__renderLayout();\n\n this.__selectedCollaborators = [];\n this.__potentialCollaborators = {};\n this.__reloadPotentialCollaborators();\n\n this.center();\n this.open();\n },\n\n events: {\n \"addCollaborators\": \"qx.event.type.Data\"\n },\n\n members: {\n __resourceData: null,\n __showOrganizations: null,\n __textFilter: null,\n __collabButtonsContainer: null,\n __searchingCollaborators: null,\n __searchDelayer: null,\n __shareButton: null,\n __selectedCollaborators: null,\n __potentialCollaborators: null,\n\n getActionButton: function() {\n return this.__shareButton;\n },\n\n __renderLayout: function() {\n let text = this.__showOrganizations ?\n this.tr(\"Select users or organizations from the list below.\") :\n this.tr(\"Select users from the list below.\");\n text += this.tr(\"
Search them if they aren't listed.\");\n const introLabel = new qx.ui.basic.Label().set({\n value: text,\n rich: true,\n wrap: true,\n paddingBottom: 5\n });\n this.add(introLabel);\n\n const toolbar = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignY: \"middle\",\n }));\n const filter = this.__textFilter = new osparc.filter.TextFilter(\"name\", \"collaboratorsManager\");\n filter.setCompact(true);\n const filterTextField = filter.getChildControl(\"textfield\");\n filterTextField.setPlaceholder(this.tr(\"Search\"));\n this.addListener(\"appear\", () => filterTextField.focus());\n toolbar.add(filter, {\n flex: 1\n });\n filterTextField.addListener(\"input\", e => {\n const filterValue = e.getData();\n if (this.__searchDelayer) {\n clearTimeout(this.__searchDelayer);\n }\n if (filterValue.length > 3) {\n const waitBeforeSearching = 1000;\n this.__searchDelayer = setTimeout(() => {\n this.__searchUsers();\n }, waitBeforeSearching);\n }\n });\n this.add(toolbar);\n\n const collabButtonsContainer = this.__collabButtonsContainer = new qx.ui.container.Composite(new qx.ui.layout.VBox());\n const scrollContainer = new qx.ui.container.Scroll();\n scrollContainer.add(collabButtonsContainer);\n this.add(scrollContainer, {\n flex: 1\n });\n\n const searchingCollaborators = this.__searchingCollaborators = new osparc.filter.SearchingCollaborators();\n searchingCollaborators.exclude();\n this.__collabButtonsContainer.add(searchingCollaborators);\n\n const buttons = new qx.ui.container.Composite(new qx.ui.layout.HBox().set({\n alignX: \"right\"\n }));\n const shareButton = this.__shareButton = new osparc.ui.form.FetchButton(this.tr(\"Share\")).set({\n appearance: \"form-button\",\n enabled: false,\n });\n shareButton.addListener(\"execute\", () => this.__shareClicked(), this);\n buttons.add(shareButton);\n this.add(buttons);\n },\n\n __searchUsers: function() {\n this.__searchingCollaborators.show();\n const text = this.__textFilter.getChildControl(\"textfield\").getValue();\n osparc.store.Users.getInstance().searchUsers(text)\n .then(users => {\n users.forEach(user => user[\"collabType\"] = 2);\n this.__addPotentialCollaborators(users);\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.getInstance().logAs(err.message, \"ERROR\");\n })\n .finally(() => this.__searchingCollaborators.exclude());\n },\n\n __showProductEveryone: function() {\n let showProductEveryone = false;\n if (this.__showOrganizations === false) {\n showProductEveryone = false;\n } else if (this.__resourceData && this.__resourceData[\"resourceType\"] === \"study\") {\n // studies can't be shared with ProductEveryone\n showProductEveryone = false;\n } else if (this.__resourceData && this.__resourceData[\"resourceType\"] === \"template\") {\n // only users with permissions can share templates with ProductEveryone\n showProductEveryone = osparc.data.Permissions.getInstance().canDo(\"study.everyone.share\");\n } else if (this.__resourceData && this.__resourceData[\"resourceType\"] === \"service\") {\n // all users can share services with ProductEveryone\n showProductEveryone = true;\n }\n return showProductEveryone;\n },\n\n __reloadPotentialCollaborators: function() {\n const includeProductEveryone = this.__showProductEveryone();\n this.__potentialCollaborators = osparc.store.Groups.getInstance().getPotentialCollaborators(false, includeProductEveryone);\n const potentialCollaborators = Object.values(this.__potentialCollaborators);\n this.__addPotentialCollaborators(potentialCollaborators);\n },\n\n __collaboratorButton: function(collaborator) {\n const collaboratorButton = new osparc.filter.CollaboratorToggleButton(collaborator);\n collaboratorButton.groupId = collaborator.getGroupId();\n collaboratorButton.addListener(\"changeValue\", e => {\n const selected = e.getData();\n if (selected) {\n this.__selectedCollaborators.push(collaborator.getGroupId());\n } else {\n const idx = this.__selectedCollaborators.indexOf(collaborator.getGroupId());\n if (idx > -1) {\n this.__selectedCollaborators.splice(idx, 1);\n }\n }\n this.__shareButton.setEnabled(Boolean(this.__selectedCollaborators.length));\n }, this);\n collaboratorButton.subscribeToFilterGroup(\"collaboratorsManager\");\n return collaboratorButton;\n },\n\n __addPotentialCollaborators: function(potentialCollaborators) {\n // sort them first\n potentialCollaborators.sort((a, b) => {\n if (a[\"collabType\"] > b[\"collabType\"]) {\n return 1;\n }\n if (a[\"collabType\"] < b[\"collabType\"]) {\n return -1;\n }\n if (a.getLabel() > b.getLabel()) {\n return 1;\n }\n return -1;\n });\n\n let existingCollabs = [];\n if (this.__resourceData) {\n if (this.__resourceData[\"groupMembers\"] && this.__resourceData[\"resourceType\"] === \"organization\") {\n // organization\n existingCollabs = Object.keys(this.__resourceData[\"groupMembers\"]);\n } else if (this.__resourceData[\"accessRights\"] && this.__resourceData[\"resourceType\"] === \"wallet\") {\n // wallet\n // array of objects\n existingCollabs = this.__resourceData[\"accessRights\"].map(collab => collab[\"gid\"]);\n } else if (this.__resourceData[\"accessRights\"]) {\n // study/template/service/\n // object\n existingCollabs = Object.keys(this.__resourceData[\"accessRights\"]);\n }\n }\n\n const existingCollaborators = existingCollabs.map(c => parseInt(c));\n potentialCollaborators.forEach(potentialCollaborator => {\n // do not list the potentialCollaborators that are already collaborators\n if (existingCollaborators.includes(potentialCollaborator.getGroupId())) {\n return;\n }\n // do not list those that were already listed\n if (this.__collabButtonsContainer.getChildren().find(c => \"groupId\" in c && c[\"groupId\"] === potentialCollaborator.getGroupId())) {\n return;\n }\n if (this.__showOrganizations === false && potentialCollaborator[\"collabType\"] !== 2) {\n return;\n }\n this.__collabButtonsContainer.add(this.__collaboratorButton(potentialCollaborator));\n });\n\n // move it to last position\n this.__collabButtonsContainer.remove(this.__searchingCollaborators);\n this.__collabButtonsContainer.add(this.__searchingCollaborators);\n },\n\n __shareClicked: function() {\n this.__collabButtonsContainer.setEnabled(false);\n this.__shareButton.setFetching(true);\n\n if (this.__selectedCollaborators.length) {\n this.fireDataEvent(\"addCollaborators\", this.__selectedCollaborators);\n }\n // The parent class will close the window\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.organizations.OrganizationsWindow\", {\n extend: osparc.ui.window.SingletonWindow,\n\n construct: function() {\n this.base(arguments, \"organizations\", this.tr(\"Organizations\"));\n\n this.set({\n layout: new qx.ui.layout.VBox(),\n modal: true,\n width: 550,\n height: 660,\n showMaximize: false,\n showMinimize: false,\n appearance: \"service-window\"\n });\n\n osparc.utils.Utils.setIdToWidget(this, \"organizationsWindow\");\n const closeBtn = this.getChildControl(\"close-button\");\n osparc.utils.Utils.setIdToWidget(closeBtn, \"organizationsWindowCloseBtn\");\n\n this.__buildLayout();\n },\n\n statics: {\n openWindow: function() {\n const orgsWindow = new osparc.desktop.organizations.OrganizationsWindow();\n orgsWindow.center();\n orgsWindow.open();\n return orgsWindow;\n }\n },\n\n members: {\n __stack: null,\n __orgsPage: null,\n __orgDetails: null,\n\n __buildLayout: function() {\n const stack = this.__stack = new qx.ui.container.Stack();\n this.add(stack, {\n flex: 1\n });\n\n const orgsPage = this.__orgsPage = new osparc.desktop.organizations.OrganizationsList();\n const orgDetails = this.__orgDetails = new osparc.desktop.organizations.OrganizationDetails();\n stack.add(orgsPage);\n stack.add(orgDetails);\n\n orgsPage.addListener(\"organizationSelected\", e => {\n const orgId = e.getData();\n this.openOrganizationDetails(orgId);\n });\n\n orgDetails.addListener(\"backToOrganizations\", () => {\n this.getChildControl(\"title\").setValue(this.tr(\"Organizations\"));\n this.__stack.setSelection([orgsPage]);\n orgsPage.reloadOrganizations();\n });\n },\n\n openOrganizationDetails: function(organizationId) {\n const openOrgDetails = orgId => {\n const orgModel = this.__orgsPage.getOrgModel(orgId);\n this.__orgDetails.setCurrentOrg(orgModel);\n this.getChildControl(\"title\").setValue(this.tr(\"Organization details\"));\n this.__stack.setSelection([this.__orgDetails]);\n };\n if (this.__orgsPage.isOrganizationsLoaded()) {\n openOrgDetails(organizationId);\n } else {\n this.__orgsPage.addListenerOnce(\"changeOrganizationsLoaded\", () => openOrgDetails(organizationId));\n }\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2019 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n * Odei Maiz (odeimaiz)\n */\n\n/**\n * @asset(marked/marked.min.js)\n * @ignore(marked)\n */\n\n/* global marked */\n\n/**\n * This class is just a special kind of rich label that takes markdown raw text, compiles it to HTML,\n * sanitizes it and applies it to its value property.\n */\nqx.Class.define(\"osparc.ui.markdown.Markdown\", {\n extend: qx.ui.embed.Html,\n\n /**\n * Markdown constructor. It directly accepts markdown as its first argument.\n * @param {String} markdown Plain text accepting markdown syntax. Its compiled version will be set in the value property of the label.\n */\n construct: function(markdown) {\n this.base(arguments);\n\n this.__loadMarked = new Promise((resolve, reject) => {\n if (typeof marked === \"function\") {\n resolve(marked);\n } else {\n const loader = new qx.util.DynamicScriptLoader([\n \"marked/marked.min.js\"\n ]);\n loader.addListenerOnce(\"ready\", () => {\n resolve(marked);\n }, this);\n loader.addListenerOnce(\"failed\", e => {\n reject(Error(`Failed to load ${e.getData()}. Value couldn't be updated.`));\n });\n loader.start();\n }\n });\n if (markdown) {\n this.setValue(markdown);\n }\n [\n \"resize\",\n \"appear\"\n ].forEach(event => {\n this.addListener(event, e => this.__resizeMe(), this);\n });\n\n this.setHeight(1);\n },\n\n properties: {\n /**\n * Holds the raw markdown text and updates the label's {@link #value} whenever new markdown arrives.\n */\n value: {\n check: \"String\",\n apply: \"__applyMarkdown\"\n },\n\n noMargin: {\n check: \"Boolean\",\n init: false\n }\n },\n\n events: {\n \"resized\": \"qx.event.type.Event\",\n },\n\n members: {\n __loadMarked: null,\n /**\n * Apply function for the markdown property. Compiles the markdown text to HTML and applies it to the value property of the label.\n * @param {String} value Plain text accepting markdown syntax.\n */\n __applyMarkdown: function(value = \"\") {\n this.__loadMarked.then(() => {\n const renderer = {\n link(link) {\n const linkColor = qx.theme.manager.Color.getInstance().resolve(\"link\");\n let linkHtml = ``\n if (link.tokens && link.tokens.length) {\n const linkRepresentation = link.tokens[0];\n if (linkRepresentation.type === \"text\") {\n linkHtml += linkRepresentation.text;\n } else if (linkRepresentation.type === \"image\") {\n linkHtml += `
`;\n }\n }\n linkHtml += ``;\n return linkHtml;\n }\n };\n marked.use({ renderer });\n\n const html = marked.parse(value);\n\n const safeHtml = osparc.wrapper.DOMPurify.getInstance().sanitize(html);\n this.setHtml(safeHtml);\n\n // for some reason the content is not immediately there\n qx.event.Timer.once(() => {\n this.__parseImages();\n this.__resizeMe();\n }, this, 100);\n\n this.__resizeMe();\n }).catch(error => console.error(error));\n },\n\n __parseImages: function() {\n const domElement = this.__getDomElement();\n if (domElement === null) {\n return;\n }\n const images = qx.bom.Selector.query(\"img\", domElement);\n for (let i=0; i {\n this.__resizeMe();\n };\n }\n },\n\n // qx.ui.embed.html scale to content\n __resizeMe: function() {\n const domElement = this.__getDomElement();\n if (domElement === null) {\n return;\n }\n if (domElement && domElement.children) {\n const elemHeight = this.__getChildrenElementHeight(domElement.children);\n if (this.getMaxHeight() && elemHeight > this.getMaxHeight()) {\n this.setHeight(elemHeight);\n } else {\n this.setMinHeight(elemHeight);\n }\n\n const elemMaxWidth = this.__getChildrenElementMaxWidth(domElement.children);\n if (this.getMaxWidth() && elemMaxWidth > this.getMaxWidth()) {\n this.setWidth(elemMaxWidth);\n } else {\n this.setMinWidth(elemMaxWidth);\n }\n }\n this.fireEvent(\"resized\");\n },\n\n __getDomElement: function() {\n if (!this.getContentElement || this.getContentElement() === null) {\n return null;\n }\n const domElement = this.getContentElement().getDomElement();\n if (domElement) {\n return domElement;\n }\n return null;\n },\n\n __getChildrenElementHeight: function(children) {\n let height = 0;\n if (children.length) {\n for (let i=0; i < children.length; i++) {\n height += this.__getElementHeight(children[i]);\n }\n }\n return height;\n },\n\n __getElementHeight: function(element) {\n if (this.getNoMargin()) {\n element.style.marginTop = 0;\n element.style.marginBottom = 0;\n const size = this.__getElementSize(element);\n return size.height;\n }\n const size = this.__getElementSize(element);\n // add padding\n return size.height + 20;\n },\n\n __getChildrenElementMaxWidth: function(children) {\n let maxWidth = 0;\n for (let i=0; i < children.length; i++) {\n maxWidth = Math.max(this.__getElementWidth(children[i]), maxWidth);\n }\n return maxWidth;\n },\n\n __getElementWidth: function(element) {\n const size = this.__getElementSize(element);\n return size.width;\n },\n\n __getElementSize: function(element) {\n if (\n element &&\n element.children &&\n element.children.length &&\n element.children[0].localName === \"img\"\n ) {\n return qx.bom.element.Dimension.getSize(element.children[0]);\n }\n return qx.bom.element.Dimension.getSize(element);\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.notification.Notifications\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n construct: function() {\n this.base(arguments);\n this.__notifications = new qx.data.Array();\n },\n\n statics: {\n __newNotificationBase: function(userId) {\n return {\n \"user_id\": userId.toString(),\n \"user_from_id\": osparc.auth.Data.getInstance().getUserId(),\n \"date\": new Date().toISOString(),\n \"product\": osparc.product.Utils.getProductName(),\n };\n },\n\n __newOrganizationObj: function(userId, orgId) {\n const baseNotification = this.__newNotificationBase(userId);\n const specNotification = {\n \"category\": \"NEW_ORGANIZATION\",\n \"actionable_path\": \"organization/\"+orgId,\n \"resource_id\": orgId.toString(),\n \"title\": \"New organization\",\n \"text\": \"You're now member of a new Organization\"\n };\n return {\n ...baseNotification,\n ...specNotification\n };\n },\n\n __newStudyObj: function(userId, studyId) {\n const study = osparc.product.Utils.getStudyAlias({\n firstUpperCase: true\n });\n const baseNotification = this.__newNotificationBase(userId);\n const specNotification = {\n \"category\": \"STUDY_SHARED\",\n \"actionable_path\": \"study/\"+studyId,\n \"resource_id\": studyId,\n \"title\": `${study} shared`,\n \"text\": `A ${study} was shared with you`\n };\n return {\n ...baseNotification,\n ...specNotification\n };\n },\n\n __newTemplateObj: function(userId, templateId) {\n const template = osparc.product.Utils.getTemplateAlias({\n firstUpperCase: true\n });\n const baseNotification = this.__newNotificationBase(userId);\n const specNotification = {\n \"category\": \"TEMPLATE_SHARED\",\n \"actionable_path\": \"template/\"+templateId,\n \"resource_id\": templateId,\n \"title\": `${template} shared`,\n \"text\": `A ${template} was shared with you`\n };\n return {\n ...baseNotification,\n ...specNotification\n };\n },\n\n __newAnnotationNoteObj: function(userId, studyId) {\n const baseNotification = this.__newNotificationBase(userId);\n const specNotification = {\n \"category\": \"ANNOTATION_NOTE\",\n \"actionable_path\": \"study/\"+studyId,\n \"resource_id\": studyId,\n \"title\": \"Note added\",\n \"text\": \"A Note was added for you\"\n };\n return {\n ...baseNotification,\n ...specNotification\n };\n },\n\n __newWalletObj: function(userId, walletId) {\n const baseNotification = this.__newNotificationBase(userId);\n const specNotification = {\n \"category\": \"WALLET_SHARED\",\n \"actionable_path\": \"wallet/\"+walletId,\n \"resource_id\": walletId.toString(),\n \"title\": \"Credits shared\",\n \"text\": \"A Credit Account was shared with you\"\n };\n return {\n ...baseNotification,\n ...specNotification\n };\n },\n\n postNewOrganization: function(userId, orgId) {\n const params = {\n data: this.__newOrganizationObj(userId, orgId)\n };\n return osparc.data.Resources.fetch(\"notifications\", \"post\", params);\n },\n\n postNewStudy: function(userId, studyId) {\n const params = {\n data: this.__newStudyObj(userId, studyId)\n };\n return osparc.data.Resources.fetch(\"notifications\", \"post\", params);\n },\n\n postNewTemplate: function(userId, templateId) {\n const params = {\n data: this.__newTemplateObj(userId, templateId)\n };\n return osparc.data.Resources.fetch(\"notifications\", \"post\", params);\n },\n\n postNewAnnotationNote: function(userId, studyId) {\n const params = {\n data: this.__newAnnotationNoteObj(userId, studyId)\n };\n return osparc.data.Resources.fetch(\"notifications\", \"post\", params);\n },\n\n postNewWallet: function(userId, walletId) {\n const params = {\n data: this.__newWalletObj(userId, walletId)\n };\n return osparc.data.Resources.fetch(\"notifications\", \"post\", params);\n },\n\n markAsRead: function(notification) {\n if (notification.isRead() === false) {\n // set as read\n const params = {\n url: {\n notificationId: notification.getId()\n },\n data: {\n \"read\": true\n }\n };\n osparc.data.Resources.fetch(\"notifications\", \"patch\", params)\n .then(() => notification.setRead(true))\n .catch(() => notification.setRead(false));\n }\n },\n },\n\n members: {\n __notifications: null,\n\n __addNotification: function(notificationObj) {\n const notification = new osparc.notification.Notification(notificationObj);\n this.__notifications.push(notification);\n this.__notifications.sort((a, b) => new Date(b.getDate()) - new Date(a.getDate()));\n },\n\n addNotifications: function(notifications) {\n this.__notifications.removeAll();\n notifications.forEach(notification => this.__addNotification(notification));\n },\n\n removeNotification: function(notification) {\n this.__notifications.remove(notification);\n },\n\n getNotifications: function() {\n return this.__notifications;\n },\n\n markAllAsRead: function() {\n this.__notifications.forEach(notification => {\n if (notification.isRead() === false) {\n osparc.notification.Notifications.markAsRead(notification);\n }\n });\n },\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2023 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Odei Maiz (odeimaiz)\n */\n\nqx.Class.define(\"osparc.share.ShareePermissions\", {\n extend: qx.ui.core.Widget,\n\n construct: function(shareesData) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(25));\n\n this.__populateLayout(shareesData);\n },\n\n members: {\n __populateLayout: function(shareesData) {\n const text = this.tr(\"The following users/groups will not be able to open the shared study, because they don't have access to some services. Please contact the service owner(s) to give permission.\");\n this._add(new qx.ui.basic.Label().set({\n value: text,\n font: \"text-14\",\n rich: true,\n wrap: true\n }));\n\n const grid = new qx.ui.layout.Grid(20, 10);\n grid.setColumnAlign(0, \"center\", \"middle\");\n grid.setColumnAlign(1, \"center\", \"middle\");\n const layout = new qx.ui.container.Composite(grid);\n this._add(layout);\n for (let i=0; i {\n const hBox = new qx.ui.container.Composite(new qx.ui.layout.HBox(5)).set({\n alignY: \"middle\"\n });\n const infoButton = new qx.ui.form.Button(null, \"@MaterialIcons/info_outline/14\");\n infoButton.setAppearance(\"strong-button\");\n const label = new qx.ui.basic.Label();\n hBox.add(infoButton);\n hBox.add(label);\n osparc.store.Services.getService(inaccessibleService.key, inaccessibleService.version)\n .then(metadata => {\n label.setValue(metadata[\"name\"] + \" : \" + metadata[\"version\"])\n infoButton.addListener(\"execute\", () => {\n metadata[\"resourceType\"] = \"service\";\n const resourceDetails = new osparc.dashboard.ResourceDetails(metadata);\n osparc.dashboard.ResourceDetails.popUpInWindow(resourceDetails);\n }, this);\n })\n\n vBox.add(hBox);\n });\n layout.add(vBox, {\n row: i,\n column: 1\n });\n }\n }\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Andreas Ecker (ecker)\n\n ======================================================================\n\n This class contains code based on the following work:\n\n * jQuery\n http://jquery.com\n Version 1.3.1\n\n Copyright:\n 2009 John Resig\n\n License:\n MIT: http://www.opensource.org/licenses/mit-license.php\n\n************************************************************************ */\n\n/**\n * Cross browser abstractions to work with input elements.\n */\nqx.Bootstrap.define(\"qx.bom.Input\",\n{\n /*\n *****************************************************************************\n STATICS\n *****************************************************************************\n */\n\n statics :\n {\n /** @type {Map} Internal data structures with all supported input types */\n __types :\n {\n text : 1,\n textarea : 1,\n select : 1,\n checkbox : 1,\n radio : 1,\n password : 1,\n hidden : 1,\n submit : 1,\n image : 1,\n file : 1,\n search : 1,\n reset : 1,\n button : 1\n },\n\n\n /**\n * Creates an DOM input/textarea/select element.\n *\n * Attributes may be given directly with this call. This is critical\n * for some attributes e.g. name, type, ... in many clients.\n *\n * Note: select
and textarea
elements are created\n * using the identically named type
.\n *\n * @param type {String} Any valid type for HTML, select
\n * and textarea
\n * @param attributes {Map} Map of attributes to apply\n * @param win {Window} Window to create the element for\n * @return {Element} The created input node\n */\n create : function(type, attributes, win)\n {\n if (qx.core.Environment.get(\"qx.debug\")) {\n qx.core.Assert.assertKeyInMap(type, this.__types, \"Unsupported input type.\");\n }\n\n // Work on a copy to not modify given attributes map\n var attributes = attributes ? qx.lang.Object.clone(attributes) : {};\n\n var tag;\n\n if (type === \"textarea\" || type === \"select\")\n {\n tag = type;\n }\n else\n {\n tag = \"input\";\n attributes.type = type;\n }\n\n return qx.dom.Element.create(tag, attributes, win);\n },\n\n\n /**\n * Applies the given value to the element.\n *\n * Normally the value is given as a string/number value and applied\n * to the field content (textfield, textarea) or used to\n * detect whether the field is checked (checkbox, radiobutton).\n *\n * Supports array values for selectboxes (multiple-selection)\n * and checkboxes or radiobuttons (for convenience).\n *\n * Please note: To modify the value attribute of a checkbox or\n * radiobutton use {@link qx.bom.element.Attribute#set} instead.\n *\n * @param element {Element} element to update\n * @param value {String|Number|Array} the value to apply\n */\n setValue : function(element, value)\n {\n var tag = element.nodeName.toLowerCase();\n var type = element.type;\n var Type = qx.lang.Type;\n\n if (typeof value === \"number\") {\n value += \"\";\n }\n\n if ((type === \"checkbox\" || type === \"radio\"))\n {\n if (Type.isArray(value)) {\n element.checked = value.includes(element.value);\n } else {\n element.checked = element.value == value;\n }\n }\n else if (tag === \"select\")\n {\n var isArray = Type.isArray(value);\n var options = element.options;\n var subel, subval;\n\n for (var i=0, l=options.length; i {\n const container = this.getLayoutParent();\n const parent = container.getLayoutParent();\n parent.remove(container);\n }, this);\n }\n this.bind(\"key\", this.__label, \"value\", {\n converter: key => this.__getHeaderText(key, schema, isArrayItem)\n });\n },\n properties: {\n key: {\n event: \"changeKey\",\n init: \"\"\n }\n },\n members: {\n __label: null,\n /**\n * Method that returns an appropriate text for a label.\n */\n __getHeaderText: function(key, schema, isArrayItem) {\n let title = schema.title || key;\n if (isArrayItem) {\n title = schema.title ? `${schema.title} ` : \"\";\n return title + `#${key + 1}`;\n }\n return title;\n },\n /**\n * Method that returns the label.\n */\n getLabel: function() {\n return this.__label;\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * Form widget that simply extends SelectBox to avoid the manipulation of ``qx.ui.form.ListItem`` as menu options.\n */\nqx.Class.define(\"osparc.ui.form.ListItemSelectBox\", {\n extend: qx.ui.form.SelectBox,\n members: {\n // overwritten\n add: function(label, icon, model, options) {\n this.base(arguments, new qx.ui.form.ListItem(label, icon, model), options);\n },\n // overwritten\n getValue: function() {\n const listItem = this.base(arguments);\n return listItem.getLabel();\n },\n // overwritten\n setValue: function(value) {\n const item = this.getChildren().find(child => child.getLabel() === value);\n if (item) {\n this.base(arguments, item);\n }\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * Static class that holds reusable form validators.\n */\nqx.Class.define(\"osparc.utils.Validators\", {\n statics: {\n hexColor: function(color, item) {\n const valid = qx.util.ColorUtil.isHex3String(color) || qx.util.ColorUtil.isHex6String(color);\n if (!valid) {\n item.setInvalidMessage(qx.locale.Manager.tr(\"Color must be in hexadecimal form\"));\n }\n return valid;\n },\n regExp: function(regExp) {\n return function(value, item) {\n const valid = regExp.test(value);\n if (!valid) {\n item.setInvalidMessage(qx.locale.Manager.tr(\"Format is invalid\"));\n }\n return valid;\n };\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Andreas Ecker (ecker)\n\n************************************************************************ */\n\n/**\n * A password input field, which hides the entered text.\n */\nqx.Class.define(\"qx.ui.form.PasswordField\",\n{\n extend : qx.ui.form.TextField,\n\n members :\n {\n // overridden\n _createInputElement : function() {\n return new qx.html.Input(\"password\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n * Pedro Crespo (pcrespov)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.About\", {\n extend: osparc.ui.window.Window,\n type: \"singleton\",\n\n construct: function() {\n this.base(arguments, this.tr(\"About \") + this.self().OSPARC_OFFICIAL);\n this.set({\n layout: new qx.ui.layout.VBox(10),\n maxWidth: this.self().MAX_WIDTH,\n maxHeight: this.self().MAX_HEIGHT,\n contentPadding: this.self().PADDING,\n resizable: true,\n showMaximize: false,\n showMinimize: false,\n centerOnAppear: true,\n clickAwayClose: true,\n modal: true\n });\n const closeBtn = this.getChildControl(\"close-button\");\n osparc.utils.Utils.setIdToWidget(closeBtn, \"aboutWindowCloseBtn\");\n\n this.__buildLayout();\n },\n\n statics: {\n MAX_WIDTH: 550,\n MAX_HEIGHT: 680,\n PADDING: 15,\n OSPARC_OFFICIAL: \"o2S2PARC\"\n },\n\n members: {\n __buildLayout: function() {\n const color = qx.theme.manager.Color.getInstance().resolve(\"text\");\n\n const createReleaseNotesLink = osparc.utils.Utils.createReleaseNotesLink().set({\n font: \"link-label-14\"\n });\n this.add(createReleaseNotesLink);\n\n const poweredByLabel = new qx.ui.basic.Label().set({\n font: \"text-14\",\n maxWidth: this.self().MAX_WIDTH - 2*this.self().PADDING,\n rich: true,\n wrap: true\n });\n this.add(poweredByLabel);\n const displayName = osparc.store.StaticInfo.getInstance().getDisplayName();\n const poweredText = ` is powered by the ${osparc.About.OSPARC_OFFICIAL} platform.`;\n poweredByLabel.setValue(displayName + poweredText);\n\n const text = this.tr(\"\\\n is an online-accessible, cloud-based, and collaborative computational modeling platform \\\n that was developed under the Common Fund’s Stimulating Peripheral Activity to Relieve Conditions \\\n (SPARC) program to ensure sustainable, reproducible, and FAIR (findable, accessible, interoperable, reusable) \\\n computational modeling in the field of bioelectronic medicine – from neural interfaces to peripheral nerve recruitment \\\n and the resulting effects on organ function.
\\\n For more information about SPARC and the services offered, visit the \\\n \");\n const portalLink = `SPARC Portal.`;\n const aboutText = this.self().OSPARC_OFFICIAL + text + portalLink;\n const aboutLabel = new qx.ui.basic.Label().set({\n value: aboutText,\n font: \"text-14\",\n maxWidth: this.self().MAX_WIDTH - 2*this.self().PADDING,\n rich: true,\n wrap: true\n });\n this.add(aboutLabel);\n\n const introText = this.tr(\"The platform is built upon a number of open-source \\\n resources - we can't do it all alone! Some of the technologies that we leverage include:\");\n const introLabel = new qx.ui.basic.Label().set({\n value: introText,\n font: \"text-14\",\n maxWidth: this.self().MAX_WIDTH - 2*this.self().PADDING,\n rich: true,\n wrap: true\n });\n this.add(introLabel);\n\n const tabView = new qx.ui.tabview.TabView().set({\n contentPaddingTop: 10,\n contentPaddingLeft: 0,\n barPosition: \"top\"\n });\n tabView.getChildControl(\"pane\").setBackgroundColor(\"transparent\");\n const scrollView = new qx.ui.container.Scroll();\n scrollView.add(tabView);\n this.add(scrollView, {\n flex: 1\n });\n\n const frontendPage = this.__createTabPage(this.tr(\"Front-end\"));\n tabView.add(frontendPage);\n this.__populateFrontendEntries(frontendPage);\n\n const backendPage = this.__createTabPage(this.tr(\"Back-end\"));\n tabView.add(backendPage);\n this.__populateBackendEntries(backendPage);\n },\n\n __createTabPage: function(title) {\n const layout = new qx.ui.layout.Grid(5, 5);\n layout.setColumnFlex(0, 1);\n layout.setColumnFlex(1, 1);\n const tabPage = new qx.ui.tabview.Page(title).set({\n layout\n });\n return tabPage;\n },\n\n __populateFrontendEntries: function(page) {\n const entries = [\n this.__createFrontendEntries([osparc.utils.LibVersions.getPlatformVersion()]),\n this.__createFrontendEntries([osparc.utils.LibVersions.getUIVersion()]),\n this.__createFrontendEntries([osparc.utils.LibVersions.getQxCompiler()]),\n this.__createFrontendEntries(osparc.utils.LibVersions.getQxLibraryInfoMap()),\n this.__createFrontendEntries(osparc.utils.LibVersions.get3rdPartyLibs())\n ].flat();\n for (let i=0; i1) {\n page.add(entry[1], {\n row: i,\n column: 1\n });\n }\n }\n },\n\n __populateBackendEntries: function(page) {\n const libs = osparc.utils.LibVersions.getBackendLibs();\n for (let i=0; i1) {\n page.add(entry[1], {\n row: i,\n column: 1\n });\n }\n }\n },\n\n __createFrontendEntries: function(libs) {\n const entries = [];\n libs.forEach(lib => {\n entries.push(this.__createEntry(lib));\n });\n return entries;\n },\n\n __createEntry: function(lib) {\n const label = lib.name || \"unknown-library\";\n const version = lib.version || \"-\";\n const url = lib.url || null;\n\n let entryLabel;\n if (url) {\n entryLabel = new osparc.ui.basic.LinkLabel(label, url).set({\n font: \"link-label-14\"\n });\n } else {\n entryLabel = new qx.ui.basic.Label(label);\n entryLabel.set({\n font: \"text-14\"\n });\n }\n const entryVersion = new qx.ui.basic.Label(version);\n entryVersion.setFont(\"text-14\");\n return [entryLabel, entryVersion];\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.info.MergedLarge\", {\n extend: osparc.info.CardLarge,\n\n /**\n * @param study {osparc.data.model.Study} Study\n */\n construct: function(study) {\n this.base(arguments);\n\n this.setStudy(study);\n const nodes = study.getWorkbench().getNodes();\n const nodeIds = Object.keys(nodes);\n if (nodeIds.length) {\n this.setNode(nodes[nodeIds[0]]);\n }\n\n this._attachHandlers();\n },\n\n events: {\n \"updateStudy\": \"qx.event.type.Data\"\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n init: null,\n nullable: false\n },\n\n node: {\n check: \"osparc.data.model.Node\",\n init: null,\n nullable: false\n }\n },\n\n members: {\n _rebuildLayout: function() {\n this._removeAll();\n\n const title = this.__createTitle();\n const titleLayout = this.__createViewWithEdit(title, this.__openTitleEditor);\n this._add(titleLayout);\n\n const extraInfo = this.__extraInfo();\n const extraInfoLayout = this.__createExtraInfo(extraInfo);\n\n const bounds = this.getBounds();\n const offset = 30;\n const widgetWidth = bounds ? bounds.width - offset : 500 - offset;\n let thumbnailWidth = widgetWidth - 2 * osparc.info.CardLarge.PADDING;\n const maxThumbnailHeight = extraInfo.length*20;\n const hBox = new qx.ui.container.Composite(new qx.ui.layout.HBox(5).set({\n alignX: \"center\"\n }));\n hBox.add(extraInfoLayout);\n thumbnailWidth -= osparc.info.CardLarge.EXTRA_INFO_WIDTH;\n thumbnailWidth = Math.min(thumbnailWidth - 20, osparc.info.CardLarge.THUMBNAIL_MAX_WIDTH);\n const thumbnail = this.__createThumbnail(thumbnailWidth, maxThumbnailHeight);\n const thumbnailLayout = this.__createViewWithEdit(thumbnail, this.__openThumbnailEditor);\n thumbnailLayout.getLayout().set({\n alignX: \"center\"\n });\n hBox.add(thumbnailLayout, {\n flex: 1\n });\n this._add(hBox);\n\n const tags = this.__createTags();\n if (this.__canIWrite()) {\n const editInTitle = this.__createViewWithEdit(tags.getChildren()[0], this.__openTagsEditor);\n tags.addAt(editInTitle, 0);\n if (this.__canIWrite()) {\n osparc.utils.Utils.setIdToWidget(editInTitle.getChildren()[1], \"editStudyEditTagsBtn\");\n }\n }\n this._add(tags);\n\n const description = this.__createDescription();\n if (this.__canIWrite()) {\n const editInTitle = this.__createViewWithEdit(description.getChildren()[0], this.__openDescriptionEditor);\n description.addAt(editInTitle, 0);\n }\n this._add(description);\n\n const resources = this.__createResources();\n this._add(resources);\n\n const rawMetadata = this.__createRawMetadata();\n const more = new osparc.desktop.PanelView(this.tr(\"Raw metadata\"), rawMetadata).set({\n caretSize: 14\n });\n more.setCollapsed(true);\n more.getChildControl(\"title\").setFont(\"text-12\");\n this._add(more, {\n flex: 1\n });\n const copy2Clip = osparc.utils.Utils.getCopyButton();\n copy2Clip.addListener(\"execute\", () => osparc.utils.Utils.copyTextToClipboard(osparc.utils.Utils.prettifyJson(this.getNode().serialize())), this);\n more.getChildControl(\"header\").add(copy2Clip);\n },\n\n __canIWrite: function() {\n return osparc.data.model.Study.canIWrite(this.getStudy().getAccessRights());\n },\n\n __createViewWithEdit: function(view, cb) {\n const layout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5).set({\n alignY: \"middle\"\n }));\n layout.add(view);\n if (this.__canIWrite()) {\n const editBtn = osparc.utils.Utils.getEditButton();\n editBtn.addListener(\"execute\", () => cb.call(this), this);\n layout.add(editBtn);\n }\n\n return layout;\n },\n\n __extraInfo: function() {\n const extraInfo = [{\n label: this.tr(\"Author\"),\n view: this.__createOwner(),\n action: null\n }, {\n label: this.tr(\"Creation Date\"),\n view: this.__createCreationDate(),\n action: null\n }, {\n label: this.tr(\"Last Modified\"),\n view: this.__createLastChangeDate(),\n action: null\n }, {\n label: this.tr(\"Access Rights\"),\n view: this.__createAccessRights(),\n action: null\n }];\n\n if (\n osparc.product.Utils.showQuality() &&\n this.getStudy().getQuality() &&\n osparc.metadata.Quality.isEnabled(this.getStudy().getQuality())\n ) {\n extraInfo.push({\n label: this.tr(\"Quality\"),\n view: this.__createQuality(),\n action: null\n });\n }\n\n if (osparc.product.Utils.showClassifiers()) {\n extraInfo.push({\n label: this.tr(\"Classifiers\"),\n view: this.__createClassifiers(),\n action: null\n });\n }\n\n let i = 0;\n extraInfo.splice(i++, 0, {\n label: osparc.utils.Utils.capitalize(osparc.product.Utils.getStudyAlias()) + \" ID\",\n view: this.__createStudyId(),\n action: {\n button: osparc.utils.Utils.getCopyButton(),\n callback: this.__copyUuidToClipboard,\n ctx: this\n }\n });\n\n extraInfo.splice(i++, 0, {\n label: this.tr(\"Service ID\"),\n view: this.__createNodeId(),\n action: {\n button: osparc.utils.Utils.getCopyButton(),\n callback: this.__copyNodeIdToClipboard,\n ctx: this\n }\n });\n\n extraInfo.splice(i++, 0, {\n label: this.tr(\"Service Key\"),\n view: this.__createKey(),\n action: {\n button: osparc.utils.Utils.getCopyButton(),\n callback: this.__copyKeyToClipboard,\n ctx: this\n }\n });\n\n if (osparc.data.Permissions.getInstance().isTester() || this.__canIWrite()) {\n extraInfo.splice(i++, 0, {\n label: this.tr(\"Service Integration Version\"),\n view: this.__createIntegrationVersion(),\n action: null\n });\n }\n\n extraInfo.splice(i++, 0, {\n label: this.tr(\"Service Version\"),\n view: this.__createDisplayVersion(),\n action: null\n });\n\n return extraInfo;\n },\n\n __createExtraInfo: function(extraInfo) {\n const moreInfo = osparc.info.Utils.extraInfosToGrid(extraInfo).set({\n width: osparc.info.CardLarge.EXTRA_INFO_WIDTH\n });\n\n return moreInfo;\n },\n\n __createTitle: function() {\n const title = osparc.info.StudyUtils.createTitle(this.getStudy()).set({\n font: \"text-16\"\n });\n return title;\n },\n\n __createStudyId: function() {\n return osparc.info.StudyUtils.createUuid(this.getStudy()).set({\n maxWidth: 200\n });\n },\n\n __createNodeId: function() {\n return osparc.info.ServiceUtils.createNodeId(this.getNode().getNodeId()).set({\n maxWidth: 200\n });\n },\n\n __createKey: function() {\n return osparc.info.ServiceUtils.createKey(this.getNode().getKey());\n },\n\n __createIntegrationVersion: function() {\n return osparc.info.ServiceUtils.createVersion(this.getNode().getVersion());\n },\n\n __createDisplayVersion: function() {\n return osparc.info.ServiceUtils.createVersionDisplay(this.getNode().getKey(), this.getNode().getVersion());\n },\n\n __createOwner: function() {\n return osparc.info.StudyUtils.createOwner(this.getStudy());\n },\n\n __createCreationDate: function() {\n return osparc.info.StudyUtils.createCreationDate(this.getStudy());\n },\n\n __createLastChangeDate: function() {\n return osparc.info.StudyUtils.createLastChangeDate(this.getStudy());\n },\n\n __createAccessRights: function() {\n return osparc.info.StudyUtils.createAccessRights(this.getStudy());\n },\n\n __createClassifiers: function() {\n return osparc.info.StudyUtils.createClassifiers(this.getStudy());\n },\n\n __createQuality: function() {\n return osparc.info.StudyUtils.createQuality(this.getStudy());\n },\n\n __createThumbnail: function(maxWidth, maxHeight = 160) {\n return osparc.info.StudyUtils.createThumbnail(this.getStudy(), maxWidth, maxHeight);\n },\n\n __createTags: function() {\n return osparc.info.StudyUtils.createTags(this.getStudy());\n },\n\n __createDescription: function() {\n const maxHeight = 400;\n const descriptionLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(5).set({\n alignY: \"middle\"\n }));\n\n const label = new qx.ui.basic.Label(qx.locale.Manager.tr(\"Description\")).set({\n font: \"text-13\"\n });\n descriptionLayout.add(label);\n\n const descriptionContainer = osparc.info.StudyUtils.createDescriptionMD(this.getStudy(), maxHeight);\n descriptionLayout.add(descriptionContainer);\n\n return descriptionLayout;\n },\n\n __createResources: function() {\n const resourcesLayout = osparc.info.ServiceUtils.createResourcesInfo();\n resourcesLayout.exclude();\n let promise = null;\n if (this.getNode().getNodeId()) {\n const params = {\n url: {\n studyId: this.getStudy().getUuid(),\n nodeId: this.getNode().getNodeId()\n }\n };\n promise = osparc.data.Resources.get(\"nodesInStudyResources\", params);\n } else {\n promise = osparc.store.Services.getResources(this.getNode().getKey(), this.getNode().getVersion())\n }\n promise\n .then(serviceResources => {\n resourcesLayout.show();\n osparc.info.ServiceUtils.resourcesToResourcesInfo(resourcesLayout, serviceResources);\n })\n .catch(err => console.error(err));\n return resourcesLayout;\n },\n\n __createRawMetadata: function() {\n const container = new qx.ui.container.Scroll();\n container.add(new osparc.ui.basic.JsonTreeWidget(this.getNode().serialize(), \"serviceDescriptionSettings\"));\n return container;\n },\n\n __openTitleEditor: function() {\n const title = this.tr(\"Edit Title\");\n const titleEditor = new osparc.widget.Renamer(this.getStudy().getName(), null, title);\n titleEditor.addListener(\"labelChanged\", e => {\n titleEditor.close();\n const newLabel = e.getData()[\"newLabel\"];\n this.__patchStudy(\"name\", newLabel);\n }, this);\n titleEditor.center();\n titleEditor.open();\n },\n\n __copyUuidToClipboard: function() {\n osparc.utils.Utils.copyTextToClipboard(this.getStudy().getUuid());\n },\n\n __copyNodeIdToClipboard: function() {\n osparc.utils.Utils.copyTextToClipboard(this.getNode().getNodeId());\n },\n\n __copyKeyToClipboard: function() {\n osparc.utils.Utils.copyTextToClipboard(this.getNode().getKey());\n },\n\n __openTagsEditor: function() {\n const tagManager = new osparc.form.tag.TagManager(this.getStudy().serialize());\n const win = osparc.form.tag.TagManager.popUpInWindow(tagManager);\n tagManager.addListener(\"updateTags\", e => {\n win.close();\n const updatedData = e.getData();\n this.getStudy().setTags(updatedData[\"tags\"]);\n this.fireDataEvent(\"updateStudy\", updatedData);\n }, this);\n },\n\n __openThumbnailEditor: function() {\n osparc.editor.ThumbnailSuggestions.extractThumbnailSuggestions(this.getStudy())\n .then(suggestions => {\n const title = this.tr(\"Edit Thumbnail\");\n const oldThumbnail = this.getStudy().getThumbnail();\n const thumbnailEditor = new osparc.editor.ThumbnailEditor(oldThumbnail, suggestions);\n const win = osparc.ui.window.Window.popUpInWindow(thumbnailEditor, title, suggestions.length > 2 ? 500 : 350, suggestions.length ? 280 : 115);\n thumbnailEditor.addListener(\"updateThumbnail\", e => {\n win.close();\n const validUrl = e.getData();\n this.__patchStudy(\"thumbnail\", validUrl);\n }, this);\n thumbnailEditor.addListener(\"cancel\", () => win.close());\n })\n .catch(err => console.error(err));\n },\n\n __openDescriptionEditor: function() {\n const title = this.tr(\"Edit Description\");\n const textEditor = new osparc.editor.MarkdownEditor(this.getStudy().getDescription());\n const win = osparc.ui.window.Window.popUpInWindow(textEditor, title, 400, 300);\n textEditor.addListener(\"textChanged\", e => {\n win.close();\n const newDescription = e.getData();\n this.__patchStudy(\"description\", newDescription);\n }, this);\n textEditor.addListener(\"cancel\", () => {\n win.close();\n }, this);\n },\n\n __patchStudy: function(fieldKey, value) {\n this.getStudy().patchStudy({[fieldKey]: value})\n .then(studyData => {\n this.fireDataEvent(\"updateStudy\", studyData);\n qx.event.message.Bus.getInstance().dispatchByName(\"updateStudy\", studyData);\n })\n .catch(err => {\n console.error(err);\n const msg = err.message || this.tr(\"There was an error while updating the information.\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n });\n }\n }\n});\n","/* ************************************************************************\n\n OSparc Dark Theme for Qooxdoo\n\n Copyright:\n 2018 IT'IS Foundation\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Tobias Oetiker (oetiker)\n\n Origin:\n This theme is based in large parts on the the Simple\n theme included with Qooxdoo.\n************************************************************************ */\n\n/* ************************************************************************\n\n\n************************************************************************* */\n/**\n * Mapping class for all images used in the simple theme.\n *\n * @asset(qx/decoration/Simple/*)\n * @asset(qx/static/blank.png)\n */\nqx.Class.define(\"osparc.theme.common.Image\",\n {\n extend : qx.core.Object,\n\n statics :\n {\n /**\n * Holds a map containing all the URL to the images.\n * @internal\n */\n URLS :\n {\n \"blank\" : \"qx/static/blank.png\",\n\n // checkbox\n \"checkbox-checked\" : \"@MaterialIcons/check_box/15\",\n \"checkbox-blank\" : \"@MaterialIcons/check_box_outline_blank/15\",\n \"checkbox-undetermined\" : \"@MaterialIcons/indeterminate_check_box/15\",\n \"radiobutton-checked\" : \"@MaterialIcons/radio_button_checked/15\",\n \"radiobutton-unchecked\" : \"@MaterialIcons/radio_button_unchecked/15\",\n\n // window\n \"window-minimize\" : \"@MaterialIcons/keyboard_arrow_down\",\n \"window-maximize\" : \"@MaterialIcons/fullscreen\",\n \"window-restore\" : \"@MaterialIcons/fullscreen_exit\",\n \"window-close\" : \"@MaterialIcons/close\",\n\n // cursor\n \"cursor-copy\" : \"decoration/cursors/copy.gif\",\n \"cursor-move\" : \"decoration/cursors/move.gif\",\n \"cursor-alias\" : \"decoration/cursors/alias.gif\",\n \"cursor-nodrop\" : \"decoration/cursors/nodrop.gif\",\n\n\n // arrows\n \"arrow-right\" : \"@MaterialIcons/keyboard_arrow_right/18\",\n \"arrow-left\" : \"@MaterialIcons/keyboard_arrow_left/18\",\n \"arrow-up\" : \"@MaterialIcons/keyboard_arrow_up/18\",\n \"arrow-down\" : \"@MaterialIcons/keyboard_arrow_down/18\",\n \"arrow-forward\" : \"@MaterialIcons/fast_forward/18\",\n \"arrow-rewind\" : \"@MaterialIcons/fast_rewind/18\",\n \"arrow-down-small\" : \"@MaterialIcons/keyboard_arrow_down/13\",\n \"arrow-up-small\" : \"@MaterialIcons/keyboard_arrow_up/13\",\n \"arrow-up-invert\" : \"@MaterialIcons/keyboard_arrow_up/18\",\n \"arrow-down-invert\" : \"@MaterialIcons/keyboard_arrow_down/18\",\n \"arrow-right-invert\" : \"@MaterialIcons/keyboard_arrow_right/18\",\n\n // split pane\n \"knob-horizontal\" : \"@MaterialIcons/drag_indicator/12\",\n \"knob-vertical\" : \"@MaterialIcons/drag_handle/12\",\n\n // tree\n \"tree-minus\" : \"@MaterialIcons/arrow_drop_down/16\",\n \"tree-plus\" : \"@MaterialIcons/arrow_right/16\",\n\n // table\n \"select-column-order\" : \"@MaterialIcons/reorder/15\",\n \"table-ascending\" : \"@MaterialIcons/keyboard_arrow_up/14\",\n \"table-descending\" : \"@MaterialIcons/keyboard_arrow_down/14\",\n\n // tree virtual\n \"treevirtual-line\" : \"decoration/treevirtual/line.gif\",\n \"treevirtual-minus-only\" : \"decoration/treevirtual/only_minus.gif\",\n \"treevirtual-plus-only\" : \"decoration/treevirtual/only_plus.gif\",\n \"treevirtual-minus-start\" : \"decoration/treevirtual/start_minus.gif\",\n \"treevirtual-plus-start\" : \"decoration/treevirtual/start_plus.gif\",\n \"treevirtual-minus-end\" : \"decoration/treevirtual/end_minus.gif\",\n \"treevirtual-plus-end\" : \"decoration/treevirtual/end_plus.gif\",\n \"treevirtual-minus-cross\" : \"decoration/treevirtual/cross_minus.gif\",\n \"treevirtual-plus-cross\" : \"decoration/treevirtual/cross_plus.gif\",\n \"treevirtual-end\" : \"decoration/treevirtual/end.gif\",\n \"treevirtual-cross\" : \"decoration/treevirtual/cross.gif\",\n \"folder-open\": \"@MaterialIcons/folder_open/15\",\n \"folder\": \"@MaterialIcons/folder/15\",\n \"file\": \"@MaterialIcons/insert_drive_file/15\",\n\n // menu\n \"menu-checkbox\" : \"@MaterialIcons/check_box_outline_blank/15\",\n \"menu-checkbox-checked\" : \"@MaterialIcons/check_box/15\",\n \"menu-radiobutton-checked\" : \"@MaterialIcons/radio_button_checked/15\",\n \"menu-radiobutton\" : \"@MaterialIcons/radio_button_unchecked/15\",\n\n // tabview\n \"tabview-close\" : \"decoration/tabview/close.gif\"\n }\n }\n });\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2019 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * Renders a label and an input combined widget. The idea is to be able to edit a label quickly. Fires an event\n * whenever the input is modified to be able to update the value of the label externally or to trigger some other\n * logic (like API calls).\n */\nqx.Class.define(\"osparc.ui.form.EditLabel\", {\n extend: qx.ui.core.Widget,\n\n /**\n * The constructor can be provided with an initial value for the label.\n * @param {String} value This will be the initial value of the label\n */\n construct: function(value) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.HBox().set({\n alignY: \"middle\"\n }));\n\n this.__renderLayout();\n\n if (value) {\n this.setValue(value);\n }\n\n this.__loadingIcon = new qx.ui.basic.Image(\"@FontAwesome5Solid/circle-notch/12\");\n this.__loadingIcon.getContentElement().addClass(\"rotate\");\n },\n\n events: {\n \"editValue\": \"qx.event.type.Data\"\n },\n\n statics: {\n MODES: {\n DISPLAY: \"display\",\n EDIT: \"edit\"\n }\n },\n\n properties: {\n /**\n * Controls the two modes of the widget. In edit mode, it shows an input, in display mode,\n * it shows the edited label.\n */\n mode: {\n check: \"String\",\n nullable: false,\n init: \"display\",\n apply: \"_applyMode\"\n },\n\n /**\n * Master value of the widget. The label in display mode will always show this value.\n */\n value: {\n check: \"String\",\n event: \"changeValue\",\n init: \"\",\n apply: \"_applyValue\"\n },\n\n /**\n * When set to true, adds a little spinner to indicate the the value is being updated, for example\n * while waiting for an API call to resolve.\n */\n fetching: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n apply: \"_applyFetching\"\n },\n\n /**\n * Lets you choose the font for the label in display mode.\n */\n labelFont: {\n check: \"Font\",\n apply: \"_applySpecificFont\"\n },\n\n /**\n * Lets you choose the font for the input in edit mode.\n */\n inputFont: {\n check: \"Font\",\n apply: \"_applySpecificFont\"\n },\n\n /**\n * Enables the edit mode. If false, the label is not editable.\n */\n editable: {\n check: \"Boolean\",\n init: true,\n nullable: false,\n apply: \"_applyEditable\"\n }\n },\n\n members: {\n __labelWidth: null,\n __loadingIcon: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"text\":\n control = new qx.ui.basic.Label().set({\n appearance: \"editlabel-label\"\n });\n this.bind(\"value\", control, \"value\");\n if (this.isEditable()) {\n control.addState(\"editable\");\n }\n control.addListener(\"pointerover\", () => control.addState(\"hovered\"), this);\n control.addListener(\"pointerout\", () => control.removeState(\"hovered\"), this);\n control.addListener(\"tap\", () => this.setMode(this.isEditable() ? this.self().MODES.EDIT : this.self().modes.DISPLAY), this);\n this._add(control);\n break;\n case \"input\":\n control = new qx.ui.form.TextField(this.getValue()).set({\n appearance: \"editlabel-input\"\n });\n control.addListener(\"focusout\", () => this.setMode(this.self().MODES.DISPLAY), this);\n control.addListener(\"focus\", () => control.selectAllText(), this);\n control.addListener(\"changeValue\", evt => {\n this.setMode(this.self().MODES.DISPLAY);\n this.fireDataEvent(\"editValue\", evt.getData());\n }, this);\n control.addListener(\"keydown\", e => {\n if (e.getKeyIdentifier() === \"Enter\") {\n this.setMode(this.self().MODES.DISPLAY);\n }\n }, this);\n this._add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n /**\n * This method takes charge of rendering the widget. It relies on the property mode\n * to render the correct version of the widget.\n */\n __renderLayout: function() {\n const label = this.getChildControl(\"text\");\n const input = this.getChildControl(\"input\")\n switch (this.getMode()) {\n case this.self().MODES.EDIT:\n input.show();\n label.exclude();\n if (this.__labelWidth) {\n input.setWidth(this.__labelWidth);\n }\n input.focus();\n label.removeState(\"hovered\");\n break;\n default:\n label.show();\n input.exclude();\n }\n },\n\n _applyMode: function(mode) {\n if (mode === this.self().MODES.EDIT) {\n this.__labelWidth = this.getChildControl(\"text\").getSizeHint().width;\n }\n this.__renderLayout();\n },\n\n _applyFetching: function(isFetching) {\n const label = this.getChildControl(\"text\");\n if (isFetching) {\n label.setEnabled(false);\n this._add(this.__loadingIcon);\n } else {\n label.setEnabled(true);\n this._remove(this.__loadingIcon);\n }\n },\n\n _applyValue: function(value) {\n this.setMode(this.self().MODES.DISPLAY);\n this.getChildControl(\"input\").setValue(value);\n },\n\n _applySpecificFont: function(font, oldFont, name) {\n if (name === \"labelFont\") {\n this.getChildControl(\"text\").setFont(font);\n } else if (name === \"inputFont\") {\n this.getChildControl(\"input\").setFont(font);\n }\n },\n\n _applyEditable: function(isEditable) {\n const label = this.getChildControl(\"text\");\n if (isEditable) {\n label.addState(\"editable\");\n } else {\n label.removeState(\"editable\");\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.credits.CreditsSummary\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this.set({\n appearance: \"floating-menu\",\n padding: 8,\n maxWidth: this.self().WIDTH,\n minHeight: 150,\n zIndex: osparc.utils.Utils.FLOATING_Z_INDEX,\n });\n osparc.utils.Utils.setIdToWidget(this, \"creditsSummary\");\n\n this.__buildLayout();\n\n const root = qx.core.Init.getApplication().getRoot();\n root.add(this, {\n top: 0,\n right: 0\n });\n },\n\n statics: {\n BILLING_CENTER_BUTTON_SIZE: 26,\n WIDTH: 350,\n TIME_RANGES: [{\n key: 1,\n label: \"Today\"\n }, {\n key: 7,\n label: \"Last week\"\n }, {\n key: 30,\n label: \"Last month\"\n }]\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"top-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(10));\n this._add(control);\n break;\n case \"top-left-spacer\": {\n const buttonSize = this.self().BILLING_CENTER_BUTTON_SIZE;\n control = new qx.ui.core.Spacer(buttonSize, buttonSize);\n const topLayout = this.getChildControl(\"top-layout\");\n topLayout.add(control);\n break;\n }\n case \"credits-indicator\": {\n control = new osparc.desktop.credits.CreditsIndicator();\n control.getChildControl(\"credits-bar\").exclude();\n const store = osparc.store.Store.getInstance();\n store.bind(\"contextWallet\", control, \"wallet\");\n const topLayout = this.getChildControl(\"top-layout\");\n topLayout.add(control, {\n flex: 1\n });\n break;\n }\n case \"billing-center-button\": {\n const buttonSize = this.self().BILLING_CENTER_BUTTON_SIZE;\n control = new qx.ui.form.Button().set({\n appearance: \"form-button-outlined\",\n width: buttonSize,\n height: buttonSize,\n alignX: \"center\",\n alignY: \"middle\",\n center: true,\n icon: \"@FontAwesome5Solid/ellipsis-v/12\"\n });\n // make it circular\n control.getContentElement().setStyles({\n \"border-radius\": `${buttonSize / 2}px`\n });\n control.addListener(\"execute\", () => {\n osparc.desktop.credits.BillingCenterWindow.openWindow();\n this.exclude();\n });\n osparc.utils.Utils.setIdToWidget(control, \"billingCenterButton\");\n const topLayout = this.getChildControl(\"top-layout\");\n topLayout.add(control);\n break;\n }\n case \"time-range-sb\": {\n control = new qx.ui.form.SelectBox().set({\n allowGrowX: false,\n alignX: \"center\",\n backgroundColor: \"transparent\"\n });\n this.self().TIME_RANGES.forEach(tr => {\n const trItem = new qx.ui.form.ListItem(tr.label, null, tr.key);\n control.add(trItem);\n });\n // default one week\n const found = control.getSelectables().find(trItem => trItem.getModel() === 7);\n if (found) {\n control.setSelection([found]);\n }\n this._add(control);\n break;\n }\n case \"services-consumption\":\n control = new osparc.desktop.credits.CreditsPerService();\n this._add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n setPosition: function(x, y) {\n this.setLayoutProperties({\n left: x - this.self().WIDTH,\n top: y\n });\n },\n\n __buildLayout: function() {\n this.getChildControl(\"top-left-spacer\");\n this.getChildControl(\"credits-indicator\");\n this.getChildControl(\"billing-center-button\");\n this.__buildConsumptionSummary();\n },\n\n __buildConsumptionSummary: function() {\n const timeRangeSB = this.getChildControl(\"time-range-sb\");\n const servicesConsumption = this.getChildControl(\"services-consumption\");\n\n const fetchData = () => {\n const selection = timeRangeSB.getSelection();\n if (selection.length) {\n servicesConsumption.setDaysRange(selection[0].getModel());\n }\n };\n\n fetchData();\n timeRangeSB.addListener(\"changeSelection\", () => fetchData(), this);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.notification.NotificationsContainer\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.Canvas());\n\n this.set({\n zIndex: osparc.utils.Utils.FLOATING_Z_INDEX,\n maxWidth: osparc.notification.NotificationUI.MAX_WIDTH,\n maxHeight: 250,\n backgroundColor: \"background-main\",\n decorator: \"rounded\",\n });\n let color = qx.theme.manager.Color.getInstance().resolve(\"text\");\n color = qx.util.ColorUtil.stringToRgb(color);\n color.push(0.3); // add transparency\n color = qx.util.ColorUtil.rgbToRgbString(color);\n osparc.utils.Utils.addBorder(this, 1, color);\n osparc.utils.Utils.setIdToWidget(this, \"notificationsContainer\");\n\n const root = qx.core.Init.getApplication().getRoot();\n root.add(this, {\n top: 0,\n right: 0\n });\n\n const notificationsContainer = this.__container = new qx.ui.container.Composite(new qx.ui.layout.VBox(1));\n const scrollContainer = new qx.ui.container.Scroll();\n scrollContainer.add(notificationsContainer);\n this._add(scrollContainer, {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n });\n\n const notifications = osparc.notification.Notifications.getInstance();\n notifications.getNotifications().addListener(\"change\", () => this.__updateContainer(), this);\n this.__updateContainer();\n },\n\n members: {\n __container: null,\n\n __updateContainer: function() {\n this.__container.removeAll();\n const notifications = osparc.notification.Notifications.getInstance().getNotifications();\n if (notifications.length) {\n notifications.forEach(notification => {\n const notificationUI = new osparc.notification.NotificationUI(notification);\n notificationUI.addListener(\"notificationTapped\", () => this.exclude());\n this.__container.add(notificationUI);\n });\n } else {\n const aboutLabel = new qx.ui.basic.Label().set({\n value: \"If something is shared with you, it will appear here\",\n font: \"text-14\",\n padding: osparc.notification.NotificationUI.PADDING,\n rich: true,\n wrap: true\n });\n this.__container.add(aboutLabel);\n }\n },\n\n setPosition: function(x, y) {\n this.setLayoutProperties({\n left: x - osparc.notification.NotificationUI.MAX_WIDTH,\n top: y\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.account.MyAccount\", {\n extend: osparc.ui.window.TabbedView,\n\n construct: function() {\n this.base(arguments);\n\n const miniProfile = osparc.desktop.account.MyAccount.createMiniProfileView().set({\n paddingRight: 10\n });\n this.addWidgetToTabs(miniProfile);\n\n this.__profilePage = this.__addProfilePage();\n\n // show Usage in My Account if wallets are not enabled. If they are enabled it will be in the BIlling Center\n if (!osparc.desktop.credits.Utils.areWalletsEnabled()) {\n if (osparc.data.Permissions.getInstance().canDo(\"usage.all.read\")) {\n this.__usagePage = this.__addUsagePage();\n }\n }\n\n this.__addGeneralSettings();\n this.__addConfirmationSettings();\n if (osparc.product.Utils.showPreferencesTokens()) {\n this.__addTokensPage();\n }\n if (osparc.data.Permissions.getInstance().canDo(\"user.tag\")) {\n this.__addTagsPage();\n }\n },\n\n statics: {\n createMiniProfileView: function(withSpacer = true) {\n const layout = new qx.ui.container.Composite(new qx.ui.layout.VBox(6)).set({\n alignX: \"center\",\n minWidth: 120,\n maxWidth: 150\n });\n\n const authData = osparc.auth.Data.getInstance();\n const username = authData.getUsername();\n const email = authData.getEmail();\n const avatarSize = 80;\n const img = new qx.ui.basic.Image().set({\n source: osparc.utils.Avatar.emailToThumbnail(email, username, avatarSize),\n maxWidth: avatarSize,\n maxHeight: avatarSize,\n scale: true,\n decorator: new qx.ui.decoration.Decorator().set({\n radius: avatarSize/2\n }),\n alignX: \"center\"\n });\n layout.add(img);\n\n const usernameLabel = new qx.ui.basic.Label().set({\n font: \"text-14\",\n alignX: \"center\"\n });\n authData.bind(\"username\", usernameLabel, \"value\");\n layout.add(usernameLabel);\n\n const fullNameLabel = new qx.ui.basic.Label().set({\n font: \"text-13\",\n alignX: \"center\"\n });\n layout.add(fullNameLabel);\n authData.bind(\"firstName\", fullNameLabel, \"value\", {\n converter: () => authData.getFullName()\n });\n authData.bind(\"lastName\", fullNameLabel, \"value\", {\n converter: () => authData.getFullName()\n });\n\n if (authData.getRole() !== \"user\") {\n const role = authData.getFriendlyRole();\n const roleLabel = new qx.ui.basic.Label(role).set({\n font: \"text-13\",\n alignX: \"center\"\n });\n layout.add(roleLabel);\n }\n\n if (withSpacer) {\n layout.add(new qx.ui.core.Spacer(15, 15));\n }\n\n return layout;\n }\n },\n\n members: {\n __profilePage: null,\n __usagePage: null,\n __tagsPage: null,\n\n __addProfilePage: function() {\n const title = this.tr(\"Profile\");\n const iconSrc = \"@FontAwesome5Solid/user/24\";\n const profile = new osparc.desktop.account.ProfilePage();\n const page = this.addTab(title, iconSrc, profile);\n return page;\n },\n\n __addUsagePage: function() {\n const title = this.tr(\"Usage\");\n const iconSrc = \"@FontAwesome5Solid/list/22\";\n const usageOverview = new osparc.desktop.credits.Usage();\n const page = this.addTab(title, iconSrc, usageOverview);\n return page;\n },\n __addGeneralSettings: function() {\n const title = this.tr(\"Settings\");\n const iconSrc = \"@FontAwesome5Solid/cogs/22\";\n const generalPage = new osparc.desktop.preferences.pages.GeneralPage();\n this.addTab(title, iconSrc, generalPage);\n },\n\n __addConfirmationSettings: function() {\n const title = this.tr(\"Confirmations\");\n const iconSrc = \"@FontAwesome5Solid/question-circle/22\";\n const confirmPage = new osparc.desktop.preferences.pages.ConfirmationsPage();\n this.addTab(title, iconSrc, confirmPage);\n },\n\n __addTokensPage: function() {\n const title = this.tr(\"API Keys/Tokens\");\n const iconSrc = \"@FontAwesome5Solid/exchange-alt/22\";\n const tokensPage = new osparc.desktop.preferences.pages.TokensPage();\n this.addTab(title, iconSrc, tokensPage);\n },\n\n __addTagsPage: function() {\n const title = this.tr(\"Create/Edit Tags\");\n const iconSrc = \"@FontAwesome5Solid/tags/22\";\n const tagsPage = new osparc.desktop.preferences.pages.TagsPage();\n const page = this.__tagsPage = this.addTab(title, iconSrc, tagsPage);\n osparc.utils.Utils.setIdToWidget(page.getChildControl(\"button\"), \"preferencesTagsTabBtn\");\n },\n\n openTags: function() {\n if (this.__tagsPage) {\n this._openPage(this.__tagsPage);\n }\n },\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Fabian Jakobs (fjakobs)\n\n************************************************************************ */\n\n/**\n * Layouter used by the qooxdoo menu's to render their buttons\n *\n * @internal\n */\nqx.Class.define(\"qx.ui.menu.Layout\",\n{\n extend : qx.ui.layout.VBox,\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n /** Spacing between each cell on the menu buttons */\n columnSpacing :\n {\n check : \"Integer\",\n init : 0,\n apply : \"_applyLayoutChange\"\n },\n\n /**\n * Whether a column and which column should automatically span\n * when the following cell is empty. Spanning may be disabled\n * through setting this property to null
.\n */\n spanColumn :\n {\n check : \"Integer\",\n init : 1,\n nullable : true,\n apply : \"_applyLayoutChange\"\n },\n\n /** Default icon column width if no icons are rendered */\n iconColumnWidth :\n {\n check : \"Integer\",\n init : 0,\n themeable : true,\n apply : \"_applyLayoutChange\"\n },\n\n /** Default arrow column width if no sub menus are rendered */\n arrowColumnWidth :\n {\n check : \"Integer\",\n init : 0,\n themeable : true,\n apply : \"_applyLayoutChange\"\n }\n },\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n __columnSizes : null,\n\n /*\n ---------------------------------------------------------------------------\n LAYOUT INTERFACE\n ---------------------------------------------------------------------------\n */\n\n // overridden\n _computeSizeHint : function()\n {\n var children = this._getLayoutChildren();\n var child, sizes, spacing;\n\n var spanColumn = this.getSpanColumn();\n var columnSizes = this.__columnSizes = [0, 0, 0, 0];\n var columnSpacing = this.getColumnSpacing();\n var spanColumnWidth = 0;\n var maxInset = 0;\n\n // Compute column sizes and insets\n for (var i=0, l=children.length; i window.open(window.location.href, \"_blank\"));\n this.add(control);\n break;\n case \"user-center\":\n control = new qx.ui.menu.Button(this.tr(\"My Account\"));\n osparc.utils.Utils.setIdToWidget(control, \"userMenuMyAccountBtn\");\n control.addListener(\"execute\", () => osparc.desktop.account.MyAccountWindow.openWindow(), this);\n this.add(control);\n break;\n case \"admin-center\":\n control = new qx.ui.menu.Button(this.tr(\"Admin Center\"));\n control.addListener(\"execute\", () => osparc.admin.AdminCenterWindow.openWindow(), this);\n this.add(control);\n break;\n case \"po-center\":\n control = new qx.ui.menu.Button(this.tr(\"PO Center\"));\n control.addListener(\"execute\", () => osparc.po.POCenterWindow.openWindow(), this);\n this.add(control);\n break;\n case \"tester-center\":\n control = new qx.ui.menu.Button(this.tr(\"Tester Center\"));\n control.addListener(\"execute\", () => osparc.tester.TesterCenterWindow.openWindow(), this);\n this.add(control);\n break;\n case \"billing-center\":\n control = new qx.ui.menu.Button(this.tr(\"Billing Center\"));\n osparc.utils.Utils.setIdToWidget(control, \"userMenuBillingCenterBtn\");\n control.addListener(\"execute\", () => {\n const walletsEnabled = osparc.desktop.credits.Utils.areWalletsEnabled();\n if (walletsEnabled) {\n osparc.desktop.credits.BillingCenterWindow.openWindow();\n }\n }, this);\n this.add(control);\n break;\n case \"organizations\":\n control = new qx.ui.menu.Button(this.tr(\"Organizations\")).set({\n visibility: osparc.data.Permissions.getInstance().canDo(\"user.organizations.create\") ? \"visible\" :\"excluded\"\n });\n osparc.utils.Utils.setIdToWidget(control, \"userMenuOrganizationsBtn\");\n control.addListener(\"execute\", () => osparc.desktop.organizations.OrganizationsWindow.openWindow(), this);\n this.add(control);\n break;\n case \"market\":\n control = new qx.ui.menu.Button(this.tr(\"The Shop\"));\n control.addListener(\"execute\", () => osparc.vipMarket.MarketWindow.openWindow());\n this.add(control);\n break;\n case \"about\":\n control = new qx.ui.menu.Button(this.tr(\"About oSPARC\"));\n osparc.utils.Utils.setIdToWidget(control, \"userMenuAboutBtn\");\n control.addListener(\"execute\", () => osparc.About.getInstance().open());\n this.add(control);\n break;\n case \"about-product\": {\n control = new qx.ui.menu.Button(this.tr(\"About Product\"));\n osparc.utils.Utils.setIdToWidget(control, \"userMenuAboutProductBtn\");\n const displayName = osparc.store.StaticInfo.getInstance().getDisplayName();\n control.getChildControl(\"label\").setRich(true);\n control.setLabel(this.tr(\"About \") + displayName);\n control.addListener(\"execute\", () => osparc.product.AboutProduct.getInstance().open());\n this.add(control);\n break;\n }\n case \"license\": {\n control = new qx.ui.menu.Button(this.tr(\"License\"));\n osparc.utils.Utils.setIdToWidget(control, \"userMenuLicenseBtn\");\n const licenseURL = osparc.store.Support.getLicenseURL();\n control.addListener(\"execute\", () => window.open(licenseURL));\n this.add(control);\n break;\n }\n case \"tip-lite-button\":\n control = new qx.ui.menu.Button(this.tr(\"Access Full TIP\"));\n osparc.utils.Utils.setIdToWidget(control, \"userMenuAccessTIPBtn\");\n control.addListener(\"execute\", () => osparc.product.TIPTeaser.getInstance().open());\n this.add(control);\n break;\n case \"log-out\": {\n const authData = osparc.auth.Data.getInstance();\n control = new qx.ui.menu.Button(authData.isGuest() ? this.tr(\"Exit\") : this.tr(\"Log out\"));\n control.addListener(\"execute\", () => {\n this.exclude();\n qx.core.Init.getApplication().logout();\n });\n osparc.utils.Utils.setIdToWidget(control, \"userMenuLogoutBtn\");\n this.add(control);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n populateMenu: function() {\n this.removeAll();\n\n this.getChildControl(\"mini-profile-view\");\n\n if (osparc.auth.Data.getInstance().isGuest()) {\n this.getChildControl(\"log-in\");\n } else {\n this.getChildControl(\"user-center\");\n if (osparc.data.Permissions.getInstance().isAdmin()) {\n this.getChildControl(\"admin-center\");\n }\n if (osparc.data.Permissions.getInstance().isProductOwner()) {\n this.getChildControl(\"po-center\");\n }\n if (osparc.data.Permissions.getInstance().isTester()) {\n this.getChildControl(\"tester-center\");\n }\n if (osparc.desktop.credits.Utils.areWalletsEnabled()) {\n this.getChildControl(\"billing-center\");\n }\n this.getChildControl(\"organizations\");\n }\n this.addSeparator();\n\n this.getChildControl(\"theme-switcher\");\n this.addSeparator();\n\n this.__addAnnouncements();\n\n if (osparc.product.Utils.showS4LStore()) {\n this.getChildControl(\"market\");\n }\n\n this.getChildControl(\"about\");\n if (osparc.product.Utils.showAboutProduct()) {\n this.getChildControl(\"about-product\");\n }\n this.getChildControl(\"license\");\n if (osparc.product.Utils.isProduct(\"tiplite\")) {\n this.getChildControl(\"tip-lite-button\");\n }\n this.addSeparator();\n\n this.getChildControl(\"log-out\");\n },\n\n __addAnnouncements: function() {\n const announcementUIFactory = osparc.announcement.AnnouncementUIFactory.getInstance();\n if (announcementUIFactory.hasUserMenuAnnouncement()) {\n announcementUIFactory.createUserMenuAnnouncements().forEach(announcement => this.add(announcement));\n }\n },\n\n populateMenuCompact: function() {\n this.removeAll();\n const authData = osparc.auth.Data.getInstance();\n if (authData.isGuest()) {\n this.getChildControl(\"log-in\");\n } else {\n this.getChildControl(\"user-center\");\n if (osparc.data.Permissions.getInstance().isAdmin()) {\n this.getChildControl(\"admin-center\");\n }\n if (osparc.data.Permissions.getInstance().isProductOwner()) {\n this.getChildControl(\"po-center\");\n }\n if (osparc.data.Permissions.getInstance().isTester()) {\n this.getChildControl(\"tester-center\");\n }\n if (osparc.desktop.credits.Utils.areWalletsEnabled()) {\n this.getChildControl(\"billing-center\");\n }\n this.getChildControl(\"organizations\");\n }\n this.addSeparator();\n\n // quick starts and manuals\n osparc.store.Support.addQuickStartToMenu(this);\n osparc.store.Support.addGuidedToursToMenu(this);\n osparc.store.Support.addManualButtonsToMenu(this);\n this.addSeparator();\n\n // feedbacks\n osparc.store.Support.addSupportButtonsToMenu(this);\n osparc.store.Support.addReleaseNotesToMenu(this);\n this.addSeparator();\n\n this.getChildControl(\"theme-switcher\");\n this.addSeparator();\n\n this.__addAnnouncements();\n\n if (osparc.product.Utils.showS4LStore()) {\n this.getChildControl(\"market\");\n }\n\n this.getChildControl(\"about\");\n if (osparc.product.Utils.showAboutProduct()) {\n this.getChildControl(\"about-product\");\n }\n this.getChildControl(\"license\");\n if (osparc.product.Utils.isProduct(\"tiplite\")) {\n this.getChildControl(\"tip-lite-button\");\n }\n this.addSeparator();\n this.getChildControl(\"log-out\");\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2009 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Jonathan Weiß (jonathan_rass)\n\n************************************************************************ */\n\n/**\n * A TabButton is the tapable part sitting on the {@link qx.ui.tabview.Page}.\n * By tapping on the TabButton the user can set a Page active.\n *\n * @childControl label {qx.ui.basic.Label} label of the tab button\n * @childControl icon {qx.ui.basic.Image} icon of the tab button\n * @childControl close-button {qx.ui.form.Button} close button of the tab button\n */\nqx.Class.define(\"qx.ui.tabview.TabButton\",\n{\n extend : qx.ui.form.RadioButton,\n implement : qx.ui.form.IRadioItem,\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n construct : function()\n {\n this.base(arguments);\n\n var layout = new qx.ui.layout.Grid(2, 0);\n layout.setRowAlign(0, \"left\", \"middle\");\n layout.setColumnAlign(0, \"right\", \"middle\");\n\n this._getLayout().dispose();\n this._setLayout(layout);\n\n this.initShowCloseButton();\n },\n\n\n /*\n *****************************************************************************\n EVENTS\n *****************************************************************************\n */\n\n events :\n {\n /**\n * Fired by {@link qx.ui.tabview.Page} if the close button is tapped.\n *\n * Event data: The tab button.\n */\n \"close\" : \"qx.event.type.Data\"\n },\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n\n /** Indicates if the close button of a TabButton should be shown. */\n showCloseButton :\n {\n check : \"Boolean\",\n init : false,\n apply : \"_applyShowCloseButton\"\n }\n\n },\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n\n members :\n {\n\n // overridden\n /**\n * @lint ignoreReferenceField(_forwardStates)\n */\n _forwardStates :\n {\n focused : true,\n checked : true\n },\n\n /*\n ---------------------------------------------------------------------------\n WIDGET API\n ---------------------------------------------------------------------------\n */\n\n _applyIconPosition : function(value, old)\n {\n\n var children = {\n icon : this.getChildControl(\"icon\"),\n label : this.getChildControl(\"label\"),\n closeButton : this.getShowCloseButton() ? this.getChildControl(\"close-button\") : null\n };\n\n // Remove all children before adding them again\n for (var child in children)\n {\n if (children[child]) {\n this._remove(children[child]);\n }\n }\n\n switch (value)\n {\n case \"top\":\n this._add(children.label, {row: 3, column: 2});\n this._add(children.icon, {row: 1, column: 2});\n if (children.closeButton) {\n this._add(children.closeButton, {row: 0, column: 4});\n }\n break;\n\n case \"bottom\":\n this._add(children.label, {row: 1, column: 2});\n this._add(children.icon, {row: 3, column: 2});\n if (children.closeButton) {\n this._add(children.closeButton, {row: 0, column: 4});\n }\n break;\n\n case \"left\":\n this._add(children.label, {row: 0, column: 2});\n this._add(children.icon, {row: 0, column: 0});\n if (children.closeButton) {\n this._add(children.closeButton, {row: 0, column: 4});\n }\n break;\n\n case \"right\":\n this._add(children.label, {row: 0, column: 0});\n this._add(children.icon, {row: 0, column: 2});\n if (children.closeButton) {\n this._add(children.closeButton, {row: 0, column: 4});\n }\n break;\n }\n\n },\n\n\n // overridden\n _createChildControlImpl : function(id, hash)\n {\n var control;\n\n switch(id) {\n case \"label\":\n var control = new qx.ui.basic.Label(this.getLabel());\n control.setAnonymous(true);\n this._add(control, {row: 0, column: 2});\n this._getLayout().setColumnFlex(2, 1);\n break;\n\n case \"icon\":\n control = new qx.ui.basic.Image(this.getIcon());\n control.setAnonymous(true);\n this._add(control, {row: 0, column: 0});\n break;\n\n case \"close-button\":\n control = new qx.ui.form.Button();\n control.setFocusable(false);\n control.setKeepActive(true);\n control.addListener(\"tap\", this._onCloseButtonTap, this);\n this._add(control, {row: 0, column: 4});\n\n if (!this.getShowCloseButton()) {\n control.exclude();\n }\n\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n /*\n ---------------------------------------------------------------------------\n EVENT LISTENERS\n ---------------------------------------------------------------------------\n */\n\n\n /**\n * Fires a \"close\" event when the close button is tapped.\n */\n _onCloseButtonTap : function() {\n this.fireDataEvent(\"close\", this);\n },\n\n\n /*\n ---------------------------------------------------------------------------\n PROPERTY APPLY\n ---------------------------------------------------------------------------\n */\n\n // property apply\n _applyShowCloseButton : function(value, old)\n {\n if (value) {\n this._showChildControl(\"close-button\");\n } else {\n this._excludeChildControl(\"close-button\");\n }\n },\n\n // property apply\n _applyCenter : function(value)\n {\n var layout = this._getLayout();\n\n if (value) {\n layout.setColumnAlign(2, \"center\", \"middle\");\n } else {\n layout.setColumnAlign(2, \"left\", \"middle\");\n }\n\n }\n\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.wallets.WalletsList\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n const listsLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(10));\n osparc.utils.Utils.setIdToWidget(listsLayout, \"walletsList\");\n this._add(listsLayout);\n\n const headerPersonal = this.__createHeader(this.tr(\"Personal\"), true);\n listsLayout.add(headerPersonal);\n this.__noPersonalWalletsLabel = new qx.ui.basic.Label().set({\n value: this.tr(\"No personal Credit Account found\"),\n font: \"text-13\",\n marginLeft: 10\n });\n listsLayout.add(this.__noPersonalWalletsLabel);\n const listPersonal = this.__createWalletsList(\"personalWalletsList\");\n listsLayout.add(listPersonal);\n this.__personalWalletsModel = this.__createModelFromList(listPersonal);\n\n const headerShared = this.__createHeader(this.tr(\"Shared with me\"), false);\n listsLayout.add(headerShared);\n this.__noSharedWalletsLabel = new qx.ui.basic.Label().set({\n value: this.tr(\"No shared Credit Accounts found\"),\n font: \"text-13\",\n marginLeft: 10\n });\n listsLayout.add(this.__noSharedWalletsLabel);\n const listShared = this.__createWalletsList(\"sharedWalletsList\");\n listsLayout.add(listShared);\n this.__sharedWalletsModel = this.__createModelFromList(listShared);\n\n this.loadWallets();\n },\n\n events: {\n \"walletSelected\": \"qx.event.type.Data\",\n \"buyCredits\": \"qx.event.type.Data\"\n },\n\n properties: {\n walletsLoaded: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n event: \"changeWalletsLoaded\"\n }\n },\n\n members: {\n __noPersonalWalletsLabel: null,\n __noSharedWalletsLabel: null,\n __personalWalletsModel: null,\n __sharedWalletsModel: null,\n\n getWalletModel: function(walletId) {\n return this.__personalWalletsModel.concat(this.__sharedWalletsModel).toArray().find(\n walletModel => walletModel.getWalletId() === parseInt(walletId)\n );\n },\n\n __getWalletsFilter: function() {\n const filter = new osparc.filter.TextFilter(\"text\", \"walletsList\").set({\n allowStretchX: true,\n margin: [0, 10, 5, 10]\n });\n return filter;\n },\n\n __createWalletsList: function(widgetId) {\n const walletsUIList = new qx.ui.form.List().set({\n decorator: \"no-border\",\n spacing: 3,\n backgroundColor: \"transparent\",\n height: null,\n focusable: false\n });\n osparc.utils.Utils.setIdToWidget(walletsUIList, widgetId);\n return walletsUIList;\n },\n\n __createModelFromList: function(walletsUIList) {\n const walletsModel = new qx.data.Array();\n const walletsCtrl = new qx.data.controller.List(walletsModel, walletsUIList, \"name\");\n walletsCtrl.setDelegate({\n createItem: () => new osparc.desktop.wallets.WalletListItem(),\n bindItem: (ctrl, item, id) => {\n ctrl.bindProperty(\"walletId\", \"key\", null, item, id);\n ctrl.bindProperty(\"walletId\", \"model\", null, item, id);\n ctrl.bindProperty(\"accessRights\", \"accessRights\", null, item, id);\n ctrl.bindProperty(\"name\", \"title\", null, item, id);\n ctrl.bindProperty(\"description\", \"subtitle\", null, item, id);\n ctrl.bindProperty(\"creditsAvailable\", \"creditsAvailable\", null, item, id);\n ctrl.bindProperty(\"status\", \"status\", null, item, id);\n ctrl.bindProperty(\"preferredWallet\", \"preferredWallet\", null, item, id);\n ctrl.bindProperty(\"autoRecharge\", \"autoRecharge\", null, item, id);\n },\n configureItem: item => {\n item.subscribeToFilterGroup(\"walletsList\");\n\n item.addListener(\"openEditWallet\", e => this.__openEditWallet(e.getData()));\n item.addListener(\"openShareWallet\", e => this.__walletSelected(e.getData()));\n item.addListener(\"buyCredits\", e => this.fireDataEvent(\"buyCredits\", e.getData()));\n item.addListener(\"toggleFavourite\", e => {\n const {\n walletId\n } = e.getData();\n const preferencesSettings = osparc.Preferences.getInstance();\n preferencesSettings.requestChangePreferredWalletId(parseInt(walletId));\n });\n }\n });\n\n return walletsModel;\n },\n\n __walletSelected: function(wallet) {\n this.fireDataEvent(\"walletSelected\", wallet);\n },\n\n loadWallets: function() {\n this.__personalWalletsModel.removeAll();\n this.__sharedWalletsModel.removeAll();\n\n const store = osparc.store.Store.getInstance();\n const usersPrimaryGroup = osparc.auth.Data.getInstance().getGroupId()\n store.getWallets().forEach(wallet => {\n if (wallet.getOwner() === usersPrimaryGroup) {\n this.__personalWalletsModel.append(wallet)\n } else {\n this.__sharedWalletsModel.append(wallet)\n }\n });\n this.setWalletsLoaded(true);\n\n this.__noPersonalWalletsLabel.set({\n visibility: this.__personalWalletsModel.getLength() ? \"excluded\" : \"visible\"\n });\n this.__noSharedWalletsLabel.set({\n visibility: this.__sharedWalletsModel.getLength() ? \"excluded\" : \"visible\"\n });\n },\n\n __openEditWallet: function(walletId) {\n const wallet = this.getWalletModel(walletId);\n if (wallet === null) {\n return;\n }\n\n const walletEditor = new osparc.desktop.wallets.WalletEditor();\n wallet.bind(\"walletId\", walletEditor, \"walletId\");\n wallet.bind(\"name\", walletEditor, \"name\");\n wallet.bind(\"description\", walletEditor, \"description\");\n const title = this.tr(\"Credit Account Details Editor\");\n const win = osparc.ui.window.Window.popUpInWindow(walletEditor, title, 400, 250);\n walletEditor.addListener(\"updateWallet\", () => this.__updateWallet(win, walletEditor));\n walletEditor.addListener(\"cancel\", () => win.close());\n },\n\n __updateWallet: function(win, walletEditor) {\n walletEditor.setIsFetching(true);\n\n const store = osparc.store.Store.getInstance();\n const walletId = walletEditor.getWalletId();\n const found = store.getWallets().find(wallet => wallet.getWalletId() === walletId);\n if (found) {\n const name = walletEditor.getName();\n const description = walletEditor.getDescription();\n const params = {\n url: {\n \"walletId\": walletId\n },\n data: {\n \"name\": name,\n \"description\": description || null,\n \"status\": found.getStatus()\n }\n };\n osparc.data.Resources.fetch(\"wallets\", \"put\", params)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(name + this.tr(\" successfully edited\"));\n const wallet = osparc.desktop.credits.Utils.getWallet(walletId);\n wallet.set(params.data);\n })\n .catch(err => {\n console.error(err);\n const msg = err.message || this.tr(\"Something went wrong updating the Credit Account\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n })\n .finally(() => {\n walletEditor.setIsFetching(false);\n win.close();\n });\n }\n\n win.close();\n },\n\n __createHeader: function(label, showCurrently) {\n const header = new qx.ui.container.Composite(new qx.ui.layout.HBox());\n const userWallets = new qx.ui.basic.Label().set({\n value: label,\n alignX: \"left\",\n rich: true,\n font: \"text-14\"\n });\n header.add(userWallets);\n header.add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n if (showCurrently) {\n const selectColumn = new qx.ui.basic.Label(this.tr(\"Currently in use\")).set({\n marginRight: 18\n });\n header.add(selectColumn)\n }\n return header;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.wallets.WalletDetails\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(5));\n\n this._add(this.__getTitleLayout());\n this._add(this.__getTabs(), {\n flex: 1\n });\n },\n\n events: {\n \"backToWallets\": \"qx.event.type.Event\",\n \"buyCredits\": \"qx.event.type.Data\"\n },\n\n members: {\n __walletModel: null,\n __titleLayout: null,\n __walletListItem: null,\n __membersList: null,\n\n setWallet: function(walletModel) {\n if (walletModel === null) {\n return;\n }\n this.__walletModel = walletModel;\n\n const walletListItem = this.__addWalletListItem();\n walletModel.bind(\"walletId\", walletListItem, \"key\");\n walletModel.bind(\"walletId\", walletListItem, \"model\");\n walletModel.bind(\"accessRights\", walletListItem, \"accessRights\");\n walletModel.bind(\"name\", walletListItem, \"title\");\n walletModel.bind(\"description\", walletListItem, \"subtitle\");\n walletModel.bind(\"creditsAvailable\", walletListItem, \"creditsAvailable\");\n walletModel.bind(\"status\", walletListItem, \"status\");\n walletModel.bind(\"preferredWallet\", walletListItem, \"preferredWallet\");\n walletModel.bind(\"autoRecharge\", walletListItem, \"autoRecharge\");\n\n walletListItem.addListener(\"buyCredits\", e => this.fireDataEvent(\"buyCredits\", e.getData()));\n\n this.__membersList.setWallet(walletModel);\n },\n\n __getTitleLayout: function() {\n const titleLayout = this.__titleLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n\n const prevBtn = new qx.ui.form.Button().set({\n toolTipText: this.tr(\"Back to Credit Accounts list\"),\n icon: \"@FontAwesome5Solid/arrow-left/20\",\n backgroundColor: \"transparent\"\n });\n prevBtn.addListener(\"execute\", () => this.fireEvent(\"backToWallets\"));\n titleLayout.add(prevBtn);\n\n this.__addWalletListItem();\n\n return titleLayout;\n },\n\n __addWalletListItem: function() {\n if (this.__walletListItem) {\n this.__titleLayout.remove(this.__walletListItem);\n }\n const walletListItem = this.__walletListItem = new osparc.desktop.wallets.WalletListItem();\n walletListItem.getChildControl(\"options\").exclude();\n walletListItem.addListener(\"openEditWallet\", () => this.__openEditWallet());\n this.__titleLayout.add(walletListItem, {\n flex: 1\n });\n return walletListItem;\n },\n\n __openEditWallet: function() {\n const wallet = this.__walletModel;\n\n const walletEditor = new osparc.desktop.wallets.WalletEditor();\n wallet.bind(\"walletId\", walletEditor, \"walletId\");\n wallet.bind(\"name\", walletEditor, \"name\");\n wallet.bind(\"description\", walletEditor, \"description\");\n const title = this.tr(\"Credit Account Details Editor\");\n const win = osparc.ui.window.Window.popUpInWindow(walletEditor, title, 400, 250);\n walletEditor.addListener(\"updateWallet\", () => this.__updateWallet(win, walletEditor.getChildControl(\"save\"), walletEditor));\n walletEditor.addListener(\"cancel\", () => win.close());\n },\n\n __updateWallet: function(win, button, walletEditor) {\n const walletId = walletEditor.getWalletId();\n const name = walletEditor.getName();\n const description = walletEditor.getDescription();\n const params = {\n url: {\n \"walletId\": walletId\n },\n data: {\n \"name\": name,\n \"description\": description,\n \"status\": this.__walletModel.getStatus()\n }\n };\n osparc.data.Resources.fetch(\"wallets\", \"put\", params)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(name + this.tr(\" successfully edited\"));\n const wallet = osparc.desktop.credits.Utils.getWallet(walletId);\n wallet.set(params.data);\n })\n .catch(err => {\n console.error(err);\n const msg = err.message || (this.tr(\"Something went wrong editing \") + name);\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n })\n .finally(() => {\n button.setFetching(false);\n win.close();\n });\n },\n\n __createTabPage: function(label, icon) {\n const tabPage = new qx.ui.tabview.Page().set({\n layout: new qx.ui.layout.VBox()\n });\n if (label) {\n tabPage.setLabel(label);\n }\n if (icon) {\n tabPage.setIcon(icon);\n }\n tabPage.getChildControl(\"button\").set({\n font: \"text-13\"\n });\n return tabPage;\n },\n\n __getTabs: function() {\n const tabView = new qx.ui.tabview.TabView().set({\n contentPadding: 10,\n backgroundColor: \"transparent\"\n });\n\n const membersListPage = this.__createTabPage(this.tr(\"Members\"), \"@FontAwesome5Solid/users/14\");\n const membersList = this.__membersList = new osparc.desktop.wallets.MembersList();\n membersListPage.add(membersList, {\n flex: 1\n });\n tabView.add(membersListPage);\n\n return tabView;\n },\n\n excludeShareButton: function() {\n this.__walletListItem.excludeShareButton()\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.credits.PaymentGatewayWindow\", {\n type: \"static\",\n\n statics: {\n popUp: function(url, title, options) {\n const iframe = new qx.ui.embed.Iframe(url).set({\n decorator: \"no-border-2\"\n })\n return osparc.ui.window.Window.popUpInWindow(iframe, title, options.width, options.height).set({\n clickAwayClose: false\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.paymentMethods.PaymentMethodListItem\", {\n extend: osparc.ui.list.ListItem,\n\n construct: function() {\n this.base(arguments);\n\n const layout = this._getLayout();\n layout.setSpacingX(15);\n layout.setColumnFlex(this.self().GRID_POS.ICON, 0);\n layout.setColumnFlex(this.self().GRID_POS.NAME, 0);\n layout.setColumnFlex(this.self().GRID_POS.TYPE, 0);\n layout.setColumnFlex(this.self().GRID_POS.MASKED_NUMBER, 0);\n layout.setColumnFlex(this.self().GRID_POS.EXPIRATION_DATE, 1);\n // buttons to the right\n layout.setColumnFlex(this.self().GRID_POS.INFO_BUTTON, 0);\n layout.setColumnFlex(this.self().GRID_POS.DELETE_BUTTON, 0);\n\n this.getChildControl(\"thumbnail\").setSource(\"@FontAwesome5Solid/credit-card/18\");\n\n const cardHolderName = this.getChildControl(\"card-holder-name\");\n this.bind(\"cardHolderName\", cardHolderName, \"value\");\n\n const cardType = this.getChildControl(\"card-type\");\n this.bind(\"cardType\", cardType, \"value\");\n\n const cardNumberMasked = this.getChildControl(\"card-number-masked\");\n this.bind(\"cardNumberMasked\", cardNumberMasked, \"value\");\n\n const expirationDate = this.getChildControl(\"expiration-date\");\n this.bind(\"expirationMonth\", expirationDate, \"value\", {\n converter: month => month + \"/\" + this.getExpirationYear()\n });\n this.bind(\"expirationYear\", expirationDate, \"value\", {\n converter: year => this.getExpirationMonth() + \"/\" + year\n });\n\n this.getChildControl(\"details-button\");\n this.getChildControl(\"delete-button\");\n },\n\n properties: {\n walletId: {\n check: \"Number\",\n init: null,\n nullable: false,\n event: \"changeWalletId\"\n },\n\n cardHolderName: {\n check: \"String\",\n init: \"null\",\n nullable: false,\n event: \"changeCardHolderName\"\n },\n\n cardType: {\n check: \"String\",\n init: \"null\",\n nullable: false,\n event: \"changeCardType\"\n },\n\n cardNumberMasked: {\n check: \"String\",\n init: \"null\",\n nullable: false,\n event: \"changeCardNumberMasked\"\n },\n\n expirationMonth: {\n check: \"Number\",\n init: null,\n nullable: false,\n event: \"changeExpirationMonth\"\n },\n\n expirationYear: {\n check: \"Number\",\n init: null,\n nullable: false,\n event: \"changeExpirationYear\"\n }\n },\n\n events: {\n \"openPaymentMethodDetails\": \"qx.event.type.Data\",\n \"deletePaymentMethod\": \"qx.event.type.Data\"\n },\n\n statics: {\n GRID_POS: {\n ICON: 0,\n NAME: 1,\n TYPE: 2,\n MASKED_NUMBER: 3,\n EXPIRATION_DATE: 4,\n INFO_BUTTON: 5,\n DELETE_BUTTON: 6\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"card-holder-name\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\"\n });\n this._add(control, {\n row: 0,\n column: this.self().GRID_POS.NAME\n });\n break;\n case \"card-type\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\"\n });\n this._add(control, {\n row: 0,\n column: this.self().GRID_POS.TYPE\n });\n break;\n case \"card-number-masked\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\"\n });\n this._add(control, {\n row: 0,\n column: this.self().GRID_POS.MASKED_NUMBER\n });\n break;\n case \"expiration-date\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\"\n });\n this._add(control, {\n row: 0,\n column: this.self().GRID_POS.EXPIRATION_DATE\n });\n break;\n case \"details-button\":\n control = new qx.ui.form.Button().set({\n icon: \"@FontAwesome5Solid/info/14\"\n });\n control.addListener(\"execute\", () => this.fireDataEvent(\"openPaymentMethodDetails\", this.getKey()));\n this._add(control, {\n row: 0,\n column: this.self().GRID_POS.INFO_BUTTON\n });\n break;\n case \"delete-button\":\n control = new qx.ui.form.Button().set({\n icon: \"@FontAwesome5Solid/trash/14\"\n });\n control.addListener(\"execute\", () => this.__deletePressed());\n this._add(control, {\n row: 0,\n column: this.self().GRID_POS.DELETE_BUTTON\n });\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n __deletePressed: function() {\n const msg = this.tr(\"Are you sure you want to delete the Payment Method?\");\n const win = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Delete Payment Method\"),\n confirmText: this.tr(\"Delete\"),\n confirmAction: \"delete\"\n });\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n this.fireDataEvent(\"deletePaymentMethod\", this.getKey());\n }\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.paymentMethods.PaymentMethodDetails\", {\n extend: qx.ui.core.Widget,\n\n construct: function(paymentMethodData) {\n this.base(arguments);\n\n const grid = new qx.ui.layout.Grid(20, 10);\n grid.setColumnAlign(0, \"right\", \"middle\"); // resource limit value\n this._setLayout(grid);\n\n this.__buildLayout(paymentMethodData);\n },\n\n statics: {\n popUpInWindow: function(paymentMethodData) {\n const title = qx.locale.Manager.tr(\"Payment Method details\");\n const paymentMethodDetails = new osparc.desktop.paymentMethods.PaymentMethodDetails(paymentMethodData);\n paymentMethodDetails.set({\n padding: 10\n });\n const viewWidth = 300;\n const viewHeight = 300;\n const win = osparc.ui.window.Window.popUpInWindow(paymentMethodDetails, title, viewWidth, viewHeight);\n win.center();\n win.open();\n return win;\n }\n },\n\n members: {\n __buildLayout: function(paymentMethodData) {\n [\n [this.tr(\"Holder name\"), paymentMethodData[\"cardHolderName\"]],\n [this.tr(\"Type\"), paymentMethodData[\"cardType\"]],\n [this.tr(\"Number\"), paymentMethodData[\"cardNumberMasked\"]],\n [this.tr(\"Expiration date\"), paymentMethodData[\"expirationMonth\"] + \"/\" + paymentMethodData[\"expirationYear\"]]\n ].forEach((pair, idx) => {\n this._add(new qx.ui.basic.Label(pair[0]).set({\n font: \"text-14\"\n }), {\n row: idx,\n column: 0\n });\n this._add(new qx.ui.basic.Label(pair[1]).set({\n font: \"text-14\"\n }), {\n row: idx,\n column: 1\n });\n });\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2006 STZ-IDA, Germany, http://www.stz-ida.de\n 2007 Visionet GmbH, http://www.visionet.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Til Schneider (til132) STZ-IDA\n * Dietrich Streifert (level420) Visionet\n\n************************************************************************ */\n\n/**\n * The default data row renderer.\n */\nqx.Class.define(\"qx.ui.table.rowrenderer.Default\",\n{\n extend : qx.core.Object,\n implement : qx.ui.table.IRowRenderer,\n\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n construct : function()\n {\n this.base(arguments);\n\n this.initThemeValues();\n\n // dynamic theme switch\n if (qx.core.Environment.get(\"qx.dyntheme\")) {\n qx.theme.manager.Meta.getInstance().addListener(\n \"changeTheme\", this.initThemeValues, this\n );\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n /** Whether the focused row should be highlighted. */\n highlightFocusRow :\n {\n check : \"Boolean\",\n init : true\n }\n },\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n _colors : null,\n _fontStyle : null,\n _fontStyleString : null,\n\n /**\n * Initializes the colors from the color theme.\n * @internal\n */\n initThemeValues : function() {\n this._fontStyleString = \"\";\n this._fontStyle = {};\n\n this._colors = {};\n\n // link to font theme\n this._renderFont(qx.theme.manager.Font.getInstance().resolve(\"default\"));\n\n // link to color theme\n var colorMgr = qx.theme.manager.Color.getInstance();\n this._colors.bgcolFocusedSelected = colorMgr.resolve(\"table-row-background-focused-selected\");\n this._colors.bgcolFocused = colorMgr.resolve(\"table-row-background-focused\");\n this._colors.bgcolSelected = colorMgr.resolve(\"table-row-background-selected\");\n this._colors.bgcolEven = colorMgr.resolve(\"table-row-background-even\");\n this._colors.bgcolOdd = colorMgr.resolve(\"table-row-background-odd\");\n this._colors.colSelected = colorMgr.resolve(\"table-row-selected\");\n this._colors.colNormal = colorMgr.resolve(\"table-row\");\n this._colors.horLine = colorMgr.resolve(\"table-row-line\");\n },\n\n\n /**\n * the sum of the vertical insets. This is needed to compute the box model\n * independent size\n */\n _insetY : 1, // borderBottom\n\n /**\n * Render the new font and update the table pane content\n * to reflect the font change.\n *\n * @param font {qx.bom.Font} The font to use for the table row\n */\n _renderFont : function(font)\n {\n if (font)\n {\n this._fontStyle = font.getStyles();\n this._fontStyleString = qx.bom.element.Style.compile(this._fontStyle);\n this._fontStyleString = this._fontStyleString.replace(/\"/g, \"'\");\n }\n else\n {\n this._fontStyleString = \"\";\n this._fontStyle = qx.bom.Font.getDefaultStyles();\n }\n },\n\n\n // interface implementation\n updateDataRowElement : function(rowInfo, rowElem)\n {\n var fontStyle = this._fontStyle;\n var style = rowElem.style;\n\n // set font styles\n qx.bom.element.Style.setStyles(rowElem, fontStyle);\n\n if (rowInfo.focusedRow && this.getHighlightFocusRow())\n {\n style.backgroundColor = rowInfo.selected ? this._colors.bgcolFocusedSelected : this._colors.bgcolFocused;\n }\n else\n {\n if (rowInfo.selected)\n {\n style.backgroundColor = this._colors.bgcolSelected;\n }\n else\n {\n style.backgroundColor = (rowInfo.row % 2 == 0) ? this._colors.bgcolEven : this._colors.bgcolOdd;\n }\n }\n\n style.color = rowInfo.selected ? this._colors.colSelected : this._colors.colNormal;\n style.borderBottom = \"1px solid \" + this._colors.horLine;\n },\n\n\n /**\n * Get the row's height CSS style taking the box model into account\n *\n * @param height {Integer} The row's (border-box) height in pixel\n * @return {String} CSS rule for the row height\n */\n getRowHeightStyle : function(height)\n {\n if (qx.core.Environment.get(\"css.boxmodel\") == \"content\") {\n height -= this._insetY;\n }\n\n return \"height:\" + height + \"px;\";\n },\n\n\n // interface implementation\n createRowStyle : function(rowInfo)\n {\n var rowStyle = [];\n rowStyle.push(\";\");\n rowStyle.push(this._fontStyleString);\n rowStyle.push(\"background-color:\");\n\n if (rowInfo.focusedRow && this.getHighlightFocusRow())\n {\n rowStyle.push(rowInfo.selected ? this._colors.bgcolFocusedSelected : this._colors.bgcolFocused);\n }\n else\n {\n if (rowInfo.selected)\n {\n rowStyle.push(this._colors.bgcolSelected);\n }\n else\n {\n rowStyle.push((rowInfo.row % 2 == 0) ? this._colors.bgcolEven : this._colors.bgcolOdd);\n }\n }\n\n rowStyle.push(';color:');\n rowStyle.push(rowInfo.selected ? this._colors.colSelected : this._colors.colNormal);\n\n rowStyle.push(';border-bottom: 1px solid ', this._colors.horLine);\n\n return rowStyle.join(\"\");\n },\n\n\n getRowClass : function(rowInfo) {\n return \"\";\n },\n\n /**\n * Add extra attributes to each row.\n *\n * @param rowInfo {Object}\n * The following members are available in rowInfo:\n * \n * - table {qx.ui.table.Table}
\n * - The table object
\n *\n * - styleHeight {Integer}
\n * - The height of this (and every) row
\n *\n * - row {Integer}
\n * - The number of the row being added
\n *\n * - selected {Boolean}
\n * - Whether the row being added is currently selected
\n *\n * - focusedRow {Boolean}
\n * - Whether the row being added is currently focused
\n *\n * - rowData {Array}
\n * - The array row from the data model of the row being added
\n *
\n *\n * @return {String}\n * Any additional attributes and their values that should be added to the\n * div tag for the row.\n */\n getRowAttributes : function(rowInfo)\n {\n return \"\";\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n DESTRUCTOR\n *****************************************************************************\n */\n\n destruct : function() {\n this._colors = this._fontStyle = this._fontStyleString = null;\n\n // remove dynamic theme listener\n if (qx.core.Environment.get(\"qx.dyntheme\")) {\n qx.theme.manager.Meta.getInstance().removeListener(\n \"changeTheme\", this.initThemeValues, this\n );\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.credits.TransactionsTable\", {\n extend: qx.ui.table.Table,\n\n construct: function() {\n this.base(arguments)\n const model = new osparc.desktop.credits.TransactionsTableModel();\n this.setTableModel(model)\n this.setStatusBarVisible(false)\n\n const columnModel = this.getTableColumnModel();\n\n columnModel.setColumnWidth(0, 130);\n columnModel.setColumnWidth(1, 70);\n columnModel.setColumnWidth(2, 70);\n columnModel.setColumnWidth(3, 75);\n columnModel.setColumnWidth(4, 320);\n columnModel.setColumnWidth(5, 60);\n\n columnModel.setDataCellRenderer(1, new qx.ui.table.cellrenderer.Number());\n columnModel.setDataCellRenderer(2, new qx.ui.table.cellrenderer.Number());\n columnModel.setDataCellRenderer(3, new qx.ui.table.cellrenderer.Html());\n columnModel.setDataCellRenderer(4, new osparc.ui.table.cellrenderer.StringWithTooltip());\n columnModel.setDataCellRenderer(5, new qx.ui.table.cellrenderer.Html());\n\n this.setHeaderCellHeight(26);\n this.setRowHeight(26);\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2023 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\nqx.Class.define(\"osparc.desktop.credits.DateFilters\", {\n extend: qx.ui.core.Widget,\n\n construct() {\n this.base(arguments);\n this._setLayout(new qx.ui.layout.HBox(7));\n this._buildLayout();\n },\n\n events: {\n \"change\": \"qx.event.type.Data\"\n },\n\n members: {\n _buildLayout() {\n this._removeAll();\n const defaultFrom = new Date()\n defaultFrom.setMonth(defaultFrom.getMonth() - 1)\n // Range defaults to previous month\n this.__from = this.__addDateInput(\"From\", defaultFrom);\n this.__until = this.__addDateInput(\"Until\");\n const lastWeekBtn = new qx.ui.form.Button(\"Last week\").set({\n allowStretchY: false,\n alignY: \"bottom\"\n });\n lastWeekBtn.addListener(\"execute\", () => {\n const today = new Date();\n const lastWeek = new Date(today);\n lastWeek.setDate(today.getDate() - 7)\n this.__from.setValue(lastWeek);\n this.__until.setValue(today);\n });\n this._add(lastWeekBtn);\n const lastMonthBtn = new qx.ui.form.Button(\"Last month\").set({\n allowStretchY: false,\n alignY: \"bottom\"\n });\n lastMonthBtn.addListener(\"execute\", () => {\n const today = new Date();\n const lastMonth = new Date(today);\n lastMonth.setMonth(today.getMonth() - 1);\n this.__from.setValue(lastMonth);\n this.__until.setValue(today);\n });\n this._add(lastMonthBtn);\n const lastYearBtn = new qx.ui.form.Button(\"Last year\").set({\n allowStretchY: false,\n alignY: \"bottom\"\n });\n lastYearBtn.addListener(\"execute\", () => {\n const today = new Date();\n const lastYear = new Date(today);\n lastYear.setYear(today.getFullYear() - 1);\n this.__from.setValue(lastYear);\n this.__until.setValue(today);\n })\n this._add(lastYearBtn);\n },\n\n __addDateInput(label, initDate) {\n const container = new qx.ui.container.Composite(new qx.ui.layout.VBox());\n const lbl = new qx.ui.basic.Label(label);\n container.add(lbl);\n const datepicker = new qx.ui.form.DateField();\n datepicker.setValue(initDate ? initDate : new Date());\n datepicker.addListener(\"changeValue\", e => this._changeHandler(e));\n container.add(datepicker);\n this._add(container);\n return datepicker;\n },\n\n _changeHandler(e) {\n const timestampFrom = this.__from.getValue().getTime();\n const timestampUntil = this.__until.getValue().getTime();\n if (timestampFrom > timestampUntil) {\n // 'From' date must be before 'until'\n if (e.getCurrentTarget() === this.__from) {\n // Adapt the date the user did not change\n this.__until.setValue(new Date(this.__from.getValue().getTime()));\n } else {\n this.__from.setValue(new Date(this.__until.getValue().getTime()));\n }\n return;\n }\n const from = osparc.utils.Utils.formatDateYyyyMmDd(this.__from.getValue());\n const until = osparc.utils.Utils.formatDateYyyyMmDd(this.__until.getValue());\n this.fireDataEvent(\"change\", {\n from,\n until\n });\n },\n\n getValue() {\n const from = osparc.utils.Utils.formatDateYyyyMmDd(this.__from.getValue())\n const until = osparc.utils.Utils.formatDateYyyyMmDd(this.__until.getValue())\n return {\n from,\n until\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.credits.UsageTable\", {\n extend: qx.ui.table.Table,\n\n construct: function(walletId, filters) {\n this.base(arguments)\n const model = new osparc.desktop.credits.UsageTableModel(walletId, filters)\n this.setTableModel(model)\n this.setStatusBarVisible(false)\n\n this.setHeaderCellHeight(26);\n this.setRowHeight(26);\n\n const columnModel = this.getTableColumnModel();\n\n columnModel.setDataCellRenderer(this.self().COLS.COST.column, new qx.ui.table.cellrenderer.Number());\n\n if (!osparc.desktop.credits.Utils.areWalletsEnabled()) {\n columnModel.setColumnVisible(this.self().COLS.COST.column, false);\n columnModel.setColumnVisible(this.self().COLS.USER.column, false);\n }\n columnModel.setColumnVisible(this.self().COLS.SERVICE.column, false);\n\n // Array [0, 1, ..., N] where N is column_count - 1 (default column order)\n this.__columnOrder = [...Array(columnModel.getOverallColumnCount()).keys()]\n\n if (\n osparc.Preferences.getInstance().getBillingCenterUsageColumnOrder() &&\n osparc.Preferences.getInstance().getBillingCenterUsageColumnOrder().length === this.__columnOrder.length\n ) {\n columnModel.setColumnsOrder(osparc.Preferences.getInstance().getBillingCenterUsageColumnOrder())\n this.__columnOrder = osparc.Preferences.getInstance().getBillingCenterUsageColumnOrder()\n } else {\n osparc.Preferences.getInstance().setBillingCenterUsageColumnOrder(this.__columnOrder)\n }\n\n columnModel.addListener(\"orderChanged\", e => {\n // Save new order into preferences\n if (e.getData()) {\n const { fromOverXPos, toOverXPos } = e.getData()\n // Edit current order\n this.__columnOrder = this.__columnOrder.toSpliced(toOverXPos, 0, this.__columnOrder.splice(fromOverXPos, 1)[0])\n // Save order\n osparc.Preferences.getInstance().setBillingCenterUsageColumnOrder(this.__columnOrder)\n }\n }, this)\n\n Object.values(this.self().COLS).forEach(col => columnModel.setColumnWidth(col.column, col.width));\n },\n\n statics: {\n COLS: {\n PROJECT: {\n id: \"project\",\n column: 0,\n label: osparc.product.Utils.getStudyAlias({firstUpperCase: true}),\n width: 140\n },\n NODE: {\n id: \"node\",\n column: 1,\n label: qx.locale.Manager.tr(\"Node\"),\n width: 100\n },\n SERVICE: {\n id: \"service\",\n column: 2,\n label: qx.locale.Manager.tr(\"Service\"),\n width: 140\n },\n START: {\n id: \"start\",\n column: 3,\n label: qx.locale.Manager.tr(\"Start\"),\n width: 130\n },\n DURATION: {\n id: \"duration\",\n column: 4,\n label: qx.locale.Manager.tr(\"Duration\"),\n width: 70\n },\n STATUS: {\n id: \"status\",\n column: 5,\n label: qx.locale.Manager.tr(\"Status\"),\n width: 70\n },\n COST: {\n id: \"cost\",\n column: 6,\n label: qx.locale.Manager.tr(\"Credits\"),\n width: 56\n },\n USER: {\n id: \"user\",\n column: 7,\n label: qx.locale.Manager.tr(\"User\"),\n width: 140\n },\n TAGS: {\n id: \"tags\",\n column: 7,\n label: qx.locale.Manager.tr(\"Tags\"),\n width: 80\n },\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2025 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.desktop.credits.PurchasesTable\", {\n extend: qx.ui.table.Table,\n\n construct: function(walletId, filters) {\n this.base(arguments);\n\n const model = new osparc.desktop.credits.PurchasesTableModel(walletId, filters);\n this.setTableModel(model);\n\n this.set({\n statusBarVisible: false,\n headerCellHeight: 26,\n rowHeight: 26,\n });\n\n const columnModel = this.getTableColumnModel();\n columnModel.setColumnVisible(this.self().COLS.PURCHASE_ID.column, false);\n columnModel.setColumnVisible(this.self().COLS.ITEM_ID.column, false);\n columnModel.setDataCellRenderer(this.self().COLS.COST.column, new qx.ui.table.cellrenderer.Number());\n\n Object.values(this.self().COLS).forEach(col => columnModel.setColumnWidth(col.column, col.width));\n },\n\n statics: {\n COLS: {\n PURCHASE_ID: {\n id: \"purchaseId\",\n column: 0,\n label: qx.locale.Manager.tr(\"PurchaseId\"),\n width: 150\n },\n ITEM_ID: {\n id: \"itemId\",\n column: 1,\n label: qx.locale.Manager.tr(\"ItemId\"),\n width: 150\n },\n ITEM_LABEL: {\n id: \"itemLabel\",\n column: 2,\n label: qx.locale.Manager.tr(\"Name\"),\n width: 150\n },\n START: {\n id: \"start\",\n column: 3,\n label: qx.locale.Manager.tr(\"Start\"),\n width: 150\n },\n END: {\n id: \"end\",\n column: 4,\n label: qx.locale.Manager.tr(\"End\"),\n width: 150\n },\n SEATS: {\n id: \"seats\",\n column: 5,\n label: qx.locale.Manager.tr(\"Seats\"),\n width: 50\n },\n COST: {\n id: \"cost\",\n column: 6,\n label: qx.locale.Manager.tr(\"Credits\"),\n width: 60\n },\n USER: {\n id: \"user\",\n column: 7,\n label: qx.locale.Manager.tr(\"User\"),\n width: 150\n },\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2025 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.desktop.credits.CheckoutsTable\", {\n extend: qx.ui.table.Table,\n\n construct: function(walletId, filters) {\n this.base(arguments);\n\n const model = new osparc.desktop.credits.CheckoutsTableModel(walletId, filters);\n this.setTableModel(model);\n\n this.set({\n statusBarVisible: false,\n headerCellHeight: 26,\n rowHeight: 26,\n });\n\n const columnModel = this.getTableColumnModel();\n columnModel.setColumnVisible(this.self().COLS.CHECKOUT_ID.column, false);\n columnModel.setColumnVisible(this.self().COLS.ITEM_ID.column, false);\n\n Object.values(this.self().COLS).forEach(col => columnModel.setColumnWidth(col.column, col.width));\n },\n\n statics: {\n COLS: {\n CHECKOUT_ID: {\n id: \"checkoutId\",\n column: 0,\n label: qx.locale.Manager.tr(\"CheckoutId\"),\n width: 150\n },\n ITEM_ID: {\n id: \"itemId\",\n column: 1,\n label: qx.locale.Manager.tr(\"ItemId\"),\n width: 150\n },\n ITEM_LABEL: {\n id: \"itemLabel\",\n column: 2,\n label: qx.locale.Manager.tr(\"Name\"),\n width: 150\n },\n START: {\n id: \"start\",\n column: 3,\n label: qx.locale.Manager.tr(\"Start\"),\n width: 150\n },\n DURATION: {\n id: \"duration\",\n column: 4,\n label: qx.locale.Manager.tr(\"Duration\"),\n width: 150\n },\n SEATS: {\n id: \"seats\",\n column: 5,\n label: qx.locale.Manager.tr(\"Seats\"),\n width: 50\n },\n USER: {\n id: \"user\",\n column: 6,\n label: qx.locale.Manager.tr(\"User\"),\n width: 150\n },\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2009 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Martin Wittemann (martinwittemann)\n\n************************************************************************ */\n\n\n/**\n * Object Controller
\n *\n * *General idea*\n *\n * The idea of the object controller is to make the binding of one model object\n * containing one or more properties as easy as possible. Therefore the\n * controller can take a model as property. Every property in that model can be\n * bound to one or more target properties. The binding will be for\n * atomic types only like Numbers, Strings, ...\n *\n * *Features*\n *\n * * Manages the bindings between the model properties and the different targets\n * * No need for the user to take care of the binding ids\n * * Can create an bidirectional binding (read- / write-binding)\n * * Handles the change of the model which means adding the old targets\n *\n * *Usage*\n *\n * The controller only can work if a model is set. If the model property is\n * null, the controller is not working. But it can be null on any time.\n *\n * *Cross reference*\n *\n * * If you want to bind a list like widget, use {@link qx.data.controller.List}\n * * If you want to bind a tree widget, use {@link qx.data.controller.Tree}\n * * If you want to bind a form widget, use {@link qx.data.controller.Form}\n */\nqx.Class.define(\"qx.data.controller.Object\",\n{\n extend : qx.core.Object,\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param model {qx.core.Object?null} The model for the model property.\n */\n construct : function(model)\n {\n this.base(arguments);\n\n // create a map for all created binding ids\n this.__bindings = {};\n // create an array to store all current targets\n this.__targets = [];\n\n if (model != null) {\n this.setModel(model);\n }\n },\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n /** The model object which does have the properties for the binding. */\n model :\n {\n check: \"qx.core.Object\",\n event: \"changeModel\",\n apply: \"_applyModel\",\n nullable: true,\n dereference: true\n }\n },\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n // private members\n __targets : null,\n __bindings : null,\n\n /**\n * Apply-method which will be called if a new model has been set.\n * All bindings will be moved to the new model.\n *\n * @param value {qx.core.Object|null} The new model.\n * @param old {qx.core.Object|null} The old model.\n */\n _applyModel: function(value, old) {\n // for every target\n for (var i = 0; i < this.__targets.length; i++) {\n // get the properties\n var targetObject = this.__targets[i][0];\n var targetProperty = this.__targets[i][1];\n var sourceProperty = this.__targets[i][2];\n var bidirectional = this.__targets[i][3];\n var options = this.__targets[i][4];\n var reverseOptions = this.__targets[i][5];\n\n // remove it from the old if possible\n if (old != undefined && !old.isDisposed()) {\n this.__removeTargetFrom(targetObject, targetProperty, sourceProperty, old);\n }\n\n // add it to the new if available\n if (value != undefined) {\n this.__addTarget(\n targetObject, targetProperty, sourceProperty, bidirectional,\n options, reverseOptions\n );\n } else {\n // in shutdown situations, it may be that something is already\n // disposed [BUG #4343]\n if (targetObject.isDisposed() || qx.core.ObjectRegistry.inShutDown) {\n continue;\n }\n // if the model is null, reset the current target\n if (targetProperty.indexOf(\"[\") == -1) {\n targetObject[\"reset\" + qx.lang.String.firstUp(targetProperty)]();\n } else {\n var open = targetProperty.indexOf(\"[\");\n var index = parseInt(\n targetProperty.substring(open + 1, targetProperty.length - 1), 10\n );\n targetProperty = targetProperty.substring(0, open);\n var targetArray = targetObject[\"get\" + qx.lang.String.firstUp(targetProperty)]();\n if (index == \"last\") {\n index = targetArray.length;\n }\n if (targetArray) {\n targetArray.setItem(index, null);\n }\n }\n }\n }\n },\n\n\n /**\n * Adds a new target to the controller. After adding the target, the given\n * property of the model will be bound to the targets property.\n *\n * @param targetObject {qx.core.Object} The object on which the property\n * should be bound.\n *\n * @param targetProperty {String} The property to which the binding should\n * go.\n *\n * @param sourceProperty {String} The name of the property in the model.\n *\n * @param bidirectional {Boolean?false} Signals if the binding should also work\n * in the reverse direction, from the target to source.\n *\n * @param options {Map?null} The options Map used by the binding from source\n * to target. The possible options can be found in the\n * {@link qx.data.SingleValueBinding} class.\n *\n * @param reverseOptions {Map?null} The options used by the binding in the\n * reverse direction. The possible options can be found in the\n * {@link qx.data.SingleValueBinding} class.\n */\n addTarget: function(\n targetObject, targetProperty, sourceProperty,\n bidirectional, options, reverseOptions\n ) {\n\n // store the added target\n this.__targets.push([\n targetObject, targetProperty, sourceProperty,\n bidirectional, options, reverseOptions\n ]);\n\n // delegate the adding\n this.__addTarget(\n targetObject, targetProperty, sourceProperty,\n bidirectional, options, reverseOptions\n );\n },\n\n\n /**\n * Does the work for {@link #addTarget} but without saving the target\n * to the internal target registry.\n *\n * @param targetObject {qx.core.Object} The object on which the property\n * should be bound.\n *\n * @param targetProperty {String} The property to which the binding should\n * go.\n *\n * @param sourceProperty {String} The name of the property in the model.\n *\n * @param bidirectional {Boolean?false} Signals if the binding should also work\n * in the reverse direction, from the target to source.\n *\n * @param options {Map?null} The options Map used by the binding from source\n * to target. The possible options can be found in the\n * {@link qx.data.SingleValueBinding} class.\n *\n * @param reverseOptions {Map?null} The options used by the binding in the\n * reverse direction. The possible options can be found in the\n * {@link qx.data.SingleValueBinding} class.\n */\n __addTarget: function(\n targetObject, targetProperty, sourceProperty,\n bidirectional, options, reverseOptions\n ) {\n\n // do nothing if no model is set\n if (this.getModel() == null) {\n return;\n }\n\n // create the binding\n var id = this.getModel().bind(\n sourceProperty, targetObject, targetProperty, options\n );\n // create the reverse binding if necessary\n var idReverse = null;\n if (bidirectional) {\n idReverse = targetObject.bind(\n targetProperty, this.getModel(), sourceProperty, reverseOptions\n );\n }\n\n // save the binding\n var targetHash = targetObject.toHashCode();\n if (this.__bindings[targetHash] == undefined) {\n this.__bindings[targetHash] = [];\n }\n this.__bindings[targetHash].push(\n [id, idReverse, targetProperty, sourceProperty, options, reverseOptions]\n );\n },\n\n /**\n * Removes the target identified by the three properties.\n *\n * @param targetObject {qx.core.Object} The target object on which the\n * binding exist.\n *\n * @param targetProperty {String} The targets property name used by the\n * adding of the target.\n *\n * @param sourceProperty {String} The name of the property of the model.\n */\n removeTarget: function(targetObject, targetProperty, sourceProperty) {\n this.__removeTargetFrom(\n targetObject, targetProperty, sourceProperty, this.getModel()\n );\n\n // delete the target in the targets reference\n for (var i = 0; i < this.__targets.length; i++) {\n if (\n this.__targets[i][0] == targetObject\n && this.__targets[i][1] == targetProperty\n && this.__targets[i][2] == sourceProperty\n ) {\n this.__targets.splice(i, 1);\n }\n }\n },\n\n\n /**\n * Does the work for {@link #removeTarget} but without removing the target\n * from the internal registry.\n *\n * @param targetObject {qx.core.Object} The target object on which the\n * binding exist.\n *\n * @param targetProperty {String} The targets property name used by the\n * adding of the target.\n *\n * @param sourceProperty {String} The name of the property of the model.\n *\n * @param sourceObject {String} The source object from which the binding\n * comes.\n */\n __removeTargetFrom: function(\n targetObject, targetProperty, sourceProperty, sourceObject\n ) {\n // check for not fitting targetObjects\n if (!(targetObject instanceof qx.core.Object)) {\n // just do nothing\n return;\n }\n\n var currentListing = this.__bindings[targetObject.toHashCode()];\n // if no binding is stored\n if (currentListing == undefined || currentListing.length == 0) {\n return;\n }\n\n // go threw all listings for the object\n for (var i = 0; i < currentListing.length; i++) {\n // if it is the listing\n if (\n currentListing[i][2] == targetProperty &&\n currentListing[i][3] == sourceProperty\n ) {\n // remove the binding\n var id = currentListing[i][0];\n sourceObject.removeBinding(id);\n // check for the reverse binding\n if (currentListing[i][1] != null) {\n targetObject.removeBinding(currentListing[i][1]);\n }\n // delete the entry and return\n currentListing.splice(i, 1);\n return;\n }\n }\n }\n },\n\n\n /*\n *****************************************************************************\n DESTRUCT\n *****************************************************************************\n */\n\n destruct : function() {\n // set the model to null to get the bindings removed\n if (this.getModel() != null && !this.getModel().isDisposed()) {\n this.setModel(null);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.account.DeleteAccount\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments, this.tr(\"Delete Account\"));\n\n this._setLayout(new qx.ui.layout.VBox(15));\n\n this.__buildLayout();\n },\n\n events: {\n \"deleted\": \"qx.event.type.Event\",\n \"cancel\": \"qx.event.type.Event\"\n },\n\n members: {\n __form: null,\n\n _createChildControlImpl: function(id) {\n let control = null;\n switch (id) {\n case \"intro-text\": {\n const supportEmail = osparc.store.VendorInfo.getInstance().getSupportEmail();\n const retentionDays = osparc.store.StaticInfo.getInstance().getAccountDeletionRetentionDays();\n const text = this.tr(`\\\n This account will be deleted in ${retentionDays} days.
\\\n During this period, if you want to recover it or delete your\\\n data right away, please send us an email to ${supportEmail}.\\\n `);\n control = new qx.ui.basic.Label().set({\n value: text,\n font: \"text-14\",\n rich: true,\n wrap: true\n });\n this._add(control);\n break;\n }\n case \"delete-form\":\n control = this.__createDeleteForm();\n this._add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __buildLayout: function() {\n this.getChildControl(\"intro-text\");\n this.getChildControl(\"delete-form\");\n },\n\n __createDeleteForm: function() {\n const form = this.__form = new qx.ui.form.Form();\n\n const email = new qx.ui.form.TextField().set({\n placeholder: this.tr(\"Your email\"),\n required: true\n });\n form.add(email, \"Email address\", qx.util.Validate.email(), \"email\");\n this.addListener(\"appear\", () => email.focus());\n\n const password = new osparc.ui.form.PasswordField().set({\n placeholder: this.tr(\"Your password\"),\n required: true\n });\n form.add(password, \"Password\", null, \"password\");\n\n const cancelBtn = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"form-button-text\"\n });\n cancelBtn.addListener(\"execute\", () => this.fireEvent(\"cancel\"), this);\n form.addButton(cancelBtn);\n\n const deleteBtn = new osparc.ui.form.FetchButton(this.tr(\"Delete Account\")).set({\n appearance: \"danger-button\"\n });\n deleteBtn.addListener(\"execute\", () => {\n if (form.validate()) {\n this.__requestDeletion(form, deleteBtn);\n }\n }, this);\n form.addButton(deleteBtn);\n\n const formRenderer = new qx.ui.form.renderer.Single(form);\n return formRenderer;\n },\n\n __requestDeletion: function(form, deleteBtn) {\n deleteBtn.setFetching(true);\n const params = {\n data: {\n email: form.getItem(\"email\").getValue(),\n password: form.getItem(\"password\").getValue()\n }\n };\n const retentionDays = osparc.store.StaticInfo.getInstance().getAccountDeletionRetentionDays();\n\n osparc.data.Resources.fetch(\"auth\", \"unregister\", params)\n .then(() => {\n const msg = this.tr(`You account will be deleted in ${retentionDays} days`);\n osparc.FlashMessenger.getInstance().logAs(msg, \"INFO\");\n this.fireEvent(\"deleted\");\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n })\n .finally(() => deleteBtn.setFetching(false));\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Julian Querido (jsaq007)\n\n************************************************************************ */\n\n/**\n * Widget that shows an image well centered and scaled.\n * | _________________________________ |\n * | XXXXXXXXXXXX______ X GB__________ |\n * |___________________________________|\n */\nqx.Class.define(\"osparc.workbench.DiskUsageIndicator\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n const lowDiskSpacePreferencesSettings = osparc.Preferences.getInstance();\n this.__lowDiskThreshold = lowDiskSpacePreferencesSettings.getLowDiskSpaceThreshold();\n this.__lastDiskUsage = {};\n\n this._setLayout(new qx.ui.layout.VBox());\n\n // hide until some info comes\n this.hide();\n\n // Subscribe to disk space threshold - Default 5GB\n lowDiskSpacePreferencesSettings.addListener(\"changeLowDiskSpaceThreshold\", e => {\n this.__lowDiskThreshold = e.getData();\n this.__updateDiskIndicator();\n }, this);\n },\n\n properties: {\n currentNode: {\n check: \"osparc.data.model.Node\",\n init: null,\n nullable: true,\n event: \"changeCurrentNode\",\n apply: \"__applyCurrentNode\",\n }\n },\n\n members: {\n __lowDiskThreshold: null,\n __lastDiskUsage: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"disk-indicator\": {\n control = new qx.ui.container.Composite(\n new qx.ui.layout.VBox().set({\n alignY: \"middle\",\n alignX: \"center\"\n })\n ).set({\n decorator: \"indicator-border\",\n padding: [2, 10],\n margin: 4,\n alignY: \"middle\",\n allowShrinkX: false,\n allowShrinkY: false,\n allowGrowX: true,\n allowGrowY: false,\n });\n this._add(control)\n break;\n }\n case \"disk-indicator-label\": {\n const indicator = this.getChildControl(\"disk-indicator\")\n control = new qx.ui.basic.Label().set({\n value: \"\",\n font: \"text-13\",\n textColor: \"contrasted-text-light\",\n alignX: \"center\",\n alignY: \"middle\",\n rich: false\n })\n indicator.add(control);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __applyCurrentNode: function(node, prevNode) {\n // Unsubscribe from previous node's disk usage data\n if (prevNode) {\n this._unsubscribe(prevNode.getNodeId())\n }\n\n // Subscribe to disk usage data for the new node\n this._subscribe(node);\n },\n\n _subscribe: function(node) {\n osparc.workbench.DiskUsageController.getInstance().subscribe(node.getNodeId(), e => {\n this.__updateDiskIndicator(e);\n });\n },\n\n _unsubscribe: function(nodeId) {\n osparc.workbench.DiskUsageController.getInstance().unsubscribe(nodeId, this.__updateDiskIndicator);\n },\n\n __getIndicatorColor: function(freeSpace) {\n const warningSize = osparc.utils.Utils.gBToBytes(this.__lowDiskThreshold); // 5 GB Default\n const criticalSize = osparc.utils.Utils.gBToBytes(0.01); // 0 GB\n let color = qx.theme.manager.Color.getInstance().resolve(\"success\");\n\n if (freeSpace <= criticalSize) {\n color = qx.theme.manager.Color.getInstance().resolve(\"error\")\n } else if (freeSpace <= warningSize) {\n color = qx.theme.manager.Color.getInstance().resolve(\"warning\")\n } else {\n color = qx.theme.manager.Color.getInstance().resolve(\"success\")\n }\n return color\n },\n\n __updateDiskIndicator: function(diskUsage) {\n this.show();\n if (diskUsage && diskUsage[\"node_id\"]) {\n this.__lastDiskUsage[diskUsage[\"node_id\"]] = diskUsage;\n }\n\n const indicator = this.getChildControl(\"disk-indicator\");\n\n const currentNode = this.getCurrentNode();\n if (currentNode) {\n indicator.setVisibility(\"visible\");\n } else {\n indicator.setVisibility(\"exclude\");\n return;\n }\n\n const currentNodeId = currentNode.getNodeId();\n\n if (!diskUsage && (currentNodeId in this.__lastDiskUsage)) {\n diskUsage = this.__lastDiskUsage[currentNodeId];\n }\n if (!diskUsage) {\n return;\n }\n\n const diskHostUsage = diskUsage[\"usage\"][\"HOST\"]\n let color1 = this.__getIndicatorColor(diskHostUsage.free);\n let progress = `${diskHostUsage[\"used_percent\"]}%`;\n let labelDiskSize = osparc.utils.Utils.bytesToSize(diskHostUsage.free);\n let toolTipText = this.tr(\"Disk usage\");\n if (\"STATES_VOLUMES\" in diskUsage[\"usage\"]) {\n const diskVolsUsage = diskUsage[\"usage\"][\"STATES_VOLUMES\"];\n if (diskVolsUsage[\"used_percent\"] > diskHostUsage[\"used_percent\"]) {\n // \"STATES_VOLUMES\" is more critical so it takes over\n color1 = this.__getIndicatorColor(diskVolsUsage.free);\n progress = `${diskVolsUsage[\"used_percent\"]}%`;\n labelDiskSize = osparc.utils.Utils.bytesToSize(diskVolsUsage.free);\n }\n toolTipText = this.tr(\"Disk usage\") + \"
\";\n toolTipText += this.tr(\"Data storage: \") + osparc.utils.Utils.bytesToSize(diskVolsUsage.free) + \"
\";\n toolTipText += this.tr(\"I/O storage: \") + osparc.utils.Utils.bytesToSize(diskHostUsage.free) + \"
\";\n }\n const bgColor = qx.theme.manager.Color.getInstance().resolve(\"workbench-view-navbar\");\n const color2 = qx.theme.manager.Color.getInstance().resolve(\"progressive-progressbar-background\");\n indicator.getContentElement().setStyles({\n \"background-color\": bgColor,\n \"background\": `linear-gradient(90deg, ${color1} ${progress}, ${color2} ${progress})`,\n \"border-color\": color1\n });\n indicator.set({\n toolTipText\n });\n\n const indicatorLabel = this.getChildControl(\"disk-indicator-label\");\n indicatorLabel.setValue(`${labelDiskSize} Free`);\n },\n\n // Cleanup method\n destruct: function() {\n const currentNode = this.getCurrentNode();\n if (currentNode) {\n this._unsubscribe(currentNode.getNodeId())\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.vipMarket.MarketWindow\", {\n extend: osparc.ui.window.TabbedWindow,\n\n construct: function(nodeId, category) {\n this.base(arguments, \"store\", this.tr(\"The Shop\"));\n\n osparc.utils.Utils.setIdToWidget(this, \"storeWindow\");\n\n const width = Math.min(1200, window.innerWidth); // since we go over the supported minimum, take the min\n const height = Math.min(700, window.innerHeight); // since we go over the supported minimum, take the min\n this.set({\n width,\n height\n });\n\n const vipMarket = this.__vipMarket = new osparc.vipMarket.Market(category).set({\n openBy: nodeId ? nodeId : null,\n });\n this._setTabbedView(vipMarket);\n },\n\n statics: {\n openWindow: function(nodeId, category) {\n if (osparc.product.Utils.showS4LStore()) {\n const storeWindow = new osparc.vipMarket.MarketWindow(nodeId, category);\n storeWindow.getVipMarket().addListener(\"importMessageSent\", () => storeWindow.close());\n storeWindow.addListenerOnce(\"close\", () => {\n if (storeWindow.getVipMarket()) {\n storeWindow.getVipMarket().sendCloseMessage();\n }\n });\n storeWindow.center();\n storeWindow.open();\n return storeWindow;\n }\n return null;\n }\n },\n\n members: {\n __vipMarket: null,\n\n getVipMarket: function() {\n return this.__vipMarket;\n },\n },\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.credits.BillingCenterWindow\", {\n extend: osparc.ui.window.TabbedWindow,\n\n construct: function() {\n this.base(arguments, \"credits\", this.tr(\"Billing Center\"));\n\n\n osparc.utils.Utils.setIdToWidget(this, \"billingCenterWindow\");\n\n const width = 1035;\n const height = 700;\n this.set({\n width,\n height\n })\n\n const billingCenter = this.__billingCenter = new osparc.desktop.credits.BillingCenter();\n this._setTabbedView(billingCenter);\n },\n\n statics: {\n openWindow: function() {\n const accountWindow = new osparc.desktop.credits.BillingCenterWindow();\n accountWindow.center();\n accountWindow.open();\n return accountWindow;\n }\n },\n\n members: {\n __billingCenter: null,\n\n openWallets: function() {\n return this.__billingCenter.openWallets();\n },\n\n openPaymentMethods: function() {\n this.__billingCenter.openPaymentMethods();\n },\n\n openTransactions: function() {\n this.__billingCenter.openTransactions();\n },\n\n openUsage: function() {\n this.__billingCenter.openUsage();\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.WorkspaceButtonBase\", {\n extend: qx.ui.core.Widget,\n implement: [qx.ui.form.IModel, osparc.filter.IFilterable],\n include: [qx.ui.form.MModelProperty, osparc.filter.MFilterable],\n type: \"abstract\",\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.Canvas());\n\n this.set({\n width: this.self().ITEM_WIDTH,\n height: this.self().ITEM_HEIGHT,\n padding: 0\n });\n\n this.getChildControl(\"main-layout\");\n\n [\n \"pointerover\",\n \"focus\"\n ].forEach(e => this.addListener(e, this._onPointerOver, this));\n\n [\n \"pointerout\",\n \"focusout\"\n ].forEach(e => this.addListener(e, this._onPointerOut, this));\n },\n\n properties: {\n cardKey: {\n check: \"String\",\n nullable: true\n },\n\n thumbnail: {\n check: \"String\",\n init: null,\n nullable: true,\n apply: \"__applyThumbnail\",\n },\n\n resourceType: {\n check: [\"workspace\"],\n init: \"workspace\",\n nullable: false\n },\n\n priority: {\n check: \"Number\",\n init: null,\n nullable: false\n }\n },\n\n statics: {\n ITEM_WIDTH: 190,\n ITEM_HEIGHT: 190,\n PADDING: 10,\n SPACING: 15,\n HEADER_MAX_HEIGHT: 40, // two lines in Manrope\n ICON_SIZE: 60,\n POS: {\n FOLDER_LOOK: 0,\n HEADER: 1,\n BODY: 2,\n FOOTER: 3\n },\n HPOS: {\n SHARED: 0,\n TITLE: 1,\n MENU: 2,\n },\n FPOS: {\n DATE: 0,\n }\n },\n\n events: {\n /** (Fired by {@link qx.ui.form.List}) */\n \"action\": \"qx.event.type.Event\"\n },\n\n members: { // eslint-disable-line qx-rules/no-refs-in-members\n // overridden\n _forwardStates: {\n focused : true,\n hovered : true,\n selected : true,\n dragover : true\n },\n\n // overridden\n _createChildControlImpl: function(id) {\n let layout;\n let control;\n switch (id) {\n case \"main-layout\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox());\n const folderLook = this.getChildControl(\"folder-look\");\n const header = this.getChildControl(\"header\");\n const body = this.getChildControl(\"body\");\n const footer = this.getChildControl(\"footer\");\n control.addAt(folderLook, this.self().POS.FOLDER_LOOK);\n control.addAt(header, this.self().POS.HEADER);\n control.addAt(body, this.self().POS.BODY, {\n flex: 1\n });\n control.addAt(footer, this.self().POS.FOOTER);\n this._add(control, {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n });\n break;\n }\n case \"folder-look\": {\n control = this.__createFolderLookHeader();\n break;\n }\n case \"header\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(5)).set({\n backgroundColor: \"background-workspace-card-overlay\",\n opacity: 0.8,\n anonymous: true,\n maxWidth: this.self().ITEM_WIDTH,\n maxHeight: this.self().HEADER_MAX_HEIGHT,\n padding: this.self().PADDING,\n alignY: \"middle\",\n });\n break;\n case \"body\":\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox()).set({\n decorator: \"main\",\n allowGrowY: true,\n allowGrowX: true,\n allowShrinkX: true,\n padding: this.self().PADDING\n });\n control.getContentElement().setStyles({\n \"border-width\": 0\n });\n break;\n case \"footer\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(5)).set({\n backgroundColor: \"background-card-overlay\",\n anonymous: true,\n maxWidth: this.self().ITEM_WIDTH,\n maxHeight: this.self().ITEM_HEIGHT,\n padding: this.self().PADDING,\n alignY: \"middle\",\n });\n break;\n }\n case \"title\":\n control = new qx.ui.basic.Label().set({\n textColor: \"contrasted-text-light\",\n font: \"text-14\",\n allowGrowX: true,\n alignY: \"middle\",\n maxHeight: this.self().HEADER_MAX_HEIGHT\n });\n layout = this.getChildControl(\"header\");\n layout.addAt(control, this.self().HPOS.TITLE, {\n flex: 1\n });\n break;\n case \"thumbnail\": {\n layout = this.getChildControl(\"body\");\n const maxWidth = this.self().ITEM_WIDTH;\n control = new osparc.ui.basic.Thumbnail(null, maxWidth, 124);\n control.getChildControl(\"image\").set({\n anonymous: true,\n alignY: \"middle\",\n alignX: \"center\",\n allowGrowX: true,\n allowGrowY: true\n });\n layout.getContentElement().setStyles({\n \"border-width\": \"0px\"\n });\n layout.add(control, {flex: 1});\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __createFolderLookHeader: function() {\n const topHeight = 8;\n const grid = new qx.ui.layout.Grid(0, 0);\n grid.setColumnFlex(0, 1);\n grid.setColumnFlex(2, 1);\n grid.setRowHeight(0, topHeight);\n grid.setRowHeight(1, 4);\n const layout = new qx.ui.container.Composite(grid).set({\n backgroundColor: \"background-main\",\n });\n const spacer00 = new qx.ui.core.Widget().set({\n backgroundColor: \"background-workspace-card-overlay\"\n });\n const triangle = new qx.ui.core.Widget().set({\n width: topHeight,\n height: topHeight,\n });\n triangle.getContentElement().setStyles({\n \"width\": \"0\",\n \"height\": \"0\",\n \"border-right\": topHeight + \"px solid transparent\",\n });\n const colorTriangle = () => {\n const color = qx.theme.manager.Color.getInstance().resolve(\"background-workspace-card-overlay\");\n triangle.getContentElement().setStyles({\n \"border-bottom\": topHeight + \"px solid \" + color,\n });\n };\n colorTriangle();\n qx.theme.manager.Color.getInstance().addListener(\"changeTheme\", colorTriangle);\n const spacer01 = new qx.ui.core.Widget();\n const spacer10 = new qx.ui.core.Widget().set({\n backgroundColor: \"background-workspace-card-overlay\"\n });\n const spacer11 = new qx.ui.core.Widget().set({\n backgroundColor: \"background-workspace-card-overlay\"\n });\n spacer11.getContentElement().setStyles({\n \"border-top-right-radius\": \"4px\",\n });\n layout.add(spacer00, {\n row: 0,\n column: 0,\n });\n layout.add(triangle, {\n row: 0,\n column: 1,\n });\n layout.add(spacer01, {\n row: 0,\n column: 2,\n });\n layout.add(spacer10, {\n row: 1,\n column: 0,\n colSpan: 2,\n });\n layout.add(spacer11, {\n row: 1,\n column: 2,\n });\n return layout;\n },\n\n __applyThumbnail: function(value) {\n const image = this.getChildControl(\"thumbnail\").getChildControl(\"image\");\n if (\n value.includes(\"@FontAwesome5Solid/\") ||\n value.includes(\"@MaterialIcons/\")\n ) {\n this.getContentElement().setStyles({\n \"background-image\": \"none\",\n });\n value += this.self().ICON_SIZE;\n image.set({\n source: value,\n visibility: \"visible\",\n });\n } else {\n this.getContentElement().setStyles({\n \"background-image\": `url(${value})`,\n \"background-repeat\": \"no-repeat\",\n \"background-size\": \"cover\", // auto width, 85% height\n \"background-position\": \"center center\",\n \"background-origin\": \"border-box\"\n });\n image.set({\n visibility: \"excluded\",\n });\n }\n },\n\n /**\n * Event handler for the pointer over event.\n */\n _onPointerOver: function() {\n this.addState(\"hovered\");\n },\n\n /**\n * Event handler for the pointer out event.\n */\n _onPointerOut : function() {\n this.removeState(\"hovered\");\n },\n\n _filter: function() {\n this.exclude();\n },\n\n _unfilter: function() {\n this.show();\n },\n\n _shouldApplyFilter: function(data) {\n return false;\n },\n\n _shouldReactToFilter: function(data) {\n return false;\n }\n },\n\n destruct: function() {\n this.removeListener(\"pointerover\", this._onPointerOver, this);\n this.removeListener(\"pointerout\", this._onPointerOut, this);\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget used for displaying a New Workspace in the Study Browser\n *\n */\n\nqx.Class.define(\"osparc.dashboard.WorkspaceButtonNew\", {\n extend: osparc.dashboard.WorkspaceButtonBase,\n\n construct: function() {\n this.base(arguments);\n\n this.set({\n appearance: \"pb-new\"\n });\n\n this.addListener(\"tap\", this.__itemSelected, this);\n\n this.setPriority(osparc.dashboard.CardBase.CARD_PRIORITY.NEW);\n\n const title = this.getChildControl(\"title\");\n title.setValue(this.tr(\"New Workspace\"));\n\n this.setThumbnail(osparc.dashboard.CardBase.NEW_ICON);\n\n this.getChildControl(\"header\").set({\n opacity: 1\n });\n this.getChildControl(\"footer\").exclude();\n\n osparc.utils.Utils.setIdToWidget(this, \"newWorkspaceButton\");\n },\n\n events: {\n \"workspaceCreated\": \"qx.event.type.Event\",\n \"workspaceDeleted\": \"qx.event.type.Event\",\n \"workspaceUpdated\": \"qx.event.type.Event\",\n },\n\n members: {\n __itemSelected: function() {\n const workspaceEditor = new osparc.editor.WorkspaceEditor();\n const title = this.tr(\"New Workspace\");\n const win = osparc.ui.window.Window.popUpInWindow(workspaceEditor, title, 500, 500).set({\n modal: true,\n clickAwayClose: false,\n });\n workspaceEditor.addListener(\"workspaceCreated\", () => this.fireEvent(\"workspaceCreated\"));\n workspaceEditor.addListener(\"workspaceDeleted\", () => this.fireEvent(\"workspaceDeleted\"));\n workspaceEditor.addListener(\"workspaceUpdated\", () => {\n win.close();\n this.fireEvent(\"workspaceUpdated\");\n }, this);\n workspaceEditor.addListener(\"updateAccessRights\", () => this.fireEvent(\"workspaceUpdated\"));\n win.getChildControl(\"close-button\").addListener(\"tap\", () => workspaceEditor.cancel());\n workspaceEditor.addListener(\"cancel\", () => win.close());\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.FolderButtonBase\", {\n extend: qx.ui.core.Widget,\n implement: [qx.ui.form.IModel, osparc.filter.IFilterable],\n include: [qx.ui.form.MModelProperty, osparc.filter.MFilterable],\n type: \"abstract\",\n\n construct: function() {\n this.base(arguments);\n\n this.set({\n width: osparc.dashboard.GridButtonBase.ITEM_WIDTH,\n minHeight: this.self().HEIGHT,\n padding: 5,\n alignY: \"middle\"\n });\n\n const gridLayout = new qx.ui.layout.Grid();\n gridLayout.setSpacing(this.self().SPACING);\n gridLayout.setColumnFlex(this.self().POS.TITLE.column, 1);\n gridLayout.setColumnAlign(this.self().POS.ICON.column, \"center\", \"middle\");\n gridLayout.setColumnAlign(this.self().POS.TITLE.column, \"left\", \"middle\");\n this._setLayout(gridLayout);\n\n this.addListener(\"pointerover\", this.__onPointerOver, this);\n this.addListener(\"pointerout\", this.__onPointerOut, this);\n },\n\n properties: {\n cardKey: {\n check: \"String\",\n nullable: true\n },\n\n resourceType: {\n check: [\"folder\"],\n init: \"folder\",\n nullable: false\n },\n\n priority: {\n check: \"Number\",\n init: null,\n nullable: false\n }\n },\n\n statics: {\n HEIGHT: 50,\n SPACING: 5,\n POS: {\n ICON: {\n column: 0,\n row: 0,\n rowSpan: 2\n },\n TITLE: {\n column: 1,\n row: 0\n },\n SUBTITLE: {\n column: 1,\n row: 1\n },\n MENU: {\n column: 2,\n row: 0,\n rowSpan: 2\n }\n },\n },\n\n members: { // eslint-disable-line qx-rules/no-refs-in-members\n // overridden\n _forwardStates: {\n focused : true,\n hovered : true,\n selected : true,\n dragover : true\n },\n\n __onPointerOver: function() {\n this.addState(\"hovered\");\n },\n\n __onPointerOut : function() {\n this.removeState(\"hovered\");\n },\n\n _filter: function() {\n this.exclude();\n },\n\n _unfilter: function() {\n this.show();\n },\n\n _shouldApplyFilter: function(data) {\n return false;\n },\n\n _shouldReactToFilter: function(data) {\n return false;\n }\n },\n\n destruct: function() {\n this.removeListener(\"pointerover\", this.__onPointerOver, this);\n this.removeListener(\"pointerout\", this.__onPointerOut, this);\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget used for displaying a New Folder in the Study Browser\n *\n */\n\nqx.Class.define(\"osparc.dashboard.FolderButtonNew\", {\n extend: osparc.dashboard.FolderButtonBase,\n\n construct: function() {\n this.base(arguments);\n\n this.set({\n appearance: \"pb-new\"\n });\n\n this.addListener(\"tap\", this.__itemSelected, this);\n\n this.setPriority(osparc.dashboard.CardBase.CARD_PRIORITY.NEW);\n\n this.__buildLayout();\n\n osparc.utils.Utils.setIdToWidget(this, \"newFolderButton\");\n },\n\n events: {\n \"createFolder\": \"qx.event.type.Data\"\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"icon\": {\n control = new qx.ui.basic.Image().set({\n source: osparc.dashboard.CardBase.NEW_ICON + \"26\",\n anonymous: true,\n height: 40,\n padding: 5\n });\n this._add(control, osparc.dashboard.FolderButtonBase.POS.ICON);\n break;\n }\n case \"title\":\n control = new qx.ui.basic.Label(this.tr(\"New folder\")).set({\n anonymous: true,\n font: \"text-14\",\n rich: true,\n });\n this._add(control, {\n ...osparc.dashboard.FolderButtonBase.POS.TITLE,\n ...{rowSpan: 2}\n });\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __buildLayout: function() {\n this.getChildControl(\"icon\");\n this.getChildControl(\"title\");\n },\n\n __itemSelected: function() {\n const newFolder = true;\n const folderEditor = new osparc.editor.FolderEditor(newFolder);\n const title = this.tr(\"New Folder\");\n const win = osparc.ui.window.Window.popUpInWindow(folderEditor, title, 300, 120);\n folderEditor.addListener(\"createFolder\", () => {\n const name = folderEditor.getLabel();\n this.fireDataEvent(\"createFolder\", {\n name,\n });\n win.close();\n });\n folderEditor.addListener(\"cancel\", () => win.close());\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.MoveResourceTo\", {\n extend: qx.ui.core.Widget,\n\n construct: function(currentWorkspaceId, currentFolderId) {\n this.base(arguments);\n\n this.__currentWorkspaceId = currentWorkspaceId;\n this.__currentFolderId = currentFolderId;\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this.getChildControl(\"current-location\");\n\n const workspacesAndFoldersTree = this.getChildControl(\"workspaces-and-folders-tree\");\n this.getChildControl(\"cancel-btn\");\n\n const moveButton = this.getChildControl(\"move-btn\");\n moveButton.setEnabled(currentWorkspaceId !== null || currentFolderId !== null); // disable if current location is My Workspace's root\n workspacesAndFoldersTree.getSelection().addListener(\"change\", () => {\n const selection = workspacesAndFoldersTree.getSelection();\n if (selection.getLength() > 0) {\n const item = selection.getItem(0);\n this.__selectedWorkspaceId = item.getWorkspaceId();\n this.__selectedFolderId = item.getFolderId();\n if (this.__selectedWorkspaceId === -1) {\n // \"Shared Workspaces\"\n moveButton.setEnabled(false);\n } else {\n // In principle, valid location\n // disable if it's the current location\n moveButton.setEnabled(this.__currentWorkspaceId !== this.__selectedWorkspaceId || this.__currentFolderId !== this.__selectedFolderId);\n }\n }\n }, this);\n moveButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"moveTo\", {\n workspaceId: this.__selectedWorkspaceId,\n folderId: this.__selectedFolderId,\n });\n }, this);\n },\n\n events: {\n \"cancel\": \"qx.event.type.Event\",\n \"moveTo\": \"qx.event.type.Data\"\n },\n\n members: {\n __currentWorkspaceId: null,\n __currentFolderId: null,\n __selectedWorkspaceId: null,\n __selectedFolderId: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"current-location\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n const intro = new qx.ui.basic.Label(this.tr(\"Current location:\"));\n control.add(intro);\n const workspace = osparc.store.Workspaces.getInstance().getWorkspace(this.__currentWorkspaceId);\n const workspaceText = workspace ? workspace.getName() : \"My Workspace\";\n const workspaceLabel = new qx.ui.basic.Label(this.tr(\"- Workspace: \") + workspaceText);\n control.add(workspaceLabel);\n const folder = osparc.store.Folders.getInstance().getFolder(this.__currentFolderId);\n if (folder) {\n const folderText = folder.getName();\n const folderLabel = new qx.ui.basic.Label(this.tr(\"- Folder: \") + folderText);\n control.add(folderLabel);\n }\n this._add(control);\n break;\n }\n case \"workspaces-and-folders-tree\":\n control = new osparc.dashboard.WorkspacesAndFoldersTree();\n this._add(control, {\n flex: 1\n });\n break;\n case \"buttons-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignX: \"right\"\n }));\n this._add(control);\n break;\n case \"cancel-btn\": {\n const buttons = this.getChildControl(\"buttons-layout\");\n control = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"form-button-text\"\n });\n control.addListener(\"execute\", () => this.fireEvent(\"cancel\"), this);\n buttons.add(control);\n break;\n }\n case \"move-btn\": {\n const buttons = this.getChildControl(\"buttons-layout\");\n control = new qx.ui.form.Button(this.tr(\"Move\")).set({\n appearance: \"form-button\"\n });\n buttons.add(control);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __getUpstreamFolders: function(childFolder, folderIds = []) {\n if (childFolder) {\n folderIds.unshift(childFolder.getFolderId());\n const parentFolder = osparc.store.Folders.getInstance().getFolder(childFolder.getParentFolderId());\n this.__getUpstreamFolders(parentFolder, folderIds);\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.DragDropHelpers\", {\n type: \"static\",\n\n statics: {\n moveStudy: {\n dragStart: function(event, studyItem, studyDataOrigin) {\n event.addAction(\"move\");\n event.addType(\"osparc-moveStudy\");\n event.addData(\"osparc-moveStudy\", {\n \"studyDataOrigin\": studyDataOrigin,\n });\n\n // init drag indicator\n const dragWidget = osparc.dashboard.DragWidget.getInstance();\n dragWidget.getChildControl(\"dragged-resource\").set({\n label: studyDataOrigin[\"name\"],\n icon: \"@FontAwesome5Solid/file/16\",\n });\n dragWidget.start();\n\n // make it semi transparent while being dragged\n studyItem.setOpacity(0.2);\n },\n\n dragOver: function(event, folderItem, workspaceDestId) {\n let compatible = false;\n const studyDataOrigin = event.getData(\"osparc-moveStudy\")[\"studyDataOrigin\"];\n const workspaceIdOrigin = studyDataOrigin[\"workspaceId\"];\n const workspaceOrigin = osparc.store.Workspaces.getInstance().getWorkspace(workspaceIdOrigin);\n const workspaceDest = osparc.store.Workspaces.getInstance().getWorkspace(workspaceDestId);\n // Compatibility checks:\n // - Drag over \"Shared Workspaces\" (0)\n // - No\n // - My Workspace -> My Workspace (1)\n // - Yes\n // - My Workspace -> Shared Workspace (2)\n // - Delete on Study\n // - Write on dest Workspace\n // - Shared Workspace -> My Workspace (3)\n // - Delete on origin Workspace\n // - Shared Workspace -> Shared Workspace (4)\n // - Delete on origin Workspace\n // - Write on dest Workspace\n if (workspaceDestId === -1) { // (0)\n compatible = false;\n } else if (workspaceIdOrigin === null && workspaceDestId === null) { // (1)\n compatible = true;\n } else if (workspaceIdOrigin === null && workspaceDest) { // (2)\n compatible = osparc.data.model.Study.canIDelete(studyDataOrigin[\"accessRights\"]) && workspaceDest.getMyAccessRights()[\"write\"];\n } else if (workspaceOrigin && workspaceDestId === null) { // (3)\n compatible = workspaceOrigin.getMyAccessRights()[\"delete\"];\n } else if (workspaceOrigin && workspaceDest) { // (4)\n compatible = workspaceOrigin.getMyAccessRights()[\"delete\"] && workspaceDest.getMyAccessRights()[\"write\"];\n }\n\n if (!compatible) {\n // do not allow\n event.preventDefault();\n }\n\n const dragWidget = osparc.dashboard.DragWidget.getInstance();\n dragWidget.setDropAllowed(compatible);\n\n folderItem.getChildControl(\"icon\").setTextColor(compatible ? \"strong-main\" : \"text\");\n },\n\n drop: function(event, folderItem, destWorkspaceId, destFolderId) {\n const studyData = event.getData(\"osparc-moveStudy\")[\"studyDataOrigin\"];\n const studyToFolderData = {\n studyData,\n destWorkspaceId,\n destFolderId,\n };\n folderItem.getChildControl(\"icon\").resetTextColor();\n return studyToFolderData;\n },\n },\n\n moveFolder: {\n dragStart: function(event, folderItem, folderOrigin) {\n event.addAction(\"move\");\n event.addType(\"osparc-moveFolder\");\n event.addData(\"osparc-moveFolder\", {\n \"folderOrigin\": folderOrigin,\n });\n\n // init drag indicator\n const dragWidget = osparc.dashboard.DragWidget.getInstance();\n dragWidget.getChildControl(\"dragged-resource\").set({\n label: folderOrigin.getName(),\n icon: \"@FontAwesome5Solid/folder/16\",\n });\n dragWidget.start();\n\n // make it semi transparent while being dragged\n folderItem.setOpacity(0.2);\n },\n\n dragOver: function(event, folderItem, workspaceDestId, folderDestId) {\n let compatible = false;\n const folderOrigin = event.getData(\"osparc-moveFolder\")[\"folderOrigin\"];\n const workspaceIdOrigin = folderOrigin.getWorkspaceId();\n const workspaceOrigin = osparc.store.Workspaces.getInstance().getWorkspace(workspaceIdOrigin);\n const workspaceDest = osparc.store.Workspaces.getInstance().getWorkspace(workspaceDestId);\n // Compatibility checks:\n // - Drag over \"Shared Workspaces\" (0)\n // - No\n // - My Workspace -> My Workspace (1)\n // - Yes\n // - My Workspace -> Shared Workspace (2)\n // - ~~Delete on Study~~\n // - Write on dest Workspace\n // - Shared Workspace -> My Workspace (3)\n // - Delete on origin Workspace\n // - Shared Workspace -> Shared Workspace (4)\n // - Delete on origin Workspace\n // - Write on dest Workspace\n if (workspaceDestId === -1) { // (0)\n compatible = false;\n } else if (folderOrigin.getFolderId() === folderDestId) {\n compatible = false;\n } else if (workspaceIdOrigin === null && workspaceDestId === null) { // (1)\n compatible = true;\n } else if (workspaceIdOrigin === null && workspaceDest) { // (2)\n compatible = workspaceDest.getMyAccessRights()[\"write\"];\n } else if (workspaceOrigin && workspaceDestId === null) { // (3)\n compatible = workspaceOrigin.getMyAccessRights()[\"delete\"];\n } else if (workspaceOrigin && workspaceDest) { // (4)\n compatible = workspaceOrigin.getMyAccessRights()[\"delete\"] && workspaceDest.getMyAccessRights()[\"write\"];\n }\n\n if (!compatible) {\n // do not allow\n event.preventDefault();\n }\n\n const dragWidget = osparc.dashboard.DragWidget.getInstance();\n dragWidget.setDropAllowed(compatible);\n\n folderItem.getChildControl(\"icon\").setTextColor(compatible ? \"strong-main\" : \"text\");\n },\n\n drop: function(event, folderItem, destWorkspaceId, destFolderId) {\n const folderOrigin = event.getData(\"osparc-moveFolder\")[\"folderOrigin\"];\n const folderToFolderData = {\n folderId: folderOrigin.getFolderId(),\n workspaceId: folderOrigin.getWorkspaceId(),\n destWorkspaceId,\n destFolderId,\n };\n folderItem.getChildControl(\"icon\").resetTextColor();\n return folderToFolderData;\n },\n },\n\n trashStudy: {\n dragOver: function(event) {\n let compatible = false;\n const studyDataOrigin = event.getData(\"osparc-moveStudy\")[\"studyDataOrigin\"];\n const workspaceIdOrigin = studyDataOrigin[\"workspaceId\"];\n const workspaceOrigin = osparc.store.Workspaces.getInstance().getWorkspace(workspaceIdOrigin);\n // Compatibility checks:\n // - My Workspace -> Trash (0)\n // - Delete on Study\n // - Shared Workspace -> Trash (1)\n // - Delete on Shared Workspace\n if (workspaceIdOrigin === null) { // (0)\n compatible = osparc.data.model.Study.canIDelete(studyDataOrigin[\"accessRights\"]);\n } else if (workspaceIdOrigin !== null) { // (1)\n compatible = workspaceOrigin.getMyAccessRights()[\"delete\"];\n }\n\n if (!compatible) {\n // do not allow\n event.preventDefault();\n }\n\n const dragWidget = osparc.dashboard.DragWidget.getInstance();\n dragWidget.setDropAllowed(compatible);\n },\n\n drop: function(event) {\n return event.getData(\"osparc-moveStudy\")[\"studyDataOrigin\"];\n },\n },\n\n trashFolder: {\n dragOver: function(event) {\n let compatible = false;\n const folderOrigin = event.getData(\"osparc-moveFolder\")[\"folderOrigin\"];\n const workspaceIdOrigin = folderOrigin.getWorkspaceId();\n const workspaceOrigin = osparc.store.Workspaces.getInstance().getWorkspace(workspaceIdOrigin);\n // Compatibility checks:\n // - My Workspace -> Trash (0)\n // - Yes\n // - Shared Workspace -> Trash (1)\n // - Delete on Shared Workspace\n if (workspaceIdOrigin === null) { // (0)\n compatible = true;\n } else if (workspaceIdOrigin !== null) { // (1)\n compatible = workspaceOrigin.getMyAccessRights()[\"delete\"];\n }\n\n if (!compatible) {\n // do not allow\n event.preventDefault();\n }\n\n const dragWidget = osparc.dashboard.DragWidget.getInstance();\n dragWidget.setDropAllowed(compatible);\n },\n\n drop: function(event) {\n const folderOrigin = event.getData(\"osparc-moveFolder\")[\"folderOrigin\"];\n return folderOrigin.getFolderId();\n },\n },\n\n dragLeave: function(item) {\n const dragWidget = osparc.dashboard.DragWidget.getInstance();\n dragWidget.setDropAllowed(false);\n\n if (item) {\n item.getChildControl(\"icon\").resetTextColor();\n }\n },\n\n dragEnd: function(draggedItem) {\n // bring back opacity after drag\n draggedItem.setOpacity(1);\n\n // hide drag indicator\n const dragWidget = osparc.dashboard.DragWidget.getInstance();\n dragWidget.end();\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2025 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.NewPlusButton\", {\n extend: qx.ui.form.MenuButton,\n\n construct: function() {\n this.base(arguments);\n\n this.set({\n appearance: \"strong-button\",\n icon: osparc.dashboard.CardBase.NEW_ICON + \"20\",\n label: this.tr(\"New\"),\n font: \"text-16\",\n gap: 15,\n padding: 15,\n paddingRight: 20,\n allowGrowX: false,\n });\n\n osparc.utils.Utils.setIdToWidget(this, \"newPlusBtn\");\n\n this.setMenu(new osparc.dashboard.NewPlusMenu());\n },\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.NewStudies\", {\n extend: qx.ui.core.Widget,\n\n construct: function(newStudiesData) {\n this.base(arguments);\n\n const newButtonsInfo = newStudiesData.resources;\n this.__groups = newStudiesData.categories || [];\n this.__groupedContainers = [];\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n const flatList = this.__flatList = new osparc.dashboard.CardContainer();\n [\n \"changeSelection\",\n \"changeVisibility\"\n ].forEach(signalName => {\n flatList.addListener(signalName, e => this.fireDataEvent(signalName, e.getData()), this);\n });\n this._add(this.__flatList);\n\n osparc.data.Resources.get(\"templates\")\n .then(templates => {\n const displayTemplates = newButtonsInfo.filter(newButtonInfo => {\n if (newButtonInfo.showDisabled) {\n return true;\n }\n return templates.find(t => t.name === newButtonInfo.expectedTemplateLabel);\n });\n this.__newStudies = displayTemplates;\n })\n .catch(console.error)\n .finally(() => this.fireEvent(\"templatesLoaded\"));\n },\n\n properties: {\n groupBy: {\n check: [null, \"category\"],\n init: null,\n nullable: true,\n apply: \"reloadCards\"\n }\n },\n\n events: {\n \"templatesLoaded\": \"qx.event.type.Event\",\n \"newStudyClicked\": \"qx.event.type.Data\",\n },\n\n statics: {\n WIDTH: 600\n },\n\n members: {\n __newStudies: null,\n __groups: null,\n __flatList: null,\n __groupedContainers: null,\n\n reloadCards: function(listId) {\n this.__cleanAll();\n\n if (this.getGroupBy()) {\n const noGroupContainer = this.__createGroupContainer(\"no-group\", \"No Group\", \"transparent\");\n this._add(noGroupContainer);\n\n Array.from(this.__groups).forEach(group => {\n let headerLabel = group.title;\n headerLabel += \"description\" in group ? (\". \" + group[\"description\"]) : \"\";\n const groupContainer = this.__createGroupContainer(group.id, headerLabel, \"transparent\");\n this._add(groupContainer);\n });\n } else {\n const flatList = this.__flatList = new osparc.dashboard.CardContainer();\n osparc.utils.Utils.setIdToWidget(flatList, listId);\n [\n \"changeSelection\",\n \"changeVisibility\"\n ].forEach(signalName => {\n flatList.addListener(signalName, e => this.fireDataEvent(signalName, e.getData()), this);\n });\n const spacing = osparc.dashboard.GridButtonBase.SPACING;\n this.__flatList.getLayout().set({\n spacingX: spacing,\n spacingY: spacing\n });\n this._add(this.__flatList);\n }\n\n const newCards = [];\n this.__newStudies.forEach(resourceData => {\n const cards = this.__resourceToCards(resourceData);\n cards.forEach(newCard => {\n if (resourceData.showDisabled) {\n newCard.setEnabled(false);\n if (resourceData.reason) {\n const reason = osparc.utils.Utils.replaceTokens(\n resourceData.reason,\n \"replace_me_product_name\",\n osparc.store.StaticInfo.getInstance().getDisplayName()\n );\n const descLabel = newCard.getChildControl(\"subtitle-text\");\n descLabel.setValue(reason.toString());\n }\n }\n newCards.push(newCard);\n });\n });\n return newCards;\n },\n\n __resourceToCards: function(resourceData) {\n const cards = [];\n if (this.getGroupBy() === \"category\") {\n this.__groupByCategory(cards, resourceData);\n } else {\n const card = this.__createCard(resourceData);\n cards.push(card);\n this.__flatList.add(card);\n }\n return cards;\n },\n\n __groupByCategory: function(cards, resourceData) {\n const card = this.__createCard(resourceData);\n const groupContainer = this.__getGroupContainer(resourceData.category);\n if (groupContainer) {\n groupContainer.add(card);\n } else {\n let noGroupContainer = this.__getGroupContainer(\"no-group\");\n noGroupContainer.add(card);\n }\n cards.push(card);\n },\n\n __createGroupContainer: function(groupId, headerLabel, headerColor = \"text\") {\n const groupContainer = new osparc.dashboard.GroupedCardContainer().set({\n groupId: groupId.toString(),\n headerLabel,\n headerIcon: \"\",\n headerColor,\n visibility: \"excluded\"\n });\n osparc.utils.Utils.setIdToWidget(groupContainer, groupId.toString() + \"Group\");\n const atom = groupContainer.getChildControl(\"header\");\n atom.set({\n font: \"text-16\",\n maxWidth: this.self().WIDTH\n });\n this.__groupedContainers.push(groupContainer);\n return groupContainer;\n },\n\n __getGroupContainer: function(gid) {\n const idx = this.__groupedContainers.findIndex(groupContainer => groupContainer.getGroupId() === gid.toString());\n if (idx > -1) {\n return this.__groupedContainers[idx];\n }\n return null;\n },\n\n __createCard: function(templateInfo) {\n const newStudyClicked = () => this.fireDataEvent(\"newStudyClicked\", templateInfo);\n\n const title = templateInfo.title;\n const desc = templateInfo.description;\n const newPlanButton = new osparc.dashboard.GridButtonNew(title, desc);\n if (templateInfo[\"idToWidget\"]) {\n newPlanButton.setCardKey(templateInfo[\"idToWidget\"]);\n osparc.utils.Utils.setIdToWidget(newPlanButton, templateInfo[\"idToWidget\"]);\n }\n newPlanButton.addListener(\"tap\", () => newStudyClicked());\n return newPlanButton;\n },\n\n __cleanAll: function() {\n if (this.__flatList) {\n this.__flatList.removeAll();\n this.__flatList = null;\n }\n this.__groupedContainers.forEach(groupedContainer => groupedContainer.getContentContainer().removeAll());\n this.__groupedContainers = [];\n this._removeAll();\n },\n\n __moveNoGroupToLast: function() {\n const idx = this._getChildren().findIndex(grpContainer => grpContainer === this.__getGroupContainer(\"no-group\"));\n if (idx > -1) {\n this._getChildren().push(this._getChildren().splice(idx, 1)[0]);\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget used for displaying a Study Browser's context information\n *\n */\n\nqx.Class.define(\"osparc.dashboard.StudyBrowserHeader\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.HBox(10));\n\n this.set({\n minHeight: this.self().HEIGHT,\n maxHeight: this.self().HEIGHT,\n height: this.self().HEIGHT,\n alignY: \"middle\",\n });\n\n this.initCurrentWorkspaceId();\n this.initCurrentFolderId();\n\n osparc.store.Store.getInstance().addListener(\"changeStudyBrowserContext\", () => this.__buildLayout(), this);\n },\n\n events: {\n \"locationChanged\": \"qx.event.type.Data\",\n \"workspaceUpdated\": \"qx.event.type.Data\",\n \"deleteWorkspaceRequested\": \"qx.event.type.Data\",\n \"trashEmptied\": \"qx.event.type.Event\",\n },\n\n properties: {\n currentWorkspaceId: {\n check: \"Number\",\n nullable: true,\n init: null,\n event: \"changeCurrentWorkspaceId\",\n apply: \"__buildLayout\"\n },\n\n currentFolderId: {\n check: \"Number\",\n nullable: true,\n init: null,\n event: \"changeCurrentFolderId\",\n },\n\n accessRights: {\n check: \"Object\",\n nullable: false,\n init: {},\n event: \"changeAccessRights\",\n apply: \"__updateShareInfo\"\n },\n\n myAccessRights: {\n check: \"Object\",\n nullable: false,\n init: {},\n event: \"changeMyAccessRights\",\n apply: \"__applyMyAccessRights\"\n }\n },\n\n statics: {\n HEIGHT: 36,\n POS: {\n ICON: 0,\n TITLE: 1,\n BREADCRUMBS: 2,\n EDIT_BUTTON: 3,\n SHARE_LAYOUT: 4,\n ROLE_LAYOUT: 5,\n DESCRIPTION: 2,\n EMPTY_TRASH_BUTTON: 3,\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"icon\":\n control = new osparc.ui.basic.Thumbnail(null, this.self().HEIGHT, this.self().HEIGHT);\n control.getChildControl(\"image\").set({\n anonymous: true,\n alignY: \"middle\",\n alignX: \"center\",\n allowGrowX: true,\n allowGrowY: true,\n decorator: \"rounded\",\n });\n this._addAt(control, this.self().POS.ICON);\n break;\n case \"title\":\n control = new qx.ui.basic.Label().set({\n font: \"text-16\",\n alignY: \"middle\",\n });\n this._addAt(control, this.self().POS.TITLE);\n break;\n case \"breadcrumbs\":\n control = new osparc.dashboard.ContextBreadcrumbs();\n this.bind(\"currentWorkspaceId\", control, \"currentWorkspaceId\");\n this.bind(\"currentFolderId\", control, \"currentFolderId\");\n control.bind(\"currentWorkspaceId\", this, \"currentWorkspaceId\");\n control.bind(\"currentFolderId\", this, \"currentFolderId\");\n control.addListener(\"locationChanged\", e => {\n this.fireDataEvent(\"locationChanged\", e.getData())\n });\n this._addAt(control, this.self().POS.BREADCRUMBS);\n break;\n case \"edit-button\":\n control = new qx.ui.form.MenuButton().set({\n appearance: \"form-button-outlined\",\n backgroundColor: \"transparent\",\n padding: [0, 8],\n maxWidth: 22,\n maxHeight: 22,\n icon: \"@FontAwesome5Solid/ellipsis-v/8\",\n focusable: false,\n alignY: \"middle\",\n });\n // make it circular\n control.getContentElement().setStyles({\n \"border-radius\": `${22 / 2}px`\n });\n this._addAt(control, this.self().POS.EDIT_BUTTON);\n break;\n case \"share-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignY: \"middle\",\n })).set({\n marginLeft: 10,\n });\n this._addAt(control, this.self().POS.SHARE_LAYOUT);\n break;\n case \"share-text\": {\n control = new qx.ui.basic.Label().set({\n font: \"text-14\"\n });\n const layout = this.getChildControl(\"share-layout\");\n layout.addAt(control, 1);\n break;\n }\n case \"role-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(5).set({\n alignY: \"middle\",\n })).set({\n marginLeft: 10,\n });\n this._addAt(control, this.self().POS.ROLE_LAYOUT);\n break;\n case \"role-text\": {\n control = new qx.ui.basic.Label().set({\n font: \"text-14\"\n });\n const layout = this.getChildControl(\"role-layout\");\n layout.addAt(control, 0);\n break;\n }\n case \"role-icon\": {\n control = osparc.data.Roles.createRolesWorkspaceInfo(false);\n const layout = this.getChildControl(\"role-layout\");\n layout.addAt(control, 1);\n break;\n }\n case \"description\": {\n control = new qx.ui.basic.Label().set({\n font: \"text-14\",\n alignY: \"middle\",\n });\n this._addAt(control, this.self().POS.DESCRIPTION);\n break;\n }\n case \"empty-trash-button\": {\n control = new osparc.ui.form.FetchButton(this.tr(\"Delete all\"), \"@FontAwesome5Solid/trash/14\").set({\n appearance: \"danger-button\",\n allowGrowY: false,\n alignY: \"middle\",\n });\n control.addListener(\"execute\", () => {\n const win = this.__createConfirmEmptyTrashWindow();\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n control.setFetching(true);\n if (win.getConfirmed()) {\n osparc.data.Resources.fetch(\"trash\", \"delete\")\n .then(() => {\n this.fireEvent(\"trashEmptied\")\n })\n .finally(() => control.setFetching(false));\n } else {\n control.setFetching(false)\n }\n }, this);\n });\n this._addAt(control, this.self().POS.EMPTY_TRASH_BUTTON);\n break;\n }\n }\n\n return control || this.base(arguments, id);\n },\n\n __createConfirmEmptyTrashWindow: function() {\n const msg = this.tr(\"All items will be permanently deleted\");\n const confirmationWin = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Delete\"),\n confirmText: this.tr(\"Delete permanently\"),\n confirmAction: \"delete\"\n });\n return confirmationWin;\n },\n\n __titleTapped: function() {\n if (osparc.store.Store.getInstance().getStudyBrowserContext() === \"studiesAndFolders\") {\n const workspaceId = this.getCurrentWorkspaceId();\n const folderId = null;\n this.setCurrentFolderId(folderId);\n this.fireDataEvent(\"locationChanged\", {\n workspaceId,\n folderId,\n });\n }\n },\n\n __buildLayout: function() {\n this.getChildControl(\"icon\");\n const title = this.getChildControl(\"title\");\n\n const locationBreadcrumbs = this.getChildControl(\"breadcrumbs\").set({\n visibility: \"excluded\"\n });\n const editWorkspace = this.getChildControl(\"edit-button\").set({\n visibility: \"excluded\"\n });\n const shareWorkspaceLayout = this.getChildControl(\"share-layout\").set({\n visibility: \"excluded\"\n });\n const roleWorkspaceLayout = this.getChildControl(\"role-layout\").set({\n visibility: \"excluded\"\n });\n\n const description = this.getChildControl(\"description\").set({\n visibility: \"excluded\"\n });\n // the study browser will take care of making it visible\n this.getChildControl(\"empty-trash-button\").set({\n visibility: \"excluded\"\n });\n\n const currentContext = osparc.store.Store.getInstance().getStudyBrowserContext();\n switch (currentContext) {\n case \"studiesAndFolders\": {\n const workspaceId = this.getCurrentWorkspaceId();\n title.setCursor(\"pointer\");\n title.addListener(\"tap\", this.__titleTapped, this);\n locationBreadcrumbs.show();\n const workspace = osparc.store.Workspaces.getInstance().getWorkspace(workspaceId);\n if (workspace) {\n const thumbnail = workspace.getThumbnail();\n this.__setIcon(thumbnail ? thumbnail : osparc.store.Workspaces.iconPath(32));\n workspace.bind(\"name\", title, \"value\");\n editWorkspace.show();\n shareWorkspaceLayout.show();\n roleWorkspaceLayout.show();\n workspace.bind(\"accessRights\", this, \"accessRights\");\n workspace.bind(\"myAccessRights\", this, \"myAccessRights\");\n } else {\n this.__setIcon(\"@FontAwesome5Solid/home/30\");\n title.setValue(this.tr(\"My Workspace\"));\n }\n break;\n }\n case \"workspaces\":\n this.__setIcon(osparc.store.Workspaces.iconPath(32));\n title.setValue(this.tr(\"Shared Workspaces\"));\n break;\n case \"search\":\n this.__setIcon(\"@FontAwesome5Solid/search/24\");\n title.setValue(this.tr(\"Search results\"));\n break;\n case \"trash\": {\n this.__setIcon(\"@FontAwesome5Solid/trash/20\");\n title.setValue(this.tr(\"Recently Deleted\"));\n const trashDays = osparc.store.StaticInfo.getInstance().getTrashRetentionDays();\n description.set({\n value: this.tr(`Items here will be permanently deleted after ${trashDays} days.`),\n visibility: \"visible\",\n });\n break;\n }\n }\n },\n\n __setIcon: function(source) {\n // reset icon first\n const icon = this.getChildControl(\"icon\");\n const image = icon.getChildControl(\"image\");\n image.resetSource();\n icon.getContentElement().setStyles({\n \"background-image\": \"none\"\n });\n\n if (source.includes(\"@\")) {\n image.set({\n source\n });\n } else {\n icon.getContentElement().setStyles({\n \"background-image\": `url(${source})`,\n \"background-repeat\": \"no-repeat\",\n \"background-size\": \"cover\",\n \"background-position\": \"center center\",\n \"background-origin\": \"border-box\"\n });\n }\n },\n\n __getShareIcon: function() {\n // reset previous\n const layout = this.getChildControl(\"share-layout\");\n if (this.__shareIcon) {\n layout.remove(this.__shareIcon);\n }\n\n const shareIcon = this.__shareIcon = new qx.ui.basic.Image().set({\n alignY: \"middle\",\n allowGrowX: false,\n allowShrinkX: false\n });\n layout.addAt(shareIcon, 0);\n return shareIcon;\n },\n\n __updateShareInfo: function(accessRights) {\n const shareIcon = this.__getShareIcon();\n const shareText = this.getChildControl(\"share-text\");\n if (accessRights && Object.keys(accessRights).length) {\n osparc.dashboard.CardBase.populateShareIcon(shareIcon, accessRights);\n shareText.setValue(Object.keys(accessRights).length + \" members\");\n shareIcon.show();\n shareText.show();\n } else {\n shareIcon.exclude();\n shareText.exclude();\n }\n },\n\n __applyMyAccessRights: function(value) {\n const editButton = this.getChildControl(\"edit-button\");\n const roleText = this.getChildControl(\"role-text\");\n const roleIcon = this.getChildControl(\"role-icon\");\n const currentContext = osparc.store.Store.getInstance().getStudyBrowserContext();\n if (currentContext === \"studiesAndFolders\" && value && Object.keys(value).length) {\n editButton.setVisibility(value[\"delete\"] ? \"visible\" : \"excluded\");\n const menu = new qx.ui.menu.Menu().set({\n position: \"bottom-right\"\n });\n const edit = new qx.ui.menu.Button(this.tr(\"Edit...\"), \"@FontAwesome5Solid/pencil-alt/12\");\n edit.addListener(\"execute\", () => this.__editWorkspace(), this);\n menu.add(edit);\n const share = new qx.ui.menu.Button(this.tr(\"Share...\"), \"@FontAwesome5Solid/share-alt/12\");\n share.addListener(\"execute\", () => this.__openShareWith(), this);\n menu.add(share);\n editButton.setMenu(menu);\n const val = value[\"read\"] + value[\"write\"] + value[\"delete\"];\n roleText.setValue(osparc.data.Roles.WORKSPACE[val].label);\n roleText.show();\n roleIcon.show();\n } else {\n editButton.exclude();\n roleText.exclude();\n roleIcon.exclude();\n }\n },\n\n __editWorkspace: function() {\n const workspace = osparc.store.Workspaces.getInstance().getWorkspace(this.getCurrentWorkspaceId());\n const workspaceEditor = new osparc.editor.WorkspaceEditor(workspace);\n const title = this.tr(\"Edit Workspace\");\n const win = osparc.ui.window.Window.popUpInWindow(workspaceEditor, title, 300, 150);\n workspaceEditor.addListener(\"workspaceUpdated\", () => {\n win.close();\n this.__buildLayout();\n }, this);\n workspaceEditor.addListener(\"cancel\", () => win.close());\n },\n\n __openShareWith: function() {\n const workspace = osparc.store.Workspaces.getInstance().getWorkspace(this.getCurrentWorkspaceId());\n const permissionsView = new osparc.share.CollaboratorsWorkspace(workspace);\n const title = this.tr(\"Share Workspace\");\n const win = osparc.ui.window.Window.popUpInWindow(permissionsView, title, 500, 400);\n permissionsView.addListener(\"updateAccessRights\", () => {\n win.close();\n this.__updateShareInfo(workspace.getAccessRights());\n }, this);\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Julian Querido (jsaq007)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.SortedByMenuButton\", {\n extend: qx.ui.form.MenuButton,\n\n construct: function() {\n this.base(arguments, this.tr(\"Sort\"), \"@FontAwesome5Solid/chevron-down/10\");\n\n osparc.utils.Utils.setIdToWidget(this, \"sortedByButton\");\n\n this.set({\n iconPosition: \"left\",\n marginRight: 8\n });\n\n const sortedByMenu = new qx.ui.menu.Menu().set({\n font: \"text-14\"\n });\n this.setMenu(sortedByMenu);\n\n const options = this.self().getSortByOptions();\n\n options.forEach((option, idx) => {\n const btn = new qx.ui.menu.Button();\n btn.btnId = option.id;\n btn.set({\n label: option.label,\n icon: null\n });\n // Sort by last modified date\n if (idx === options.length -1) {\n this.__menuButton = btn;\n btn.setIcon(\"@FontAwesome5Solid/arrow-down/14\");\n }\n sortedByMenu.add(btn);\n\n btn.addListener(\"execute\", () => {\n this.__buttonExecuted(btn)\n });\n });\n\n this.addListener(\"changeSort\", e => {\n const sort = e.getData();\n this.__handelSortEvent(sort)\n }, this);\n },\n\n statics: {\n DefaultSorting: {\n field: \"last_change_date\",\n direction: \"desc\"\n },\n\n getSortByOptions: function() {\n return [{\n id: \"name\",\n label: qx.locale.Manager.tr(\"Name\")\n }, {\n id: \"prj_owner\",\n label: qx.locale.Manager.tr(\"Owner\")\n }, {\n id: \"creation_date\",\n label: qx.locale.Manager.tr(\"Created\"),\n }, {\n id: \"last_change_date\",\n label: qx.locale.Manager.tr(\"Modified\"),\n }];\n }\n },\n\n events: {\n \"sortByChanged\": \"qx.event.type.Data\"\n },\n\n properties: {\n sort: {\n check: \"Object\",\n init: {\n field: \"last_change_date\",\n direction: true\n },\n nullable: false,\n event: \"changeSort\",\n apply: \"__applySort\"\n }\n },\n\n members: {\n __menuButton: null,\n __buttonExecuted: function(btn) {\n if (this.__menuButton) {\n this.__menuButton.setIcon(null);\n }\n this.__menuButton = btn;\n this.set({\n label: btn.getLabel(),\n icon: \"@FontAwesome5Solid/chevron-down/10\"\n });\n\n const data = {\n \"id\": btn.btnId,\n };\n this.__handelSort(data.id);\n },\n\n __handelSort: function(field) {\n if (field === this.getSort().field) {\n const { direction } = this.getSort();\n this.setSort({\n field,\n direction: !direction\n })\n return;\n }\n this.setSort({\n field,\n direction: true\n })\n },\n\n __handelSortEvent: function({field, direction}) {\n this.__menuButton.setIcon(direction ? \"@FontAwesome5Solid/arrow-down/14\" : \"@FontAwesome5Solid/arrow-up/14\")\n this.setIcon(direction ? \"@FontAwesome5Solid/arrow-down/14\" : \"@FontAwesome5Solid/arrow-up/14\")\n const sort = {\n field: field,\n direction: direction ? \"desc\" : \"asc\"\n };\n this.fireDataEvent(\"sortByChanged\", sort);\n },\n\n __applySort: function(value, old) {\n\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Study card to show that more studies are being fetched\n */\n\nqx.Class.define(\"osparc.dashboard.GridButtonLoadMore\", {\n extend: osparc.dashboard.GridButtonBase,\n\n construct: function() {\n this.base(arguments);\n\n this.setPriority(osparc.dashboard.CardBase.CARD_PRIORITY.LOADER);\n\n this._applyFetching(false);\n\n // A minimalistic spinning wheel\n this.getChildControl(\"header\").exclude();\n this.getChildControl(\"footer\").exclude();\n this.set({\n backgroundColor: \"transparent\"\n });\n },\n\n members: {\n _applyFetching: function(value) {\n this.setThumbnail(osparc.dashboard.CardBase.LOADING_ICON);\n if (value) {\n this.getChildControl(\"thumbnail\").getChildControl(\"image\").getContentElement()\n .addClass(\"rotate\");\n } else {\n this.getChildControl(\"thumbnail\").getChildControl(\"image\").getContentElement()\n .removeClass(\"rotate\");\n }\n this.setEnabled(!value);\n },\n\n _shouldApplyFilter: function() {\n return false;\n },\n\n _shouldReactToFilter: function() {\n return false;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget used mainly by StudyBrowser for displaying Studies\n *\n * It consists of a thumbnail and creator and last change as caption\n */\n\nqx.Class.define(\"osparc.dashboard.ListButtonLoadMore\", {\n extend: osparc.dashboard.ListButtonBase,\n\n construct: function() {\n this.base(arguments);\n\n this.setPriority(osparc.dashboard.CardBase.CARD_PRIORITY.LOADER);\n\n this._applyFetching(false);\n\n this.set({\n backgroundColor: \"transparent\"\n });\n },\n\n members: {\n _applyFetching: function(value) {\n this.setIcon(osparc.dashboard.CardBase.LOADING_ICON);\n if (value) {\n this.getChildControl(\"icon\").getChildControl(\"image\").getContentElement()\n .addClass(\"rotate\");\n } else {\n this.getChildControl(\"icon\").getChildControl(\"image\").getContentElement()\n .removeClass(\"rotate\");\n }\n this.setEnabled(!value);\n },\n\n _shouldApplyFilter: function() {\n return false;\n },\n\n _shouldReactToFilter: function() {\n return false;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * @ignore(Headers)\n */\n\nqx.Class.define(\"osparc.study.Import\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(5));\n\n // WEBSERVER_MAX_UPLOAD_FILE_SIZE_GB\n const subtitle = new qx.ui.basic.Label(this.tr(\"Max file size 10GB\")).set({\n font: \"text-12\"\n });\n this._add(subtitle);\n\n const extensions = [\"osparc\"];\n const multiple = false;\n const fileInput = new osparc.ui.form.FileInput(extensions, multiple);\n fileInput.getSelectedFilesLabel().setMaxWidth(250);\n this._add(fileInput);\n\n const importBtn = new qx.ui.form.Button(this.tr(\"Import\")).set({\n alignX: \"right\",\n allowGrowX: false\n });\n importBtn.addListener(\"execute\", () => {\n const file = fileInput.getFile();\n if (file) {\n const size = file.size;\n const maxSize = 10 * 1000 * 1000 * 1000; // 10 GB\n if (size > maxSize) {\n osparc.FlashMessenger.logAs(`The file is too big. Maximum size is ${maxSize}MB. Please provide with a smaller file or a repository URL.`, \"ERROR\");\n return;\n }\n this.fireDataEvent(\"fileReady\", file);\n }\n }, this);\n this._add(importBtn);\n },\n\n events: {\n \"fileReady\": \"qx.event.type.Data\"\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Window that shows a text field with the input item label\n * that can be used for renaming it\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let itemRenamer = new osparc.widget.Renamer(selectedItem.getLabel());\n * itemRenamer.addListener(\"labelChanged\", e => {\n * const data = e.getData();\n * const newLabel = data.newLabel;\n * selectedItem.setLabel(newLabel);\n * }, this);\n * itemRenamer.open();\n *
\n */\n\nqx.Class.define(\"osparc.widget.Renamer\", {\n extend: osparc.ui.window.Window,\n\n construct: function(oldLabel = \"\", subtitle = \"\", winTitle) {\n this.base(arguments, winTitle || this.tr(\"Rename\"));\n\n const maxWidth = 350;\n const minWidth = 150;\n const labelWidth = oldLabel ? Math.min(Math.max(parseInt(oldLabel.length*4), minWidth), maxWidth) : minWidth;\n this.set({\n layout: new qx.ui.layout.VBox(5),\n autoDestroy: true,\n padding: 2,\n modal: true,\n showMaximize: false,\n showMinimize: false,\n width: labelWidth,\n clickAwayClose: true\n });\n\n this.__populateNodeLabelEditor(oldLabel, labelWidth);\n this.__addSubtitle(subtitle);\n this.__attachEventHandlers();\n },\n\n events: {\n \"labelChanged\": \"qx.event.type.Data\"\n },\n\n members: {\n __save: null,\n\n __populateNodeLabelEditor: function(oldLabel, labelWidth) {\n const nodeLabelEditor = new qx.ui.container.Composite(new qx.ui.layout.HBox(10));\n\n // Create a text field in which to edit the data\n const labelEditor = new qx.ui.form.TextField(oldLabel).set({\n placeholder: this.tr(\"Type text\"),\n allowGrowX: true,\n minWidth: labelWidth\n });\n nodeLabelEditor.add(labelEditor, {\n flex: 1\n });\n\n this.addListener(\"appear\", e => {\n labelEditor.focus();\n if (labelEditor.getValue()) {\n labelEditor.setTextSelection(0, labelEditor.getValue().length);\n }\n }, this);\n\n // Create the \"Save\" button to close the cell editor\n const save = this.__save = new qx.ui.form.Button(this.tr(\"Save\"));\n save.set({\n appearance: \"form-button\",\n padding: [1, 5]\n });\n save.addListener(\"execute\", e => {\n const newLabel = labelEditor.getValue();\n const data = {\n newLabel\n };\n this.fireDataEvent(\"labelChanged\", data);\n }, this);\n nodeLabelEditor.add(save);\n\n this.add(nodeLabelEditor);\n },\n\n __addSubtitle: function(subtitleLabel) {\n if (subtitleLabel) {\n const subtitle = new qx.ui.basic.Label(subtitleLabel).set({\n font: \"text-12\"\n });\n this.add(subtitle);\n }\n },\n\n __attachEventHandlers: function() {\n let command = new qx.ui.command.Command(\"Enter\");\n command.addListener(\"execute\", e => {\n this.__save.execute();\n command.dispose();\n command = null;\n });\n\n let commandEsc = new qx.ui.command.Command(\"Esc\");\n commandEsc.addListener(\"execute\", e => {\n this.close();\n commandEsc.dispose();\n commandEsc = null;\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.editor.ThumbnailSuggestions\", {\n extend: osparc.widget.SlideBar,\n\n construct: function(study) {\n this.base(arguments);\n\n this.set({\n alignX: \"center\",\n height: 118,\n maxHeight: 118\n });\n this.setButtonsWidth(30);\n\n this.__thumbnails = [];\n\n if (study) {\n this.setStudy(study);\n }\n },\n\n events: {\n \"thumbnailAdded\": \"qx.event.type.Event\",\n \"thumbnailTapped\": \"qx.event.type.Data\"\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n nullable: false,\n init: null,\n apply: \"__applyStudyData\"\n }\n },\n\n statics: {\n defaultTemplates: [\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-01.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-02.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-03.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-04.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-05.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-06.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-07.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-08.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-09.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-10.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-11.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-12.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-13.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-14.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-15.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-01-b.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-02-b.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-03-b.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-04-b.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-05-b.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-06-b.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-07-b.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-08-b.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-09-b.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-10-b.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-11-b.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-12-b.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-13-b.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-14-b.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/S4L/Thumbnail-15-b.png\"\n ],\n osparcTemplates: [\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/oSparc/Thumbnail-01.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/oSparc/Thumbnail-02.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/oSparc/Thumbnail-03.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/oSparc/Thumbnail-04.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/oSparc/Thumbnail-05.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/oSparc/Thumbnail-06.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/oSparc/Thumbnail-07.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/oSparc/Thumbnail-08.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/oSparc/Thumbnail-09.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/oSparc/Thumbnail-10.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/oSparc/Thumbnail-11.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/oSparc/Thumbnail-12.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/oSparc/Thumbnail-13.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/oSparc/Thumbnail-14.png\"\n ],\n tipTemplates: [\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/TIP/Thumbnail-01.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/TIP/Thumbnail-02.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/TIP/Thumbnail-03.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/TIP/Thumbnail-04.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/TIP/Thumbnail-05.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/TIP/Thumbnail-06.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/TIP/Thumbnail-07.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/TIP/Thumbnail-08.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/TIP/Thumbnail-09.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/TIP/Thumbnail-10.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/TIP/Thumbnail-11.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/TIP/Thumbnail-12.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/TIP/Thumbnail-13.png\",\n \"https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/project_thumbnails/TIP/Thumbnail-14.png\"\n ],\n /**\n * @param study {osparc.data.model.Study|Object} Study or Serialized Study Object\n */\n extractThumbnailSuggestions: function(study) {\n const queryParams = [];\n const addToQueryParams = (key, version) => {\n const found = queryParams.find(p => p.key === key && p.version === version);\n if (!found) {\n queryParams.push({\n key,\n version\n });\n }\n };\n if (study instanceof osparc.data.model.Study) {\n const wb = study.getWorkbench();\n const nodes = wb.getWorkbenchInitData() ? wb.getWorkbenchInitData() : wb.getNodes();\n Object.values(nodes).forEach(node => addToQueryParams(node.getKey(), node.getVersion()));\n } else {\n const nodes = study[\"workbench\"];\n Object.values(nodes).forEach(node => addToQueryParams(node[\"key\"], node[\"version\"]));\n }\n\n const promises = [];\n queryParams.forEach(qP => promises.push(osparc.store.Services.getService(qP.key, qP.version)));\n return Promise.all(promises)\n .then(values => {\n const suggestions = new Set([]);\n values.forEach(metadata => {\n if (metadata && metadata[\"thumbnail\"] && !osparc.data.model.Node.isFrontend(metadata)) {\n suggestions.add(metadata[\"thumbnail\"]);\n }\n });\n const defaultThumbnails = this.self().setThumbnailTemplates();\n const amendedArray = [...suggestions, ...defaultThumbnails]\n return Array.from(amendedArray);\n });\n },\n setThumbnailTemplates: function() {\n switch (osparc.product.Utils.getProductName()) {\n case \"osparc\":\n return this.self().osparcTemplates;\n case \"tis\":\n case \"tiplite\":\n return this.self().tipTemplates;\n default:\n return this.self().defaultTemplates.sort();\n }\n }\n },\n\n members: {\n __thumbnails: null,\n\n __addThumbnail: function(thumbnailData) {\n this.__thumbnails.push(thumbnailData);\n this.fireEvent(\"thumbnailAdded\");\n },\n\n __applyStudyData: function(study) {\n this.self().extractThumbnailSuggestions(study)\n .then(suggestions => {\n suggestions.forEach(suggestion => {\n this.__addThumbnail({\n type: \"serviceImage\",\n thumbnailUrl: suggestion,\n fileUrl: suggestion\n });\n })\n this.__reloadSuggestions();\n });\n },\n\n addPreviewsToSuggestions: function(previewsPerNodes) {\n previewsPerNodes.forEach(previewsPerNode => {\n const previews = previewsPerNode[\"screenshots\"];\n if (previews && previews.length) {\n previews.forEach(preview => {\n if (preview[\"mimetype\"]) {\n this.__addThumbnail({\n type: preview[\"mimetype\"],\n thumbnailUrl: preview[\"thumbnail_url\"],\n fileUrl: preview[\"file_url\"]\n });\n }\n });\n this.__reloadSuggestions();\n }\n });\n },\n\n __reloadSuggestions: function() {\n this.setSuggestions(this.__thumbnails);\n },\n\n __thumbnailTapped: function(thumbnail) {\n // reset decoration\n const unselectedBorderColor = qx.theme.manager.Color.getInstance().resolve(\"text\");\n const unselectedBGColor = qx.theme.manager.Color.getInstance().resolve(\"fab-background\");\n this.getChildren().forEach(thumbnailImg => {\n osparc.utils.Utils.updateBorderColor(thumbnailImg, unselectedBorderColor);\n osparc.utils.Utils.addBackground(thumbnailImg, unselectedBGColor);\n });\n const selectedBorderColor = qx.theme.manager.Color.getInstance().resolve(\"strong-main\");\n const selectedBGColor = qx.theme.manager.Color.getInstance().resolve(\"background-selected\");\n osparc.utils.Utils.updateBorderColor(thumbnail, selectedBorderColor);\n osparc.utils.Utils.addBackground(thumbnail, selectedBGColor);\n this.fireDataEvent(\"thumbnailTapped\", {\n type: thumbnail.thumbnailType || \"templateThumbnail\",\n source: thumbnail.thumbnailFileUrl || thumbnail.getSource()\n });\n },\n\n setSuggestions: function(suggestions) {\n this.removeAll();\n suggestions.forEach(suggestion => {\n const maxHeight = this.getMaxHeight() - 21;\n const thumbnail = new osparc.ui.basic.Thumbnail(suggestion.thumbnailUrl || suggestion, maxHeight, null);\n thumbnail.set({\n minWidth: 97,\n margin: 0,\n decorator: \"thumbnail\"\n });\n thumbnail.thumbnailType = suggestion.type || \"templateThumbnail\";\n thumbnail.thumbnailFileUrl = suggestion.fileUrl || suggestion;\n thumbnail.addListener(\"mouseover\", () => thumbnail.set({decorator: \"thumbnail-selected\"}), this);\n thumbnail.addListener(\"mouseout\", () => thumbnail.set({decorator: \"thumbnail\"}), this);\n thumbnail.addListener(\"tap\", () => this.__thumbnailTapped(thumbnail), this);\n this.add(thumbnail);\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.editor.ThumbnailEditor\", {\n extend: qx.ui.core.Widget,\n\n construct: function(url, suggestions = []) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(8));\n\n this.getChildControl(\"url-field\");\n this.getChildControl(\"scroll-thumbnails\");\n const suggestionsLayout = this.getChildControl(\"thumbnails-layout\");\n suggestionsLayout.exclude();\n\n this.getChildControl(\"cancel-btn\");\n this.getChildControl(\"save-btn\");\n\n if (url) {\n this.setUrl(url);\n }\n if (suggestions) {\n this.setSuggestions(suggestions);\n }\n },\n\n properties: {\n url: {\n check: \"String\",\n init: \"\",\n nullable: false,\n event: \"changeUrl\"\n },\n\n suggestions: {\n check: \"Array\",\n init: [],\n nullable: true,\n event: \"changeSuggestions\",\n apply: \"__applySuggestions\"\n }\n },\n\n events: {\n \"updateThumbnail\": \"qx.event.type.Data\",\n \"cancel\": \"qx.event.type.Event\"\n },\n\n statics: {\n sanitizeUrl: function(dirty) {\n const clean = osparc.wrapper.DOMPurify.getInstance().sanitize(dirty);\n if ((dirty && dirty !== clean) || (clean !== \"\" && !osparc.utils.Utils.isValidHttpUrl(clean))) {\n osparc.FlashMessenger.getInstance().logAs(qx.locale.Manager.tr(\"Error checking link\"), \"WARNING\");\n return null;\n }\n return clean;\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"url-field\":\n control = new qx.ui.form.TextField().set({\n appearance: \"form-input\",\n placeholder: this.tr(\"url\")\n });\n this.bind(\"url\", control, \"value\");\n this._add(control);\n break;\n case \"thumbnails-layout\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n const label = new qx.ui.basic.Label(this.tr(\"or pick one from the list below:\"));\n control.add(label);\n this._add(control, {\n flex: 1\n });\n break;\n }\n case \"scroll-thumbnails\": {\n control = new osparc.editor.ThumbnailSuggestions();\n control.set({\n padding: 2,\n backgroundColor: \"transparent\"\n })\n const thumbnailsLayout = this.getChildControl(\"thumbnails-layout\");\n thumbnailsLayout.add(control);\n break;\n }\n case \"buttons-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignX: \"right\"\n }));\n this._add(control);\n break;\n case \"cancel-btn\": {\n const buttons = this.getChildControl(\"buttons-layout\");\n control = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"form-button-text\"\n });\n control.addListener(\"execute\", () => this.fireEvent(\"cancel\"), this);\n buttons.add(control);\n break;\n }\n case \"save-btn\": {\n const buttons = this.getChildControl(\"buttons-layout\");\n control = new qx.ui.form.Button(this.tr(\"Save\")).set({\n appearance: \"form-button\"\n });\n control.addListener(\"execute\", () => {\n const urlField = this.getChildControl(\"url-field\");\n const validUrl = this.self().sanitizeUrl(urlField.getValue());\n if (validUrl) {\n this.fireDataEvent(\"updateThumbnail\", validUrl);\n }\n }, this);\n buttons.add(control);\n break;\n }\n }\n\n return control || this.base(arguments, id);\n },\n\n __applySuggestions: function(suggestions) {\n const thumbnailSuggestions = this.getChildControl(\"scroll-thumbnails\");\n thumbnailSuggestions.setSuggestions(suggestions);\n thumbnailSuggestions.addListener(\"thumbnailTapped\", e => {\n const thumbnailData = e.getData();\n this.setUrl(thumbnailData.source);\n });\n this.getChildControl(\"thumbnails-layout\").setVisibility(suggestions.length ? \"visible\" : \"excluded\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.GridButtonPlaceholder\", {\n extend: osparc.dashboard.GridButtonBase,\n\n construct: function() {\n this.base(arguments);\n\n this.setPriority(osparc.dashboard.CardBase.CARD_PRIORITY.PLACEHOLDER);\n\n this.set({\n cursor: \"not-allowed\"\n });\n\n this.getChildControl(\"footer\").exclude();\n },\n\n properties: {\n task: {\n check: \"osparc.data.PollTask\",\n init: null,\n nullable: true,\n apply: \"__applyTask\"\n }\n },\n\n statics: {\n POS: {\n STATE: {\n row: 5,\n column: 0,\n rowSpan: 1,\n colSpan: 4\n },\n PROGRESS: {\n row: 6,\n column: 0,\n rowSpan: 1,\n colSpan: 4\n }\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n let layout;\n switch (id) {\n case \"state-label\": {\n control = new qx.ui.basic.Label().set({\n textColor: \"contrasted-text-dark\",\n allowGrowX: true,\n allowShrinkX: true,\n rich: true,\n anonymous: true,\n font: \"text-12\",\n allowGrowY: true,\n wrap: true\n });\n layout = this.getChildControl(\"body\");\n layout.addAt(control, 0);\n break;\n }\n case \"progress-bar\": {\n control = new qx.ui.indicator.ProgressBar().set({\n maxHeight: 6,\n alignX: \"center\",\n alignY: \"middle\",\n allowGrowY: false,\n allowGrowX: true,\n margin: 0,\n });\n control.getChildControl(\"progress\").set({\n backgroundColor: \"strong-main\"\n });\n layout = this.getChildControl(\"header\");\n layout.add(control, {\n column: 1,\n row: 2,\n });\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n buildLayout: function(titleText, icon, stateText, showProgressBar = false) {\n const title = this.getChildControl(\"title\");\n if (titleText) {\n title.setValue(titleText);\n }\n if (icon) {\n this.setThumbnail(icon);\n }\n\n const stateLabel = this.getChildControl(\"state-label\");\n if (stateText) {\n stateLabel.setValue(stateText);\n }\n\n this.getChildControl(\"progress-bar\").set({\n visibility: showProgressBar ? \"visible\" : \"excluded\"\n });\n },\n\n getBlocked: function() {\n return true;\n },\n\n _shouldApplyFilter: function(data) {\n if (data.text) {\n const checks = [\n this.getChildControl(\"title\").getValue().toString()\n ];\n if (checks.filter(label => label.toLowerCase().trim().includes(data.text)).length === 0) {\n return true;\n }\n }\n return false;\n },\n\n __applyTask: function(task) {\n task.addListener(\"updateReceived\", e => {\n const updateData = e.getData();\n if (\"task_progress\" in updateData) {\n const progress = updateData[\"task_progress\"];\n this.getChildControl(\"progress-bar\").set({\n value: progress[\"percent\"]*100\n });\n this.getChildControl(\"state-label\").set({\n value: progress[\"message\"]\n });\n }\n }, this);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.ListButtonPlaceholder\", {\n extend: osparc.dashboard.ListButtonBase,\n\n construct: function() {\n this.base(arguments);\n\n this.setPriority(osparc.dashboard.CardBase.CARD_PRIORITY.PLACEHOLDER);\n\n this.__layout = this.getChildControl(\"progress-layout\")\n this.set({\n appearance: \"pb-new\",\n cursor: \"not-allowed\",\n allowGrowX: true\n });\n },\n\n properties: {\n task: {\n check: \"osparc.data.PollTask\",\n init: null,\n nullable: true,\n apply: \"__applyTask\"\n }\n },\n\n members: {\n __layout: null,\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"progress-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox().set({\n alignX: \"center\",\n alignY: \"middle\"\n }));\n this._add(control, {\n row: 0,\n column: osparc.dashboard.ListButtonBase.POS.PROGRESS\n });\n break\n case \"state-label\":\n control = new qx.ui.basic.Label().set({\n alignX: \"left\",\n alignY: \"middle\",\n marginBottom: 5\n });\n this.__layout.addAt(control, 0);\n break;\n case \"progress-bar\":\n control = new qx.ui.indicator.ProgressBar().set({\n maxHeight: 6,\n minWidth: 420,\n alignX: \"center\",\n alignY: \"middle\",\n allowGrowY: false,\n allowGrowX: true,\n margin: 0\n });\n control.getChildControl(\"progress\").set({\n backgroundColor: \"strong-main\"\n });\n this.__layout.addAt(control, 1);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n buildLayout: function(titleText, icon, stateText, showProgressBar = false) {\n const title = this.getChildControl(\"title\");\n if (titleText) {\n title.setValue(titleText);\n }\n if (icon) {\n this.setIcon(icon);\n }\n\n const stateLabel = this.getChildControl(\"state-label\");\n if (stateText) {\n stateLabel.setValue(stateText);\n }\n\n this.getChildControl(\"progress-bar\").set({\n visibility: showProgressBar ? \"visible\" : \"excluded\"\n });\n },\n\n getBlocked: function() {\n return true;\n },\n\n _shouldApplyFilter: function(data) {\n if (data.text) {\n const checks = [\n this.getChildControl(\"title\").getValue().toString()\n ];\n if (checks.filter(label => label.toLowerCase().trim().includes(data.text)).length == 0) {\n return true;\n }\n }\n return false;\n },\n\n __applyTask: function(task) {\n task.addListener(\"updateReceived\", e => {\n const updateData = e.getData();\n if (\"task_progress\" in updateData) {\n const progress = updateData[\"task_progress\"];\n this.getChildControl(\"progress-bar\").set({\n value: progress[\"percent\"]*100\n });\n this.getChildControl(\"state-label\").set({\n value: progress[\"message\"]\n });\n }\n }, this);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.task.Duplicate\", {\n extend: osparc.task.TaskUI,\n\n construct: function(studyName) {\n this.__studyName = studyName;\n\n this.base(arguments);\n },\n\n statics: {\n ICON: \"@FontAwesome5Solid/copy\"\n },\n\n members: {\n __studyName: null,\n\n // overridden\n _buildLayout: function() {\n this.setIcon(this.self().ICON+\"/14\");\n this.getChildControl(\"title\");\n this.getChildControl(\"subtitle\");\n this.getChildControl(\"stop\");\n\n this.setTitle(this.tr(\"Duplicating:\"));\n this.setSubtitle(this.__studyName);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.task.Import\", {\n extend: osparc.task.TaskUI,\n\n statics: {\n ICON: \"@FontAwesome5Solid/cloud-upload-alt\"\n },\n\n members: {\n // overridden\n _buildLayout: function() {\n this.setIcon(this.self().ICON+\"/14\");\n this.getChildControl(\"title\");\n this.getChildControl(\"subtitle\");\n this.getChildControl(\"stop\");\n\n this.setTitle(this.tr(\"Importing Study\"));\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget that shows a date followed by \"by (user_icon)\"\n */\nqx.Class.define(\"osparc.ui.basic.DateAndBy\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.HBox(5));\n\n this.set({\n alignY: \"middle\",\n });\n },\n\n properties: {\n date: {\n check: \"Date\",\n nullable: true,\n apply: \"__applyDate\",\n },\n\n groupId: {\n check: \"Number\",\n nullable: true,\n apply: \"__applyGroupId\",\n },\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"date-text\":\n control = new qx.ui.basic.Label().set({\n textColor: \"contrasted-text-dark\",\n alignY: \"middle\",\n rich: true,\n font: \"text-12\",\n allowGrowY: false\n });\n this._addAt(control, 0);\n break;\n case \"last-touching\":\n control = new qx.ui.basic.Atom().set({\n alignY: \"middle\",\n allowGrowX: false,\n allowShrinkX: false,\n label: \"by\",\n font: \"text-12\",\n icon: osparc.dashboard.CardBase.SHARED_USER,\n iconPosition: \"right\",\n });\n this._addAt(control, 1);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __applyDate: function(value) {\n if (value) {\n const label = this.getChildControl(\"date-text\");\n const today = new Date();\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n if (today.toDateString() === value.toDateString()) {\n label.setValue(osparc.utils.Utils.formatDateAndTime(value)); // show date and time\n } else if (yesterday.toDateString() === value.toDateString()) {\n label.setValue(osparc.utils.Utils.formatDateAndTime(value)); // show date and time\n } else {\n label.setValue(osparc.utils.Utils.formatDate(value)); // show date only\n }\n }\n },\n\n __applyGroupId: function(groupId) {\n if (groupId) {\n const atom = this.getChildControl(\"last-touching\");\n const myGroupId = osparc.auth.Data.getInstance().getGroupId();\n if (groupId === myGroupId) {\n atom.set({\n label: \"by me\",\n icon: null,\n })\n } else {\n atom.setLabel(\"by \");\n osparc.dashboard.CardBase.addHintFromGids(atom, [groupId]);\n }\n }\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.study.StudyPricingUnits\", {\n extend: qx.ui.container.Composite,\n\n construct: function(studyData) {\n this.base(arguments);\n\n this.set({\n layout: new qx.ui.layout.VBox(5)\n });\n\n this.__nodePricingUnits = [];\n\n if (studyData) {\n this.setStudyData(studyData);\n }\n },\n\n events: {\n \"loadingUnits\": \"qx.event.type.Event\",\n \"unitsReady\": \"qx.event.type.Event\"\n },\n\n statics: {\n includeInList: function(nodeData) {\n return !osparc.data.model.Node.isFrontend(nodeData);\n },\n },\n\n members: {\n __studyData: null,\n __nodePricingUnits: null,\n\n setStudyData: function(studyData) {\n this.__studyData = studyData;\n this.__showPricingUnits();\n },\n\n __showPricingUnits: function() {\n const unitsLoading = () => this.fireEvent(\"loadingUnits\");\n const unitsAdded = () => this.fireEvent(\"unitsReady\");\n unitsLoading();\n this._removeAll();\n const promises = [];\n if (\"workbench\" in this.__studyData) {\n const workbench = this.__studyData[\"workbench\"];\n Object.keys(workbench).forEach(nodeId => {\n const nodeData = workbench[nodeId];\n if (this.self().includeInList(nodeData)) {\n const nodePricingUnits = new osparc.study.NodePricingUnits(this.__studyData[\"uuid\"], nodeId, nodeData);\n this.__nodePricingUnits.push(nodePricingUnits);\n this._add(nodePricingUnits);\n promises.push(nodePricingUnits.showPricingUnits());\n }\n });\n }\n Promise.all(promises)\n .then(() => unitsAdded());\n },\n\n getNodePricingUnits: function() {\n return this.__nodePricingUnits;\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.study.NodePricingUnits\", {\n extend: qx.ui.container.Composite,\n\n /**\n * @param studyId {String}\n * @param nodeId {String}\n * @param node {osparc.data.model.Node || Object}\n */\n construct: function(studyId, nodeId, node) {\n this.base(arguments);\n\n this.set({\n layout: new qx.ui.layout.VBox()\n });\n\n this.set({\n studyId,\n nodeId,\n });\n if (node instanceof osparc.data.model.Node) {\n this.__nodeKey = node.getKey();\n this.__nodeVersion = node.getVersion();\n this.__nodeLabel = node.getLabel();\n } else {\n this.__nodeKey = node[\"key\"];\n this.__nodeVersion = node[\"version\"];\n this.__nodeLabel = node[\"label\"];\n }\n },\n\n properties: {\n studyId: {\n check: \"String\",\n init: null,\n nullable: false,\n },\n\n nodeId: {\n check: \"String\",\n init: null,\n nullable: false,\n },\n\n pricingPlanId: {\n check: \"Number\",\n init: null,\n nullable: false,\n },\n\n patchNode: {\n check: \"Boolean\",\n init: true,\n nullable: false,\n event: \"changePatchNode\",\n },\n },\n\n statics: {\n patchPricingUnitSelection: function(studyId, nodeId, planId, selectedUnitId) {\n const params = {\n url: {\n studyId,\n nodeId,\n pricingPlanId: planId,\n pricingUnitId: selectedUnitId\n }\n };\n return osparc.data.Resources.fetch(\"studies\", \"putPricingUnit\", params);\n }\n },\n\n members: {\n __nodeKey: null,\n __nodeVersion: null,\n __nodeLabel: null,\n __pricingUnits: null,\n\n showPricingUnits: function(inGroupBox = true) {\n return new Promise(resolve => {\n const nodeKey = this.__nodeKey;\n const nodeVersion = this.__nodeVersion;\n const nodeLabel = this.__nodeLabel;\n const studyId = this.getStudyId();\n const nodeId = this.getNodeId();\n\n osparc.store.Pricing.getInstance().fetchPricingPlansService(nodeKey, nodeVersion)\n .then(pricingPlanData => {\n if (pricingPlanData) {\n const unitParams = {\n url: {\n studyId,\n nodeId\n }\n };\n this.set({\n pricingPlanId: pricingPlanData[\"pricingPlanId\"]\n });\n osparc.data.Resources.fetch(\"studies\", \"getPricingUnit\", unitParams)\n .then(preselectedPricingUnit => {\n if (pricingPlanData && \"pricingUnits\" in pricingPlanData && pricingPlanData[\"pricingUnits\"].length) {\n const pricingUnitsData = pricingPlanData[\"pricingUnits\"];\n const pricingUnitTiers = this.__pricingUnits = new osparc.study.PricingUnitTiers(pricingUnitsData, preselectedPricingUnit);\n if (inGroupBox) {\n const pricingUnitsLayout = osparc.study.StudyOptions.createGroupBox(nodeLabel);\n pricingUnitsLayout.add(pricingUnitTiers);\n this._add(pricingUnitsLayout);\n } else {\n this._add(pricingUnitTiers);\n }\n pricingUnitTiers.addListener(\"selectPricingUnitRequested\", e => {\n const selectedPricingUnitId = e.getData();\n if (this.isPatchNode()) {\n pricingUnitTiers.setEnabled(false);\n const pricingPlanId = this.getPricingPlanId();\n this.self().patchPricingUnitSelection(studyId, nodeId, pricingPlanId, selectedPricingUnitId)\n .then(() => pricingUnitTiers.setSelectedUnitId(selectedPricingUnitId))\n .catch(err => {\n const msg = err.message || this.tr(\"Cannot change Tier\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n })\n .finally(() => pricingUnitTiers.setEnabled(true));\n }\n });\n }\n })\n .finally(() => resolve());\n }\n });\n });\n },\n\n getPricingUnits: function() {\n return this.__pricingUnits;\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.task.ToTemplate\", {\n extend: osparc.task.TaskUI,\n\n construct: function(studyName) {\n this.__studyName = studyName;\n\n this.base(arguments);\n },\n\n statics: {\n ICON: \"@FontAwesome5Solid/copy\"\n },\n\n members: {\n __studyName: null,\n\n // overridden\n _buildLayout: function() {\n this.setIcon(this.self().ICON+\"/14\");\n this.getChildControl(\"title\");\n this.getChildControl(\"subtitle\");\n this.getChildControl(\"stop\");\n\n this.setTitle(this.tr(\"Publishing:\"));\n this.setSubtitle(this.__studyName);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.service.SortServicesButtons\", {\n extend: qx.ui.form.MenuButton,\n\n construct: function() {\n this.base(arguments, this.tr(\"Sort\"), \"@FontAwesome5Solid/chevron-down/10\");\n\n this.set({\n iconPosition: \"left\",\n marginRight: 8\n });\n\n const sortByMenu = new qx.ui.menu.Menu().set({\n font: \"text-14\"\n });\n this.setMenu(sortByMenu);\n\n const hitsDesc = new qx.ui.menu.Button().set({\n label: this.tr(\"Hits\"),\n icon: \"@FontAwesome5Solid/sort-numeric-down/14\"\n });\n hitsDesc[\"sortBy\"] = \"hits\";\n hitsDesc[\"orderBy\"] = \"down\";\n const nameAsc = new qx.ui.menu.Button().set({\n label: this.tr(\"Name Asc\"),\n icon: \"@FontAwesome5Solid/sort-alpha-down/14\"\n });\n nameAsc[\"sortBy\"] = \"name\";\n nameAsc[\"orderBy\"] = \"down\";\n const nameDesc = new qx.ui.menu.Button().set({\n label: this.tr(\"Name Desc\"),\n icon: \"@FontAwesome5Solid/sort-alpha-up/14\"\n });\n nameDesc[\"sortBy\"] = \"name\";\n nameDesc[\"orderBy\"] = \"up\";\n\n [\n hitsDesc,\n nameAsc,\n nameDesc\n ].forEach((btn, idx) => {\n sortByMenu.add(btn);\n\n btn.addListener(\"execute\", () => this.__buttonExecuted(btn));\n\n if (idx === 0) {\n btn.execute();\n }\n });\n },\n\n events: {\n \"sortBy\": \"qx.event.type.Data\"\n },\n\n statics: {\n DefaultSorting: {\n \"sort\": \"hits\",\n \"order\": \"down\"\n }\n },\n\n members: {\n __buttonExecuted: function(btn) {\n this.set({\n label: btn.getLabel(),\n icon: btn.getIcon()\n });\n\n const data = {\n \"sort\": btn[\"sortBy\"],\n \"order\": btn[\"orderBy\"]\n };\n this.fireDataEvent(\"sortBy\", data);\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Fabian Jakobs (fjakobs)\n * Jonathan Weiß (jonathan_rass)\n\n************************************************************************ */\n\n/**\n * Layouter for horizontal split panes.\n *\n * @internal\n */\nqx.Class.define(\"qx.ui.splitpane.HLayout\",\n{\n extend : qx.ui.layout.Abstract,\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n /*\n ---------------------------------------------------------------------------\n LAYOUT INTERFACE\n ---------------------------------------------------------------------------\n */\n\n // overridden\n verifyLayoutProperty : qx.core.Environment.select(\"qx.debug\",\n {\n \"true\" : function(item, name, value)\n {\n this.assert(name === \"type\" || name === \"flex\", \"The property '\"+name+\"' is not supported by the split layout!\");\n\n if (name == \"flex\") {\n this.assertNumber(value);\n }\n\n if (name == \"type\") {\n this.assertString(value);\n }\n },\n\n \"false\" : null\n }),\n\n\n // overridden\n renderLayout : function(availWidth, availHeight, padding)\n {\n var children = this._getLayoutChildren();\n var length = children.length;\n var child, type;\n var begin, splitter, slider, end;\n var paddingLeft = padding.left || 0;\n var paddingTop = padding.top || 0;\n\n for (var i=0; i 0 && endFlex > 0)\n {\n var flexSum = beginFlex + endFlex;\n var flexAvailable = availWidth - splitterWidth;\n\n var beginWidth = Math.round((flexAvailable / flexSum) * beginFlex);\n var endWidth = flexAvailable - beginWidth;\n\n var sizes = qx.ui.layout.Util.arrangeIdeals(beginHint.minWidth, beginWidth, beginHint.maxWidth,\n endHint.minWidth, endWidth, endHint.maxWidth);\n\n beginWidth = sizes.begin;\n endWidth = sizes.end;\n }\n else if (beginFlex > 0)\n {\n beginWidth = availWidth - splitterWidth - endWidth;\n if (beginWidth < beginHint.minWidth) {\n beginWidth = beginHint.minWidth;\n }\n\n if (beginWidth > beginHint.maxWidth) {\n beginWidth = beginHint.maxWidth;\n }\n }\n else if (endFlex > 0)\n {\n endWidth = availWidth - beginWidth - splitterWidth;\n if (endWidth < endHint.minWidth) {\n endWidth = endHint.minWidth;\n }\n\n if (endWidth > endHint.maxWidth) {\n endWidth = endHint.maxWidth;\n }\n }\n\n begin.renderLayout(paddingLeft, paddingTop, beginWidth, availHeight);\n splitter.renderLayout(beginWidth + paddingLeft, paddingTop, splitterWidth, availHeight);\n end.renderLayout(beginWidth+splitterWidth + paddingLeft, paddingTop, endWidth, availHeight);\n }\n else\n {\n // Hide the splitter completely\n splitter.renderLayout(0, 0, 0, 0);\n\n // Render one child\n if (begin) {\n begin.renderLayout(paddingLeft, paddingTop, availWidth, availHeight);\n } else if (end) {\n end.renderLayout(paddingLeft, paddingTop, availWidth, availHeight);\n }\n }\n },\n\n\n // overridden\n _computeSizeHint : function()\n {\n var children = this._getLayoutChildren();\n var length = children.length;\n var child, hint, props;\n var minWidth=0, width=0, maxWidth=0;\n var minHeight=0, height=0, maxHeight=0;\n\n for (var i=0; i minHeight) {\n minHeight = hint.minHeight;\n }\n\n if (hint.height > height) {\n height = hint.height;\n }\n\n if (hint.maxHeight > maxHeight) {\n maxHeight = hint.maxHeight;\n }\n }\n\n return {\n minWidth : minWidth,\n width : width,\n maxWidth : maxWidth,\n minHeight : minHeight,\n height : height,\n maxHeight : maxHeight\n };\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.desktop.WorkbenchPanel\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox());\n\n const toolbar = this.__toolbar = new osparc.desktop.WorkbenchToolbar();\n toolbar.set({\n margin: 5\n });\n toolbar.getContentElement().setStyles({\n \"border-radius\": \"12px\"\n });\n this._add(toolbar);\n\n const workbenchUI = this.__workbenchUI = new osparc.workbench.WorkbenchUI();\n this._add(workbenchUI, {\n flex: 1\n });\n\n toolbar.addListener(\"zoomIn\", () => workbenchUI.zoom(true), this);\n toolbar.addListener(\"zoomOut\", () => workbenchUI.zoom(false), this);\n toolbar.addListener(\"zoomReset\", () => workbenchUI.setScale(1), this);\n },\n\n members: {\n __toolbar: null,\n __workbenchUI: null,\n\n getMainView: function() {\n return this.__workbenchUI;\n },\n\n getToolbar: function() {\n return this.__toolbar;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.widget.CollapsibleViewLight\", {\n extend: qx.ui.core.Widget,\n\n construct: function(content) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.HBox());\n\n if (content) {\n this.setContent(content);\n }\n\n this.initCollapsed();\n\n this.addListener(\"changeCollapsed\", e => {\n const collapsed = e.getData();\n if (collapsed) {\n this.precollapseWidth = (this.getBounds() && (\"width\" in this.getBounds())) ? this.getBounds().width : 60;\n }\n }, this);\n },\n\n properties: {\n content: {\n check: \"qx.ui.core.Widget\",\n nullable: true,\n apply: \"__applyContent\"\n },\n\n collapsed: {\n init: false,\n check: \"Boolean\",\n apply: \"__applyCollapsed\",\n event: \"changeCollapsed\"\n }\n },\n\n statics: {\n CARET_WIDTH: 15,\n\n styleCollapseExpandButton: function(btn) {\n btn.set({\n appearance: \"form-button-text\",\n backgroundColor: \"transparent\",\n padding: 4,\n allowGrowX: false,\n allowGrowY: true,\n alignY: \"middle\"\n });\n btn.getContentElement().setStyles({\n \"border-radius\": \"0px\"\n });\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"scroll-content\":\n control = new qx.ui.container.Scroll();\n this._addAt(control, 0, {\n flex: 1\n });\n break;\n case \"expand-button\":\n control = new qx.ui.form.Button(null, \"@FontAwesome5Solid/angle-right/14\").set({\n toolTipText: this.tr(\"Expand\")\n });\n this.self().styleCollapseExpandButton(control);\n control.addListener(\"execute\", () => this.setCollapsed(false));\n break;\n case \"collapse-button\":\n control = new qx.ui.form.Button(null, \"@FontAwesome5Solid/angle-left/14\").set({\n toolTipText: this.tr(\"Collapse\")\n });\n this.self().styleCollapseExpandButton(control);\n control.addListener(\"execute\", () => this.setCollapsed(true));\n break;\n case \"caret-collapsed-layout\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox()).set({\n width: this.self().CARET_WIDTH\n });\n const expandBtn = this.getChildControl(\"expand-button\");\n control.add(expandBtn, {\n flex: 1\n });\n this.bind(\"collapsed\", control, \"visibility\", {\n converter: collapsed => collapsed ? \"visible\" : \"excluded\"\n });\n this._addAt(control, 1);\n break;\n }\n case \"caret-expanded-layout\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox()).set({\n width: this.self().CARET_WIDTH\n });\n const collapseBtn = this.getChildControl(\"collapse-button\");\n control.add(collapseBtn, {\n flex: 1\n });\n this.bind(\"collapsed\", control, \"visibility\", {\n converter: collapsed => collapsed ? \"excluded\" : \"visible\"\n });\n this._addAt(control, 2);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __applyCollapsed: function(collapsed) {\n const scrollContent = this.getChildControl(\"scroll-content\");\n if (scrollContent) {\n scrollContent.setVisibility(collapsed ? \"excluded\" : \"visible\");\n }\n },\n\n __applyContent: function(content, oldContent) {\n const scrollContent = this.getChildControl(\"scroll-content\");\n if (oldContent) {\n scrollContent.remove(oldContent);\n }\n scrollContent.add(content);\n\n this.setCollapsed(false);\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2011 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Christian Hagendorn (chris_schmidt)\n\n************************************************************************ */\n\n/*\n * Virtual tree implementation.\n *\n * The virtual tree can be used to render node and leafs. Nodes and leafs are\n * both items for a tree. The difference between a node and a leaf is that a\n * node has child items, but a leaf not.\n *\n * With the {@link qx.ui.tree.core.IVirtualTreeDelegate} interface it is possible\n * to configure the tree's behavior (item renderer configuration, etc.).\n *\n * Here's an example of how to use the widget, including using a model\n * property to open/close branches. See the two timers at the end. The first\n * one opens all branches after two seconds; the second cleans up the tree\n * after five seconds.\n *\n * \n * var nodes = \n * [\n * {\n * name : \"Root\",\n * open : false,\n * children :\n * [\n * {\n * name : \"Branch 1\",\n * open : false,\n * children :\n * [\n * {\n * name : \"Leaf 1.1\"\n * },\n * {\n * name : \"Leaf 1.2\"\n * },\n * {\n * name : \"Branch 1.3\",\n * open : false,\n * children :\n * [\n * {\n * name : \"Branch 1.3.1\",\n * open : false,\n * children :\n * [\n * {\n * name : \"Leaf 1.3.1.1\"\n * }\n * ]\n * }\n * ]\n * }\n * ]\n * }\n * ]\n * }\n * ];\n *\n * // convert the raw nodes to qooxdoo objects\n * nodes = qx.data.marshal.Json.createModel(nodes, true);\n *\n * // create the tree and synchronize the model property 'open'\n * // to nodes being open\n * var tree =\n * new qx.ui.tree.VirtualTree(\n * nodes.getItem(0), \"name\", \"children\", \"open\").set({\n * width : 200,\n * height : 400\n * });\n *\n * //log selection changes\n * tree.getSelection().addListener(\"change\", function(e) {\n * this.debug(\"Selection: \" + tree.getSelection().getItem(0).getName());\n * }, this);\n *\n * tree.set(\n * {\n * width : 200,\n * height : 400,\n * showTopLevelOpenCloseIcons : true\n * });\n *\n * var doc = this.getRoot();\n * doc.add(tree,\n * {\n * left : 100,\n * top : 50\n * });\n *\n * // After two seconds, open up all branches by setting their open\n * // property to true.\n * qx.event.Timer.once(\n * function()\n * {\n * ;(function allOpen(root)\n * {\n * if (root.setOpen) root.setOpen(true);\n * if (root.getChildren) root.getChildren().forEach(allOpen);\n * })(nodes.getItem(0));\n * },\n * this,\n * 2000);\n *\n * // After five seconds, remove and dispose the tree.\n * qx.event.Timer.once(\n * function()\n * {\n * doc.remove(tree);\n * tree.dispose();\n * console.warn(\"All cleaned up.\");\n * },\n * this,\n * 5000);\n *
\n */\nqx.Class.define(\"qx.ui.tree.VirtualTree\",\n{\n extend : qx.ui.virtual.core.Scroller,\n implement : [qx.ui.tree.core.IVirtualTree, qx.data.controller.ISelection],\n include : [\n qx.ui.virtual.selection.MModel,\n qx.ui.core.MContentPadding\n ],\n\n /**\n * @param rootModel {qx.core.Object?null} The model structure representing\n * the root of the tree, for more details have a look at the 'model'\n * property.\n * @param labelPath {String?null} The name of the label property, for more\n * details have a look at the 'labelPath' property.\n * @param childProperty {String?null} The name of the child property, for\n * more details have a look at the 'childProperty' property.\n * @param openProperty {String|null} the name of the model property which\n * represents the open state of a branch. If this value is provided, so, \n * too, must be rootModel.\n */\n construct : function(\n rootModel, labelPath, childProperty, openProperty)\n {\n this.base(arguments, 0, 1, 20, 100);\n\n this._init();\n\n if (labelPath != null) {\n this.setLabelPath(labelPath);\n }\n\n if (childProperty != null) {\n this.setChildProperty(childProperty);\n }\n\n if(rootModel != null) {\n this.initModel(rootModel);\n }\n\n this.initItemHeight();\n this.initOpenMode();\n\n this.addListener(\"keypress\", this._onKeyPress, this);\n\n // If an open property and root model are provided, start up the open-close controller.\n if (openProperty && rootModel) {\n this.openViaModelChanges(openProperty);\n }\n },\n\n events :\n {\n /**\n * Fired when a node is opened.\n */\n open : \"qx.event.type.Data\",\n\n\n /**\n * Fired when a node is closed.\n */\n close : \"qx.event.type.Data\"\n },\n\n\n properties :\n {\n // overridden\n appearance :\n {\n refine: true,\n init: \"virtual-tree\"\n },\n\n\n // overridden\n focusable :\n {\n refine: true,\n init: true\n },\n\n\n // overridden\n width :\n {\n refine : true,\n init : 100\n },\n\n\n // overridden\n height :\n {\n refine : true,\n init : 200\n },\n\n\n /** Default item height. */\n itemHeight :\n {\n check : \"Integer\",\n init : 25,\n apply : \"_applyRowHeight\",\n themeable : true\n },\n\n\n /**\n * Control whether tap or double tap should open or close the tapped\n * item.\n */\n openMode :\n {\n check: [\"tap\", \"dbltap\", \"none\"],\n init: \"dbltap\",\n apply: \"_applyOpenMode\",\n event: \"changeOpenMode\",\n themeable: true\n },\n\n \n /**\n * Hides *only* the root node, not the node's children when the property is\n * set to true
.\n */\n hideRoot :\n {\n check: \"Boolean\",\n init: false,\n apply:\"_applyHideRoot\"\n },\n\n\n /**\n * Whether top level items should have an open/close button. The top level\n * item item is normally the root item, but when the root is hidden, the\n * root children are the top level items.\n */\n showTopLevelOpenCloseIcons :\n {\n check : \"Boolean\",\n init : false,\n apply : \"_applyShowTopLevelOpenCloseIcons\"\n },\n\n\n /**\n * Configures the tree to show also the leafs. When the property is set to\n * false
*only* the nodes are shown.\n */\n showLeafs :\n {\n check: \"Boolean\",\n init: true,\n apply: \"_applyShowLeafs\"\n },\n\n\n /**\n * The name of the property, where the children are stored in the model.\n * Instead of the {@link #labelPath} must the child property a direct\n * property form the model instance.\n */\n childProperty :\n {\n check: \"String\",\n apply: \"_applyChildProperty\",\n nullable: true\n },\n\n\n /**\n * The name of the property, where the value for the tree folders label\n * is stored in the model classes.\n */\n labelPath :\n {\n check: \"String\",\n apply: \"_applyLabelPath\",\n nullable: true\n },\n\n\n /**\n * The path to the property which holds the information that should be\n * shown as an icon.\n */\n iconPath :\n {\n check: \"String\",\n apply: \"_applyIconPath\",\n nullable: true\n },\n\n\n /**\n * A map containing the options for the label binding. The possible keys\n * can be found in the {@link qx.data.SingleValueBinding} documentation.\n */\n labelOptions :\n {\n apply: \"_applyLabelOptions\",\n nullable: true\n },\n\n\n /**\n * A map containing the options for the icon binding. The possible keys\n * can be found in the {@link qx.data.SingleValueBinding} documentation.\n */\n iconOptions :\n {\n apply: \"_applyIconOptions\",\n nullable: true\n },\n\n\n /**\n * The model containing the data (nodes and/or leafs) which should be shown\n * in the tree.\n */\n model :\n {\n check : \"qx.core.Object\",\n apply : \"_applyModel\",\n event: \"changeModel\",\n nullable : true,\n deferredInit : true\n },\n\n\n /**\n * Delegation object, which can have one or more functions defined by the\n * {@link qx.ui.tree.core.IVirtualTreeDelegate} interface.\n */\n delegate :\n {\n event: \"changeDelegate\",\n apply: \"_applyDelegate\",\n init: null,\n nullable: true\n }\n },\n\n\n members :\n {\n /** @type {qx.ui.tree.provider.WidgetProvider} Provider for widget rendering. */\n _provider : null,\n\n\n /** @type {qx.ui.virtual.layer.Abstract} Layer which contains the items. */\n _layer : null,\n\n\n /**\n * @type {qx.data.Array} The internal lookup table data structure to get the model item\n * from a row.\n */\n __lookupTable : null,\n\n\n /** @type {Array} HashMap which contains all open nodes. */\n __openNodes : null,\n\n\n /**\n * @type {Array} The internal data structure to get the nesting level from a\n * row.\n */\n __nestingLevel : null,\n\n\n /**\n * @type {qx.util.DeferredCall} Adds this instance to the widget queue on a\n * deferred call.\n */\n __deferredCall : null,\n\n\n /** @type {Integer} Holds the max item width from a rendered widget. */\n _itemWidth : 0,\n\n\n /** @type {Array} internal parent chain form the last selected node */\n __parentChain : null,\n\n /** \n * @type {String|null} the name of the model property which represents the\n * open state of a branch.\n */\n __openProperty : null,\n\n /*\n ---------------------------------------------------------------------------\n PUBLIC API\n ---------------------------------------------------------------------------\n */\n\n\n // overridden\n syncWidget : function(jobs)\n {\n var firstRow = this._layer.getFirstRow();\n var rowSize = this._layer.getRowSizes().length;\n\n for (var row = firstRow; row < firstRow + rowSize; row++)\n {\n var widget = this._layer.getRenderedCellWidget(row, 0);\n if (widget != null) {\n this._itemWidth = Math.max(this._itemWidth, widget.getSizeHint().width);\n }\n }\n var paneWidth = this.getPane().getInnerSize().width;\n this.getPane().getColumnConfig().setItemSize(0, Math.max(this._itemWidth, paneWidth));\n },\n\n\n // Interface implementation\n openNode : function(node)\n {\n this.__openNode(node);\n this.buildLookupTable();\n },\n\n\n // Interface implementation\n openNodeWithoutScrolling : function(node)\n {\n var autoscroll = this.getAutoScrollIntoView();\n // suspend automatically scrolling selection into view\n this.setAutoScrollIntoView(false);\n\n this.openNode(node);\n\n // re set to original value\n this.setAutoScrollIntoView(autoscroll);\n },\n\n\n /**\n * Trigger a rebuild from the internal data structure.\n */\n refresh : function() {\n this.buildLookupTable();\n },\n\n\n /**\n * Opens the passed node and all his parents. *Note!* The algorithm\n * implements a depth-first search with a complexity: O(n)
and\n * n
are all model items.\n *\n * @param node {qx.core.Object} Node to open.\n */\n openNodeAndParents : function(node)\n {\n this.__openNodeAndAllParents(this.getModel(), node);\n this.buildLookupTable();\n },\n\n\n // Interface implementation\n closeNode : function(node)\n {\n if (this.__openNodes.includes(node))\n {\n qx.lang.Array.remove(this.__openNodes, node);\n this.fireDataEvent(\"close\", node);\n this.buildLookupTable();\n }\n },\n\n\n // Interface implementation\n closeNodeWithoutScrolling : function(node)\n {\n var autoscroll = this.getAutoScrollIntoView();\n // suspend automatically scrolling selection into view\n this.setAutoScrollIntoView(false);\n\n this.closeNode(node);\n\n // re set to original value\n this.setAutoScrollIntoView(autoscroll);\n },\n\n\n // Interface implementation\n isNodeOpen : function(node) {\n return this.__openNodes.includes(node);\n },\n\n\n /**\n * Open and close branches via changes to a property in the model.\n * \n * @param openProperty {String|null} \n * The name of the open property, which determines the open state of a\n * branch in the tree. If null, turn off opening and closing branches\n * via changes to the model.\n */\n openViaModelChanges : function(openProperty) {\n // Save the open property\n this.__openProperty = openProperty;\n\n // if no name is provided, just remove any prior open-close controller\n if (! openProperty) {\n if (this._openCloseController) {\n this._openCloseController.dispose();\n this._openCloseController = null;\n }\n\n return;\n }\n\n // we have a property name, so create controller\n this._openCloseController =\n new qx.ui.tree.core.OpenCloseController(this, this.getModel(), openProperty);\n },\n\n\n /**\n * Getter for the open property\n */\n getOpenProperty : function()\n {\n return this.__openProperty;\n },\n\n\n /*\n ---------------------------------------------------------------------------\n INTERNAL API\n ---------------------------------------------------------------------------\n */\n\n\n /**\n * Initializes the virtual tree.\n */\n _init : function()\n {\n this.__lookupTable = new qx.data.Array();\n this.__openNodes = [];\n this.__nestingLevel = [];\n this._initLayer();\n },\n\n\n /**\n * Initializes the virtual tree layer.\n */\n _initLayer : function()\n {\n this._provider = new qx.ui.tree.provider.WidgetProvider(this);\n this._layer = this._provider.createLayer();\n this._layer.addListener(\"updated\", this._onUpdated, this);\n this.getPane().addLayer(this._layer);\n this.getPane().addListenerOnce(\"resize\", function(e) {\n // apply width to pane on first rendering pass\n // to avoid visible flickering\n this.getPane().getColumnConfig().setItemSize(0, e.getData().width);\n }, this);\n },\n\n\n // Interface implementation\n getLookupTable : function() {\n return this.__lookupTable;\n },\n \n \n // Interface implementation\n isShowTopLevelOpenCloseIcons : function() {\n return true;\n },\n\n\n /**\n * Performs a lookup from model index to row.\n *\n * @param index {Number} The index to look at.\n * @return {Number} The row or -1
\n * if the index is not a model index.\n */\n _reverseLookup : function(index) {\n return index;\n },\n\n\n /**\n * Returns the model data for the given row.\n *\n * @param row {Integer} row to get data for.\n * @return {var|null} the row's model data.\n */\n _getDataFromRow : function(row) {\n return this.__lookupTable.getItem(row);\n },\n\n /**\n * Returns the selectable model items.\n *\n * @return {qx.data.Array} The selectable items.\n */\n _getSelectables : function() {\n return this.__lookupTable;\n },\n\n\n /**\n * Returns all open nodes.\n *\n * @internal\n * @return {Array} All open nodes.\n */\n getOpenNodes : function() {\n return this.__openNodes;\n },\n\n\n // Interface implementation\n isNode : function(item) {\n return qx.ui.tree.core.Util.isNode(item, this.getChildProperty());\n },\n\n\n // Interface implementation\n getLevel : function(row) {\n return this.__nestingLevel[row];\n },\n\n\n // Interface implementation\n hasChildren : function(node) {\n return qx.ui.tree.core.Util.hasChildren(node, this.getChildProperty(), !this.isShowLeafs());\n },\n\n\n /**\n * Returns the element, to which the content padding should be applied.\n *\n * @return {qx.ui.core.Widget} The content padding target.\n */\n _getContentPaddingTarget : function() {\n return this.getPane();\n },\n\n\n /*\n ---------------------------------------------------------------------------\n PROPERTY APPLY METHODS\n ---------------------------------------------------------------------------\n */\n\n\n // property apply\n _applyRowHeight : function(value, old) {\n this.getPane().getRowConfig().setDefaultItemSize(value);\n },\n\n\n // property apply\n _applyOpenMode : function(value, old)\n {\n var pane = this.getPane();\n\n //\"tap\", \"dbltap\", \"none\"\n if (value === \"dbltap\") {\n pane.addListener(\"cellDbltap\", this._onOpen, this);\n } else if (value === \"tap\") {\n pane.addListener(\"cellTap\", this._onOpen, this);\n }\n\n if (old === \"dbltap\") {\n pane.removeListener(\"cellDbltap\", this._onOpen, this);\n } else if (old === \"tap\") {\n pane.removeListener(\"cellTap\", this._onOpen, this);\n }\n },\n\n\n // property apply\n _applyHideRoot : function(value, old) {\n this.buildLookupTable();\n },\n\n\n // property apply\n _applyShowTopLevelOpenCloseIcons : function(value, old) {\n // force rebuild of the lookup table\n // fixes https://github.com/qooxdoo/qooxdoo/issues/9128\n this.getLookupTable().removeAll();\n this.buildLookupTable();\n },\n\n\n // property apply\n _applyShowLeafs : function(value, old) {\n // force rebuild of the lookup table\n // fixes https://github.com/qooxdoo/qooxdoo/issues/9128\n this.getLookupTable().removeAll();\n this.buildLookupTable();\n },\n\n\n // property apply\n _applyChildProperty : function(value, old) {\n this._provider.setChildProperty(value);\n },\n\n\n // property apply\n _applyLabelPath : function(value, old) {\n this._provider.setLabelPath(value);\n },\n\n\n // property apply\n _applyIconPath : function(value, old) {\n this._provider.setIconPath(value);\n },\n\n\n // property apply\n _applyLabelOptions : function(value, old) {\n this._provider.setLabelOptions(value);\n },\n\n\n // property apply\n _applyIconOptions : function(value, old) {\n this._provider.setIconOptions(value);\n },\n\n\n // property apply\n _applyModel : function(value, old)\n {\n this.__openNodes = [];\n\n if (value != null)\n {\n if (qx.core.Environment.get(\"qx.debug\"))\n {\n if (!qx.Class.hasMixin(value.constructor,\n qx.data.marshal.MEventBubbling))\n {\n this.warn(\"The model item doesn't support the Mixin 'qx.data.\" +\n \"marshal.MEventBubbling'. Therefore the tree can not update \" +\n \"the view automatically on model changes.\");\n }\n }\n value.addListener(\"changeBubble\", this._onChangeBubble, this);\n this.__openNode(value);\n }\n\n // If the model changes, an existing OpenCloseController is no longer\n // valid, so dispose it. The user should call openViaModelChanges again.\n if (this._openCloseController) {\n this._openCloseController.dispose();\n this._openCloseController = null;\n }\n\n if (old != null) {\n old.removeListener(\"changeBubble\", this._onChangeBubble, this);\n }\n\n this.__applyModelChanges();\n },\n\n\n // property apply\n _applyDelegate : function(value, old)\n {\n this._provider.setDelegate(value);\n this.buildLookupTable();\n },\n\n\n /*\n ---------------------------------------------------------------------------\n EVENT HANDLERS\n ---------------------------------------------------------------------------\n */\n\n\n /**\n * Event handler for the changeBubble event. The handler rebuild the lookup\n * table when the child structure changed.\n *\n * @param event {qx.event.type.Data} The data event.\n */\n _onChangeBubble : function(event)\n {\n var data = event.getData();\n var propertyName = data.name;\n var index = propertyName.lastIndexOf(\".\");\n\n if (index != -1) {\n propertyName = propertyName.substr(index + 1, propertyName.length);\n }\n\n // only continue when the effected property is the child property\n if ( propertyName.startsWith(this.getChildProperty()) )\n {\n var item = data.item;\n\n if (qx.Class.isSubClassOf(item.constructor, qx.data.Array))\n {\n if (index === -1)\n {\n item = this.getModel();\n }\n else\n {\n var propertyChain = data.name.substr(0, index);\n item = qx.data.SingleValueBinding.resolvePropertyChain(this.getModel(), propertyChain);\n }\n }\n\n if (this.__lookupTable.indexOf(item) != -1) {\n this.__applyModelChanges();\n }\n }\n },\n\n\n /**\n * Event handler for the update event.\n *\n * @param event {qx.event.type.Event} The event.\n */\n _onUpdated : function(event)\n {\n if (this.__deferredCall == null) {\n this.__deferredCall = new qx.util.DeferredCall(function() {\n qx.ui.core.queue.Widget.add(this);\n }, this);\n }\n this.__deferredCall.schedule();\n },\n\n\n /**\n * Event handler to open/close tapped nodes.\n *\n * @param event {qx.ui.virtual.core.CellEvent} The cell tap event.\n */\n _onOpen : function(event)\n {\n var row = event.getRow();\n var item = this.__lookupTable.getItem(row);\n\n if (this.isNode(item))\n {\n if (this.isNodeOpen(item)) {\n this.closeNode(item);\n } else {\n this.openNode(item);\n }\n }\n },\n\n\n /**\n * Event handler for key press events. Open and close the current selected\n * item on key left and right press. Jump to parent on key left if already\n * closed.\n *\n * @param e {qx.event.type.KeySequence} key event.\n */\n _onKeyPress : function(e)\n {\n var selection = this.getSelection();\n\n if (selection.getLength() > 0)\n {\n var item = selection.getItem(0);\n var isNode = this.isNode(item);\n\n switch(e.getKeyIdentifier())\n {\n case \"Left\":\n if (isNode && this.isNodeOpen(item)) {\n this.closeNode(item);\n } else {\n var parent = this.getParent(item);\n if (parent != null) {\n selection.splice(0, 1, parent);\n }\n }\n break;\n\n case \"Right\":\n if (isNode && !this.isNodeOpen(item)) {\n this.openNode(item);\n }\n else\n {\n if (isNode)\n {\n var children = item.get(this.getChildProperty());\n if (children != null && children.getLength() > 0) {\n selection.splice(0, 1, children.getItem(0));\n }\n }\n }\n break;\n\n case \"Enter\":\n case \"Space\":\n if (!isNode) {\n return;\n }\n if (this.isNodeOpen(item)) {\n this.closeNode(item);\n } else {\n this.openNode(item);\n }\n break;\n }\n }\n },\n\n /*\n ---------------------------------------------------------------------------\n SELECTION HOOK METHODS\n ---------------------------------------------------------------------------\n */\n\n /**\n * Hook method which is called from the {@link qx.ui.virtual.selection.MModel}.\n * The hook method sets the first visible parent not as new selection when\n * the current selection is empty and the selection mode is one selection.\n *\n * @param newSelection {Array} The newSelection which will be set to the selection manager.\n */\n _beforeApplySelection : function(newSelection)\n {\n if (newSelection.length === 0 &&\n this.getSelectionMode() === \"one\")\n {\n var visibleParent = this.__getVisibleParent();\n var row = this.getLookupTable().indexOf(visibleParent);\n\n if (row >= 0) {\n newSelection.push(row);\n }\n }\n },\n\n\n /**\n * Hook method which is called from the {@link qx.ui.virtual.selection.MModel}.\n * The hook method builds the parent chain form the current selected item.\n */\n _afterApplySelection : function()\n {\n var selection = this.getSelection();\n\n if (selection.getLength() > 0 &&\n this.getSelectionMode() === \"one\") {\n this.__buildParentChain(selection.getItem(0));\n } else {\n this.__parentChain = [];\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n HELPER METHODS\n ---------------------------------------------------------------------------\n */\n\n\n /**\n * Helper method to apply model changes. Normally build the lookup table and\n * apply the default selection.\n */\n __applyModelChanges : function()\n {\n this.buildLookupTable();\n this._applyDefaultSelection();\n },\n\n\n /**\n * Helper method to build the internal data structure.\n *\n * @internal\n */\n buildLookupTable : function()\n {\n if (\n this.getModel() != null &&\n (this.getChildProperty() == null || this.getLabelPath() == null)\n )\n {\n throw new Error(\"Could not build tree, because 'childProperty' and/\" +\n \"or 'labelPath' is 'null'!\");\n }\n\n this._itemWidth = 0;\n var lookupTable = [];\n this.__nestingLevel = [];\n var nestedLevel = -1;\n\n var root = this.getModel();\n if (root != null)\n {\n if (!this.isHideRoot())\n {\n nestedLevel++;\n lookupTable.push(root);\n this.__nestingLevel.push(nestedLevel);\n }\n\n if (this.isNodeOpen(root))\n {\n var visibleChildren = this.__getVisibleChildrenFrom(root, nestedLevel);\n lookupTable = lookupTable.concat(visibleChildren);\n }\n }\n\n if (!qx.lang.Array.equals(this.__lookupTable.toArray(), lookupTable))\n {\n this._provider.removeBindings();\n this.__lookupTable.removeAll();\n this.__lookupTable.append(lookupTable);\n this.__updateRowCount();\n this._updateSelection();\n }\n },\n\n\n /**\n * Helper method to get all visible children form the passed parent node.\n * The algorithm implements a depth-first search with a complexity:\n * O(n)
and n
are all visible items.\n *\n * @param node {qx.core.Object} The start node to start search.\n * @param nestedLevel {Integer} The nested level from the start node.\n * @return {Array} All visible children form the parent.\n */\n __getVisibleChildrenFrom : function(node, nestedLevel)\n {\n var visible = [];\n nestedLevel++;\n\n if (!this.isNode(node)) {\n return visible;\n }\n\n var children = node.get(this.getChildProperty());\n if (children == null) {\n return visible;\n }\n\n // clone children to keep original model unmodified\n children = children.copy();\n\n var delegate = this.getDelegate();\n var filter = qx.util.Delegate.getMethod(delegate, \"filter\");\n var sorter = qx.util.Delegate.getMethod(delegate, \"sorter\");\n\n if (sorter != null) {\n children.sort(sorter);\n }\n\n for (var i = 0; i < children.getLength(); i++)\n {\n var child = children.getItem(i);\n\n if (filter && !filter(child)) {\n continue;\n }\n\n if (this.isNode(child))\n {\n this.__nestingLevel.push(nestedLevel);\n visible.push(child);\n\n if (this.isNodeOpen(child))\n {\n var visibleChildren = this.__getVisibleChildrenFrom(child, nestedLevel);\n visible = visible.concat(visibleChildren);\n }\n }\n else\n {\n if (this.isShowLeafs())\n {\n this.__nestingLevel.push(nestedLevel);\n visible.push(child);\n }\n }\n }\n\n // dispose children clone\n children.dispose();\n\n return visible;\n },\n\n\n /**\n * Helper method to set the node to the open nodes data structure when it\n * is not included.\n *\n * @param node {qx.core.Object} Node to set to open nodes.\n */\n __openNode : function(node)\n {\n if (!this.__openNodes.includes(node)) {\n this.__openNodes.push(node);\n this.fireDataEvent(\"open\", node);\n }\n },\n\n\n /**\n * Helper method to set the target node and all his parents to the open\n * nodes data structure. The algorithm implements a depth-first search with\n * a complexity: O(n)
and n
are all model items.\n *\n * @param startNode {qx.core.Object} Start (root) node to search.\n * @param targetNode {qx.core.Object} Target node to open (and his parents).\n * @return {Boolean} True
when the targetNode and his\n * parents could opened, false
otherwise.\n */\n __openNodeAndAllParents : function(startNode, targetNode)\n {\n if (startNode === targetNode)\n {\n this.__openNode(targetNode);\n return true;\n }\n\n if (!this.isNode(startNode)) {\n return false;\n }\n\n var children = startNode.get(this.getChildProperty());\n if (children == null) {\n return false;\n }\n\n for (var i = 0; i < children.getLength(); i++)\n {\n var child = children.getItem(i);\n var result = this.__openNodeAndAllParents(child, targetNode);\n\n if (result === true)\n {\n this.__openNode(child);\n return true;\n }\n }\n\n return false;\n },\n\n\n /**\n * Helper method to update the row count.\n */\n __updateRowCount : function()\n {\n this.getPane().getRowConfig().setItemCount(this.__lookupTable.getLength());\n this.getPane().fullUpdate();\n },\n\n\n /**\n * Helper method to get the parent node. Node! This only works with leaf and\n * nodes which are in the internal lookup table.\n *\n * @param item {qx.core.Object} Node or leaf to get parent.\n * @return {qx.core.Object|null} The parent note or null
when\n * no parent found.\n *\n * @internal\n */\n getParent : function(item)\n {\n var index = this.__lookupTable.indexOf(item);\n if (index < 0) {\n return null;\n }\n\n var level = this.__nestingLevel[index];\n while(index > 0)\n {\n index--;\n var levelBefore = this.__nestingLevel[index];\n if (levelBefore < level) {\n return this.__lookupTable.getItem(index);\n }\n }\n\n return null;\n },\n\n\n /**\n * Builds the parent chain form the passed item.\n *\n * @param item {var} Item to build parent chain.\n */\n __buildParentChain : function(item)\n {\n this.__parentChain = [];\n var parent = this.getParent(item);\n while(parent != null)\n {\n this.__parentChain.unshift(parent);\n parent = this.getParent(parent);\n }\n },\n\n\n /**\n * Return the first visible parent node from the last selected node.\n *\n * @return {var} The first visible node.\n */\n __getVisibleParent : function()\n {\n if (this.__parentChain == null) {\n return this.getModel();\n }\n\n var lookupTable = this.getLookupTable();\n var parent = this.__parentChain.pop();\n\n while(parent != null)\n {\n if (lookupTable.contains(parent)) {\n return parent;\n }\n parent = this.__parentChain.pop();\n }\n return this.getModel();\n }\n },\n\n\n destruct : function()\n {\n if (this._openCloseController) {\n this._openCloseController.dispose();\n }\n\n var pane = this.getPane();\n if (pane != null)\n {\n if (pane.hasListener(\"cellDbltap\")) {\n pane.removeListener(\"cellDbltap\", this._onOpen, this);\n }\n if (pane.hasListener(\"cellTap\")) {\n pane.removeListener(\"cellTap\", this._onOpen, this);\n }\n }\n\n if (!qx.core.ObjectRegistry.inShutDown && this.__deferredCall != null)\n {\n this.__deferredCall.cancel();\n this.__deferredCall.dispose();\n }\n\n var model = this.getModel();\n if (model != null) {\n model.removeListener(\"changeBubble\", this._onChangeBubble, this);\n }\n\n this._layer.removeListener(\"updated\", this._onUpdated, this);\n this._layer.destroy();\n this._provider.dispose();\n this.__lookupTable.dispose();\n\n this._layer = this._provider = this.__lookupTable = this.__openNodes =\n this.__deferredCall = null;\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget that shows workbench hierarchy in tree view.\n *\n * VirtualTree populated with NodeTreeItems\n *\n * Helps the user navigating through nodes and gives a hierarchical view of containers. Also allows\n * some operations.\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let nodesTree = new osparc.widget.NodesTree();\n * this.getRoot().add(nodesTree);\n *
\n */\n\nqx.Class.define(\"osparc.widget.NodesTree\", {\n extend: qx.ui.tree.VirtualTree,\n\n construct: function() {\n this.base(arguments, null, \"label\", \"children\");\n\n this.set({\n decorator: \"service-tree\",\n hideRoot: true,\n openMode: \"none\",\n contentPadding: 0,\n padding: 0\n });\n osparc.utils.Utils.setIdToWidget(this, \"nodesTree\");\n\n this.__attachEventHandlers();\n },\n\n events: {\n \"changeSelectedNode\": \"qx.event.type.Data\",\n \"fullscreenNode\": \"qx.event.type.Data\",\n \"removeNode\": \"qx.event.type.Data\"\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n nullable: false,\n apply: \"_applyStudy\"\n },\n\n simpleNodes: {\n check: \"Boolean\",\n nullable: true,\n init: false,\n event: \"changeSimpleNodes\"\n }\n },\n\n statics: {\n __getSortingValue: function(node) {\n if (node.isFilePicker()) {\n return osparc.service.Utils.getSorting(\"file\");\n } else if (node.isParameter()) {\n return osparc.service.Utils.getSorting(\"parameter\");\n } else if (node.isIterator()) {\n return osparc.service.Utils.getSorting(\"iterator\");\n } else if (node.isProbe()) {\n return osparc.service.Utils.getSorting(\"probe\");\n }\n return osparc.service.Utils.getSorting(node.getMetaData().type);\n },\n\n __getIcon: function(node) {\n let icon = null;\n if (node.isFilePicker()) {\n icon = osparc.service.Utils.getIcon(\"file\");\n } else if (node.isParameter()) {\n icon = osparc.service.Utils.getIcon(\"parameter\");\n } else if (node.isIterator()) {\n icon = osparc.service.Utils.getIcon(\"iterator\");\n } else if (node.isProbe()) {\n icon = osparc.service.Utils.getIcon(\"probe\");\n } else {\n icon = osparc.service.Utils.getIcon(node.getMetaData().type);\n }\n if (icon) {\n icon += \"14\";\n }\n return icon;\n },\n\n createStudyModel: function(study) {\n const studyData = {\n id: study.getUuid(),\n label: osparc.product.Utils.getStudyAlias({firstUpperCase: true}),\n children: [],\n icon: \"@FontAwesome5Solid/home/14\",\n iconColor: \"text\",\n sortingValue: 0,\n study\n };\n const studyModel = qx.data.marshal.Json.createModel(studyData, true);\n study.bind(\"name\", studyModel, \"label\");\n return studyModel;\n },\n\n nodeToModel: function(node) {\n const nodeData = {\n id: node.getNodeId(),\n label: \"Node\",\n children: [],\n icon: this.__getIcon(node),\n iconColor: \"text\",\n sortingValue: this.__getSortingValue(node),\n node\n };\n const nodeModel = qx.data.marshal.Json.createModel(nodeData, true);\n node.bind(\"label\", nodeModel, \"label\");\n if (node.isDynamic()) {\n node.getStatus().bind(\"interactive\", nodeModel, \"iconColor\", {\n converter: status => osparc.service.StatusUI.getColor(status)\n });\n } else if (node.isComputational()) {\n node.getStatus().bind(\"running\", nodeModel, \"iconColor\", {\n converter: status => osparc.service.StatusUI.getColor(status)\n });\n }\n return nodeModel;\n }\n },\n\n members: {\n __currentNodeId: null,\n\n getCurrentNodeId: function() {\n return this.__currentNodeId;\n },\n\n setCurrentNodeId: function(nodeId) {\n this.__currentNodeId = nodeId;\n },\n\n _applyStudy: function() {\n this.populateTree();\n },\n\n populateTree: function() {\n const study = this.getStudy();\n const rootModel = this.self().createStudyModel(study);\n this.setModel(rootModel);\n const nodes = study.getWorkbench().getNodes();\n for (const nodeId in nodes) {\n const node = nodes[nodeId];\n const nodeInTree = this.self().nodeToModel(node);\n rootModel.getChildren().push(nodeInTree);\n }\n this.setDelegate(this._getDelegate(study));\n const nChildren = rootModel.getChildren().length;\n this.setHeight(nChildren*30 + 12);\n },\n\n _getDelegate: function(study) {\n return {\n createItem: () => {\n const nodeTreeItem = new osparc.widget.NodeTreeItem();\n this.bind(\"simpleNodes\", nodeTreeItem, \"simpleNode\");\n nodeTreeItem.addListener(\"fullscreenNode\", e => this.__openFullscreen(e.getData()));\n nodeTreeItem.addListener(\"renameNode\", e => this._openItemRenamer(e.getData()));\n nodeTreeItem.addListener(\"infoNode\", e => this.__openNodeInfo(e.getData()));\n nodeTreeItem.addListener(\"deleteNode\", e => this.__deleteNode(e.getData()));\n return nodeTreeItem;\n },\n bindItem: (c, item, id) => {\n c.bindDefaultProperties(item, id);\n c.bindProperty(\"label\", \"label\", null, item, id);\n c.bindProperty(\"id\", \"id\", null, item, id);\n c.bindProperty(\"study\", \"study\", null, item, id);\n c.bindProperty(\"node\", \"node\", null, item, id);\n c.bindProperty(\"icon\", \"icon\", null, item, id);\n c.bindProperty(\"iconColor\", \"iconColor\", null, item, id);\n const node = study.getWorkbench().getNode(item.getModel().getId());\n if (item.getModel().getId() === study.getUuid()) {\n item.getChildControl(\"delete-button\").exclude();\n } else if (node) {\n node.addListener(\"keyChanged\", () => this.populateTree(), this);\n }\n },\n configureItem: item => {\n item.addListener(\"tap\", () => {\n this.__openItem(item.getModel().getId());\n this.nodeSelected(item.getModel().getId());\n }, this);\n // This is needed to keep the label flexible\n item.addListener(\"resize\", e => item.setMaxWidth(100), this);\n },\n sorter: (itemA, itemB) => itemA.getSortingValue() - itemB.getSortingValue()\n };\n },\n\n __getNodeModel: function(model, nodeId) {\n if (model.getId() === nodeId) {\n return model;\n } else if (model.getChildren() !== null) {\n let node = null;\n let children = model.getChildren().toArray();\n for (let i = 0; node === null && i < children.length; i++) {\n node = this.__getNodeModel(children[i], nodeId);\n }\n return node;\n }\n return null;\n },\n\n __getSelection: function() {\n let treeSelection = this.getSelection();\n if (treeSelection.length < 1) {\n return null;\n }\n let selectedItem = treeSelection.toArray()[0];\n return selectedItem;\n },\n\n __openItem: function(nodeId) {\n if (nodeId) {\n this.fireDataEvent(\"changeSelectedNode\", nodeId);\n }\n },\n\n __openFullscreen: function(nodeId) {\n if (nodeId) {\n this.fireDataEvent(\"fullscreenNode\", nodeId);\n }\n },\n\n _openItemRenamer: function(nodeId) {\n if (nodeId === undefined && this.__getSelection()) {\n nodeId = this.__getSelection().getId();\n }\n if (nodeId) {\n const study = this.getStudy();\n const node = study.getWorkbench().getNode(nodeId);\n const oldLabel = nodeId === study.getUuid() ? study.getName() : node.getLabel();\n const treeItemRenamer = new osparc.widget.Renamer(oldLabel);\n treeItemRenamer.addListener(\"labelChanged\", e => {\n const {\n newLabel\n } = e.getData();\n if (nodeId === study.getUuid() && osparc.data.Permissions.getInstance().canDo(\"study.update\", true)) {\n study.setName(newLabel);\n } else if (node && osparc.data.Permissions.getInstance().canDo(\"study.node.rename\", true)) {\n node.setLabel(newLabel);\n }\n treeItemRenamer.close();\n }, this);\n const bounds = this.getLayoutParent().getContentLocation();\n treeItemRenamer.moveTo(bounds.left + 100, bounds.top + 150);\n treeItemRenamer.open();\n }\n },\n\n __openNodeInfo: function(nodeId) {\n if (nodeId === undefined && this.__getSelection()) {\n nodeId = this.__getSelection().getId();\n }\n if (nodeId) {\n const study = this.getStudy();\n const width = osparc.info.CardLarge.WIDTH;\n const height = osparc.info.CardLarge.HEIGHT;\n if (nodeId === study.getUuid()) {\n const studyDetails = new osparc.info.StudyLarge(study);\n const title = this.tr(\"Study Information\");\n osparc.ui.window.Window.popUpInWindow(studyDetails, title, width, height).set({\n maxHeight: height\n });\n } else {\n const node = study.getWorkbench().getNode(nodeId);\n const metadata = node.getMetaData();\n const serviceDetails = new osparc.info.ServiceLarge(metadata, {\n nodeId,\n label: node.getLabel(),\n studyId: study.getUuid()\n });\n osparc.info.ServiceLarge.popUpInWindow(serviceDetails);\n }\n }\n },\n\n __deleteNode: function(nodeId) {\n if (nodeId === undefined && this.__getSelection()) {\n nodeId = this.__getSelection().getId();\n }\n if (nodeId) {\n this.fireDataEvent(\"removeNode\", nodeId);\n }\n },\n\n nodeSelected: function(nodeId) {\n const item = this.__getNodeModel(this.getModel(), nodeId);\n if (item) {\n this.openNodeAndParents(item);\n this.setSelection(new qx.data.Array([item]));\n }\n },\n\n __attachEventHandlers: function() {\n this.addListener(\"keypress\", keyEvent => {\n switch (keyEvent.getKeyIdentifier()) {\n case \"F2\":\n this._openItemRenamer();\n break;\n case \"I\":\n this.__openNodeInfo();\n break;\n case \"Delete\":\n this.__deleteNode();\n break;\n }\n }, this);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.widget.StudyTitleOnlyTree\", {\n extend: osparc.widget.NodesTree,\n\n construct: function() {\n this.base(arguments, null, \"label\", \"children\");\n\n this.set({\n hideRoot: false\n });\n },\n\n members: {\n // override\n populateTree: function() {\n const study = this.getStudy();\n const newModel = osparc.widget.NodesTree.createStudyModel(study);\n this.setModel(newModel);\n this.setDelegate({\n ...this._getDelegate(study),\n createItem: () => {\n const studyTreeItem = new osparc.widget.NodeTreeItem();\n studyTreeItem.addListener(\"renameNode\", e => this._openItemRenamer(e.getData()));\n studyTreeItem.addListener(\"infoNode\", () => this.__openStudyInfo());\n return studyTreeItem;\n }\n });\n },\n\n __openStudyInfo: function() {\n const studyDetails = new osparc.info.StudyLarge(this.getStudy());\n const title = this.tr(\"Study Information\");\n const width = osparc.info.CardLarge.WIDTH;\n const height = osparc.info.CardLarge.HEIGHT;\n osparc.ui.window.Window.popUpInWindow(studyDetails, title, width, height).set({\n maxHeight: height\n });\n },\n\n selectStudyItem: function() {\n this.setSelection(new qx.data.Array([this.getModel()]));\n this.fireDataEvent(\"changeSelectedNode\", this.getModel().getId());\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * VirtualTree that is able to build its content.\n *\n * Elements in the tree also accept Drag and/or Drop mechanisms which are implemented here.\n * \"osparc-file-link\" type is used for the Drag&Drop.\n *\n * If a file is dropped into a folder, this class will start the copying process firing\n * \"fileCopied\" event if successful\n *\n * Also provides two static methods for checking whether en entry in the tree is File/Directory\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let filesTree = new osparc.file.FilesTree();\n * this.getRoot().add(filesTree);\n *
\n */\n\nqx.Class.define(\"osparc.file.FilesTree\", {\n extend: qx.ui.tree.VirtualTree,\n\n construct: function() {\n this.base(arguments, null, \"label\", \"children\");\n\n this.set({\n openMode: \"none\",\n decorator: \"no-border\",\n font: \"text-14\",\n });\n\n this.resetChecks();\n\n this.addListener(\"tap\", this.__selectionChanged, this);\n\n // Listen to \"Enter\" key\n this.addListener(\"keypress\", keyEvent => {\n if (keyEvent.getKeyIdentifier() === \"Enter\") {\n this.__itemSelected();\n }\n }, this);\n\n this.__loadPaths = {};\n },\n\n properties: {\n dragMechanism: {\n check: \"Boolean\",\n init: false\n },\n\n dropMechanism: {\n check: \"Boolean\",\n init: false\n }\n },\n\n events: {\n \"selectionChanged\": \"qx.event.type.Event\", // tap\n \"itemSelected\": \"qx.event.type.Event\", // dbltap\n \"fileCopied\": \"qx.event.type.Data\",\n \"filesAddedToTree\": \"qx.event.type.Event\"\n },\n\n statics: {\n isDir: function(item) {\n let isDir = false;\n if (item[\"get\"+qx.lang.String.firstUp(\"path\")]) {\n if (item.getPath() !== null) {\n isDir = true;\n }\n }\n return isDir;\n },\n\n isFile: function(item) {\n let isFile = false;\n if (item[\"set\"+qx.lang.String.firstUp(\"fileId\")]) {\n isFile = true;\n }\n return isFile;\n },\n\n addLoadingChild: function(parent) {\n const loadingModel = qx.data.marshal.Json.createModel({\n label: \"Loading...\",\n location: null,\n path: null,\n children: [],\n icon: \"@FontAwesome5Solid/circle-notch/12\"\n }, true);\n parent.getChildren().append(loadingModel);\n },\n\n removeLoadingChild: function(parent) {\n for (let i = parent.getChildren().length - 1; i >= 0; i--) {\n if (parent.getChildren().toArray()[i].getLabel() === \"Loading...\") {\n parent.getChildren().toArray()\n .splice(i, 1);\n }\n }\n },\n\n attachPathLabel: function(srcPathLabel, data) {\n data[\"pathLabel\"] = srcPathLabel.concat(data[\"label\"]);\n if (\"children\" in data) {\n data.children.forEach(child => this.self().attachPathLabel(data[\"pathLabel\"], child));\n }\n }\n },\n\n members: {\n __locations: null,\n __datasets: null,\n __loadPaths: null,\n\n resetChecks: function() {\n this.__locations = new Set();\n this.__datasets = new Set();\n },\n\n resetCache: function() {\n this.resetChecks();\n\n const dataStore = osparc.store.Data.getInstance();\n dataStore.resetCache();\n },\n\n populateStudyTree: function(studyId) {\n const treeName = osparc.product.Utils.getStudyAlias({firstUpperCase: true}) + \" Files\";\n this.__resetTree(treeName);\n let studyModel = this.getModel();\n this.self().addLoadingChild(studyModel);\n\n const dataStore = osparc.store.Data.getInstance();\n return dataStore.getFilesByLocationAndDataset(\"0\", studyId)\n .then(data => {\n const {\n files\n } = data;\n\n if (files.length && \"project_name\" in files[0]) {\n this.__resetTree(files[0][\"project_name\"]);\n }\n studyModel = this.getModel();\n this.__filesToDataset(\"0\", studyId, files, studyModel);\n\n // select study item\n this.setSelection(new qx.data.Array([studyModel]));\n this.__selectionChanged();\n });\n },\n\n populateNodeTree(nodeId) {\n const treeName = \"Node Files\";\n this.__resetTree(treeName);\n const rootModel = this.getModel();\n this.self().addLoadingChild(rootModel);\n\n const dataStore = osparc.store.Data.getInstance();\n return dataStore.getNodeFiles(nodeId)\n .then(files => {\n const newChildren = osparc.data.Converters.fromDSMToVirtualTreeModel(null, files);\n if (newChildren.length && // location\n newChildren[0].children.length && // study\n newChildren[0].children[0].children.length) { // node\n const nodeData = newChildren[0].children[0].children[0];\n const nodeTreeName = nodeData.label;\n this.__resetTree(nodeTreeName, nodeId);\n const rootNodeModel = this.getModel();\n if (nodeData.children.length) {\n const nodeItemsOnly = nodeData.children;\n this.__itemsToNode(nodeItemsOnly);\n }\n this.openNode(rootNodeModel);\n\n // select node item\n this.setSelection(new qx.data.Array([rootNodeModel]));\n this.__selectionChanged();\n } else {\n rootModel.getChildren().removeAll();\n }\n });\n },\n\n populateTree: function() {\n return this.__populateLocations();\n },\n\n loadFilePath: function(outFileVal) {\n const locationId = outFileVal.store;\n let datasetId = \"dataset\" in outFileVal ? outFileVal.dataset : null;\n const pathId = outFileVal.path;\n if (datasetId === null) {\n const splitted = pathId.split(\"/\");\n if (splitted.length === 3) {\n // simcore.s3\n datasetId = splitted[0];\n }\n }\n this.__addToLoadFilePath(locationId, datasetId, pathId);\n this.__populateLocations();\n },\n\n __addToLoadFilePath: function(locationId, datasetId, pathId) {\n if (datasetId) {\n if (!(locationId in this.__loadPaths)) {\n this.__loadPaths[locationId] = {};\n }\n if (!(datasetId in this.__loadPaths[locationId])) {\n this.__loadPaths[locationId][datasetId] = new Set();\n }\n this.__loadPaths[locationId][datasetId].add(pathId);\n }\n },\n\n __hasLocationNeedToBeLoaded: function(locationId) {\n return (locationId in this.__loadPaths) && (Object.keys(this.__loadPaths[locationId]).length > 0);\n },\n\n __hasDatasetNeedToBeLoaded: function(locationId, datasetId) {\n return (locationId in this.__loadPaths) && (datasetId in this.__loadPaths[locationId]) && (this.__loadPaths[locationId][datasetId].size > 0);\n },\n\n __filesReceived: function(locationId, datasetId, files) {\n if (this.__hasDatasetNeedToBeLoaded(locationId, datasetId)) {\n const paths = Array.from(this.__loadPaths[locationId][datasetId]);\n for (let i=0; i new osparc.file.FileTreeItem(),\n bindItem: (c, item, id) => {\n c.bindDefaultProperties(item, id);\n c.bindProperty(\"itemId\", \"itemId\", null, item, id);\n c.bindProperty(\"fileId\", \"fileId\", null, item, id);\n c.bindProperty(\"location\", \"location\", null, item, id);\n c.bindProperty(\"isDataset\", \"isDataset\", null, item, id);\n c.bindProperty(\"datasetId\", \"datasetId\", null, item, id);\n c.bindProperty(\"loaded\", \"loaded\", null, item, id);\n c.bindProperty(\"path\", \"path\", null, item, id);\n c.bindProperty(\"pathLabel\", \"pathLabel\", null, item, id);\n c.bindProperty(\"lastModified\", \"lastModified\", null, item, id);\n c.bindProperty(\"size\", \"size\", null, item, id);\n c.bindProperty(\"icon\", \"icon\", null, item, id);\n },\n configureItem: item => {\n const openButton = item.getChildControl(\"open\");\n openButton.addListener(\"tap\", () => {\n if (item.isOpen() && !item.getLoaded() && item.getIsDataset()) {\n item.setLoaded(true);\n const locationId = item.getLocation();\n const datasetId = item.getPath();\n this.requestDatasetFiles(locationId, datasetId);\n }\n }, this);\n item.addListener(\"dbltap\", () => this.__itemSelected(), this);\n this.__addDragAndDropMechanisms(item);\n }\n });\n },\n\n __populateLocations: function() {\n this.resetChecks();\n\n const treeName = \"My Data\";\n this.__resetTree(treeName);\n const rootModel = this.getModel();\n rootModel.getChildren().removeAll();\n this.self().addLoadingChild(rootModel);\n\n this.set({\n hideRoot: true\n });\n const dataStore = osparc.store.Data.getInstance();\n return dataStore.getLocations()\n .then(locations => {\n const datasetPromises = [];\n if (this.__locations.size === 0) {\n this.resetChecks();\n this.__locationsToRoot(locations);\n for (let i=0; i {\n const {\n location,\n datasets\n } = data;\n if (location === locationId && !this.__locations.has(locationId)) {\n this.__datasetsToLocation(location, datasets);\n }\n });\n },\n\n requestDatasetFiles: function(locationId, datasetId) {\n if (this.__datasets.has(datasetId)) {\n return null;\n }\n\n const dataStore = osparc.store.Data.getInstance();\n return dataStore.getFilesByLocationAndDataset(locationId, datasetId)\n .then(data => {\n const {\n location,\n dataset,\n files\n } = data;\n this.__filesToDataset(location, dataset, files);\n });\n },\n\n __getLocationModel: function(locationId) {\n const rootModel = this.getModel();\n const locationModels = rootModel.getChildren();\n for (let i=0; i this.self().attachPathLabel(currentModel.getPathLabel(), file));\n const newModelToAdd = qx.data.marshal.Json.createModel(files, true);\n currentModel.getChildren().append(newModelToAdd);\n this.setModel(currentModel);\n this.fireEvent(\"filesAddedToTree\");\n\n return newModelToAdd;\n },\n\n __datasetsToLocation: function(locationId, datasets) {\n const dataStore = osparc.store.Data.getInstance();\n\n const locationModel = this.__getLocationModel(locationId);\n if (!locationModel) {\n return;\n }\n this.__locations.add(locationId);\n locationModel.getChildren().removeAll();\n let openThis = null;\n datasets.forEach(dataset => {\n const datasetData = osparc.data.Converters.createDirEntry(\n dataset.display_name,\n locationId,\n dataset.dataset_id\n );\n datasetData.isDataset = true;\n datasetData.loaded = false;\n datasetData[\"pathLabel\"] = locationModel.getPathLabel().concat(datasetData[\"label\"]);\n const datasetModel = qx.data.marshal.Json.createModel(datasetData, true);\n this.self().addLoadingChild(datasetModel);\n locationModel.getChildren().append(datasetModel);\n\n // add cached files\n const datasetId = dataset.dataset_id;\n const cachedData = dataStore.getFilesByLocationAndDatasetCached(locationId, datasetId);\n if (cachedData) {\n this.__filesToDataset(cachedData.location, cachedData.dataset, cachedData.files);\n }\n\n if (this.__hasDatasetNeedToBeLoaded(locationId, datasetId)) {\n openThis = datasetModel;\n }\n });\n // sort datasets\n osparc.data.Converters.sortModelByLabel(locationModel);\n\n this.__rerender(locationModel);\n\n if (openThis) {\n const datasetId = openThis.getItemId();\n this.openNodeAndParents(openThis);\n this.requestDatasetFiles(locationId, datasetId);\n }\n },\n\n __filesToDataset: function(locationId, datasetId, files, model) {\n if (this.__datasets.has(datasetId)) {\n return;\n }\n\n const datasetModel = model ? model : this.__getDatasetModel(locationId, datasetId);\n if (datasetModel) {\n datasetModel.getChildren().removeAll();\n if (files.length) {\n const locationData = osparc.data.Converters.fromDSMToVirtualTreeModel(datasetId, files);\n const datasetData = locationData[0].children;\n datasetData[0].children.forEach(data => {\n this.self().attachPathLabel(datasetModel.getPathLabel(), data);\n const filesModel = qx.data.marshal.Json.createModel(data, true);\n datasetModel.getChildren().append(filesModel);\n });\n }\n // sort files\n osparc.data.Converters.sortModelByLabel(datasetModel);\n\n this.__rerender(datasetModel);\n\n this.__datasets.add(datasetId);\n this.fireEvent(\"filesAddedToTree\");\n }\n\n this.__filesReceived(locationId, datasetId, files);\n },\n\n __rerender: function(item) {\n // Hack to trigger a rebuild of the item.\n // Without this sometimes the arrow giving access to the children is not rendered\n if (!this.isNodeOpen(item)) {\n this.openNode(item);\n this.closeNode(item);\n }\n },\n\n getParent: function(childItem) {\n const root = this.getModel();\n const list = [];\n this.__getItemsInTree(root, list);\n return list.find(element => element.getChildren && element.getChildren().contains(childItem));\n },\n\n findItemId: function(itemId) {\n const root = this.getModel();\n const items = [];\n this.__getItemsInTree(root, items);\n return items.find(element => \"getItemId\" in element && element.getItemId() === itemId);\n },\n\n __getItemsInTree: function(item, items) {\n items.push(item);\n if (item.getChildren) {\n item.getChildren().forEach(child => {\n this.__getItemsInTree(child, items);\n });\n }\n },\n\n __getLeavesInTree: function(item, leaves) {\n if (item.getChildren == null) {\n leaves.push(item);\n } else {\n item.getChildren().forEach(child => {\n this.__getLeavesInTree(child, leaves);\n });\n }\n },\n\n __findUuidInLeaves: function(uuid) {\n const root = this.getModel();\n const leaves = [];\n this.__getLeavesInTree(root, leaves);\n return leaves.find(element => element.getFileId() === uuid);\n },\n\n setSelectedFile: function(fileId) {\n const item = this.__findUuidInLeaves(fileId);\n if (item) {\n this.openNodeAndParents(item);\n\n const selectItem = new qx.data.Array();\n if (this.getShowLeafs()) {\n selectItem.push(item);\n } else {\n console.log(\"select parent\", fileId);\n const parent = this.getParent(item);\n if (parent) {\n selectItem.push(parent);\n }\n }\n if (selectItem.length) {\n this.setSelection(selectItem);\n this.__selectionChanged();\n return true;\n }\n }\n\n return false;\n },\n\n getSelectedItem: function() {\n let selection = this.getSelection().toArray();\n if (selection.length > 0) {\n return selection[0];\n }\n return null;\n },\n\n __selectionChanged: function() {\n let selectedItem = this.getSelectedItem();\n if (selectedItem) {\n this.fireEvent(\"selectionChanged\");\n }\n },\n\n __itemSelected: function() {\n let selectedItem = this.getSelectedItem();\n if (selectedItem) {\n this.fireEvent(\"itemSelected\");\n }\n },\n\n __addDragAndDropMechanisms: function(item) {\n if (this.isDragMechanism()) {\n this.__createDragMechanism(item);\n }\n\n if (this.isDropMechanism()) {\n this.__createDropMechanism(item);\n }\n },\n\n __createDragMechanism: function(treeItem) {\n treeItem.setDraggable(true);\n treeItem.addListener(\"dragstart\", e => {\n const origin = e.getOriginalTarget();\n if (this.self().isFile(origin)) {\n // Register supported actions\n e.addAction(\"copy\");\n // Register supported types\n e.addType(\"osparc-file-link\");\n\n e.addData(\"osparc-file-link\", {\n dragData: origin.getModel()\n });\n } else {\n e.preventDefault();\n }\n }, this);\n },\n\n __createDropMechanism: function(treeItem) {\n treeItem.setDroppable(true);\n treeItem.addListener(\"dragover\", e => {\n let compatible = false;\n if (this.self().isDir(e.getOriginalTarget())) {\n if (e.supportsType(\"osparc-file-link\")) {\n compatible = true;\n }\n }\n if (!compatible) {\n e.preventDefault();\n }\n }, this);\n\n treeItem.addListener(\"drop\", e => {\n if (e.supportsType(\"osparc-file-link\")) {\n const from = e.getRelatedTarget();\n const to = e.getCurrentTarget();\n const dataStore = osparc.store.Data.getInstance();\n console.log(\"Copy\", from.getFileId(), \"to\", to.getPath());\n const requestSent = dataStore.copyFile(from.getLocation(), from.getFileId(), to.getLocation(), to.getPath());\n if (requestSent) {\n dataStore.addListenerOnce(\"fileCopied\", ev => {\n if (ev) {\n this.fireDataEvent(\"fileCopied\", ev.getData());\n }\n }, this);\n }\n }\n }, this);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.CollapseWithUserMenu\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.HBox());\n\n this.__buildLayout();\n },\n\n events: {\n \"backToDashboardPressed\": \"qx.event.type.Event\",\n \"collapseNavBar\": \"qx.event.type.Event\",\n \"expandNavBar\": \"qx.event.type.Event\"\n },\n\n properties: {\n collapsed: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n event: \"changeCollapsed\",\n apply: \"__applyCollapsed\"\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"separator\":\n control = new qx.ui.toolbar.Separator().set({\n width: 2,\n padding: 0,\n margin: [7, 10, 7, 0],\n backgroundColor: \"default-button-disabled-background\"\n });\n this._add(control);\n break;\n case \"back-to-dashboard-button\":\n control = new osparc.ui.form.FetchButton(this.tr(\"Dashboard\"), \"@FontAwesome5Solid/arrow-left/14\").set({\n appearance: \"fab-button\",\n alignY: \"middle\",\n padding: [5, 16],\n ...osparc.navigation.NavigationBar.BUTTON_OPTIONS\n });\n osparc.utils.Utils.setIdToWidget(control, \"dashboardBtn\");\n control.addListener(\"execute\", () => this.fireEvent(\"backToDashboardPressed\"));\n this._add(control);\n break;\n case \"user-menu-button\":\n control = new osparc.navigation.UserMenuButton();\n osparc.WatchDog.getInstance().bind(\"online\", control, \"backgroundColor\", {\n converter: on => on ? \"background-main-4\" : \"red\"\n });\n control.getChildControl(\"label\").exclude();\n control.populateMenuCompact();\n this._add(control);\n break;\n case \"collapse-expand-stack\": {\n control = new qx.ui.container.Stack();\n\n const collapseNavBarBtn = new qx.ui.form.Button(null, \"@FontAwesome5Solid/chevron-up/14\").set({\n appearance: \"fab-button\",\n ...osparc.navigation.NavigationBar.BUTTON_OPTIONS\n });\n control.add(collapseNavBarBtn);\n collapseNavBarBtn.addListener(\"execute\", () => {\n this.setCollapsed(true);\n this.fireEvent(\"collapseNavBar\");\n });\n\n const expandNavBarBtn = new qx.ui.form.Button(null, \"@FontAwesome5Solid/chevron-down/14\").set({\n appearance: \"fab-button\",\n ...osparc.navigation.NavigationBar.BUTTON_OPTIONS\n });\n control.add(expandNavBarBtn);\n expandNavBarBtn.addListener(\"execute\", () => {\n this.setCollapsed(false);\n this.fireEvent(\"expandNavBar\");\n });\n\n this._add(control);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __buildLayout: function() {\n const separator = this.getChildControl(\"separator\");\n separator.exclude();\n\n const backToDashboardBtn = this.getChildControl(\"back-to-dashboard-button\");\n backToDashboardBtn.set({\n marginRight: 10\n });\n backToDashboardBtn.exclude();\n\n const userMenuButton = this.getChildControl(\"user-menu-button\");\n userMenuButton.set({\n marginRight: 1,\n marginTop: 3\n });\n userMenuButton.exclude();\n\n const collapseExpandStack = this.getChildControl(\"collapse-expand-stack\");\n collapseExpandStack.set({\n padding: 8,\n marginRight: 4\n });\n },\n\n __applyCollapsed: function(collapsed) {\n this.getChildControl(\"separator\").setVisibility(collapsed ? \"visible\" : \"excluded\");\n this.getChildControl(\"back-to-dashboard-button\").setVisibility(collapsed ? \"visible\" : \"excluded\");\n this.getChildControl(\"user-menu-button\").setVisibility(collapsed ? \"visible\" : \"excluded\");\n const collapseExpandStack = this.getChildControl(\"collapse-expand-stack\");\n collapseExpandStack.setSelection([collapseExpandStack.getSelectables()[collapsed ? 1 : 0]]);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.info.StudyMedium\", {\n extend: qx.ui.core.Widget,\n\n /**\n * @param study {osparc.data.model.Study} Study\n */\n construct: function(study) {\n this.base(arguments);\n\n this.set({\n padding: 0,\n backgroundColor: \"background-main\"\n });\n this._setLayout(new qx.ui.layout.VBox(20));\n\n if (study) {\n this.setStudy(study);\n }\n\n this.addListenerOnce(\"appear\", () => this.__rebuildLayout(), this);\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n apply: \"__applyStudy\",\n init: null,\n nullable: false\n }\n },\n\n members: {\n __applyStudy: function() {\n this.__rebuildLayout();\n },\n\n __rebuildLayout: function() {\n this._removeAll();\n\n const nameAndMenuButton = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignY: \"middle\"\n }));\n nameAndMenuButton.add(osparc.info.StudyUtils.createTitle(this.getStudy()), {\n flex: 1\n });\n nameAndMenuButton.add(this.__createMenuButton());\n this._add(nameAndMenuButton);\n\n const thumbnail = this.__createThumbnail(160, 100);\n if (thumbnail) {\n this._add(thumbnail);\n }\n\n const extraInfo = this.__extraInfo();\n const extraInfoLayout = this.__createExtraInfo(extraInfo);\n this._add(extraInfoLayout);\n\n const descriptionLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(8)).set({\n marginTop: -10 // bring it closer to the extra info\n });\n const title = new qx.ui.basic.Label(this.tr(\"DESCRIPTION\")).set({\n paddingLeft: 14 // align it with the other titles\n });\n descriptionLayout.add(title);\n descriptionLayout.add(osparc.info.StudyUtils.createDescriptionMD(this.getStudy()));\n this._add(descriptionLayout);\n },\n\n __createMenuButton: function() {\n const menu = new qx.ui.menu.Menu().set({\n position: \"bottom-right\"\n });\n\n const menuButton = new qx.ui.form.MenuButton().set({\n menu,\n width: 25,\n height: 25,\n icon: \"@FontAwesome5Solid/ellipsis-v/14\",\n focusable: false,\n allowGrowY: false\n });\n\n const moreInfoButton = this.__getMoreInfoMenuButton();\n if (moreInfoButton) {\n menu.add(moreInfoButton);\n }\n\n return menuButton;\n },\n\n __getMoreInfoMenuButton: function() {\n const moreInfoButton = new qx.ui.menu.Button(this.tr(\"More Info\"));\n moreInfoButton.addListener(\"execute\", () => this.__openStudyDetails(), this);\n return moreInfoButton;\n },\n\n __extraInfo: function() {\n const extraInfo = [{\n label: this.tr(\"AUTHOR\"),\n view: osparc.info.StudyUtils.createOwner(this.getStudy())\n }, {\n label: this.tr(\"ACCESS RIGHTS\"),\n view: osparc.info.StudyUtils.createAccessRights(this.getStudy())\n }, {\n label: this.tr(\"CREATED\"),\n view: osparc.info.StudyUtils.createCreationDate(this.getStudy())\n }, {\n label: this.tr(\"MODIFIED\"),\n view: osparc.info.StudyUtils.createLastChangeDate(this.getStudy())\n }];\n\n if (\n osparc.product.Utils.showQuality() &&\n osparc.metadata.Quality.isEnabled(this.getStudy().getQuality())\n ) {\n extraInfo.push({\n label: this.tr(\"QUALITY\"),\n view: osparc.info.StudyUtils.createQuality(this.getStudy())\n });\n }\n\n extraInfo.push({\n label: this.tr(\"TAGS\"),\n view: osparc.info.StudyUtils.createTags(this.getStudy())\n });\n\n return extraInfo;\n },\n\n __createExtraInfo: function(extraInfo) {\n const moreInfo = osparc.info.Utils.extraInfosToGrid(extraInfo);\n return moreInfo;\n },\n\n __createThumbnail: function(maxWidth, maxHeight = 150) {\n if (this.getStudy().getThumbnail()) {\n return osparc.info.StudyUtils.createThumbnail(this.getStudy(), maxWidth, maxHeight);\n }\n return null;\n },\n\n __openStudyDetails: function() {\n const studyDetails = new osparc.info.StudyLarge(this.getStudy());\n const title = this.tr(\"Study Information\");\n const width = osparc.info.CardLarge.WIDTH;\n const height = osparc.info.CardLarge.HEIGHT;\n osparc.ui.window.Window.popUpInWindow(studyDetails, title, width, height).set({\n maxHeight: height\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.node.ParameterEditor\", {\n extend: qx.ui.form.renderer.Single,\n\n construct: function(node) {\n this.set({\n node\n });\n\n const form = this.__form = new qx.ui.form.Form();\n this.base(arguments, form);\n },\n\n statics: {\n getParameterOutputTypeFromMD: function(metadata) {\n let type = metadata[\"outputs\"][\"out_1\"][\"type\"];\n if (type === \"ref_contentSchema\") {\n type = metadata[\"outputs\"][\"out_1\"][\"contentSchema\"][\"type\"];\n }\n return type;\n },\n\n getParameterOutputType: function(node) {\n const metadata = node.getMetaData();\n return this.self().getParameterOutputTypeFromMD(metadata);\n },\n\n setParameterOutputValue: function(node, val) {\n node.setOutputData({\n \"out_1\": this.self().getParameterOutputType(node) === \"array\" ? osparc.ui.form.ContentSchemaArray.addArrayBrackets(val) : val\n });\n }\n },\n\n properties: {\n node: {\n check: \"osparc.data.model.Node\"\n }\n },\n\n members: {\n __form: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"label\":\n case \"string\":\n case \"number\":\n control = new qx.ui.form.TextField();\n break;\n case \"data-type\": {\n control = new qx.ui.form.SelectBox().set({\n allowGrowX: false\n });\n [\n \"number\",\n \"integer\",\n \"boolean\"\n ].forEach(parametrizableType => {\n const parametrizableTypeItem = new qx.ui.form.ListItem(qx.lang.String.firstUp(parametrizableType));\n parametrizableTypeItem.type = parametrizableType;\n control.add(parametrizableTypeItem);\n });\n break;\n }\n case \"integer\":\n control = new qx.ui.form.Spinner();\n control.set({\n maximum: 10000,\n minimum: -10000\n });\n break;\n case \"boolean\":\n control = new qx.ui.form.CheckBox();\n break;\n case \"ref_contentSchema\":\n case \"array\":\n control = new osparc.ui.form.ContentSchemaArray();\n break;\n }\n return control || this.base(arguments, id);\n },\n\n buildForm: function(allSettings = true) {\n this._removeAll();\n\n const node = this.getNode();\n\n const type = this.self().getParameterOutputType(node);\n if (allSettings) {\n const label = this.getChildControl(\"label\");\n label.setValue(node.getLabel());\n label.bind(\"value\", node, \"label\");\n this.__form.add(label, \"Label\", null, \"label\");\n\n const typeBox = this.getChildControl(\"data-type\");\n typeBox.getSelectables().forEach(selectable => {\n if (selectable.type === type) {\n typeBox.setSelection([selectable]);\n typeBox.setEnabled(false);\n }\n });\n this.__form.add(typeBox, \"Data Type\", null, \"type\");\n }\n\n const valueField = this.getChildControl(type);\n const outputs = node.getOutputs();\n if (type === \"ref_contentSchema\") {\n valueField.setContentSchema(outputs[\"out_1\"][\"contentSchema\"]);\n }\n if (\"value\" in outputs[\"out_1\"]) {\n if ([\"integer\", \"boolean\"].includes(type)) {\n valueField.setValue(outputs[\"out_1\"][\"value\"]);\n } else {\n valueField.setValue(String(outputs[\"out_1\"][\"value\"]));\n }\n }\n valueField.addListener(\"changeValue\", e => osparc.node.ParameterEditor.setParameterOutputValue(node, e.getData()));\n this.__form.add(valueField, \"Value\", null, \"value\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Ignacio Pascual (ignapas)\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n/* eslint-disable no-use-before-define */\n\n/**\n * Display widget with a title bar and collapsible content.\n */\nqx.Class.define(\"osparc.widget.CollapsibleView\", {\n extend: qx.ui.core.Widget,\n\n construct: function(title, content) {\n this.base(arguments);\n\n // Layout\n this._setLayout(new qx.ui.layout.VBox());\n\n this.getChildControl(\"caret\");\n\n // Set if coming in the constructor arguments\n if (title) {\n this.setTitle(title);\n }\n if (content) {\n this.setContent(content);\n }\n },\n\n statics: {\n COLLAPSED_CARET: \"@MaterialIcons/chevron_right/\",\n EXPANDED_CARET: \"@MaterialIcons/expand_more/\"\n },\n\n properties: {\n title: {\n check: \"String\",\n nullable: true,\n apply: \"_applyTitle\"\n },\n\n content: {\n check: \"qx.ui.core.Widget\",\n nullable: true,\n apply: \"_applyContent\"\n },\n\n collapsed: {\n init: false,\n check: \"Boolean\",\n apply: \"_applyCollapsed\",\n event: \"changeCollapsed\"\n },\n\n caretSize: {\n init: 20,\n nullable: false,\n check: \"Integer\",\n apply: \"_applyCaretSize\"\n }\n },\n\n members: {\n _innerContainer: null,\n __containerHeight: null,\n __layoutFlex: null,\n __minHeight: null,\n __contentMinHeight: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"header\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(5).set({\n alignY: \"middle\"\n }));\n this._add(control);\n break;\n case \"caret\": {\n const header = this.getChildControl(\"header\");\n control = new qx.ui.basic.Image(this.__getCaretId(this.getCollapsed())).set({\n visibility: \"excluded\"\n });\n header.addAt(control, 0);\n // Attach handler\n this.__attachToggler(control);\n break;\n }\n case \"title\": {\n const header = this.getChildControl(\"header\");\n control = new qx.ui.basic.Label(this.getTitle());\n header.addAt(control, 1);\n // Attach handler\n this.__attachToggler(control);\n break;\n }\n case \"icon\": {\n const header = this.getChildControl(\"header\");\n control = new qx.ui.basic.Image();\n header.addAt(control, 2);\n break;\n }\n case \"title-btns-left\": {\n const header = this.getChildControl(\"header\");\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(10)).set({\n paddingLeft: 20\n });\n header.addAt(control, 3);\n break;\n }\n case \"title-btns-right\": {\n const header = this.getChildControl(\"header\");\n header.addAt(new qx.ui.core.Spacer(), 4, {\n flex: 1\n });\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(0)).set({\n paddingRight: 8\n });\n header.addAt(control, 5);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n toggleCollapsed: function() {\n this.setCollapsed(!this.getCollapsed());\n },\n\n getTitleBar: function() {\n return this.getChildControl(\"header\");\n },\n\n getTitleLabel: function() {\n return this.getChildControl(\"title\");\n },\n\n getTitleBarBtnsContainerLeft: function() {\n return this.getChildControl(\"title-btns-left\");\n },\n\n getTitleBarBtnsContainerRight: function() {\n return this.getChildControl(\"title-btns-right\");\n },\n\n _applyCollapsed: function(collapsed) {\n if (this.getContent()) {\n this.getChildControl(\"caret\").setSource(this.__getCaretId(collapsed));\n if (collapsed) {\n this.__minHeight = this.getMinHeight();\n if (this.getContent()) {\n this.__contentMinHeight = this.getContent().getMinHeight();\n this.getContent().setMinHeight(0);\n }\n this.setMinHeight(0);\n if (this.getLayoutProperties().flex) {\n this.__layoutFlex = this.getLayoutProperties().flex;\n this.setLayoutProperties({\n flex: 0\n });\n }\n } else {\n this.setMinHeight(this.__minHeight);\n if (this.getContent()) {\n this.getContent().setMinHeight(this.__contentMinHeight);\n }\n if (this.__layoutFlex) {\n this.setLayoutProperties({\n flex: this.__layoutFlex\n });\n }\n }\n // this._innerContainer.setHeight(collapsed ? 0 : this.__containerHeight);\n this._innerContainer.setVisibility(collapsed ? \"excluded\" : \"visible\");\n }\n },\n\n _applyContent: function(content, oldContent) {\n if (this._innerContainer === null) {\n this._innerContainer = new qx.ui.container.Composite(new qx.ui.layout.Grow()).set({\n padding: 0\n });\n this._addAt(this._innerContainer, 1, {\n flex: 1\n });\n\n this._innerContainer.addListener(\"changeHeight\", e => {\n const height = e.getOldData();\n if (height != 0) {\n this.__containerHeight = height;\n }\n }, this);\n\n content.addListenerOnce(\"appear\", () => {\n content.getContentElement().getDomElement().style.transform = \"translateZ(0)\";\n });\n }\n\n this._innerContainer.removeAll();\n this._innerContainer.add(content);\n this._innerContainer.setHeight(this.getCollapsed() ? 0 : this.__containerHeight);\n\n const caret = this.getChildControl(\"caret\");\n if (content) {\n caret.show();\n } else {\n caret.exclude();\n }\n },\n\n getInnerContainer: function() {\n return this._innerContainer;\n },\n\n _applyCaretSize: function(size) {\n this.getChildControl(\"caret\").setSource(this.__getCaretId(this.getCollapsed()));\n },\n\n _applyTitle: function(title) {\n this.getChildControl(\"title\").setValue(title);\n },\n\n _applyIcon: function(icon) {\n this.getChildControl(\"icon\").setSource(icon);\n },\n\n __getCaretId: function(collapsed) {\n const caretSize = this.getCaretSize();\n const moreCaret = this.self().COLLAPSED_CARET;\n const lessCaret = this.self().EXPANDED_CARET;\n return collapsed ? moreCaret + caretSize : lessCaret + caretSize;\n },\n\n __attachToggler: function(control) {\n control.addListener(\"tap\", () => {\n this.toggleCollapsed();\n }, this);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\n/**\n * Display widget with a title bar and collapsible content.\n */\nqx.Class.define(\"osparc.desktop.PanelView\", {\n extend: osparc.widget.CollapsibleView,\n\n construct: function(title, content) {\n this.base(arguments, title, content);\n\n // Title bar\n this.getTitleBar().set({\n appearance: \"panelview-titlebar\"\n });\n },\n\n properties: {\n appearance: {\n init: \"panelview\",\n refine: true\n }\n },\n\n members: {\n // override\n _applyContent: function(content, oldContent) {\n this.base(arguments, content, oldContent);\n\n this.getInnerContainer().set({\n appearance: \"panelview-content\"\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.widget.NodeOptions\", {\n extend: qx.ui.core.Widget,\n\n /**\n * @param node {osparc.data.model.Node} Node owning the widget\n */\n construct: function(node) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(15));\n\n // it will become visible if children are added\n this.exclude();\n\n this.setNode(node);\n },\n\n properties: {\n node: {\n check: \"osparc.data.model.Node\",\n nullable: false\n }\n },\n\n members: {\n // overridden\n _afterAddChild: function() {\n this.show();\n },\n\n buildLayout: async function() {\n const node = this.getNode();\n\n const sections = [];\n let showStartStopButton = false;\n\n // Tier Selection\n if (osparc.desktop.credits.Utils.areWalletsEnabled()) {\n const tierSelectionView = new osparc.node.TierSelectionView(node);\n sections.push(tierSelectionView);\n\n if (node.isDynamic()) {\n showStartStopButton = true;\n }\n }\n\n // Life Cycle\n if (\n node.isDynamic() &&\n (node.isUpdatable() || node.isDeprecated() || node.isRetired())\n ) {\n const lifeCycleView = new osparc.node.LifeCycleView(node);\n sections.push(lifeCycleView);\n\n showStartStopButton = true;\n }\n\n // Boot Options\n if (node.hasBootModes()) {\n const bootOptionsView = new osparc.node.BootOptionsView(node);\n sections.push(bootOptionsView);\n\n showStartStopButton = true;\n }\n\n // Update Resource Limits\n if (\n await osparc.data.Permissions.getInstance().checkCanDo(\"override_services_specifications\") &&\n (node.isComputational() || node.isDynamic())\n ) {\n const updateResourceLimitsView = new osparc.node.UpdateResourceLimitsView(node);\n sections.push(updateResourceLimitsView);\n\n showStartStopButton |= node.isDynamic();\n }\n\n if (showStartStopButton) {\n // Only available to dynamic services\n const instructions = new qx.ui.basic.Label(this.tr(\"To proceed with the following actions, the service needs to be Stopped.\")).set({\n font: \"text-13\",\n rich: true,\n wrap: true\n });\n this._add(instructions);\n\n const startStopButton = new osparc.node.StartStopButton();\n startStopButton.setNode(node);\n this._add(startStopButton);\n\n startStopButton.getChildControl(\"stop-button\").bind(\"visibility\", instructions, \"visibility\");\n }\n\n sections.forEach(section => this._add(section));\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.Toolbar\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.HBox(10).set({\n alignY: \"middle\"\n }));\n\n this.set({\n paddingLeft: 6,\n paddingRight: 6,\n height: 46\n });\n\n this._buildLayout();\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n apply: \"_applyStudy\",\n nullable: false\n }\n },\n\n members: {\n _buildLayout: function() {\n throw new Error(\"Abstract method called!\");\n },\n\n _applyStudy: function(study) {\n if (study) {\n this._populateNodesNavigationLayout();\n study.getUi().addListener(\"changeCurrentNodeId\", () => this._populateNodesNavigationLayout(), this);\n }\n },\n\n _populateNodesNavigationLayout: function() {\n throw new Error(\"Abstract method called!\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.SlideshowToolbar\", {\n extend: osparc.desktop.Toolbar,\n\n events: {\n \"nodeSelectionRequested\": \"qx.event.type.Data\",\n \"saveSlideshow\": \"qx.event.type.Event\",\n \"addServiceBetween\": \"qx.event.type.Data\",\n \"removeNode\": \"qx.event.type.Data\",\n \"showNode\": \"qx.event.type.Data\",\n \"hideNode\": \"qx.event.type.Data\",\n \"slidesStop\": \"qx.event.type.Event\"\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"edit-slideshow-buttons\": {\n control = new qx.ui.container.Stack();\n const editBtn = new qx.ui.form.Button(null, \"@FontAwesome5Solid/edit/14\").set({\n ...osparc.navigation.NavigationBar.BUTTON_OPTIONS,\n toolTipText: this.tr(\"Edit App Mode\"),\n visibility: osparc.data.Permissions.getInstance().canDo(\"study.slides.edit\") ? \"visible\" : \"excluded\"\n });\n editBtn.editing = false;\n const saveBtn = new qx.ui.form.Button(null, \"@FontAwesome5Solid/check/14\").set({\n ...osparc.navigation.NavigationBar.BUTTON_OPTIONS,\n toolTipText: this.tr(\"Save App Mode\")\n });\n saveBtn.editing = true;\n editBtn.addListener(\"execute\", () => {\n this.getChildControl(\"breadcrumbs-scroll\").exclude();\n this.getChildControl(\"breadcrumbs-scroll-edit\").show();\n control.setSelection([saveBtn]);\n }, this);\n saveBtn.addListener(\"execute\", () => {\n this.getChildControl(\"breadcrumbs-scroll\").show();\n this.getChildControl(\"breadcrumbs-scroll-edit\").exclude();\n control.setSelection([editBtn]);\n this.fireEvent(\"saveSlideshow\");\n }, this);\n control.add(editBtn);\n control.add(saveBtn);\n control.setSelection([editBtn]);\n this._add(control);\n break;\n }\n case \"breadcrumbs-scroll\":\n control = new qx.ui.container.SlideBar().set({\n maxHeight: 32,\n allowGrowX: false\n });\n [\n control.getChildControl(\"button-backward\"),\n control.getChildControl(\"button-forward\")\n ].forEach(btn => {\n btn.set({\n marginLeft: 5,\n marginRight: 5,\n icon: \"@FontAwesome5Solid/ellipsis-h/24\",\n backgroundColor: \"transparent\"\n });\n });\n control.setLayout(new qx.ui.layout.HBox());\n this._add(control, {\n flex: 1\n });\n break;\n case \"breadcrumbs-navigation\": {\n control = new osparc.navigation.BreadcrumbsSlideshow();\n osparc.utils.Utils.setIdToWidget(control, \"appModeButtons\");\n control.addListener(\"nodeSelectionRequested\", e => this.fireDataEvent(\"nodeSelectionRequested\", e.getData()), this);\n const scroll = this.getChildControl(\"breadcrumbs-scroll\");\n scroll.add(control);\n break;\n }\n case \"breadcrumbs-scroll-edit\":\n control = new qx.ui.container.Scroll();\n this._add(control, {\n flex: 1\n });\n break;\n case \"breadcrumbs-navigation-edit\": {\n control = new osparc.navigation.BreadcrumbsSlideshowEdit();\n [\n \"addServiceBetween\",\n \"removeNode\",\n \"showNode\",\n \"hideNode\"\n ].forEach(eventName => {\n control.addListener(eventName, e => {\n this.fireDataEvent(eventName, e.getData());\n });\n });\n const scroll = this.getChildControl(\"breadcrumbs-scroll-edit\");\n scroll.add(control);\n break;\n }\n case \"stop-slideshow\":\n control = new qx.ui.form.Button().set({\n appearance: \"form-button-outlined\",\n label: this.tr(\"App Mode\"),\n toolTipText: this.tr(\"Stop App Mode\"),\n icon: \"@FontAwesome5Solid/stop/14\",\n alignY: \"middle\",\n marginRight: 10,\n ...osparc.navigation.NavigationBar.BUTTON_OPTIONS,\n visibility: osparc.data.Permissions.getInstance().canDo(\"study.slides.stop\") ? \"visible\" : \"excluded\"\n });\n control.addListener(\"execute\", () => this.fireEvent(\"slidesStop\"));\n this._add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n // overridden\n _buildLayout: function() {\n const spacerLeft = new qx.ui.core.Spacer(); // match \"stop-slideshow\" to keep breadcrumbs centered\n this._add(spacerLeft);\n this._add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n\n this.getChildControl(\"edit-slideshow-buttons\");\n this.getChildControl(\"breadcrumbs-navigation\");\n this.getChildControl(\"breadcrumbs-navigation-edit\");\n\n this._add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n\n const stopSlideshowButton = this.getChildControl(\"stop-slideshow\");\n stopSlideshowButton.bind(\"visibility\", spacerLeft, \"width\", {\n converter: visible => visible ? 120 : 0\n });\n },\n\n // overridden\n _populateNodesNavigationLayout: function() {\n const study = this.getStudy();\n if (study) {\n const editSlideshowButtons = this.getChildControl(\"edit-slideshow-buttons\");\n osparc.data.model.Study.canIWrite(study.getAccessRights()) && osparc.data.Permissions.getInstance().canDo(\"study.slides.edit\") ? editSlideshowButtons.show() : editSlideshowButtons.exclude();\n if (!study.getWorkbench().isPipelineLinear()) {\n editSlideshowButtons.exclude();\n }\n\n const nodeIds = study.getUi().getSlideshow().getSortedNodeIds();\n this.getChildControl(\"breadcrumbs-navigation\").populateButtons(nodeIds);\n this.getChildControl(\"breadcrumbs-navigation-edit\").populateButtons(study);\n this.__evalButtonsIfEditing();\n }\n },\n\n populateButtons: function(start = false) {\n this._populateNodesNavigationLayout();\n if (start) {\n const editSlideshowButtons = this.getChildControl(\"edit-slideshow-buttons\");\n const currentModeBtn = editSlideshowButtons.getSelection()[0];\n if (\"editing\" in currentModeBtn && currentModeBtn[\"editing\"]) {\n currentModeBtn.execute();\n }\n }\n },\n\n __evalButtonsIfEditing: function() {\n const editSlideshowButtons = this.getChildControl(\"edit-slideshow-buttons\");\n const currentModeBtn = editSlideshowButtons.getSelection()[0];\n if (\"editing\" in currentModeBtn && currentModeBtn[\"editing\"]) {\n this.getChildControl(\"breadcrumbs-scroll\").exclude();\n this.getChildControl(\"breadcrumbs-scroll-edit\").show();\n } else {\n this.getChildControl(\"breadcrumbs-scroll\").show();\n this.getChildControl(\"breadcrumbs-scroll-edit\").exclude();\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.navigation.PrevNextButtons\", {\n extend: qx.core.Object,\n\n construct: function() {\n this.base(arguments);\n\n this.__createButtons();\n },\n\n events: {\n \"nodeSelected\": \"qx.event.type.Data\",\n \"runPressed\": \"qx.event.type.Data\"\n },\n\n statics: {\n BUTTON_OPTIONS: {\n backgroundColor: \"background-main-1\",\n allowGrowX: false,\n allowGrowY: false\n },\n\n PREV_BUTTON: \"@FontAwesome5Solid/arrow-left/32\",\n NEXT_BUTTON: \"@FontAwesome5Solid/arrow-right/32\",\n RUN_BUTTON: \"@FontAwesome5Solid/play/32\",\n BUSY_BUTTON: \"@FontAwesome5Solid/circle-notch/32\",\n SELECT_FILE_BUTTON: \"@FontAwesome5Solid/file-medical/32\"\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n apply: \"__applyStudy\",\n nullable: false\n },\n\n node: {\n check: \"osparc.data.model.Node\",\n apply: \"__applyNode\",\n nullable: false\n }\n },\n\n members: {\n __prvsBtn: null,\n __nextBtn: null,\n __runBtn: null,\n\n getPreviousButton: function() {\n return this.__prvsBtn;\n },\n\n getNextButton: function() {\n return this.__nextBtn;\n },\n\n getRunButton: function() {\n return this.__runBtn;\n },\n\n __createButtons: function() {\n const prvsBtn = this.__prvsBtn = new qx.ui.form.Button().set({\n toolTipText: qx.locale.Manager.tr(\"Previous\"),\n icon: this.self().PREV_BUTTON,\n ...this.self().BUTTON_OPTIONS\n });\n osparc.utils.Utils.setIdToWidget(prvsBtn, \"AppMode_PreviousBtn\");\n prvsBtn.addListener(\"execute\", () => this.__prevPressed(), this);\n\n const nextBtn = this.__nextBtn = new qx.ui.form.Button().set({\n toolTipText: qx.locale.Manager.tr(\"Next\"),\n icon: this.self().NEXT_BUTTON,\n ...this.self().BUTTON_OPTIONS\n });\n osparc.utils.Utils.setIdToWidget(nextBtn, \"AppMode_NextBtn\");\n nextBtn.addListener(\"execute\", () => this.__nextPressed(), this);\n\n const runBtn = this.__runBtn = new qx.ui.form.Button().set({\n toolTipText: qx.locale.Manager.tr(\"Run\"),\n icon: this.self().RUN_BUTTON,\n ...this.self().BUTTON_OPTIONS\n });\n osparc.utils.Utils.setIdToWidget(runBtn, \"AppMode_RunBtn\");\n runBtn.addListener(\"execute\", () => this.__runPressed(), this);\n },\n\n __applyStudy: function(study) {\n this.__updatePrevNextButtons();\n study.getUi().addListener(\"changeCurrentNodeId\", () => this.__updatePrevNextButtons(), this);\n },\n\n __applyNode: function(node) {\n this.__updatePrevNextButtons();\n node.getStatus().addListener(\"changeRunning\", () => this.__updatePrevNextButtons(), this);\n node.getStatus().addListener(\"changeOutput\", () => this.__updatePrevNextButtons(), this);\n },\n\n __updatePrevNextButtons: function() {\n const studyUI = this.getStudy().getUi();\n const currentNodeId = studyUI.getCurrentNodeId();\n const nodesIds = studyUI.getSlideshow().getSortedNodeIds();\n const currentIdx = nodesIds.indexOf(currentNodeId);\n const isFirst = currentIdx === 0;\n const isLast = currentIdx === nodesIds.length-1;\n\n this.__prvsBtn.setEnabled(!isFirst);\n\n const currentNode = this.getStudy().getWorkbench().getNode(nodesIds[currentIdx]);\n this.__nextBtn.show();\n this.__runBtn.exclude();\n if (currentNode) {\n const currentNodeStatusOutput = currentNode.getStatus().getOutput();\n if ([\"busy\"].includes(currentNodeStatusOutput)) {\n this.__updateNextButtonState(\"busy\");\n } else if (currentNode.isFilePicker() && [\"not-available\"].includes(currentNodeStatusOutput)) {\n this.__updateNextButtonState(\"select-file\");\n } else if (currentNode.isComputational() && [\"not-available\", \"out-of-date\"].includes(currentNodeStatusOutput)) {\n this.__nextBtn.exclude();\n this.__runBtn.show();\n } else {\n this.__updateNextButtonState(\"ready\");\n this.__nextBtn.setEnabled(!isLast);\n }\n } else {\n this.__updateNextButtonState(\"ready\");\n }\n },\n\n /*\n * @param state {String} \"ready\"|\"busy\"|\"run\"|\"select-file\"\n */\n __updateNextButtonState: function(state) {\n let icon = \"\";\n let toolTipText = \"\";\n let textColor = \"text\";\n let animate = false;\n let enabled = true;\n switch (state) {\n case \"select-file\":\n icon = this.self().SELECT_FILE_BUTTON;\n toolTipText = qx.locale.Manager.tr(\"Select File\");\n enabled = false;\n break;\n case \"busy\":\n icon = this.self().BUSY_BUTTON;\n toolTipText = qx.locale.Manager.tr(\"Running\");\n textColor = \"busy-orange\";\n animate = true;\n enabled = false;\n break;\n default:\n icon = this.self().NEXT_BUTTON;\n toolTipText = qx.locale.Manager.tr(\"Next\");\n break;\n }\n if (this.__nextBtn) {\n this.__nextBtn.set({\n icon,\n toolTipText,\n textColor,\n enabled\n });\n // Hack: Show tooltip if button is disabled\n if (enabled) {\n this.__nextBtn.getContentElement().removeAttribute(\"title\");\n } else {\n this.__nextBtn.getContentElement().setAttribute(\"title\", toolTipText);\n }\n const btnIcon = this.__nextBtn.getChildControl(\"icon\").getContentElement();\n if (animate) {\n osparc.utils.Utils.addClass(btnIcon, \"rotate\");\n } else {\n osparc.utils.Utils.removeClass(btnIcon, \"rotate\");\n }\n }\n },\n\n __prevPressed: function() {\n const studyUI = this.getStudy().getUi();\n const currentNodeId = studyUI.getCurrentNodeId();\n const nodesIds = studyUI.getSlideshow().getSortedNodeIds();\n const currentIdx = nodesIds.indexOf(currentNodeId);\n\n this.fireDataEvent(\"nodeSelected\", nodesIds[currentIdx-1]);\n },\n\n __nextPressed: function() {\n const studyUI = this.getStudy().getUi();\n const currentNodeId = studyUI.getCurrentNodeId();\n const nodesIds = studyUI.getSlideshow().getSortedNodeIds();\n const currentIdx = nodesIds.indexOf(currentNodeId);\n\n this.fireDataEvent(\"nodeSelected\", nodesIds[currentIdx+1]);\n },\n\n __runPressed: function() {\n const nodeId = this.getNode().getNodeId();\n this.fireDataEvent(\"runPressed\", nodeId);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * In order to keep Node's Status separated from its more static data,\n * this class stores it.\n */\n\nqx.Class.define(\"osparc.data.model.NodeStatus\", {\n extend: qx.core.Object,\n\n construct: function(node) {\n this.base(arguments);\n\n this.setNode(node);\n\n if (node.isDynamic()) {\n const progressSequence = new osparc.data.model.NodeProgressSequence();\n this.setProgressSequence(progressSequence);\n }\n },\n\n properties: {\n node: {\n check: \"osparc.data.model.Node\",\n init: null,\n nullable: false\n },\n\n progress: {\n check: \"Number\",\n nullable: true,\n init: null,\n event: \"changeProgress\",\n transform: \"__transformProgress\"\n },\n\n progressSequence: {\n check: \"osparc.data.model.NodeProgressSequence\",\n nullable: true,\n init: null\n },\n\n running: {\n check: [\"UNKNOWN\", \"NOT_STARTED\", \"PUBLISHED\", \"PENDING\", \"WAITING_FOR_RESOURCES\", \"WAITING_FOR_CLUSTER\", \"STARTED\", \"RETRY\", \"SUCCESS\", \"FAILED\", \"ABORTED\"],\n nullable: true,\n init: null,\n event: \"changeRunning\",\n apply: \"__applyRunning\"\n },\n\n interactive: {\n check: [\"idle\", \"starting\", \"stopping\", \"pulling\", \"pending\", \"connecting\", \"ready\", \"failed\", \"deprecated\", \"retired\"],\n nullable: true,\n init: null,\n event: \"changeInteractive\",\n apply: \"__applyInteractive\"\n },\n\n dependencies: {\n check: \"Array\",\n nullable: true,\n init: null,\n event: \"changeDependencies\",\n apply: \"__recomputeOutput\"\n },\n\n modified: {\n check: \"Boolean\",\n nullable: true,\n init: null,\n event: \"changeModified\",\n apply: \"__recomputeOutput\"\n },\n\n output: {\n check: [\"not-available\", \"busy\", \"up-to-date\", \"out-of-date\"],\n nullable: false,\n init: \"not-available\",\n event: \"changeOutput\"\n },\n\n hasOutputs: {\n check: \"Boolean\",\n init: false\n }\n },\n\n statics: {\n getValidProgress: function(value) {\n if (value !== null && !Number.isNaN(value) && value >= 0 && value <= 100) {\n return Number.parseFloat(value.toFixed(4));\n }\n return 0;\n },\n\n isCompNodeReady: function(node) {\n if (node && node.isComputational()) {\n return node.getStatus().getRunning() === \"SUCCESS\" && node.getStatus().getOutput() === \"up-to-date\";\n }\n return true;\n },\n\n isComputationalRunning(node) {\n if (node && node.isComputational()) {\n return [\"PUBLISHED\", \"WAITING_FOR_CLUSTER\", \"PENDING\", \"WAITING_FOR_RESOURCES\", \"STARTED\"].includes(node.getStatus().getRunning());\n }\n return false;\n },\n\n doesCompNodeNeedRun: function(node) {\n if (node && node.isComputational()) {\n return (\n [\n \"UNKNOWN\",\n \"NOT_STARTED\",\n \"FAILED\",\n \"ABORTED\"\n ].includes(node.getStatus().getRunning()) ||\n [\n \"not-available\",\n \"out-of-date\"\n ].includes(node.getStatus().getOutput())\n );\n }\n return false;\n }\n },\n\n members: {\n __transformProgress: function(value) {\n const oldP = this.getProgress();\n if (this.getNode().isFilePicker() && oldP === 100 && value !== 0 && value !== 100) {\n // a NodeUpdated backend message could override the progress with an older value\n value = 100;\n }\n return value;\n },\n\n hasDependencies: function() {\n const dependencies = this.getDependencies();\n return !!(dependencies && dependencies.length);\n },\n\n __applyRunning: function(value) {\n if (value === \"FAILED\") {\n // ask why it failed\n }\n this.__recomputeOutput();\n },\n\n __applyInteractive: function(value) {\n if (value === \"failed\") {\n this.getProgressSequence().resetSequence();\n }\n },\n\n __recomputeOutput: function() {\n const compRunning = this.getRunning();\n const hasOutputs = this.getHasOutputs();\n const modified = this.getModified();\n const hasDependencies = this.hasDependencies();\n if ([\"PUBLISHED\", \"PENDING\", \"WAITING_FOR_RESOURCES\", \"WAITING_FOR_CLUSTER\", \"STARTED\"].includes(compRunning)) {\n this.setOutput(\"busy\");\n } else if ([null, false].includes(hasOutputs)) {\n this.setOutput(\"not-available\");\n } else if (hasOutputs && (modified || hasDependencies)) {\n this.setOutput(\"out-of-date\");\n } else if (hasOutputs && !modified) {\n this.setOutput(\"up-to-date\");\n } else {\n console.error(\"Unknown output state\");\n }\n },\n\n setState: function(state) {\n if (state === undefined || state === null) {\n return;\n }\n if (\"dependencies\" in state) {\n this.setDependencies(state.dependencies);\n }\n if (\"currentStatus\" in state && this.getNode().isComputational()) {\n // currentStatus is only applicable to computational services\n this.setRunning(state.currentStatus);\n }\n if (\"modified\" in state) {\n if (this.getHasOutputs()) {\n // File Picker can't have a modified output\n this.setModified((state.modified || this.hasDependencies()) && !this.getNode().isFilePicker());\n } else {\n this.setModified(null);\n }\n }\n },\n\n serialize: function() {\n const state = {};\n state[\"dependencies\"] = this.getDependencies() ? this.getDependencies() : [];\n if (this.getNode().isComputational()) {\n state[\"currentStatus\"] = this.getRunning();\n }\n state[\"modified\"] = null;\n // File Picker can't have a modified output\n if (this.getHasOutputs() && !this.getNode().isFilePicker()) {\n state[\"modified\"] = this.hasDependencies();\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n *\n */\n\nqx.Class.define(\"osparc.node.slideshow.BaseNodeView\", {\n extend: qx.ui.splitpane.Pane,\n type: \"abstract\",\n\n construct: function() {\n this.base(arguments, \"vertical\");\n\n this.setOffset(2);\n osparc.desktop.WorkbenchView.decorateSplitter(this.getChildControl(\"splitter\"));\n osparc.desktop.WorkbenchView.decorateSlider(this.getChildControl(\"slider\"));\n\n this.__buildLayout();\n\n this.set({\n paddingBottom: 2\n });\n },\n\n statics: {\n HEADER_HEIGHT: 32,\n\n createSettingsGroupBox: function(label) {\n const settingsGroupBox = new qx.ui.groupbox.GroupBox(label).set({\n appearance: \"settings-groupbox\",\n maxWidth: 800,\n alignX: \"center\",\n layout: new qx.ui.layout.VBox(10)\n });\n return settingsGroupBox;\n }\n },\n\n properties: {\n node: {\n check: \"osparc.data.model.Node\",\n apply: \"__applyNode\",\n nullable: true,\n init: null\n }\n },\n\n events: {\n \"startPartialPipeline\": \"qx.event.type.Data\",\n \"stopPipeline\": \"qx.event.type.Event\"\n },\n\n members: {\n __header: null,\n __inputsButton: null,\n __preparingInputs: null,\n __instructionsBtn: null,\n __instructionsWindow: null,\n __nodeStartButton: null,\n __nodeStopButton: null,\n __nodeStatusUI: null,\n _mainView: null,\n _settingsLayout: null,\n _iFrameLayout: null,\n _outputsLayout: null,\n __progressBar: null,\n\n __buildLayout: function() {\n const layout = new qx.ui.container.Composite(new qx.ui.layout.VBox(0));\n\n const header = this.__header = this.__buildHeader();\n layout.add(header);\n\n const mainView = this.__buildMainView();\n layout.add(mainView, {\n flex: 1\n });\n\n const progressBar = this.__progressBar = new qx.ui.core.Widget().set({\n visibility: \"excluded\",\n allowGrowX: true,\n height: 6\n });\n layout.add(progressBar);\n\n this.add(layout, 1);\n },\n\n __buildHeader: function() {\n const header = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignX: \"center\"\n })).set({\n padding: 6,\n paddingTop: 0,\n height: this.self().HEADER_HEIGHT\n });\n\n\n const inputsStateBtn = this.__inputsButton = new qx.ui.form.Button().set({\n width: 110,\n label: this.tr(\"Inputs\"),\n icon: \"@FontAwesome5Solid/sign-in-alt/14\",\n backgroundColor: \"background-main-4\"\n });\n inputsStateBtn.addListener(\"execute\", () => this.showPreparingInputs(), this);\n header.add(inputsStateBtn);\n\n header.add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n\n const infoBtn = new qx.ui.form.Button(null, \"@MaterialIcons/info_outline/17\").set({\n padding: 3,\n backgroundColor: \"transparent\",\n toolTipText: this.tr(\"Service Information\")\n });\n infoBtn.addListener(\"execute\", () => this.__openServiceDetails(), this);\n header.add(infoBtn);\n\n const instructionsBtn = this.__instructionsBtn = new qx.ui.form.Button(this.tr(\"Instructions\"), \"@FontAwesome5Solid/book/17\").set({\n backgroundColor: \"background-main-3\"\n });\n instructionsBtn.addListener(\"appear\", () => this.__openInstructions(), this);\n instructionsBtn.addListener(\"execute\", () => this.__openInstructions(), this);\n header.add(instructionsBtn);\n\n const startBtn = this.__nodeStartButton = new qx.ui.form.Button().set({\n label: this.tr(\"Start\"),\n icon: \"@FontAwesome5Solid/play/14\",\n backgroundColor: \"background-main-4\",\n visibility: \"excluded\"\n });\n header.add(startBtn);\n\n const stopBtn = this.__nodeStopButton = new qx.ui.form.Button().set({\n label: this.tr(\"Stop\"),\n icon: \"@FontAwesome5Solid/stop/14\",\n backgroundColor: \"background-main-4\",\n visibility: \"excluded\"\n });\n header.add(stopBtn);\n\n const nodeStatusUI = this.__nodeStatusUI = new osparc.ui.basic.NodeStatusUI().set({\n backgroundColor: \"background-main-4\"\n });\n nodeStatusUI.getChildControl(\"label\").setFont(\"text-14\");\n header.add(nodeStatusUI);\n\n header.add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n\n const outputsBtn = this._outputsBtn = new qx.ui.form.ToggleButton().set({\n width: 110,\n label: this.tr(\"Outputs\"),\n icon: \"@FontAwesome5Solid/sign-out-alt/14\",\n backgroundColor: \"background-main-4\"\n });\n osparc.utils.Utils.setIdToWidget(outputsBtn, \"outputsBtn\");\n header.add(outputsBtn);\n\n return header;\n },\n\n __buildMainView: function() {\n const hBox = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n\n const mainView = this._mainView = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n\n const settingsBox = this._settingsLayout = this.self().createSettingsGroupBox(this.tr(\"Settings\"));\n mainView.bind(\"backgroundColor\", settingsBox, \"backgroundColor\");\n mainView.bind(\"backgroundColor\", settingsBox.getChildControl(\"frame\"), \"backgroundColor\");\n\n this._iFrameLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox());\n\n hBox.add(mainView, {\n flex: 1\n });\n\n const outputsLayout = this._outputsLayout = this.self().createSettingsGroupBox(this.tr(\"Outputs\")).set({\n padding: 4,\n width: 280\n });\n mainView.bind(\"backgroundColor\", outputsLayout, \"backgroundColor\");\n mainView.bind(\"backgroundColor\", outputsLayout.getChildControl(\"frame\"), \"backgroundColor\");\n this._outputsBtn.bind(\"value\", outputsLayout, \"visibility\", {\n converter: value => value ? \"visible\" : \"excluded\"\n });\n hBox.add(outputsLayout);\n\n return hBox;\n },\n\n showPreparingInputs: function() {\n const title = this.tr(\"Preparing Inputs\");\n const width = 650;\n const height = 600;\n const win = osparc.ui.window.Window.popUpInWindow(this.__preparingInputs, title, width, height);\n const closeBtn = win.getChildControl(\"close-button\");\n osparc.utils.Utils.setIdToWidget(closeBtn, \"preparingInputsCloseBtn\");\n },\n\n __openServiceDetails: function() {\n const node = this.getNode();\n const metadata = node.getMetaData();\n const serviceDetails = new osparc.info.ServiceLarge(metadata, {\n nodeId: node.getNodeId(),\n label: node.getLabel(),\n studyId: node.getStudy().getUuid()\n });\n osparc.info.ServiceLarge.popUpInWindow(serviceDetails);\n },\n\n __openInstructions: function() {\n if (this.getInstructionsWindow()) {\n this.getInstructionsWindow().center();\n return;\n }\n const desc = this.getNode().getSlideshowInstructions();\n if (desc) {\n const markdownInstructions = new osparc.ui.markdown.Markdown().set({\n value: desc,\n padding: 3,\n font: \"text-14\"\n });\n const title = this.tr(\"Instructions\") + \" - \" + this.getNode().getLabel();\n const width = 600;\n const minHeight = 200;\n const win = this.__instructionsWindow = osparc.ui.window.Window.popUpInWindow(markdownInstructions, title, width, minHeight).set({\n modal: false,\n clickAwayClose: false\n });\n markdownInstructions.addListener(\"resized\", () => win.center());\n\n win.getContentElement().setStyles({\n \"border-color\": qx.theme.manager.Color.getInstance().resolve(\"strong-main\")\n });\n win.addListener(\"close\", () => {\n this.__instructionsWindow = null;\n osparc.utils.Utils.makeButtonBlink(this.__instructionsBtn, 2);\n }, this);\n }\n },\n\n getInstructionsWindow: function() {\n return this.__instructionsWindow;\n },\n\n getHeaderLayout: function() {\n return this.__header;\n },\n\n getOutputsButton: function() {\n return this._outputsBtn;\n },\n\n getMainView: function() {\n return this._mainView;\n },\n\n getSettingsLayout: function() {\n return this._settingsLayout;\n },\n\n /**\n * @abstract\n */\n isSettingsGroupShowable: function() {\n throw new Error(\"Abstract method called!\");\n },\n\n /**\n * @abstract\n */\n _addSettings: function() {\n throw new Error(\"Abstract method called!\");\n },\n\n /**\n * @abstract\n */\n _addIFrame: function() {\n throw new Error(\"Abstract method called!\");\n },\n\n _addOutputs: function() {\n return;\n },\n\n _addLogger: function() {\n return;\n },\n\n __areInputsReady: function() {\n const wb = this.getNode().getStudy().getWorkbench();\n const upstreamNodeIds = wb.getUpstreamCompNodes(this.getNode(), false);\n for (let i=0; i this.showPreparingInputs());\n this._iFrameLayout.tapListenerId = tapListenerId;\n }\n },\n\n setUpstreamDependencies: function(upstreamDependencies) {\n this.__inputsButton.setVisibility(upstreamDependencies.length > 0 ? \"visible\" : \"hidden\");\n const monitoredNodes = [];\n const workbench = this.getNode().getStudy().getWorkbench();\n upstreamDependencies.forEach(nodeId => monitoredNodes.push(workbench.getNode(nodeId)));\n this.__preparingInputs.setMonitoredNodes(monitoredNodes);\n },\n\n __dependenciesChanged: function() {\n const preparingNodes = this.__preparingInputs.getPreparingNodes();\n const waiting = Boolean(preparingNodes && preparingNodes.length);\n const buttonsIcon = this.__inputsButton.getChildControl(\"icon\");\n if (waiting) {\n this.__inputsButton.setIcon(\"@FontAwesome5Solid/circle-notch/14\");\n } else {\n this.__inputsButton.setIcon(\"@FontAwesome5Solid/sign-in-alt/14\");\n }\n osparc.service.StatusUI.updateCircleAnimation(buttonsIcon);\n this.__enableIframeContent(!waiting);\n },\n\n __applyNode: function(node) {\n if (this.__nodeStatusUI) {\n this.__nodeStatusUI.setNode(node);\n }\n\n if (node.isDynamic()) {\n node.attachHandlersToStartButton(this.__nodeStartButton);\n osparc.utils.Utils.setIdToWidget(this.__nodeStartButton, \"Start_\"+node.getNodeId());\n node.attachHandlersToStopButton(this.__nodeStopButton);\n }\n\n this.__preparingInputs = new osparc.widget.PreparingInputs(node.getStudy());\n this.__preparingInputs.addListener(\"changePreparingNodes\", () => this.__dependenciesChanged());\n this.__preparingInputs.addListener(\"startPartialPipeline\", e => this.fireDataEvent(\"startPartialPipeline\", e.getData()));\n this.__preparingInputs.addListener(\"stopPipeline\", () => this.fireEvent(\"stopPipeline\"));\n this.__dependenciesChanged();\n\n this.__instructionsBtn.setVisibility(node.getSlideshowInstructions() ? \"visible\" : \"excluded\");\n\n this._mainView.removeAll();\n this._addSettings();\n this._addIFrame();\n this._addOutputs();\n\n if (this.__progressBar) {\n const updateProgress = () => {\n const running = node.getStatus().getRunning();\n const progress = node.getStatus().getProgress();\n if ([\"PUBLISHED\", \"PENDING\", \"WAITING_FOR_RESOURCES\", \"WAITING_FOR_CLUSTER\"].includes(running) ||\n ([\"STARTED\"].includes(running) && progress === 0)) {\n this.__progressBar.setBackgroundColor(\"busy-orange\");\n this.__progressBar.getContentElement().setStyles({\n width: \"100%\"\n });\n } else if ([\"FAILED\", \"ABORTED\"].includes(running)) {\n this.__progressBar.setBackgroundColor(\"failed-red\");\n this.__progressBar.getContentElement().setStyles({\n width: \"100%\"\n });\n } else if ([\"SUCCESS\"].includes(running)) {\n this.__progressBar.setBackgroundColor(\"ready-green\");\n this.__progressBar.getContentElement().setStyles({\n width: progress + \"%\"\n });\n } else {\n this.__progressBar.setBackgroundColor(\"transparent\");\n this.__progressBar.getContentElement().setStyles({\n width: \"100%\"\n });\n }\n };\n this.__progressBar.setVisibility(node.isComputational() ? \"visible\" : \"excluded\");\n updateProgress();\n node.getStatus().addListener(\"changeRunning\", () => updateProgress(), this);\n node.getStatus().addListener(\"changeProgress\", () => updateProgress(), this);\n }\n\n node.bind(\"outputs\", this._outputsBtn, \"label\", {\n converter: outputsData => {\n let outputCounter = 0;\n Object.keys(outputsData).forEach(outKey => {\n const outValue = osparc.data.model.Node.getOutput(outputsData, outKey);\n if (![null, undefined, \"\"].includes(outValue)) {\n outputCounter++;\n }\n });\n return this.tr(\"Outputs\") + ` (${outputCounter})`;\n }\n });\n this._outputsBtn.addListener(\"changeLabel\", () => osparc.utils.Utils.makeButtonBlink(this._outputsBtn, 2));\n\n this._addLogger();\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n *\n */\n\nqx.Class.define(\"osparc.node.slideshow.FilePickerView\", {\n extend: osparc.node.slideshow.BaseNodeView,\n\n events: {\n \"itemSelected\": \"qx.event.type.Event\"\n },\n\n members: {\n // overridden\n isSettingsGroupShowable: function() {\n return false;\n },\n\n // overridden\n _addSettings: function() {\n return;\n },\n\n // overridden\n _addIFrame: function() {\n this.__buildMyLayout();\n },\n\n // overridden\n _applyNode: function(node) {\n if (!node.isFilePicker()) {\n console.error(\"Only file picker nodes are supported\");\n }\n this.base(arguments, node);\n },\n\n __buildMyLayout: function() {\n const node = this.getNode();\n if (!node) {\n return;\n }\n\n const filePicker = new osparc.file.FilePicker(node, \"app\");\n filePicker.addListener(\"itemSelected\", () => {\n this.fireEvent(\"itemSelected\");\n // eslint-disable-next-line no-underscore-dangle\n filePicker.__buildLayout();\n });\n [\n \"itemReset\",\n \"fileUploaded\"\n // eslint-disable-next-line no-underscore-dangle\n ].forEach(ev => filePicker.addListener(ev, () => filePicker.__buildLayout()));\n\n this._mainView.add(filePicker, {\n flex: 1\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget that displays the main view of a node.\n * - On the left side shows the default inputs if any and also what the input nodes offer\n * - In the center the content of the node: settings, mapper, iframe...\n *\n * When a node is set the layout is built\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let nodeView = new osparc.node.slideshow.NodeView();\n * nodeView.setNode(workbench.getNode1());\n * this.getRoot().add(nodeView);\n *
\n */\n\nqx.Class.define(\"osparc.node.slideshow.NodeView\", {\n extend: osparc.node.slideshow.BaseNodeView,\n\n statics: {\n LOGGER_HEIGHT: 28,\n },\n\n members: {\n __loggerPanel: null,\n\n // overridden\n _addSettings: function() {\n this._settingsLayout.removeAll();\n\n const node = this.getNode();\n const propsForm = node.getPropsForm();\n if (propsForm && node.hasInputs()) {\n propsForm.addListener(\"changeChildVisibility\", () => this.__checkSettingsVisibility(), this);\n this._settingsLayout.add(propsForm);\n }\n this.__checkSettingsVisibility();\n\n this._mainView.add(this._settingsLayout);\n },\n\n // overridden\n _addIFrame: function() {\n this._iFrameLayout.removeAll();\n\n const loadingPage = this.getNode().getLoadingPage();\n const iFrame = this.getNode().getIFrame();\n if (loadingPage && iFrame) {\n const node = this.getNode();\n node.getIframeHandler().addListener(\"iframeChanged\", () => this.__iFrameChanged(), this);\n iFrame.addListener(\"load\", () => this.__iFrameChanged());\n this.__iFrameChanged();\n } else {\n // This will keep what comes after at the bottom\n this._iFrameLayout.add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n }\n\n this._mainView.add(this._iFrameLayout, {\n flex: 1\n });\n },\n\n // overridden\n _addOutputs: function() {\n this._outputsLayout.removeAll();\n\n const node = this.getNode();\n const outputsForm = node.getOutputsForm();\n if (node.hasOutputs() && outputsForm) {\n this._mainView.bind(\"backgroundColor\", outputsForm, \"backgroundColor\");\n this._outputsLayout.add(outputsForm);\n }\n\n this._outputsBtn.set({\n value: false,\n enabled: this.getNode().hasOutputs() > 0\n });\n },\n\n // overridden\n _addLogger: function() {\n const loggerView = this.getNode().getLogger();\n loggerView.getChildControl(\"pin-node\").exclude();\n const loggerPanel = this.__loggerPanel = new osparc.desktop.PanelView(this.tr(\"Logger\"), loggerView).set({\n padding: 3,\n minHeight: this.self().LOGGER_HEIGHT-1,\n collapsed: true\n });\n loggerPanel.bind(\"collapsed\", loggerPanel, \"maxHeight\", {\n converter: collapsed => collapsed ? this.self().LOGGER_HEIGHT : null\n });\n this.add(loggerPanel, 0);\n },\n\n getLoggerPanel: function() {\n return this.__loggerPanel;\n },\n\n // overridden\n _applyNode: function(node) {\n this.base(arguments, node);\n },\n\n __checkSettingsVisibility: function() {\n const isSettingsGroupShowable = this.isSettingsGroupShowable();\n this._settingsLayout.setVisibility(isSettingsGroupShowable ? \"visible\" : \"excluded\");\n },\n\n isSettingsGroupShowable: function() {\n // do not show Settings in App Mode\n return false;\n },\n\n __iFrameChanged: function() {\n this._iFrameLayout.removeAll();\n\n const node = this.getNode();\n if (node && node.getIFrame()) {\n const loadingPage = node.getLoadingPage();\n const iFrame = node.getIFrame();\n const src = iFrame.getSource();\n const iFrameView = (src === null || src === \"about:blank\") ? loadingPage : iFrame;\n this._iFrameLayout.add(iFrameView, {\n flex: 1\n });\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Window that shows a list of filter as you type services. For the selected service, below the list\n * a dropdown menu is populated with al the available versions of the selection (by default latest\n * is selected).\n *\n * When the user really selects the service an \"addService\" data event is fired.\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let srvCat = new osparc.workbench.ServiceCatalog();\n * srvCat.center();\n * srvCat.open();\n *
\n */\n\nqx.Class.define(\"osparc.workbench.ServiceCatalog\", {\n extend: osparc.ui.window.Window,\n\n construct: function() {\n this.base();\n\n this.set({\n autoDestroy: true,\n caption: this.tr(\"Service catalog\"),\n showMinimize: false,\n minWidth: 490,\n width: this.self().Width,\n minHeight: 400,\n height: this.self().Height,\n modal: true,\n contentPadding: 0,\n clickAwayClose: true\n });\n\n this.__sortBy = osparc.service.SortServicesButtons.DefaultSorting;\n\n const catalogLayout = new qx.ui.layout.VBox();\n this.setLayout(catalogLayout);\n\n const filterLayout = this.__createFilterLayout();\n this.add(filterLayout);\n\n const list = this.__createListLayout();\n this.add(list, {\n flex: 1\n });\n\n const btnLayout = this.__createButtonsLayout();\n this.add(btnLayout);\n\n this.__createEvents();\n\n this.__populateList();\n\n this.__attachEventHandlers();\n },\n\n events: {\n \"addService\": \"qx.event.type.Data\"\n },\n\n statics: {\n LATEST: \"latest\",\n Width: 580,\n Height: 500\n },\n\n members: {\n __servicesLatest: null,\n __filteredServicesObj: null,\n __textFilter: null,\n __contextLeftNodeId: null,\n __contextRightNodeId: null,\n __versionsBox: null,\n __infoBtn: null,\n __serviceList: null,\n __addBtn: null,\n __sortBy: null,\n\n __createFilterLayout: function() {\n const layout = new qx.ui.container.Composite(new qx.ui.layout.HBox(10)).set({\n appearance: \"margined-layout\"\n });\n\n const filters = new osparc.filter.group.ServiceFilterGroup(\"serviceCatalog\").set({\n maxHeight: 30,\n });\n this.__textFilter = filters.getTextFilter().getChildControl(\"textfield\", true).set({\n minWidth: 150,\n });\n layout.add(filters);\n\n layout.add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n\n const containerSortBtns = new osparc.service.SortServicesButtons();\n containerSortBtns.addListener(\"sortBy\", e => {\n this.__sortBy = e.getData();\n this.__populateList();\n }, this);\n layout.add(containerSortBtns);\n\n return layout;\n },\n\n __createListLayout: function() {\n // Services list\n this.__servicesLatest = [];\n this.__filteredServicesObj = {};\n\n const serviceList = this.__serviceList = new osparc.service.ServiceList(\"serviceCatalog\").set({\n width: 568,\n backgroundColor: \"background-main\"\n });\n const scrolledServices = new qx.ui.container.Scroll();\n scrolledServices.add(serviceList);\n\n this.__serviceList.addListener(\"changeSelected\", e => {\n if (e.getData() && e.getData().getService()) {\n const selectedService = e.getData().getService();\n this.__changedSelection(selectedService.getKey());\n } else {\n this.__changedSelection(null);\n }\n }, this);\n\n return scrolledServices;\n },\n\n __createButtonsLayout: function() {\n const layout = new qx.ui.container.Composite(new qx.ui.layout.HBox(10)).set({\n appearance: \"margined-layout\"\n });\n\n const versionLabel = new qx.ui.basic.Atom(this.tr(\"Version\"));\n layout.add(versionLabel);\n const selectBox = this.__versionsBox = new qx.ui.form.SelectBox().set({\n enabled: false\n });\n layout.add(selectBox);\n const infoBtn = this.__infoBtn = new qx.ui.form.Button(null, \"@MaterialIcons/info_outline/16\").set({\n enabled: false\n });\n infoBtn.addListener(\"execute\", () => this.__showServiceDetails(), this);\n layout.add(infoBtn);\n\n layout.add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n\n const cancelBtn = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"form-button-text\",\n });\n cancelBtn.addListener(\"execute\", this.__onCancel, this);\n cancelBtn.setAllowGrowX(false);\n layout.add(cancelBtn);\n const addBtn = this.__addBtn = new qx.ui.form.Button(this.tr(\"Add\")).set({\n appearance: \"form-button\",\n enabled: false\n });\n addBtn.addListener(\"execute\", () => this.__onAddService(), this);\n layout.add(addBtn);\n\n return layout;\n },\n\n __createEvents: function() {\n this.__serviceList.addListener(\"serviceAdd\", e => this.__onAddService(e.getData()), this);\n },\n\n setContext: function(leftNodeId = null, rightNodeId = null) {\n this.__contextLeftNodeId = leftNodeId;\n this.__contextRightNodeId = rightNodeId;\n this.__updateList();\n },\n\n __populateList: function() {\n this.__servicesLatest = [];\n const excludeFrontend = false;\n const excludeDeprecated = true;\n osparc.store.Services.getServicesLatestList(excludeFrontend, excludeDeprecated)\n .then(servicesList => {\n this.__servicesLatest = servicesList;\n this.__updateList();\n });\n },\n\n __updateList: function() {\n osparc.filter.UIFilterController.getInstance().resetGroup(\"serviceCatalog\");\n const filteredServices = [];\n this.__servicesLatest.forEach(service => {\n if (this.__contextLeftNodeId === null && this.__contextRightNodeId === null) {\n filteredServices.push(service);\n } else {\n // filter out services that can't be connected\n const needsInputs = this.__contextLeftNodeId !== null;\n const needsOutputs = this.__contextRightNodeId !== null;\n let connectable = needsInputs ? Boolean(Object.keys(service.inputs).length) : true;\n connectable = connectable && (needsOutputs ? Boolean(Object.keys(service.outputs).length) : true);\n if (connectable) {\n filteredServices.push(service);\n }\n }\n });\n\n osparc.service.Utils.sortObjectsBasedOn(filteredServices, this.__sortBy);\n const filteredServicesObj = this.__filteredServicesObj = osparc.service.Utils.convertArrayToObject(filteredServices);\n\n const groupedServicesList = [];\n for (const key in filteredServicesObj) {\n const serviceMetadata = osparc.service.Utils.getLatest(key);\n if (serviceMetadata) {\n const service = new osparc.data.model.Service(serviceMetadata);\n groupedServicesList.push(service);\n }\n }\n\n this.__serviceList.setModel(new qx.data.Array(groupedServicesList));\n },\n\n __changedSelection: function(key) {\n if (this.__versionsBox) {\n let selectBox = this.__versionsBox;\n selectBox.removeAll();\n if (key in this.__filteredServicesObj) {\n const latest = new qx.ui.form.ListItem(this.self().LATEST);\n latest.version = this.self().LATEST;\n selectBox.add(latest);\n const versions = osparc.service.Utils.getVersions(key);\n versions.forEach(version => {\n const listItem = osparc.service.Utils.versionToListItem(key, version);\n selectBox.add(listItem);\n });\n osparc.utils.Utils.growSelectBox(selectBox, 200);\n selectBox.setSelection([latest]);\n }\n }\n if (this.__addBtn) {\n this.__addBtn.setEnabled(key !== null);\n }\n if (this.__infoBtn) {\n this.__infoBtn.setEnabled(key !== null);\n }\n if (this.__versionsBox) {\n this.__versionsBox.setEnabled(key !== null);\n }\n },\n\n __onAddService: async function(selectedService) {\n if (selectedService == null && this.__serviceList.isSelectionEmpty()) {\n return;\n }\n\n let service = selectedService;\n if (!service) {\n const serviceMetadata = await this.__getSelectedService();\n service = new osparc.data.model.Service(serviceMetadata);\n }\n const eData = {\n service,\n nodeLeftId: this.__contextLeftNodeId,\n nodeRightId: this.__contextRightNodeId\n };\n this.fireDataEvent(\"addService\", eData);\n this.close();\n },\n\n __getSelectedService: async function() {\n const selected = this.__serviceList.getSelected();\n const key = selected.getKey();\n let version = this.__versionsBox.getSelection()[0].version;\n if (version == this.self(arguments).LATEST.toString()) {\n version = this.__versionsBox.getChildrenContainer().getSelectables()[1].version;\n }\n const serviceMetadata = await osparc.store.Services.getService(key, version);\n return serviceMetadata;\n },\n\n __showServiceDetails: async function() {\n const serviceMetadata = await this.__getSelectedService();\n const serviceDetails = new osparc.info.ServiceLarge(serviceMetadata);\n osparc.info.ServiceLarge.popUpInWindow(serviceDetails);\n },\n\n __onCancel: function() {\n this.close();\n },\n\n __attachEventHandlers: function() {\n this.addListener(\"appear\", () => {\n osparc.filter.UIFilterController.getInstance().resetGroup(\"serviceCatalog\");\n this.__textFilter.focus();\n }, this);\n this.__textFilter.addListener(\"keypress\", e => {\n if (e.getKeyIdentifier() === \"Enter\") {\n this.__serviceList.selectFirstVisible();\n const selected = this.__serviceList.getSelected();\n if (selected !== null) {\n this.__onAddService(selected);\n }\n }\n }, this);\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2006 STZ-IDA, Germany, http://www.stz-ida.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Til Schneider (til132)\n\n************************************************************************ */\n\n/**\n * A table model that loads its data from a backend.\n * \n * Only a subset of the available rows, those which are within or near the\n * currently visible area, are loaded. If a quick scroll operation occurs,\n * rows will soon be displayed using asynchronous loading in the background.\n * All loaded data is managed through a cache which automatically removes\n * the oldest used rows when it gets full.\n *
\n * This class is abstract: The actual loading of row data must be done by\n * subclasses.\n */\nqx.Class.define(\"qx.ui.table.model.Remote\",\n{\n type : \"abstract\",\n extend : qx.ui.table.model.Abstract,\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n construct : function()\n {\n this.base(arguments);\n\n this._sortColumnIndex = -1;\n this._sortAscending = true;\n this._rowCount = -1;\n\n this._lruCounter = 0;\n\n // Holds the index of the first block that is currently loading.\n // Is -1 if there is currently no request on its way.\n this._firstLoadingBlock = -1;\n\n // Holds the index of the first row that should be loaded when the response of\n // the current request arrives. Is -1 we need no following request.\n this._firstRowToLoad = -1;\n\n // Counterpart to _firstRowToLoad\n this._lastRowToLoad = -1;\n\n // Holds whether the current request will bring obsolete data. When true the\n // response of the current request will be ignored.\n this._ignoreCurrentRequest = false;\n\n this._rowBlockCache = {};\n this._rowBlockCount = 0;\n\n this._sortableColArr = null;\n this._editableColArr = null;\n },\n\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n\n /** The number of rows that are stored in one cache block. */\n blockSize :\n {\n check : \"Integer\",\n init : 50\n },\n\n /** The maximum number of row blocks kept in the cache. */\n maxCachedBlockCount :\n {\n check : \"Integer\",\n init : 15\n },\n\n\n /**\n * Whether to clear the cache when some rows are removed.\n * If true the rows are removed locally in the cache.\n */\n clearCacheOnRemove :\n {\n check : \"Boolean\",\n init : false\n },\n\n /**\n * Whether to block remote requests for the row count while a request for\n * the row count is pending. Row counts are requested at various times and\n * from various parts of the code, resulting in numerous requests to the\n * user-provided _loadRowCount() method, often while other requests are\n * already pending. The default behavior now ignores requests to load a\n * new row count if such a request is already pending. It is therefore now\n * conceivable that the row count changes between an initial request for\n * the row count and a later (ignored) request. Since the chance of this\n * is low, the desirability of reducing the server requests outweighs the\n * slight possibility of an altered count (which will, by the way, be\n * detected soon thereafter upon the next request for the row count). If\n * the old behavior is desired, set this property to false.\n */\n blockConcurrentLoadRowCount:\n {\n check : \"Boolean\",\n init : true\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n _rowCount : null,\n _ignoreCurrentRequest : null,\n\n _lruCounter : null,\n _firstLoadingBlock : null,\n _firstRowToLoad : null,\n _lastRowToLoad : null,\n _rowBlockCache : null,\n _rowBlockCount : null,\n\n _sortColumnIndex : null,\n _sortAscending : null,\n\n _editableColArr : null,\n _sortableColArr : null,\n\n _loadRowCountRequestRunning : false,\n\n _clearCache : false,\n\n\n /**\n * Returns whether the current request is ignored by the model.\n *\n * @return {Boolean} true when the current request is ignored by the model.\n */\n _getIgnoreCurrentRequest : function()\n {\n return this._ignoreCurrentRequest;\n },\n\n\n // overridden\n getRowCount : function()\n {\n if (this._rowCount == -1)\n {\n if (! this._loadRowCountRequestRunning ||\n ! this.getBlockConcurrentLoadRowCount())\n {\n this._loadRowCountRequestRunning = true;\n this._loadRowCount();\n }\n\n // NOTE: _loadRowCount may set this._rowCount\n return (this._rowCount == -1) ? 0 : this._rowCount;\n }\n else\n {\n return this._rowCount;\n }\n },\n\n\n /**\n * Implementing classes have to call {@link #_onRowCountLoaded} when the\n * server response arrived. That method has to be called! Even when there\n * was an error.\n *\n * @abstract\n * @throws {Error} the abstract function warning.\n */\n _loadRowCount : function() {\n throw new Error(\"_loadRowCount is abstract\");\n },\n\n\n /**\n * Sets the row count.\n *\n * Has to be called by {@link #_loadRowCount}.\n *\n * @param rowCount {Integer} the number of rows in this model or null if loading.\n */\n _onRowCountLoaded : function(rowCount)\n {\n if (this.getBlockConcurrentLoadRowCount())\n {\n // There's no longer a loadRowCount() in progress\n this._loadRowCountRequestRunning = false;\n }\n\n // this.debug(\"row count loaded: \" + rowCount);\n if (rowCount == null || rowCount < 0) {\n rowCount = 0;\n }\n\n this._rowCount = Number(rowCount);\n\n // Inform the listeners\n var data =\n {\n firstRow : 0,\n lastRow : rowCount - 1,\n firstColumn : 0,\n lastColumn : this.getColumnCount() - 1\n };\n\n this.fireDataEvent(\"dataChanged\", data);\n },\n\n\n /**\n * Reloads the model and clears the local cache.\n *\n */\n reloadData : function()\n {\n // If there is currently a request on its way, then this request will bring\n // obsolete data -> Ignore it\n if (this._firstLoadingBlock != -1) {\n var cancelingSucceed = this._cancelCurrentRequest();\n if (cancelingSucceed) {\n // The request was canceled -> We're not loading any blocks any more\n this._firstLoadingBlock = -1;\n this._ignoreCurrentRequest = false;\n } else {\n // The request was not canceled -> Ignore it\n this._ignoreCurrentRequest = true;\n }\n }\n\n // Force clearing row cache, because of reloading data.\n this._clearCache = true;\n\n // Forget a possibly outstanding request\n // (_loadRowCount will tell the listeners anyway, that the whole table\n // changed)\n //\n // NOTE: This will inform the listeners as soon as the new row count is\n // known\n this._firstRowToLoad = -1;\n this._lastRowToLoad = -1;\n this._loadRowCountRequestRunning = true;\n this._loadRowCount();\n },\n\n\n /**\n * Clears the cache.\n *\n */\n clearCache : function()\n {\n this._rowBlockCache = {};\n this._rowBlockCount = 0;\n },\n\n\n /**\n * Returns the current state of the cache.\n *
\n * Do not change anything in the returned data. This breaks the model state.\n * Use this method only together with {@link #restoreCacheContent} for backing\n * up state for a later restore.\n *\n * @return {Map} the current cache state.\n */\n getCacheContent : function() {\n return {\n sortColumnIndex : this._sortColumnIndex,\n sortAscending : this._sortAscending,\n rowCount : this._rowCount,\n lruCounter : this._lruCounter,\n rowBlockCache : this._rowBlockCache,\n rowBlockCount : this._rowBlockCount\n };\n },\n\n\n /**\n * Restores a cache state created by {@link #getCacheContent}.\n *\n * @param cacheContent {Map} An old cache state.\n */\n restoreCacheContent : function(cacheContent)\n {\n // If there is currently a request on its way, then this request will bring\n // obsolete data -> Ignore it\n if (this._firstLoadingBlock != -1)\n {\n // Try to cancel the current request\n var cancelingSucceed = this._cancelCurrentRequest();\n\n if (cancelingSucceed)\n {\n // The request was canceled -> We're not loading any blocks any more\n this._firstLoadingBlock = -1;\n this._ignoreCurrentRequest = false;\n }\n else\n {\n // The request was not canceled -> Ignore it\n this._ignoreCurrentRequest = true;\n }\n }\n\n // Restore the cache content\n this._sortColumnIndex = cacheContent.sortColumnIndex;\n this._sortAscending = cacheContent.sortAscending;\n this._rowCount = cacheContent.rowCount;\n this._lruCounter = cacheContent.lruCounter;\n this._rowBlockCache = cacheContent.rowBlockCache;\n this._rowBlockCount = cacheContent.rowBlockCount;\n\n // Inform the listeners\n var data =\n {\n firstRow : 0,\n lastRow : this._rowCount - 1,\n firstColumn : 0,\n lastColumn : this.getColumnCount() - 1\n };\n\n this.fireDataEvent(\"dataChanged\", data);\n },\n\n\n /**\n * Cancels the current request if possible.\n *\n * Should be overridden by subclasses if they are able to cancel requests. This\n * allows sending a new request directly after a call of {@link #reloadData}.\n *\n * @return {Boolean} whether the request was canceled.\n */\n _cancelCurrentRequest : function() {\n return false;\n },\n\n\n /**\n * Iterates through all cached rows.\n *\n * The iterator will be called for each cached row with two parameters: The row\n * index of the current row (Integer) and the row data of that row (var[]). If\n * the iterator returns something this will be used as new row data.\n *\n * The iterator is called in the same order as the rows are in the model\n * (the row index is always ascending).\n *\n * @param iterator {Function} The iterator function to call.\n * @param object {Object} context of the iterator\n */\n iterateCachedRows : function(iterator, object)\n {\n var blockSize = this.getBlockSize();\n var blockCount = Math.ceil(this.getRowCount() / blockSize);\n\n // Remove the row and move the rows of all following blocks\n for (var block=0; block<=blockCount; block++)\n {\n var blockData = this._rowBlockCache[block];\n\n if (blockData != null)\n {\n var rowOffset = block * blockSize;\n var rowDataArr = blockData.rowDataArr;\n\n for (var relRow=0; relRow Start a new one\n // NOTE: We load one more block above and below to have a smooth\n // scrolling into the next block without blank cells\n var firstBlock = parseInt(firstRowIndex / blockSize, 10) - 1;\n\n if (firstBlock < 0) {\n firstBlock = 0;\n }\n\n var lastBlock = parseInt(lastRowIndex / blockSize, 10) + 1;\n\n if (lastBlock >= totalBlockCount) {\n lastBlock = totalBlockCount - 1;\n }\n\n // Check which blocks we have to load\n var firstBlockToLoad = -1;\n var lastBlockToLoad = -1;\n\n for (var block=firstBlock; block<=lastBlock; block++)\n {\n if ((this._clearCache && !this._loadRowCountRequestRunning)|| this._rowBlockCache[block] == null || this._rowBlockCache[block].isDirty)\n {\n // We don't have this block\n if (firstBlockToLoad == -1) {\n firstBlockToLoad = block;\n }\n\n lastBlockToLoad = block;\n }\n }\n\n // Load the blocks\n if (firstBlockToLoad != -1)\n {\n this._firstRowToLoad = -1;\n this._lastRowToLoad = -1;\n\n this._firstLoadingBlock = firstBlockToLoad;\n\n // this.debug(\"Starting server request. rows: \" + firstRowIndex + \"..\" + lastRowIndex + \", blocks: \" + firstBlockToLoad + \"..\" + lastBlockToLoad);\n this._loadRowData(firstBlockToLoad * blockSize, (lastBlockToLoad + 1) * blockSize - 1);\n }\n }\n else\n {\n // There is already a request running -> Remember this request\n // so it can be executed after the current one is finished.\n this._firstRowToLoad = firstRowIndex;\n this._lastRowToLoad = lastRowIndex;\n }\n },\n\n\n /**\n * Loads some row data from the server.\n *\n * Implementing classes have to call {@link #_onRowDataLoaded} when the server\n * response arrived. That method has to be called! Even when there was an error.\n *\n * @abstract\n * @param firstRow {Integer} The index of the first row to load.\n * @param lastRow {Integer} The index of the last row to load.\n * @throws {Error} the abstract function warning.\n */\n _loadRowData : function(firstRow, lastRow) {\n throw new Error(\"_loadRowData is abstract\");\n },\n\n\n /**\n * Sets row data.\n *\n * Has to be called by {@link #_loadRowData}.\n *\n * @param rowDataArr {Map[]} the loaded row data or null if there was an error.\n */\n _onRowDataLoaded : function(rowDataArr)\n {\n // Clear cache if function was called because of a reload.\n if (this._clearCache) {\n this.clearCache();\n this._clearCache = false;\n }\n\n if (rowDataArr != null && !this._ignoreCurrentRequest)\n {\n var blockSize = this.getBlockSize();\n var blockCount = Math.ceil(rowDataArr.length / blockSize);\n\n if (blockCount == 1)\n {\n // We got one block -> Use the rowData directly\n this._setRowBlockData(this._firstLoadingBlock, rowDataArr);\n }\n else\n {\n // We got more than one block -> We've to split the rowData\n for (var i=0; i Check whether we have to remove another block first\n this._rowBlockCount++;\n\n while (this._rowBlockCount > this.getMaxCachedBlockCount())\n {\n // Find the last recently used block\n // NOTE: We never remove block 0 and 1\n var lruBlock;\n var minLru = this._lruCounter;\n\n for (var currBlock in this._rowBlockCache)\n {\n var currLru = this._rowBlockCache[currBlock].lru;\n\n if (currLru < minLru && currBlock > 1)\n {\n minLru = currLru;\n lruBlock = currBlock;\n }\n }\n\n // Remove that block\n // this.debug(\"Removing block: \" + lruBlock + \". current LRU: \" + this._lruCounter);\n delete this._rowBlockCache[lruBlock];\n this._rowBlockCount--;\n }\n }\n\n this._rowBlockCache[block] =\n {\n lru : ++this._lruCounter,\n rowDataArr : rowDataArr\n };\n },\n\n\n /**\n * Removes a row from the model.\n *\n * @param rowIndex {Integer} the index of the row to remove.\n */\n removeRow : function(rowIndex)\n {\n if (this.getClearCacheOnRemove())\n {\n this.clearCache();\n\n // Inform the listeners\n var data =\n {\n firstRow : 0,\n lastRow : this.getRowCount() - 1,\n firstColumn : 0,\n lastColumn : this.getColumnCount() - 1\n };\n\n this.fireDataEvent(\"dataChanged\", data);\n }\n else\n {\n var blockSize = this.getBlockSize();\n var blockCount = Math.ceil(this.getRowCount() / blockSize);\n var startBlock = parseInt(rowIndex / blockSize, 10);\n\n // Remove the row and move the rows of all following blocks\n for (var block=startBlock; block<=blockCount; block++)\n {\n var blockData = this._rowBlockCache[block];\n\n if (blockData != null)\n {\n // Remove the row in the start block\n // NOTE: In the other blocks the first row is removed\n // (This is the row that was)\n var removeIndex = 0;\n\n if (block == startBlock) {\n removeIndex = rowIndex - block * blockSize;\n }\n\n blockData.rowDataArr.splice(removeIndex, 1);\n\n if (block == blockCount - 1)\n {\n // This is the last block\n if (blockData.rowDataArr.length == 0)\n {\n // It is empty now -> Remove it\n delete this._rowBlockCache[block];\n }\n }\n else\n {\n // Try to copy the first row of the next block to the end of this block\n // so this block can stays clean\n var nextBlockData = this._rowBlockCache[block + 1];\n\n if (nextBlockData != null) {\n blockData.rowDataArr.push(nextBlockData.rowDataArr[0]);\n }\n else\n {\n // There is no row to move -> Mark this block as dirty\n blockData.isDirty = true;\n }\n }\n }\n }\n\n if (this._rowCount != -1) {\n this._rowCount--;\n }\n\n // Inform the listeners\n if (this.hasListener(\"dataChanged\"))\n {\n var data =\n {\n firstRow : rowIndex,\n lastRow : this.getRowCount() - 1,\n firstColumn : 0,\n lastColumn : this.getColumnCount() - 1\n };\n\n this.fireDataEvent(\"dataChanged\", data);\n }\n }\n },\n\n\n /**\n *\n * See overridden method for details.\n *\n * @param rowIndex {Integer} the model index of the row.\n * @return {Object} Map containing a value for each column.\n */\n getRowData : function(rowIndex)\n {\n var blockSize = this.getBlockSize();\n var block = parseInt(rowIndex / blockSize, 10);\n var blockData = this._rowBlockCache[block];\n\n if (blockData == null)\n {\n // This block is not (yet) loaded\n return null;\n }\n else\n {\n var rowData = blockData.rowDataArr[rowIndex - (block * blockSize)];\n\n // Update the last recently used counter\n if (blockData.lru != this._lruCounter) {\n blockData.lru = ++this._lruCounter;\n }\n\n return rowData;\n }\n },\n\n // overridden\n getValue : function(columnIndex, rowIndex)\n {\n var rowData = this.getRowData(rowIndex);\n\n if (rowData == null) {\n return null;\n }\n else\n {\n var columnId = this.getColumnId(columnIndex);\n return rowData[columnId];\n }\n },\n\n // overridden\n setValue : function(columnIndex, rowIndex, value)\n {\n var rowData = this.getRowData(rowIndex);\n\n if (rowData == null) {\n // row has not yet been loaded or does not exist\n return;\n }\n else\n {\n var columnId = this.getColumnId(columnIndex);\n rowData[columnId] = value;\n\n // Inform the listeners\n if (this.hasListener(\"dataChanged\"))\n {\n var data =\n {\n firstRow : rowIndex,\n lastRow : rowIndex,\n firstColumn : columnIndex,\n lastColumn : columnIndex\n };\n\n this.fireDataEvent(\"dataChanged\", data);\n }\n }\n },\n\n\n /**\n * Sets all columns editable or not editable.\n *\n * @param editable {Boolean} whether all columns are editable.\n */\n setEditable : function(editable)\n {\n this._editableColArr = [];\n\n for (var col=0; col\n * let tableModel = this.__logModel = new osparc.widget.logger.LoggerTable();\n * tableModel.setColumns([\"Level\", \"Time\", \"Origin\", \"Message\"], [\"level\", \"time\", \"who\", \"whatRich\"]);\n * let custom = {\n * tableColumnModel : function(obj) {\n * return new qx.ui.table.columnmodel.Resize(obj);\n * }\n * };\n * let table = new qx.ui.table.Table(tableModel, custom);\n * this.getRoot().add(table);\n * \n */\n\n/**\n *\n * @asset(demobrowser/backend/remote_table.php)\n */\n\nqx.Class.define(\"osparc.widget.logger.LoggerModel\", {\n extend : qx.ui.table.model.Remote,\n\n construct : function() {\n this.base(arguments);\n\n this.setColumns([\n \"\",\n \"Time\",\n \"Origin\",\n \"Message\"\n ], [\n \"level\",\n \"time\",\n \"who\",\n \"msgRich\"\n ]);\n\n this.__rawData = [];\n },\n\n properties: {\n filterLogLevel: {\n nullable: false,\n check : \"Number\",\n init: -1\n },\n\n filterString: {\n nullable: true,\n check : \"String\",\n init: \"\"\n }\n },\n\n statics: {\n getLevelIcon: function(logLevel) {\n const logLevels = osparc.widget.logger.LoggerView.LOG_LEVELS;\n let iconSource = \"\";\n switch (logLevel) {\n case logLevels.INFO:\n iconSource = \"osparc/circle-info-solid.svg\";\n break;\n case logLevels.WARNING:\n iconSource = \"osparc/circle-exclamation-solid.svg\";\n break;\n case logLevels.ERROR:\n iconSource = \"osparc/circle-xmark-solid.svg\";\n break;\n }\n return iconSource;\n }\n },\n\n members : {\n __rawData: null,\n __filteredData: null,\n\n getRows: function() {\n return this.__rawData;\n },\n\n getFilteredRows: function() {\n return this.__filteredData;\n },\n\n addRows: function(newRows) {\n newRows.forEach(newRow => {\n newRow[\"level\"] = this.self().getLevelIcon(newRow.logLevel);\n newRow[\"time\"] = osparc.utils.Utils.formatTime(newRow.timeStamp, true);\n newRow[\"who\"] = newRow.label;\n\n // there might a double backslash before the n\n let clean = newRow.msg.replace(/\\\\n/g, \"
\");\n clean = newRow.msg.replace(/\\n/g, \"
\");\n newRow[\"msgRich\"] = clean;\n\n this.__rawData.push(newRow);\n });\n },\n\n nodeLabelChanged: function(nodeId, newLabel) {\n this.__rawData.forEach(row => {\n if (row.nodeId === nodeId) {\n row.label = newLabel;\n row[\"who\"] = row.label;\n }\n });\n },\n\n clearTable: function() {\n const rawLength = this.__rawData.length;\n this.__rawData = [];\n for (let i=rawLength-1; i>=0; i--) {\n this.removeRow(i);\n }\n this.reloadData();\n },\n\n getRawRowCount: function() {\n return this.__rawData.length;\n },\n\n getFilteredRowCount: function() {\n return this.__filteredData.length;\n },\n\n __filterByString: function(msg) {\n let searchString = this.getFilterString();\n if (searchString === null || searchString === \"\") {\n return true;\n }\n searchString = searchString.toUpperCase();\n if (msg) {\n msg = msg.toUpperCase();\n return msg.includes(searchString);\n }\n return false;\n },\n\n __filterByLogLevel: function(logLevel) {\n const show = logLevel >= this.getFilterLogLevel();\n return show;\n },\n\n __checkFilters: function(rowData) {\n const showStrWho = this.__filterByString(rowData.label);\n const showStrWhat = this.__filterByString(rowData.msg);\n const showLog = this.__filterByLogLevel(rowData.logLevel);\n\n return ((showStrWho || showStrWhat) && showLog);\n },\n\n // overloaded - called whenever the table requests the row count\n _loadRowCount: function() {\n this.__filteredData = [];\n for (let i=0; i {\n // switch it's expanded if it was already expanded\n rowInfo.expanded = !rowInfo.expanded;\n\n const messageDiv = rowElem.children.item(this.__expandableColPos);\n const expandedHeight = messageDiv.scrollHeight;\n const newHeight = (rowInfo.expanded ? expandedHeight : 19) + \"px\";\n style.height = newHeight\n Array.from(rowElem.children).forEach(child => child.style.height = newHeight);\n }\n rowElem.removeEventListener(\"click\", rowClicked);\n rowElem.addEventListener(\"click\", rowClicked);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Based on https://github.com/hgrecco/pint/blob/master/pint/default_en.txt\n */\n\nqx.Class.define(\"osparc.utils.Units\", {\n type: \"static\",\n\n statics: {\n BASE_UNITS: {\n meter: {\n quantity: \"length\",\n alias: [\"meter\", \"m\", \"metre\"],\n short: \"m\",\n long: \"meter\"\n },\n second: {\n quantity: \"time\",\n alias: [\"second\", \"s\", \"sec\"],\n short: \"s\",\n long: \"second\"\n },\n ampere : {\n quantity: \"current\",\n alias: [\"ampere\", \"A\", \"amp\"],\n short: \"A\",\n long: \"ampere\"\n },\n candela: {\n quantity: \"luminosity\",\n alias: [\"candela\", \"cd\", \"candle\"],\n short: \"cd\",\n long: \"candela\"\n },\n gram: {\n quantity: \"mass\",\n alias: [\"gram\", \"g\"],\n short: \"g\",\n long: \"gram\"\n },\n mole: {\n quantity: \"substance\",\n alias: [\"mole\", \"mol\"],\n short: \"mol\",\n long: \"mole\"\n },\n kelvin: {\n quantity: \"temperature\",\n alias: [\"kelvin\", \"K\", \"degK\", \"°K\", \"degree_Kelvin\", \"degreeK\"],\n short: \"K\",\n long: \"kelvin\"\n },\n radian: {\n quantity: \"radian\",\n alias: [\"radian\", \"rad\"],\n short: \"rad\",\n long: \"radian\"\n }\n },\n\n PREFIXES: {\n micro: {\n short: \"µ\",\n long: \"micro\",\n multiplier: 1e-6\n },\n milli: {\n short: \"m\",\n long: \"milli\",\n multiplier: 1e-3\n },\n \"no-prefix\": {\n short: \"\",\n long: \"\",\n multiplier: 1e0\n },\n kilo: {\n short: \"k\",\n long: \"kilo\",\n multiplier: 1e3\n },\n mega: {\n short: \"M\",\n long: \"mega\",\n multiplier: 1e6\n }\n },\n\n __isUnitRegistered: function(unitKey) {\n return Boolean(unitKey in this.BASE_UNITS);\n },\n\n __getBaseUnit: function(unitKey) {\n return unitKey in this.BASE_UNITS ? this.BASE_UNITS[unitKey] : null;\n },\n __getShortLabel: function(unit, prefix) {\n const baseUnit = this.__getBaseUnit(unit);\n let shortLabel = baseUnit ? baseUnit.short : unit;\n if (prefix && prefix in this.PREFIXES) {\n shortLabel = this.PREFIXES[prefix].short + shortLabel;\n }\n return shortLabel;\n },\n\n __getLongLabel: function(xUnit, prefix) {\n const baseUnit = this.__getBaseUnit(xUnit);\n let longLabel = baseUnit ? baseUnit.long : xUnit;\n if (prefix && prefix in this.PREFIXES) {\n longLabel = this.PREFIXES[prefix].long + longLabel;\n }\n return longLabel;\n },\n\n __getPrefixMultiplier: function(prefix) {\n if ([null, undefined, \"\"].includes(prefix)) {\n prefix = \"no-prefix\";\n }\n if (prefix in this.PREFIXES) {\n return this.PREFIXES[prefix].multiplier;\n }\n return 1;\n },\n\n getLabels: function(unit, prefix) {\n if (this.__isUnitRegistered(unit)) {\n return {\n unitShort: this.__getShortLabel(unit, prefix),\n unitLong: this.__getLongLabel(unit, prefix)\n };\n }\n return null;\n },\n\n // One up and one down, or all the way to the SI\n getNextPrefix: function(prefix, originalPrefix) {\n if ([null, undefined, \"\"].includes(prefix)) {\n prefix = \"no-prefix\";\n }\n if ([null, undefined, \"\"].includes(originalPrefix)) {\n originalPrefix = \"no-prefix\";\n }\n const keys = Object.keys(this.PREFIXES);\n const orignalIdx = keys.indexOf(originalPrefix);\n if (orignalIdx === -1) {\n return null;\n }\n const midPrefix = Math.min(keys.length-2, Math.max(orignalIdx, 1));\n const pKeys = Object.keys(this.PREFIXES).filter((_, idx) => Math.abs(midPrefix-idx) <=1);\n const idx = pKeys.indexOf(prefix);\n if (idx === pKeys.length-1) {\n return this.PREFIXES[pKeys[0]];\n }\n return this.PREFIXES[pKeys[idx+1]];\n },\n\n getMultiplier: function(oldPrefix, newPrefix) {\n const oldMulitplier = this.__getPrefixMultiplier(oldPrefix);\n const newMulitplier = this.__getPrefixMultiplier(newPrefix);\n const multiplier = oldMulitplier/newMulitplier;\n return multiplier;\n },\n\n convertValue: function(val, oldPrefix, newPrefix) {\n const multiplier = this.getMultiplier(oldPrefix, newPrefix);\n if (Array.isArray(JSON.parse(val))) {\n val = JSON.parse(val);\n val.forEach((v, index) => {\n val[index] = parseFloat((v*multiplier).toFixed(15));\n });\n return val;\n }\n return parseFloat((val*multiplier).toFixed(15));\n },\n\n composeXUnit: function(unit, unitPrefix) {\n if (unit === undefined) {\n return null;\n }\n let xUnit = \"\";\n if (unitPrefix) {\n xUnit += unitPrefix + \"-\";\n }\n xUnit += unit;\n return xUnit;\n },\n\n decomposeXUnit: function(xUnit) {\n const unitSplit = xUnit.split(\"-\");\n let unitPrefix = null;\n let unit = null;\n if (unitSplit.length === 2) {\n unitPrefix = unitSplit[0];\n unit = unitSplit[1];\n } else {\n unit = unitSplit[0];\n }\n return {\n unitPrefix,\n unit\n };\n },\n\n getPrefix(xUnit, text) {\n const {\n unit\n } = this.decomposeXUnit(xUnit);\n const prefix = text.replace(this.BASE_UNITS[unit].short, \"\");\n const idx = Object.values(this.PREFIXES).findIndex(p => p[\"short\"] === prefix);\n if (idx > -1) {\n const newPrefix = Object.keys(this.PREFIXES)[idx];\n return (newPrefix === \"no-prefix\") ? \"\" : newPrefix;\n }\n return null;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.form.PortInfoHint\", {\n extend: osparc.ui.hint.InfoHint,\n\n statics: {\n ERROR_ICON: \"@MaterialIcons/error_outline/14\"\n },\n\n properties: {\n portErrorMsg: {\n check: \"String\",\n init: null,\n nullable: true,\n apply: \"__applyPortErrorMsg\"\n }\n },\n\n members: {\n __applyPortErrorMsg: function(errorMsg) {\n let text = this.getHintText();\n if (errorMsg) {\n const color = qx.theme.manager.Color.getInstance().resolve(\"failed-red\");\n text += `
${errorMsg}`;\n }\n this.setHintText(text);\n this.set({\n source: errorMsg ? this.self().ERROR_ICON : osparc.ui.hint.InfoHint.INFO_ICON + \"/14\",\n textColor: errorMsg ? \"failed-red\" : \"text\"\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Collection of methods for dealing with ports.\n *\n */\n\nqx.Class.define(\"osparc.utils.Ports\", {\n type: \"static\",\n\n statics: {\n arePortsCompatible: function(node1, portId1, node2, portId2) {\n return osparc.data.Resources.getCompatibleInputs(node1, portId1, node2)\n .then(compatiblePorts => compatiblePorts.includes(portId2));\n },\n\n isDataALink: function(data) {\n return (data !== null && typeof data === \"object\" && data.nodeUuid);\n },\n\n isDataAParameter: function(data) {\n return (data !== null && typeof data === \"string\" && data.startsWith(\"{{\") && data.endsWith(\"}}\"));\n },\n\n getPortType: function(portsMetadata, portId) {\n let portType = null;\n if (portId in portsMetadata) {\n portType = portsMetadata[portId][\"type\"];\n if (portType === \"ref_contentSchema\" && \"contentSchema\" in portsMetadata[portId]) {\n portType = portsMetadata[portId][\"contentSchema\"][\"type\"];\n }\n }\n return portType;\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2011 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Christian Hagendorn (chris_schmidt)\n\n************************************************************************ */\n\n/**\n * The tree item is a tree element for the {@link VirtualTree}, which can have\n * nested tree elements.\n */\nqx.Class.define(\"qx.ui.tree.VirtualTreeItem\",\n{\n extend : qx.ui.tree.core.AbstractItem,\n\n\n properties :\n {\n // overridden\n appearance :\n {\n refine : true,\n init : \"virtual-tree-folder\"\n }\n },\n\n\n members :\n {\n // overridden\n /**\n * @lint ignoreReferenceField(_forwardStates)\n */\n _forwardStates : {\n selected : true\n },\n\n\n // overridden\n _addWidgets : function()\n {\n this.addSpacer();\n this.addOpenButton();\n this.addIcon();\n this.addLabel();\n },\n\n\n // overridden\n _shouldShowOpenSymbol : function()\n {\n var open = this.getChildControl(\"open\", true);\n if (open == null) {\n return false;\n }\n\n return this.isOpenable();\n },\n\n\n // overridden\n getLevel : function() {\n return this.getUserData(\"cell.level\");\n },\n\n\n // overridden\n hasChildren : function()\n {\n var model = this.getModel();\n var childProperty = this.getUserData(\"cell.childProperty\");\n var showLeafs = this.getUserData(\"cell.showLeafs\");\n\n return qx.ui.tree.core.Util.hasChildren(model, childProperty, !showLeafs);\n },\n\n\n // apply method\n _applyModel : function(value, old)\n {\n var childProperty = this.getUserData(\"cell.childProperty\");\n var showLeafs = this.getUserData(\"cell.showLeafs\");\n\n if (value != null && qx.ui.tree.core.Util.isNode(value, childProperty))\n {\n var eventType = \"change\" + qx.lang.String.firstUp(childProperty);\n // listen to children property changes\n if (qx.Class.hasProperty(value.constructor, childProperty)) {\n value.addListener(eventType, this._onChangeChildProperty, this);\n }\n\n\n // children property has been set already, immediately add\n // listener for indent updating\n if (qx.ui.tree.core.Util.hasChildren(value, childProperty, !showLeafs)) {\n value.get(childProperty).addListener(\"changeLength\",\n this._onChangeLength, this);\n this._updateIndent();\n }\n }\n\n\n if (old != null && qx.ui.tree.core.Util.isNode(old, childProperty))\n {\n var eventType = \"change\" + qx.lang.String.firstUp(childProperty);\n old.removeListener(eventType, this._onChangeChildProperty, this);\n\n var oldChildren = old.get(childProperty);\n if (oldChildren) {\n oldChildren.removeListener(\"changeLength\", this._onChangeLength, this);\n }\n }\n },\n\n\n /**\n * Handler to update open/close icon when model length changed.\n */\n _onChangeLength : function() {\n this._updateIndent();\n },\n\n\n /**\n * Handler to add listener to array of children property.\n *\n * @param e {qx.event.type.Data} Data event; provides children array\n */\n _onChangeChildProperty : function(e)\n {\n var children = e.getData();\n var old = e.getOldData();\n\n if (children) {\n this._updateIndent();\n children.addListener(\"changeLength\", this._onChangeLength, this);\n }\n\n if (old) {\n old.removeListener(\"changeLength\", this._onChangeLength, this);\n }\n }\n }\n});","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n *\n */\n\nqx.Class.define(\"osparc.widget.NodeSlideTreeItem\", {\n extend: qx.ui.tree.VirtualTreeItem,\n\n properties: {\n nodeId: {\n check: \"String\",\n event: \"changeNodeId\",\n nullable: false\n },\n\n position: {\n check: \"Number\",\n event: \"changePosition\",\n init: -1,\n nullable: true\n },\n\n instructions: {\n check: \"String\",\n event: \"changeInstructions\",\n nullable: true\n }\n },\n\n events: {\n \"showNode\": \"qx.event.type.Event\",\n \"hideNode\": \"qx.event.type.Event\",\n \"moveUp\": \"qx.event.type.Event\",\n \"moveDown\": \"qx.event.type.Event\",\n \"saveInstructions\": \"qx.event.type.Data\"\n },\n\n members: {\n // overridden\n _addWidgets: function() {\n this.addIcon();\n this.addLabel();\n const label = this.getChildControl(\"label\");\n if (label) {\n label.setMaxWidth(150);\n // override the one set in osparc-theme\n label.setPaddingTop(0);\n }\n\n this.addWidget(new qx.ui.core.Spacer(), {\n flex: 1\n });\n\n const posLbl = new qx.ui.basic.Label().set({\n marginRight: 5\n });\n this.bind(\"position\", posLbl, \"value\", {\n converter: val => (val+1).toString()\n });\n this.bind(\"position\", posLbl, \"visibility\", {\n converter: val => val > -1 ? \"visible\" : \"excluded\"\n });\n this.addWidget(posLbl);\n\n const moveUpBtn = new qx.ui.form.Button(null, \"@FontAwesome5Solid/arrow-up/10\").set({\n appearance: \"no-shadow-button\"\n });\n moveUpBtn.addListener(\"execute\", () => this.fireEvent(\"moveUp\"), this);\n this.bind(\"position\", moveUpBtn, \"visibility\", {\n converter: val => val > -1 ? \"visible\" : \"excluded\"\n });\n this.addWidget(moveUpBtn);\n\n const moveDownBtn = new qx.ui.form.Button(null, \"@FontAwesome5Solid/arrow-down/10\").set({\n appearance: \"no-shadow-button\"\n });\n moveDownBtn.addListener(\"execute\", () => this.fireEvent(\"moveDown\"), this);\n this.bind(\"position\", moveDownBtn, \"visibility\", {\n converter: val => val > -1 ? \"visible\" : \"excluded\"\n });\n this.addWidget(moveDownBtn);\n\n const hideBtn = new qx.ui.form.Button(null, \"@FontAwesome5Solid/eye/10\").set({\n marginRight: 5,\n appearance: \"no-shadow-button\"\n });\n hideBtn.addListener(\"execute\", () => this.fireEvent(\"hideNode\"), this);\n this.bind(\"position\", hideBtn, \"visibility\", {\n converter: val => val > -1 ? \"visible\" : \"excluded\"\n });\n this.addWidget(hideBtn);\n\n const showBtn = new qx.ui.form.Button(null, \"@FontAwesome5Solid/eye-slash/10\").set({\n marginRight: 5,\n appearance: \"no-shadow-button\"\n });\n showBtn.addListener(\"execute\", () => this.fireEvent(\"showNode\"), this);\n this.bind(\"position\", showBtn, \"visibility\", {\n converter: val => val > -1 ? \"excluded\" : \"visible\"\n });\n this.addWidget(showBtn);\n\n const editTextBtn = new qx.ui.form.Button(null, \"@FontAwesome5Solid/edit/10\").set({\n toolTipText: this.tr(\"Edit Instructions\"),\n marginRight: 5,\n appearance: \"no-shadow-button\"\n });\n editTextBtn.addListener(\"execute\", () => this.__editText(), this);\n this.bind(\"position\", editTextBtn, \"visibility\", {\n converter: val => val > -1 ? \"visible\" : \"excluded\"\n });\n this.addWidget(editTextBtn);\n },\n\n __editText: function() {\n const title = this.tr(\"Edit Instructions\");\n const textEditor = new osparc.editor.MarkdownEditor(this.getInstructions());\n textEditor.getChildControl(\"accept-button\").setLabel(this.tr(\"Save\"));\n const win = osparc.ui.window.Window.popUpInWindow(textEditor, title, 500, 300);\n textEditor.addListener(\"textChanged\", e => {\n const newText = e.getData();\n this.fireDataEvent(\"saveInstructions\", newText);\n win.close();\n }, this);\n textEditor.addListener(\"cancel\", () => win.close(), this);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Pedro Crespo (pcrespov)\n\n************************************************************************ */\n\n/**\n * Base class for RESTful resources\n */\nqx.Class.define(\"osparc.io.rest.AbstractResource\", {\n extend: qx.io.rest.Resource,\n type: \"abstract\",\n\n statics: {\n API: \"/v0\",\n AUTHENTICATION: null,\n\n setAutheticationHeader: function(usernameOrToken, password=null) {\n osparc.io.rest.AbstractResource.AUTHENTICATION = new qx.io.request.authentication.Basic(usernameOrToken, password);\n }\n\n },\n\n construct: function(description) {\n this.base(arguments, description);\n\n this.configureRequest(function(request, action, params, data) {\n let headers = [{\n key: \"Accept\",\n value: \"application/json\"\n }];\n\n const auth = osparc.io.rest.AbstractResource.AUTHENTICATION;\n if (auth === null) {\n console.debug(\"Authentication missing\");\n } else {\n headers.concat(auth.getAuthHeaders());\n }\n\n headers.forEach(function(item, index, array) {\n request.setRequestHeader(item.key, item.value);\n });\n });\n },\n\n members:{\n /**\n * Default implementation\n * Can be overriden in subclass to change prefix\n */\n formatUrl: function(tail) {\n return osparc.io.rest.AbstractResource.API + tail;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * @ignore(SVGElement)\n */\n\n/**\n * Widget containing the layout where NodeUIs and EdgeUIs, and when the model loaded\n * is a container-node, also NodeInput and NodeOutput are rendered.\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let workbenchUI = new osparc.workbench.WorkbenchUI();\n * this.getRoot().add(workbenchUI);\n *
\n */\n\nconst BUTTON_SIZE = 38;\nconst NODE_INPUTS_WIDTH = 210;\n\nqx.Class.define(\"osparc.workbench.WorkbenchUI\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this.__nodesUI = [];\n this.__edgesUI = [];\n this.__selectedNodeUIs = [];\n this.__annotations = {};\n this.__selectedAnnotations = [];\n\n this._setLayout(new qx.ui.layout.HBox());\n\n this._addItemsToLayout();\n\n this._addEventListeners();\n },\n\n statics: {\n getDashedBorderStyle(isRight) {\n const side = isRight ? \"right\" : \"left\";\n const borderStyle = {};\n borderStyle[\"background-image\"] = `linear-gradient(to bottom, #3D3D3D 50%, rgba(255, 255, 255, 0) 0%)`;\n borderStyle[\"background-position\"] = side;\n borderStyle[\"background-size\"] = \"5px 50px\";\n borderStyle[\"background-repeat\"] = \"repeat-y\";\n return borderStyle;\n },\n\n ZOOM_VALUES: [\n 0.1,\n 0.2,\n 0.3,\n 0.4,\n 0.5,\n 0.7,\n 0.8,\n 0.9,\n 1,\n 1.1,\n 1.2,\n 1.3,\n 1.5,\n 2,\n 2.5,\n 3\n ]\n },\n\n events: {\n \"nodeSelected\": \"qx.event.type.Data\",\n \"removeNode\": \"qx.event.type.Data\",\n \"removeNodes\": \"qx.event.type.Data\",\n \"removeEdge\": \"qx.event.type.Data\",\n \"changeSelectedNode\": \"qx.event.type.Data\",\n \"requestOpenLogger\": \"qx.event.type.Data\",\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n apply: \"__applyStudy\",\n nullable: false\n },\n\n scale: {\n check: \"osparc.workbench.WorkbenchUI.ZOOM_VALUES\",\n init: 1,\n apply: \"__applyScale\",\n event: \"changeScale\",\n nullable: false\n }\n },\n\n members: {\n _currentModel: null,\n __deleteItemButton: null,\n __nodesUI: null,\n __edgesUI: null,\n __selectedNodeUIs: null,\n __workbenchLayer: null,\n __workbenchLayout: null,\n _workbenchLayoutScroll: null,\n __desktop: null,\n __svgLayer: null,\n __tempEdgeNodeId: null,\n __tempEdgeIsInput: null,\n __tempEdgeRepr: null,\n __pointerPos: null,\n __selectedItemId: null,\n __startHint: null,\n __toolHint: null,\n __dropHereUI: null,\n __selectionRectInitPos: null,\n __selectionRectRepr: null,\n __panning: null,\n __isDraggingFile: null,\n __isDraggingLink: null,\n __annotations: null,\n __annotatingNote: null,\n __annotatingRect: null,\n __annotatingText: null,\n __annotationInitPos: null,\n __selectedAnnotations: null,\n __annotationEditor: null,\n __annotationLastColor: null,\n\n __applyStudy: function(study) {\n study.getWorkbench().addListener(\"reloadModel\", () => this.__reloadCurrentModel(), this);\n },\n\n _addItemsToLayout: function() {\n this._addWorkbenchLayer();\n this.__addExtras();\n },\n\n _addWorkbenchLayer: function() {\n const workbenchLayer = this.__workbenchLayer = new qx.ui.container.Composite(new qx.ui.layout.Canvas());\n this._add(workbenchLayer, {\n flex: 1\n });\n\n const workbenchLayoutScroll = this._workbenchLayoutScroll = new qx.ui.container.Scroll();\n osparc.utils.Utils.setIdToWidget(workbenchLayoutScroll, \"WorkbenchUI-scroll\");\n const workbenchLayout = this.__workbenchLayout = new qx.ui.container.Composite(new qx.ui.layout.Canvas());\n workbenchLayoutScroll.add(workbenchLayout);\n workbenchLayer.add(workbenchLayoutScroll, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n\n this.__addDesktop();\n this.__addSVGLayer();\n },\n\n __addDesktop: function() {\n const desktop = this.__desktop = new qx.ui.window.Desktop(new qx.ui.window.Manager());\n osparc.utils.Utils.setIdToWidget(desktop, \"desktopWindow\");\n this.__workbenchLayout.add(desktop, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n },\n\n __addSVGLayer: function() {\n const svgLayer = this.__svgLayer = new osparc.workbench.SvgWidget();\n this.__desktop.add(svgLayer, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n },\n\n __addExtras: function() {\n this.__addStartHint();\n this.__addToolHint();\n this.__addDeleteItemButton();\n },\n\n __addStartHint: function() {\n this.__startHint = new qx.ui.basic.Label(this.tr(\"Double click to start adding a node\")).set({\n font: \"workbench-start-hint\",\n textColor: \"workbench-start-hint\",\n visibility: \"excluded\"\n });\n this.__workbenchLayout.add(this.__startHint);\n },\n\n __addToolHint: function() {\n const toolHint = this.__toolHint = new qx.ui.basic.Label().set({\n font: \"workbench-start-hint\",\n textColor: \"workbench-start-hint\",\n visibility: \"excluded\"\n });\n toolHint.bind(\"value\", toolHint, \"visibility\", {\n converter: val => val ? \"visible\" : \"excluded\"\n });\n this.__workbenchLayout.add(this.__toolHint, {\n bottom: 20,\n left: 20\n });\n },\n\n __addDeleteItemButton: function() {\n const deleteItemButton = this.__deleteItemButton = new qx.ui.form.Button().set({\n icon: \"@FontAwesome5Solid/trash/18\",\n width: BUTTON_SIZE,\n height: BUTTON_SIZE,\n visibility: \"excluded\"\n });\n deleteItemButton.addListener(\"execute\", () => {\n if (this.__isSelectedItemAnEdge()) {\n this.__removeEdge(this.__getEdgeUI(this.__selectedItemId));\n this.resetSelection();\n }\n }, this);\n\n this.__workbenchLayer.add(deleteItemButton, {\n bottom: 10,\n right: 10\n });\n },\n\n __getAnnotationEditorView: function() {\n if (this.__annotationEditor) {\n this.__workbenchLayer.remove(this.__annotationEditor);\n }\n\n const annotationEditor = this.__annotationEditor = new osparc.editor.AnnotationEditor().set({\n backgroundColor: \"background-main-2\",\n visibility: \"excluded\"\n });\n annotationEditor.addDeleteButton();\n\n this.__workbenchLayer.add(annotationEditor, {\n top: 10,\n right: 10\n });\n\n return annotationEditor;\n },\n\n __getWorkbench: function() {\n return this.getStudy().getWorkbench();\n },\n\n __createInputOutputNodesLayout: function(isInput) {\n const label = isInput ? this.tr(\"INPUTS\") : this.tr(\"OUTPUTS\");\n const inputOutputNodesLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n inputOutputNodesLayout.set({\n width: NODE_INPUTS_WIDTH,\n maxWidth: NODE_INPUTS_WIDTH,\n allowGrowX: false,\n padding: [0, 6]\n });\n inputOutputNodesLayout.getContentElement().setStyles(this.self().getDashedBorderStyle(isInput));\n const title = new qx.ui.basic.Label(label).set({\n alignX: \"center\",\n margin: [15, 0],\n font: \"workbench-start-hint\",\n textColor: \"workbench-start-hint\"\n });\n inputOutputNodesLayout.add(title);\n\n return inputOutputNodesLayout;\n },\n\n __openServiceCatalog: function(e) {\n const nodePos = this.__pointerEventToWorkbenchPos(e);\n this.openServiceCatalog(nodePos);\n },\n\n openServiceCatalog: function(nodePos) {\n if (this.getStudy().isReadOnly()) {\n return null;\n }\n if (this.getStudy().isPipelineRunning()) {\n osparc.FlashMessenger.getInstance().logAs(osparc.data.model.Workbench.CANT_ADD_NODE, \"ERROR\");\n return null;\n }\n const srvCat = new osparc.workbench.ServiceCatalog();\n srvCat.addListener(\"addService\", async e => {\n const {\n service,\n nodeLeftId,\n nodeRightId\n } = e.getData();\n const nodeUI = await this.__addNode(service, nodePos);\n if (nodeUI && nodeLeftId !== null || nodeRightId !== null) {\n const newNodeId = nodeUI.getNodeId();\n this._createEdgeBetweenNodes(nodeLeftId ? nodeLeftId : newNodeId, nodeRightId ? nodeRightId : newNodeId, true);\n }\n }, this);\n srvCat.center();\n srvCat.open();\n return srvCat;\n },\n\n __createTemporaryNodeUI: function(pos) {\n const boxWidth = osparc.workbench.NodeUI.NODE_WIDTH;\n const boxHeight = osparc.workbench.NodeUI.NODE_HEIGHT;\n const circleSize = 26;\n const temporaryNodeUI = new qx.ui.basic.Image(\"@FontAwesome5Solid/circle-notch/\"+circleSize).set({\n opacity: 0.8\n });\n temporaryNodeUI.getContentElement().addClass(\"rotate\");\n this.__workbenchLayout.add(temporaryNodeUI);\n temporaryNodeUI.rect = this.__svgLayer.drawDashedRect(boxWidth, boxHeight);\n temporaryNodeUI.setLayoutProperties({\n left: pos.x + parseInt(boxWidth/2) - parseInt(circleSize/2),\n top: pos.y + parseInt(boxHeight/2) - parseInt(circleSize/2)\n });\n osparc.wrapper.Svg.updateItemPos(temporaryNodeUI.rect, pos.x, pos.y);\n\n return temporaryNodeUI;\n },\n\n __removeTemporaryNodeUI: function(temporaryNodeUI) {\n temporaryNodeUI.exclude();\n osparc.wrapper.Svg.removeItem(temporaryNodeUI.rect);\n this.__workbenchLayout.add(temporaryNodeUI);\n temporaryNodeUI = null;\n },\n\n __addNode: async function(service, pos) {\n // render temporary node\n let tempNodeUI = this.__createTemporaryNodeUI(pos);\n\n let nodeUI = null;\n try {\n const node = await this.__getWorkbench().createNode(service.getKey(), service.getVersion());\n nodeUI = this._createNodeUI(node.getNodeId());\n this._addNodeUIToWorkbench(nodeUI, pos);\n qx.ui.core.queue.Layout.flush();\n this.__createDragDropMechanism(nodeUI);\n } catch (err) {\n console.error(err);\n } finally {\n // remove temporary node\n this.__removeTemporaryNodeUI(tempNodeUI);\n }\n return nodeUI;\n },\n\n __getNodesBounds: function() {\n if (this.__nodesUI.length === 0) {\n return null;\n }\n\n const bounds = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n this.__nodesUI.forEach(nodeUI => {\n const nodePos = nodeUI.getNode().getPosition();\n bounds.left = Math.max(bounds.left, nodePos.x);\n bounds.top = Math.max(bounds.top, nodePos.y);\n bounds.right = Math.max(bounds.right, nodePos.x + osparc.workbench.NodeUI.NODE_WIDTH);\n bounds.bottom = Math.max(bounds.bottom, nodePos.y + osparc.workbench.NodeUI.NODE_HEIGHT);\n });\n return bounds;\n },\n\n __cursorOnNodeUI: function(pos) {\n if (this.__nodesUI.length === 0) {\n return null;\n }\n let onNodeUI = null;\n this.__nodesUI.forEach(nodeUI => {\n const nBounds = nodeUI.getBounds();\n if (onNodeUI === null &&\n pos.x > nBounds.left &&\n pos.x < nBounds.left + nBounds.width &&\n pos.y > nBounds.top &&\n pos.y < nBounds.top + nBounds.height) {\n onNodeUI = nodeUI;\n }\n });\n return onNodeUI;\n },\n\n _addNodeUIToWorkbench: function(nodeUI, position) {\n if (position === undefined || !(\"x\" in position) || isNaN(position[\"x\"]) || position[\"x\"] < 0) {\n position = {\n x: 10,\n y: 10\n };\n }\n\n nodeUI.setPosition(position);\n this.__desktop.add(nodeUI);\n nodeUI.open();\n this.__nodesUI.push(nodeUI);\n\n nodeUI.addListener(\"appear\", () => this.__updateNodeUIPos(nodeUI), this);\n\n const isStudyReadOnly = this.getStudy().isReadOnly();\n nodeUI.set({\n movable: !isStudyReadOnly,\n selectable: !isStudyReadOnly,\n focusable: !isStudyReadOnly\n });\n if (isStudyReadOnly) {\n nodeUI.getChildControl(\"captionbar\").set({\n cursor: \"default\"\n });\n } else {\n this.__addNodeListeners(nodeUI);\n }\n\n this.__updateHint();\n },\n\n __itemStartedMoving: function() {\n this.getSelectedNodeUIs().forEach(selectedNodeUI => selectedNodeUI.initPos = selectedNodeUI.getNode().getPosition());\n this.getSelectedAnnotations().forEach(selectedAnnotation => selectedAnnotation.initPos = selectedAnnotation.getPosition());\n },\n\n __itemMoving: function(itemId, xDiff, yDiff) {\n this.getSelectedNodeUIs().forEach(selectedNodeUI => {\n if (itemId !== selectedNodeUI.getNodeId()) {\n selectedNodeUI.setPosition({\n x: selectedNodeUI.initPos.x + xDiff,\n y: selectedNodeUI.initPos.y + yDiff\n });\n this.__updateNodeUIPos(selectedNodeUI);\n }\n });\n\n this.getSelectedAnnotations().forEach(selectedAnnotation => {\n const newPos = {\n x: selectedAnnotation.initPos.x + xDiff,\n y: selectedAnnotation.initPos.y + yDiff\n };\n selectedAnnotation.setPosition(newPos.x, newPos.y);\n });\n },\n\n __itemStoppedMoving: function(nodeUI) {\n this.getSelectedNodeUIs().forEach(selectedNodeUI => delete selectedNodeUI[\"initPos\"]);\n this.getSelectedAnnotations().forEach(selectedAnnotation => delete selectedAnnotation[\"initPos\"]);\n\n if (nodeUI && osparc.Preferences.getInstance().isSnapNodeToGrid()) {\n nodeUI.snapToGrid();\n // make sure nodeUI is moved, then update edges\n setTimeout(() => this.__updateNodeUIPos(nodeUI), 10);\n }\n\n this.__updateWorkbenchBounds();\n\n // After moving a nodeUI, a new element with z-index 100000+ appears on the DOM tree and prevents from clicking\n // elsewhere. Here we go through every the children of the WorkbenchUI and remove the undesired element\n const allChildren = Array.from(this.getContentElement().getDomElement().getElementsByTagName(\"*\"));\n const nodesAndSuspicious = allChildren.filter(child => parseInt(child.style.zIndex) >= 100000);\n nodesAndSuspicious.forEach(child => {\n if (child.className !== \"qx-node-ui-cap\") {\n console.warn(\"moving undesired element to background\");\n child.style.zIndex = \"1\";\n }\n });\n },\n\n __addNodeListeners: function(nodeUI) {\n nodeUI.addListener(\"updateNodeDecorator\", () => this.__updateNodeUIPos(nodeUI), this);\n nodeUI.addListener(\"requestOpenLogger\", () => this.fireDataEvent(\"requestOpenLogger\", nodeUI.getNodeId()), this);\n\n nodeUI.addListener(\"nodeMovingStart\", () => {\n if (!this.getSelectedNodeIDs().includes(nodeUI.getNodeId())) {\n this.__selectNode(nodeUI);\n }\n this.__itemStartedMoving();\n }, this);\n\n nodeUI.addListener(\"nodeMoving\", () => {\n this.__updateNodeUIPos(nodeUI);\n if (\"initPos\" in nodeUI) {\n // multi node move\n const xDiff = nodeUI.getNode().getPosition().x - nodeUI.initPos.x;\n const yDiff = nodeUI.getNode().getPosition().y - nodeUI.initPos.y;\n this.__itemMoving(nodeUI.getNodeId(), xDiff, yDiff);\n }\n }, this);\n nodeUI.addListener(\"nodeMovingStop\", () => this.__itemStoppedMoving(nodeUI), this);\n\n nodeUI.addListener(\"tap\", e => {\n this.__selectNode(nodeUI, e.isCtrlPressed());\n e.stopPropagation();\n }, this);\n\n nodeUI.addListener(\"dbltap\", e => {\n this.fireDataEvent(\"nodeSelected\", nodeUI.getNodeId());\n if (nodeUI.getNode().canNodeStart()) {\n nodeUI.getNode().requestStartNode();\n }\n e.stopPropagation();\n }, this);\n },\n\n __addAnnotationListeners: function(annotation) {\n annotation.addListener(\"annotationStartedMoving\", () => {\n this.__selectAnnotation(annotation);\n this.__itemStartedMoving();\n }, this);\n\n annotation.addListener(\"annotationMoving\", () => {\n if (\"initPos\" in annotation) {\n const reprPos = annotation.getRepresentationPosition();\n const xDiff = reprPos.x - annotation.initPos.x;\n const yDiff = reprPos.y - annotation.initPos.y;\n this.__itemMoving(annotation.getId(), xDiff, yDiff);\n }\n }, this);\n\n annotation.addListener(\"annotationStoppedMoving\", () => this.__itemStoppedMoving(), this);\n\n annotation.addListener(\"annotationClicked\", e => this.__selectAnnotation(annotation, e.getData()), this);\n },\n\n getCurrentModel: function() {\n return this._currentModel;\n },\n\n getSelectedAnnotations: function() {\n return this.__selectedAnnotations;\n },\n\n getSelectedNodeUIs: function() {\n return this.__selectedNodeUIs;\n },\n\n getSelectedNodes: function() {\n return this.getSelectedNodeUIs().map(selectedNodeUI => selectedNodeUI.getNode());\n },\n\n getSelectedNodeIDs: function() {\n return this.getSelectedNodeUIs().map(selectedNodeUI => selectedNodeUI.getNodeId());\n },\n\n resetSelection: function() {\n this.__setSelectedNodes([]);\n this.__setSelectedAnnotations([]);\n this.__setSelectedItem(null);\n },\n\n __setSelectedNodes: function(selectedNodeUIs) {\n this.getSelectedNodeUIs().forEach(node => {\n if (!selectedNodeUIs.includes(node)) {\n node.removeState(\"selected\");\n }\n });\n selectedNodeUIs.forEach(selectedNode => selectedNode.addState(\"selected\"));\n this.__selectedNodeUIs = selectedNodeUIs;\n\n qx.event.message.Bus.dispatchByName(\"changeNodeSelection\", this.getSelectedNodes());\n },\n\n __setSelectedAnnotations: function(selectedAnnotations) {\n this.getSelectedAnnotations().forEach(annotation => {\n if (!selectedAnnotations.includes(annotation)) {\n annotation.setSelected(false);\n }\n });\n selectedAnnotations.forEach(selectedAnnotation => selectedAnnotation.setSelected(true));\n this.__selectedAnnotations = selectedAnnotations;\n },\n\n __selectNode: function(activeNodeUI, isControlPressed = false) {\n if (isControlPressed) {\n const index = this.getSelectedNodeUIs().indexOf(activeNodeUI);\n if (index > -1) {\n activeNodeUI.removeState(\"selected\");\n this.getSelectedNodeUIs().splice(index, 1);\n } else {\n activeNodeUI.addState(\"selected\");\n this.getSelectedNodeUIs().push(activeNodeUI);\n this.__setSelectedItem(activeNodeUI.getNodeId());\n }\n } else {\n this.__setSelectedNodes([activeNodeUI]);\n this.__setSelectedAnnotations([]);\n this.__setSelectedItem(activeNodeUI.getNodeId());\n }\n\n qx.event.message.Bus.dispatchByName(\"changeNodeSelection\", this.getSelectedNodes());\n },\n\n __selectAnnotation: function(annotation, isControlPressed = false) {\n if (isControlPressed) {\n const index = this.getSelectedAnnotations().indexOf(annotation);\n if (index > -1) {\n annotation.setSelected(false);\n this.getSelectedAnnotations().splice(index, 1);\n } else {\n annotation.setSelected(true);\n this.getSelectedAnnotations().push(annotation);\n if (this.__selectedItemId === null) {\n this.__setSelectedItem(annotation.getId());\n }\n }\n } else {\n this.__setSelectedNodes([]);\n this.__setSelectedAnnotations([annotation]);\n this.__setSelectedItem(annotation.getId());\n }\n },\n\n nodeSelected: function(nodeId) {\n const nodeUI = this.getNodeUI(nodeId);\n if (nodeUI && nodeUI.classname.includes(\"NodeUI\")) {\n this.__selectNode(nodeUI);\n }\n },\n\n _createNodeUI: function(nodeId) {\n const node = this.__getWorkbench().getNode(nodeId);\n\n const nodeUI = new osparc.workbench.NodeUI(node);\n this.bind(\"scale\", nodeUI, \"scale\");\n node.addListener(\"keyChanged\", () => this.__selectNode(nodeUI), this);\n nodeUI.populateNodeLayout(this.__svgLayer);\n nodeUI.addListener(\"renameNode\", e => this.__openNodeRenamer(e.getData()), this);\n nodeUI.addListener(\"markerClicked\", e => this.__openMarkerEditor(e.getData()), this);\n nodeUI.addListener(\"infoNode\", e => this.__openNodeInfo(e.getData()), this);\n nodeUI.addListener(\"removeNode\", e => this.fireDataEvent(\"removeNode\", e.getData()), this);\n\n if (nodeUI.getNode().getPropsForm()) {\n nodeUI.getNode().getPropsForm().addListener(\"highlightEdge\", e => {\n const {\n highlight,\n fromNodeId,\n toNodeId,\n } = e.getData();\n const edgeFound = this.__edgesUI.find(edgeUI => {\n const edge = edgeUI.getEdge();\n const inputNode = edge.getInputNode();\n const outputNode = edge.getOutputNode();\n return (inputNode.getNodeId() === fromNodeId && outputNode.getNodeId() === toNodeId)\n });\n if (edgeFound) {\n edgeFound.setHighlighted(highlight);\n }\n });\n }\n\n return nodeUI;\n },\n\n __edgeRepresentationExists: function(edge) {\n for (let i=0; i {\n let data = e.getData();\n let event = data.event;\n let dragNodeId = data.nodeId;\n let dragIsInput = data.isInput;\n\n // Register supported actions\n event.addAction(\"move\");\n\n // Register supported types\n event.addType(\"osparc-node-link\");\n let dragData = {\n dragNodeId: dragNodeId,\n dragIsInput: dragIsInput\n };\n event.addData(\"osparc-node-link\", dragData);\n\n this.__tempEdgeNodeId = dragData.dragNodeId;\n this.__tempEdgeIsInput = dragData.dragIsInput;\n\n qx.bom.Element.addListener(\n this.__desktop,\n evType,\n this.__updateTempEdge,\n this\n );\n nodeUI.setActive(false);\n }, this);\n\n nodeUI.addListener(\"edgeDragOver\", e => {\n let data = e.getData();\n let event = data.event;\n let dropNodeId = data.nodeId;\n let dropIsInput = data.isInput;\n\n let compatible = false;\n if (event.supportsType(\"osparc-node-link\")) {\n const dragNodeId = event.getData(\"osparc-node-link\").dragNodeId;\n const dragIsInput = event.getData(\"osparc-node-link\").dragIsInput;\n const dragNode = this.getNodeUI(dragNodeId);\n const dropNode = this.getNodeUI(dropNodeId);\n const dragPortTarget = dragIsInput ? dragNode.getInputPort() : dragNode.getOutputPort();\n const dropPortTarget = dropIsInput ? dropNode.getInputPort() : dropNode.getOutputPort();\n compatible = dragPortTarget.isInput !== dropPortTarget.isInput;\n }\n\n if (!compatible) {\n event.preventDefault();\n }\n }, this);\n\n nodeUI.addListener(\"edgeDrop\", e => {\n let data = e.getData();\n let event = data.event;\n let dropNodeId = data.nodeId;\n let dropIsInput = data.isInput;\n\n if (event.supportsType(\"osparc-node-link\")) {\n let dragNodeId = event.getData(\"osparc-node-link\").dragNodeId;\n let dragIsInput = event.getData(\"osparc-node-link\").dragIsInput;\n\n let nodeAId = dropIsInput ? dragNodeId : dropNodeId;\n let nodeBId = dragIsInput ? dragNodeId : dropNodeId;\n\n this._createEdgeBetweenNodes(nodeAId, nodeBId, true);\n this.__removeTempEdge();\n this.__removePointerMoveListener();\n }\n }, this);\n\n nodeUI.addListener(\"edgeDragEnd\", e => {\n if (this.__pointerPos === null) {\n return;\n }\n let data = e.getData();\n let dragNodeId = data.nodeId;\n\n if (this.__tempEdgeNodeId === dragNodeId) {\n const srvCat = this.openServiceCatalog(this.__pointerPos);\n if (srvCat) {\n this.__tempEdgeIsInput === true ? srvCat.setContext(null, dragNodeId) : srvCat.setContext(dragNodeId, null);\n srvCat.addListener(\"close\", () => this.__removeTempEdge(), this);\n } else {\n this.__removeTempEdge();\n }\n }\n this.__removePointerMoveListener();\n }, this);\n },\n\n _createEdgeBetweenNodes: function(node1Id, node2Id, autoConnect = true) {\n const edge = this.__getWorkbench().createEdge(null, node1Id, node2Id, autoConnect);\n if (!edge) {\n return;\n }\n if (this.__edgeRepresentationExists(edge)) {\n return;\n }\n\n // build representation\n const nodeUI1 = this.getNodeUI(node1Id);\n const nodeUI2 = this.getNodeUI(node2Id);\n if (nodeUI1.getCurrentBounds() === null || nodeUI2.getCurrentBounds() === null) {\n console.error(\"bounds not ready\");\n return;\n }\n\n const port1 = nodeUI1.getOutputPort();\n const port2 = nodeUI2.getInputPort();\n if (port1 && port2) {\n nodeUI2.getNode().addInputNode(node1Id);\n const pointList = this.__getEdgePoints(nodeUI1, port1, nodeUI2, port2);\n const x1 = pointList[0] ? pointList[0][0] : 0;\n const y1 = pointList[0] ? pointList[0][1] : 0;\n const x2 = pointList[1] ? pointList[1][0] : 0;\n const y2 = pointList[1] ? pointList[1][1] : 0;\n const edgeRepresentation = this.__svgLayer.drawCurve(x1, y1, x2, y2, !edge.isPortConnected());\n\n const edgeUI = new osparc.workbench.EdgeUI(edge, edgeRepresentation);\n this.__edgesUI.push(edgeUI);\n\n const hint = edgeUI.getHint();\n const that = this;\n [\n edgeRepresentation.widerCurve.node,\n edgeRepresentation.node\n ].forEach(svgEl => {\n svgEl.addEventListener(\"click\", e => {\n // this is needed to get out of the context of svg\n that.__setSelectedItem(edgeUI.getEdgeId()); // eslint-disable-line no-underscore-dangle\n e.stopPropagation();\n }, this);\n\n const topOffset = 20;\n [\n \"mouseover\",\n \"mousemove\"\n ].forEach(ev => {\n svgEl.addEventListener(ev, e => {\n const leftOffset = -(parseInt(hint.getHintBounds().width/2));\n const properties = {\n top: e.clientY + topOffset,\n left: e.clientX + leftOffset\n };\n hint.setLayoutProperties(properties);\n if (hint.getText()) {\n hint.show();\n }\n }, this);\n });\n });\n edgeUI.getRepresentation().widerCurve.node.addEventListener(\"mouseout\", () => hint.exclude(), this);\n this.__svgLayer.addListener(\"mouseout\", () => hint.exclude(), this);\n }\n },\n\n __updateAllEdges: function() {\n this.__nodesUI.forEach(nodeUI => {\n this.__updateNodeUIPos(nodeUI);\n });\n },\n\n __updateEdges: function(nodeUI) {\n let edgesInvolved = [];\n if (nodeUI.getNodeType() === \"service\") {\n edgesInvolved = this.__getWorkbench().getConnectedEdges(nodeUI.getNodeId());\n }\n\n edgesInvolved.forEach(edgeId => {\n const edgeUI = this.__getEdgeUI(edgeId);\n if (edgeUI) {\n let node1 = null;\n if (edgeUI.getEdge().getInputNodeId()) {\n node1 = this.getNodeUI(edgeUI.getEdge().getInputNodeId());\n }\n let port1 = node1.getOutputPort();\n let node2 = this.getNodeUI(edgeUI.getEdge().getOutputNodeId());\n let port2 = node2.getInputPort();\n const pointList = this.__getEdgePoints(node1, port1, node2, port2);\n const x1 = pointList[0][0];\n const y1 = pointList[0][1];\n const x2 = pointList[1][0];\n const y2 = pointList[1][1];\n osparc.workbench.SvgWidget.updateCurve(edgeUI.getRepresentation(), x1, y1, x2, y2);\n }\n });\n },\n\n __updateIteratorShadows: function(nodeUI) {\n if (\"shadows\" in nodeUI) {\n const shadowDiffX = -5;\n const shadowDiffY = +3;\n const pos = nodeUI.getNode().getPosition();\n const nShadows = nodeUI.shadows.length;\n for (let i=0; i nodeUI.getNodeType() === \"service\" && nodeUI.getNodeId() === nodeId);\n },\n\n __getEdgeUI: function(edgeId) {\n for (let i = 0; i < this.__edgesUI.length; i++) {\n if (this.__edgesUI[i].getEdgeId() === edgeId) {\n return this.__edgesUI[i];\n }\n }\n return null;\n },\n\n clearNode(nodeId) {\n const nodeUI = this.getNodeUI(nodeId);\n this.__clearNodeUI(nodeUI);\n },\n\n clearEdge: function(edgeId) {\n this.__clearEdge(this.__getEdgeUI(edgeId));\n },\n\n __removeEdge: function(edge) {\n this.fireDataEvent(\"removeEdge\", edge.getEdgeId());\n },\n\n __clearNodeUI: function(nodeUI) {\n if (this.__desktop.getChildren().includes(nodeUI)) {\n this.__desktop.remove(nodeUI);\n }\n nodeUI.removeShadows();\n let index = this.__nodesUI.indexOf(nodeUI);\n if (index > -1) {\n this.__nodesUI.splice(index, 1);\n }\n this.__updateHint();\n },\n\n __clearAllNodes: function() {\n while (this.__nodesUI.length) {\n this.__clearNodeUI(this.__nodesUI[this.__nodesUI.length-1]);\n }\n },\n\n __clearEdge: function(edge) {\n if (edge) {\n osparc.wrapper.Svg.removeCurve(edge.getRepresentation());\n const index = this.__edgesUI.indexOf(edge);\n if (index > -1) {\n this.__edgesUI.splice(index, 1);\n }\n }\n },\n\n __clearAllEdges: function() {\n while (this.__edgesUI.length > 0) {\n this.__clearEdge(this.__edgesUI[this.__edgesUI.length - 1]);\n }\n },\n\n __clearAnnotation: function(annotation) {\n if (annotation) {\n if (annotation.getRepresentation()) {\n osparc.wrapper.Svg.removeItem(annotation.getRepresentation());\n }\n if (annotation.getId() in this.__annotations) {\n delete this.__annotations[annotation.getId()];\n }\n }\n },\n\n __clearAllAnnotations: function() {\n while (Object.keys(this.__annotations).length > 0) {\n const keys = Object.keys(this.__annotations);\n this.__clearAnnotation(this.__annotations[keys[keys.length - 1]]);\n }\n },\n\n _clearAll: function() {\n this.__clearAllNodes();\n this.__clearAllEdges();\n this.__clearAllAnnotations();\n },\n\n __reloadCurrentModel: function() {\n if (this._currentModel) {\n this.loadModel(this.getStudy().getWorkbench());\n }\n },\n\n loadModel: function(model) {\n if (this.__svgLayer.getReady()) {\n this._loadModel(model);\n } else {\n this.__svgLayer.addListenerOnce(\"SvgWidgetReady\", () => this._loadModel(model), this);\n }\n },\n\n _loadModel: async function(model) {\n this._clearAll();\n this._currentModel = model;\n if (model) {\n // create nodes\n const nodes = model.getNodes();\n this.__renderNodes(nodes);\n this.__renderAnnotations(model.getStudy().getUi());\n }\n },\n\n __renderNodes: function(nodes) {\n let nNodesToRender = Object.keys(nodes).length;\n const nodeUIs = [];\n for (const nodeId in nodes) {\n const node = nodes[nodeId];\n const nodeUI = this._createNodeUI(nodeId);\n nodeUI.addListenerOnce(\"appear\", () => {\n nNodesToRender--;\n if (nNodesToRender === 0) {\n // all nodes rendered\n this.__renderEdges(nodes);\n\n setTimeout(() => {\n // move to position (0, 0)\n this._workbenchLayoutScroll.scrollToX(0);\n this._workbenchLayoutScroll.scrollToY(0);\n }, 10);\n }\n }, this);\n this._addNodeUIToWorkbench(nodeUI, node.getPosition());\n nodeUIs.push(nodeUI);\n }\n nodeUIs.forEach(nodeUI => this.__createDragDropMechanism(nodeUI));\n },\n\n __renderEdges: async function(nodes) {\n // create edges\n for (const nodeId in nodes) {\n const node = nodes[nodeId];\n const inputNodeIDs = node.getInputNodes();\n inputNodeIDs.forEach(inputNodeId => {\n if (inputNodeId in nodes) {\n this._createEdgeBetweenNodes(inputNodeId, nodeId, false);\n }\n });\n }\n },\n\n __renderAnnotations: function(studyUI) {\n const initData = studyUI.getAnnotationsInitData();\n const annotations = initData ? initData : studyUI.getAnnotations();\n Object.entries(annotations).forEach(([annotationId, annotation]) => {\n if (annotation instanceof osparc.workbench.Annotation) {\n this.__addAnnotation(annotation.serialize(), annotationId);\n } else {\n this.__addAnnotation(annotation, annotationId);\n }\n });\n if (initData) {\n studyUI.nullAnnotationsInitData();\n }\n },\n\n __setSelectedItem: function(newID) {\n const oldId = this.__selectedItemId;\n if (oldId) {\n if (this.__isSelectedItemAnEdge()) {\n const edge = this.__getEdgeUI(oldId);\n edge.setSelected(false);\n } else if (this.__isSelectedItemAnAnnotation()) {\n const annotation = this.__getAnnotation(oldId);\n annotation.setSelected(false);\n }\n }\n\n this.__selectedItemId = newID;\n if (this.__isSelectedItemAnEdge()) {\n const edge = this.__getEdgeUI(newID);\n edge.setSelected(true);\n } else if (this.__isSelectedItemAnAnnotation()) {\n const annotation = this.__getAnnotation(newID);\n this.__setSelectedAnnotations([annotation]);\n const annotationEditor = this.__getAnnotationEditorView();\n annotationEditor.setAnnotation(annotation);\n annotationEditor.makeItModal();\n annotationEditor.addListener(\"deleteAnnotation\", () => {\n annotationEditor.exclude();\n this.__removeAnnotation(annotation.getId());\n this.resetSelection();\n }, this);\n annotation.addListener(\"changeColor\", e => this.__annotationLastColor = e.getData());\n } else {\n this.fireDataEvent(\"changeSelectedNode\", newID);\n }\n\n if (this.__deleteItemButton) {\n this.__deleteItemButton.setVisibility(this.__isSelectedItemAnEdge() ? \"visible\" : \"excluded\");\n }\n },\n\n __isSelectedItemAnEdge: function() {\n return Boolean(this.__selectedItemId && this.__getEdgeUI(this.__selectedItemId));\n },\n\n __isSelectedItemAnAnnotation: function() {\n return Object.keys(this.__annotations).includes(this.__selectedItemId);\n },\n\n __getAnnotation: function() {\n return this.__isSelectedItemAnAnnotation() ? this.__annotations[this.__selectedItemId] : null;\n },\n\n __scaleCoordinates: function(x, y) {\n return {\n x: parseInt(x / this.getScale()),\n y: parseInt(y / this.getScale())\n };\n },\n\n __unscaleCoordinates: function(x, y) {\n return {\n x: parseInt(x * this.getScale()),\n y: parseInt(y * this.getScale())\n };\n },\n\n __openContextMenu: function(e) {\n const radialMenuWrapper = osparc.wrapper.RadialMenu.getInstance();\n if (radialMenuWrapper.getLibReady()) {\n this.__doOpenContextMenu(e);\n } else {\n radialMenuWrapper.init()\n .then(loaded => {\n if (loaded) {\n this.__doOpenContextMenu(e);\n }\n });\n }\n },\n\n __doOpenContextMenu: function(e) {\n const wbPos = this.__pointerEventToWorkbenchPos(e);\n const nodeUI = this.__cursorOnNodeUI(wbPos);\n const actions = {\n addService: {\n \"text\": \"\\uf067\", // plus\n \"action\": () => this.__openServiceCatalog(e)\n },\n zoomIn: {\n \"text\": \"\\uf00e\", // search-plus\n \"action\": () => {\n this.__pointerPos = this.__pointerEventToWorkbenchPos(e);\n this.zoom(true);\n }\n },\n zoomReset: {\n \"text\": \"\\uf002\", // search\n \"action\": () => this.setScale(1)\n },\n zoomOut: {\n \"text\": \"\\uf010\", // search-minus\n \"action\": () => {\n this.__pointerPos = this.__pointerEventToWorkbenchPos(e);\n this.zoom(false);\n }\n },\n drawText: {\n \"text\": \"\\uf040\", // pencil\n \"action\": () => {\n const pointerPos = this.__pointerEventToWorkbenchPos(e);\n this.startAnnotationsText(pointerPos);\n }\n },\n drawRect: {\n \"text\": \"\\uf044\", // brush with rect\n \"action\": () => this.startAnnotationsRect()\n },\n removeNode: {\n \"text\": \"\\uf014\", // trash\n \"action\": () => nodeUI.fireDataEvent(\"removeNode\", nodeUI.getNodeId())\n },\n startDynService: {\n \"text\": \"\\uf04b\", // play\n \"action\": () => nodeUI.getNode().requestStartNode()\n },\n stopDynService: {\n \"text\": \"\\uf04d\", // stop\n \"action\": () => nodeUI.getNode().requestStopNode(true)\n },\n addRemoveMarker: {\n \"text\": \"\\uf097\", // marker\n \"action\": () => nodeUI.getNode().toggleMarker()\n },\n addServiceInput: {\n \"text\": \"\\uf090\", // in\n \"action\": () => {\n const freePos = this.getStudy().getWorkbench().getFreePosition(nodeUI.getNode(), true);\n const srvCat = this.openServiceCatalog(freePos);\n if (srvCat) {\n srvCat.setContext(null, nodeUI.getNodeId());\n }\n }\n },\n addServiceOutput: {\n \"text\": \"\\uf08b\", // out\n \"action\": () => {\n const freePos = this.getStudy().getWorkbench().getFreePosition(nodeUI.getNode(), false);\n const srvCat = this.openServiceCatalog(freePos);\n if (srvCat) {\n srvCat.setContext(nodeUI.getNodeId(), null);\n }\n }\n },\n noAction: {\n \"text\": \"\\uf05e\", // verboten\n \"action\": () => {}\n }\n };\n let buttons = [];\n if (nodeUI) {\n const node = nodeUI.getNode();\n if (node.isDynamic()) {\n const status = node.getStatus().getInteractive();\n if ([\"idle\", \"failed\"].includes(status)) {\n buttons.push(actions.startDynService);\n } else if ([\"ready\"].includes(status)) {\n buttons.push(actions.stopDynService);\n }\n }\n if (buttons.length === 0) {\n buttons.push(actions.addRemoveMarker);\n }\n buttons = buttons.concat([\n node.hasOutputs() ? actions.addServiceOutput : actions.noAction,\n actions.removeNode,\n node.hasInputs() ? actions.addServiceInput : actions.noAction\n ]);\n } else {\n buttons = [\n actions.addService,\n actions.drawText,\n actions.drawRect\n ];\n }\n this.__buttonsToContextMenu(e, buttons);\n },\n\n __buttonsToContextMenu: function(e, buttons) {\n if (this.__contextMenu) {\n this.__contextMenu.hide();\n }\n let rotation = 3 * Math.PI / 2;\n rotation -= (2/buttons.length) * (Math.PI / 2);\n const radialMenuWrapper = osparc.wrapper.RadialMenu.getInstance();\n const contextMenu = this.__contextMenu = radialMenuWrapper.createMenu({rotation});\n contextMenu.addButtons(buttons);\n contextMenu.setPos(e.getDocumentLeft() - contextMenu.w2, e.getDocumentTop() - contextMenu.h2);\n contextMenu.show();\n },\n\n __mouseDown: function(e) {\n if (e.isMiddlePressed()) {\n this.__pointerPos = this.__pointerEventToWorkbenchPos(e);\n this.__panning = true;\n this.set({\n cursor: \"move\"\n });\n } else if (e.isRightPressed()) {\n this.__openContextMenu(e);\n }\n },\n\n __mouseDownOnSVG: function(e) {\n if (e.isLeftPressed()) {\n if (this.__annotatingNote || this.__annotatingRect || this.__annotatingText) {\n this.__annotationInitPos = this.__pointerEventToWorkbenchPos(e);\n } else {\n this.__selectionRectInitPos = this.__pointerEventToWorkbenchPos(e);\n }\n }\n },\n\n __mouseMove: function(e) {\n if (this.__isDraggingLink) {\n this.__draggingLink(e, true);\n } else if (this.__tempEdgeRepr === null && (this.__annotatingNote || this.__annotatingRect || this.__annotatingText) && this.__annotationInitPos && e.isLeftPressed()) {\n this.__drawingAnnotation(e);\n } else if (this.__tempEdgeRepr === null && this.__selectionRectInitPos && e.isLeftPressed()) {\n this.__drawingSelectionRect(e);\n } else if (this.__panning && e.isMiddlePressed()) {\n const oldPos = this.__pointerPos;\n const newPos = this.__pointerPos = this.__pointerEventToWorkbenchPos(e);\n const moveX = parseInt((oldPos.x-newPos.x) * this.getScale());\n const moveY = parseInt((oldPos.y-newPos.y) * this.getScale());\n this._workbenchLayoutScroll.scrollToX(this._workbenchLayoutScroll.getScrollX() + moveX);\n this._workbenchLayoutScroll.scrollToY(this._workbenchLayoutScroll.getScrollY() + moveY);\n this.set({\n cursor: \"move\"\n });\n }\n },\n\n __mouseUp: function(e) {\n if (this.__selectionRectInitPos) {\n this.__selectionRectInitPos = null;\n }\n if (this.__selectionRectRepr) {\n osparc.wrapper.Svg.removeItem(this.__selectionRectRepr);\n this.__selectionRectRepr = null;\n }\n\n const annotationInitPos = osparc.utils.Utils.deepCloneObject(this.__annotationInitPos);\n if (this.__annotationInitPos) {\n this.__annotationInitPos = null;\n }\n if (this.__annotatingNote || this.__annotatingRect || this.__annotatingText) {\n let annotationType = null;\n if (this.__annotatingNote) {\n annotationType = \"note\";\n } else if (this.__annotatingRect) {\n annotationType = \"rect\";\n } else if (this.__annotatingText) {\n annotationType = \"text\";\n }\n if (this.__consolidateAnnotation(annotationType, annotationInitPos, this.__rectAnnotationRepr)) {\n if (this.__rectAnnotationRepr) {\n osparc.wrapper.Svg.removeItem(this.__rectAnnotationRepr);\n this.__rectAnnotationRepr = null;\n }\n this.__annotatingNote = false;\n this.__annotatingRect = false;\n this.__annotatingText = false;\n this.__toolHint.setValue(null);\n }\n }\n\n if (this.__panning) {\n this.__panning = false;\n this.set({\n cursor: \"auto\"\n });\n } else if (this.__isDraggingLink) {\n this.__dropLink(e);\n }\n\n this.activate();\n },\n\n __mouseWheel: function(e) {\n this.__pointerPos = this.__pointerEventToWorkbenchPos(e);\n const zoomIn = e.getWheelDelta() < 0;\n this.zoom(zoomIn);\n },\n\n zoom: function(zoomIn = true) {\n const zoomValues = this.self().ZOOM_VALUES;\n const nextItem = () => {\n const i = zoomValues.indexOf(this.getScale());\n if (i+1 {\n const i = zoomValues.indexOf(this.getScale());\n if (i-1>=0) {\n return zoomValues[i-1];\n }\n return zoomValues[i];\n };\n\n const newScale = zoomIn ? nextItem() : prevItem();\n this.setScale(newScale);\n },\n\n __applyScale: function(value) {\n const el = this.__workbenchLayout.getContentElement().getDomElement();\n osparc.utils.Utils.setZoom(el, value);\n\n this.__updateWorkbenchBounds();\n },\n\n __updateWorkbenchBounds: function() {\n const nodeBounds = this.__getNodesBounds();\n if (nodeBounds === null) {\n this.__updateHint();\n return;\n }\n\n // Fit to nodes size\n let scale = this.getScale();\n const nodesWidth = nodeBounds.right + osparc.workbench.NodeUI.NODE_WIDTH;\n const nodesHeight = nodeBounds.bottom + osparc.workbench.NodeUI.NODE_HEIGHT;\n const scaledWidth = parseInt(nodesWidth * scale);\n const scaledHeight = parseInt(nodesHeight * scale);\n let wbWidth = scaledWidth;\n let wbHeight = scaledHeight;\n this.__workbenchLayout.set({\n minWidth: scale > 1 ? scaledWidth : nodesWidth,\n minHeight: scale > 1 ? scaledHeight : nodesHeight\n });\n this.__workbenchLayout.set({\n width: scale > 1 ? scaledWidth : nodesWidth,\n height: scale > 1 ? scaledHeight : nodesHeight\n });\n\n // Fill Screen\n const screenWidth = this.getBounds().width - 10; // scrollbar\n const screenHeight = this.getBounds().height - 10; // scrollbar\n const scaledScreenWidth = parseInt(screenWidth / scale);\n const scaledScreenHeight = parseInt(screenHeight / scale);\n if (this.__workbenchLayout.getWidth() < scaledScreenWidth) {\n wbWidth = 0;\n this.__workbenchLayout.set({\n minWidth: scaledScreenWidth\n });\n }\n if (this.__workbenchLayout.getHeight() < scaledScreenHeight) {\n wbHeight = 0;\n this.__workbenchLayout.set({\n minHeight: scaledScreenHeight\n });\n }\n\n // Hack/Workaround: recalculate sliders\n setTimeout(() => {\n // eslint-disable-next-line no-underscore-dangle\n this._workbenchLayoutScroll._computeScrollbars();\n\n const paneSize = this._workbenchLayoutScroll.getChildControl(\"pane\").getInnerSize();\n const barX = this._workbenchLayoutScroll.getChildControl(\"scrollbar-x\");\n const barY = this._workbenchLayoutScroll.getChildControl(\"scrollbar-y\");\n const sliderKnobX = barX.getChildControl(\"slider\").getChildControl(\"knob\");\n const sliderKnobY = barY.getChildControl(\"slider\").getChildControl(\"knob\");\n if (wbWidth > paneSize.width) {\n barX.setMaximum(wbWidth - paneSize.width);\n barX.setKnobFactor(paneSize.width / wbWidth);\n sliderKnobX.resetBackgroundColor();\n } else {\n barX.setMaximum(0);\n barX.setKnobFactor(1);\n // changing visibility triggers _computeScrollbars, which undoes the workaround\n sliderKnobX.setBackgroundColor(\"transparent\");\n }\n if (wbHeight > paneSize.height) {\n barY.setMaximum(wbHeight - paneSize.height);\n barY.setKnobFactor(paneSize.height / wbHeight);\n sliderKnobY.resetBackgroundColor();\n } else {\n barY.setMaximum(0);\n barY.setKnobFactor(1);\n // changing visibility triggers _computeScrollbars, which undoes the workaround\n sliderKnobY.setBackgroundColor(\"transparent\");\n }\n }, 20);\n },\n\n _fitScaleToNodes: function(maxScale = 1.0) {\n const xFit = this.getBounds().width / this._currentModel.getFarthestPosition().x;\n const yFit = this.getBounds().height / this._currentModel.getFarthestPosition().y;\n\n const prefScale = Math.min(Math.min(xFit, yFit), maxScale);\n\n // reverse mutates original. make a copy first\n const closestDown = this.self().ZOOM_VALUES.slice().reverse().find(z => z <= prefScale);\n this.setScale(closestDown);\n },\n\n startAnnotationsNote: function() {\n this.__annotatingNote = true;\n this.__annotatingRect = false;\n this.__annotatingText = false;\n this.__toolHint.setValue(this.tr(\"Pick the position\"));\n },\n\n startAnnotationsRect: function() {\n this.__annotatingNote = false;\n this.__annotatingRect = true;\n this.__annotatingText = false;\n this.__toolHint.setValue(this.tr(\"Draw a rectangle\"));\n },\n\n startAnnotationsText: function(workbenchPos) {\n this.__annotatingNote = false;\n this.__annotatingText = true;\n this.__annotatingRect = false;\n if (workbenchPos) {\n this.__annotationInitPos = workbenchPos;\n this.__mouseUp();\n } else {\n this.__toolHint.setValue(this.tr(\"Pick the position\"));\n }\n },\n\n __openNodeRenamer: function(nodeId) {\n const node = this.getStudy().getWorkbench().getNode(nodeId);\n const treeItemRenamer = new osparc.widget.Renamer(node.getLabel());\n treeItemRenamer.addListener(\"labelChanged\", e => {\n const {\n newLabel\n } = e.getData();\n if (node) {\n node.renameNode(newLabel);\n }\n treeItemRenamer.close();\n }, this);\n treeItemRenamer.center();\n treeItemRenamer.open();\n },\n\n __openMarkerEditor: function(nodeId) {\n if (nodeId) {\n const node = this.getStudy().getWorkbench().getNode(nodeId);\n const marker = node.getMarker();\n if (marker) {\n const annotationEditor = this.__getAnnotationEditorView();\n annotationEditor.setMarker(marker);\n annotationEditor.makeItModal();\n }\n }\n },\n\n __openNodeInfo: function(nodeId) {\n if (nodeId) {\n const node = this.getStudy().getWorkbench().getNode(nodeId);\n const metadata = node.getMetaData();\n const serviceDetails = new osparc.info.ServiceLarge(metadata, {\n nodeId,\n label: node.getLabel(),\n studyId: this.getStudy().getUuid()\n });\n osparc.info.ServiceLarge.popUpInWindow(serviceDetails);\n }\n },\n\n _addEventListeners: function() {\n this.addListener(\"appear\", () => {\n this.addListener(\"resize\", () => this.__updateAllEdges(), this);\n }, this);\n\n this.addListenerOnce(\"appear\", () => {\n const domEl = this.getContentElement().getDomElement();\n [\n \"dragenter\",\n \"dragover\",\n \"dragleave\"\n ].forEach(signalName => {\n domEl.addEventListener(signalName, e => {\n const dragging = signalName !== \"dragleave\";\n this.__draggingFile(e, dragging);\n }, this);\n });\n domEl.addEventListener(\"drop\", this.__dropFile.bind(this), false);\n\n this.setDroppable(true);\n const stopDragging = e => {\n this.__isDraggingLink = null;\n this.__updateDropHere(false);\n };\n const startDragging = e => {\n this.addListenerOnce(\"dragleave\", stopDragging, this);\n this.addListenerOnce(\"dragover\", startDragging, this);\n this.__draggingLink(e, true);\n };\n this.addListenerOnce(\"dragover\", startDragging, this);\n\n this.addListener(\"mousedown\", this.__mouseDown, this);\n this.addListener(\"mousemove\", this.__mouseMove, this);\n this.addListener(\"mouseup\", this.__mouseUp, this);\n this._listenToMouseWheel();\n });\n\n this.addListener(\"keypress\", keyEvent => {\n const selectedNodeIDs = this.getSelectedNodeIDs();\n switch (keyEvent.getKeyIdentifier()) {\n case \"F2\":\n if (selectedNodeIDs.length === 1) {\n this.__openNodeRenamer(selectedNodeIDs[0]);\n }\n break;\n case \"I\":\n if (selectedNodeIDs.length === 1) {\n this.__openNodeInfo(selectedNodeIDs[0]);\n }\n break;\n case \"Delete\":\n if (selectedNodeIDs.length === 1) {\n this.fireDataEvent(\"removeNode\", selectedNodeIDs[0]);\n } else if (selectedNodeIDs.length) {\n this.fireDataEvent(\"removeNodes\", selectedNodeIDs);\n } else if (this.__isSelectedItemAnEdge()) {\n this.__removeEdge(this.__getEdgeUI(this.__selectedItemId));\n this.resetSelection();\n }\n break;\n case \"Escape\":\n this.resetSelection();\n this.__removeTempEdge();\n this.__removePointerMoveListener();\n break;\n }\n }, this);\n\n this.__workbenchLayout.addListener(\"tap\", () => this.resetSelection(), this);\n this.__workbenchLayout.addListener(\"dbltap\", e => this.__openServiceCatalog(e), this);\n this.__workbenchLayout.addListener(\"resize\", () => this.__updateHint(), this);\n\n this.__svgLayer.addListener(\"mousedown\", this.__mouseDownOnSVG, this);\n },\n\n _listenToMouseWheel: function() {\n this.addListener(\"mousewheel\", this.__mouseWheel, this);\n },\n\n __allowDragFile: function(e) {\n let allow = false;\n if (this.__isDraggingFile) {\n // item still being dragged\n allow = true;\n } else {\n // item drag from the outside world\n allow = e.target instanceof SVGElement;\n this.__isDraggingFile = allow;\n }\n return allow;\n },\n\n __allowDragLink: function(e) {\n let allow = false;\n if (this.__isDraggingLink) {\n // item still being dragged\n allow = true;\n } else if (\"supportsType\" in e) {\n // item drag from osparc's file tree\n allow = e.supportsType(\"osparc-file-link\");\n if (allow) {\n // store \"osparc-file-link\" data in variable,\n // because the mousemove event doesn't contain that information\n this.__isDraggingLink = e.getData(\"osparc-file-link\");\n }\n }\n return allow;\n },\n\n __draggingFile: function(e, dragging) {\n if (this.__allowDragFile(e)) {\n e.preventDefault();\n e.stopPropagation();\n } else {\n dragging = false;\n }\n\n if (!this.isPropertyInitialized(\"study\") || this.getStudy().isReadOnly()) {\n return;\n }\n\n const posX = e.offsetX + 2;\n const posY = e.offsetY + 2;\n this.__updateDropHere(dragging, posX, posY);\n },\n\n __draggingLink: function(e, dragging) {\n if (this.__allowDragLink(e)) {\n e.preventDefault();\n e.stopPropagation();\n } else {\n dragging = false;\n }\n\n if (!this.isPropertyInitialized(\"study\") || this.getStudy().isReadOnly()) {\n return;\n }\n\n const pos = this.__pointerEventToWorkbenchPos(e);\n this.__updateDropHere(dragging, pos.x, pos.y);\n },\n\n __updateDropHere: function(show, posX, posY) {\n const boxWidth = 120;\n const boxHeight = 60;\n if (this.__dropHereUI === null) {\n const dropHereNodeUI = this.__dropHereUI = new qx.ui.basic.Label(this.tr(\"Drop here\")).set({\n font: \"workbench-start-hint\",\n textColor: \"workbench-start-hint\"\n });\n dropHereNodeUI.exclude();\n this.__workbenchLayout.add(dropHereNodeUI);\n dropHereNodeUI.rect = this.__svgLayer.drawDashedRect(boxWidth, boxHeight);\n }\n let dropHere = this.__dropHereUI;\n if (show) {\n dropHere.show();\n const dropMeBounds = dropHere.getBounds() || dropHere.getSizeHint();\n dropHere.setLayoutProperties({\n left: posX - parseInt(dropMeBounds.width/2) - parseInt(boxWidth/2),\n top: posY - parseInt(dropMeBounds.height/2)- parseInt(boxHeight/2)\n });\n if (\"rect\" in dropHere) {\n osparc.wrapper.Svg.updateItemPos(dropHere.rect, posX - boxWidth, posY - boxHeight);\n }\n } else {\n dropHere.exclude();\n osparc.wrapper.Svg.removeItem(dropHere.rect);\n dropHere = null;\n }\n },\n\n __drawingSelectionRect: function(e) {\n // draw rect\n const initPos = this.__selectionRectInitPos;\n const currentPos = this.__pointerEventToWorkbenchPos(e);\n const x = Math.min(initPos.x, currentPos.x);\n const y = Math.min(initPos.y, currentPos.y);\n const width = Math.abs(initPos.x - currentPos.x);\n const height = Math.abs(initPos.y - currentPos.y);\n if (this.__selectionRectRepr === null) {\n this.__selectionRectRepr = this.__svgLayer.drawFilledRect(width, height, x, y);\n } else {\n osparc.wrapper.Svg.updateRect(this.__selectionRectRepr, width, height, x, y);\n }\n\n // select nodes\n const nodeUIs = [];\n this.__nodesUI.forEach(nodeUI => {\n const nodeBounds = nodeUI.getCurrentBounds();\n if (nodeBounds) {\n const nodePos = nodeUI.getNode().getPosition();\n const nodePosX = nodePos.x + nodeBounds.width/2;\n const nodePosY = nodePos.y + nodeBounds.height/2;\n if (\n nodePosX > x &&\n nodePosX < x+width &&\n nodePosY > y &&\n nodePosY < y+height\n ) {\n nodeUIs.push(nodeUI);\n }\n }\n });\n this.__setSelectedNodes(nodeUIs);\n\n // select annotations\n const annotations = [];\n Object.keys(this.__annotations).forEach(annotationId => {\n const annotation = this.__annotations[annotationId];\n const attrs = annotation.getAttributes();\n const annotationPosX = parseInt(attrs.x) + parseInt(attrs.width/2);\n const annotationPosY = parseInt(attrs.y) + parseInt(attrs.height/2);\n if (\n annotationPosX > x &&\n annotationPosX < x+width &&\n annotationPosY > y &&\n annotationPosY < y+height\n ) {\n annotations.push(annotation);\n }\n });\n this.__setSelectedAnnotations(annotations);\n },\n\n __drawingAnnotation: function(e) {\n // draw rect\n const initPos = this.__annotationInitPos;\n const currentPos = this.__pointerEventToWorkbenchPos(e);\n const x = Math.min(initPos.x, currentPos.x);\n const y = Math.min(initPos.y, currentPos.y);\n const width = Math.abs(initPos.x - currentPos.x);\n const height = Math.abs(initPos.y - currentPos.y);\n if ([null, undefined].includes(this.__rectAnnotationRepr)) {\n const color = this.__annotationLastColor ? this.__annotationLastColor : osparc.workbench.Annotation.DEFAULT_COLOR;\n this.__rectAnnotationRepr = this.__svgLayer.drawAnnotationRect(width, height, x, y, color);\n } else {\n osparc.wrapper.Svg.updateRect(this.__rectAnnotationRepr, width, height, x, y);\n }\n },\n\n __consolidateAnnotation: function(type, initPos, annotation) {\n const color = this.__annotationLastColor ? this.__annotationLastColor : osparc.workbench.Annotation.DEFAULT_COLOR;\n const serializeData = {\n type,\n color,\n attributes: {}\n };\n if (type === \"rect\") {\n if ([null, undefined].includes(annotation)) {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Draw a rectangle first\"), \"WARNING\");\n return false;\n }\n serializeData.attributes = osparc.wrapper.Svg.getRectAttributes(annotation);\n } else {\n serializeData.attributes = initPos;\n }\n if (type === \"note\") {\n const noteEditor = new osparc.editor.AnnotationNoteCreator();\n const win = osparc.editor.AnnotationNoteCreator.popUpInWindow(noteEditor);\n noteEditor.addListener(\"addNote\", () => {\n const gid = noteEditor.getRecipientGid();\n serializeData.attributes.recipientGid = gid;\n serializeData.attributes.text = noteEditor.getNote();\n const user = osparc.store.Groups.getInstance().getUserByGroupId(gid)\n if (user) {\n osparc.notification.Notifications.postNewAnnotationNote(user.getUserId(), this.getStudy().getUuid());\n }\n this.__addAnnotation(serializeData);\n win.close();\n }, this);\n noteEditor.addListener(\"cancel\", () => win.close());\n } else if (type === \"rect\") {\n this.__addAnnotation(serializeData);\n } else if (type === \"text\") {\n const tempAnnotation = new osparc.workbench.Annotation(null, {\n type: \"text\",\n color,\n attributes: {\n text: \"\",\n fontSize: 12\n }\n });\n const annotationEditor = new osparc.editor.AnnotationEditor(tempAnnotation);\n annotationEditor.addAddButtons();\n tempAnnotation.addListener(\"changeColor\", e => this.__annotationLastColor = e.getData());\n annotationEditor.addListener(\"appear\", () => {\n const textField = annotationEditor.getChildControl(\"text-field\");\n textField.focus();\n textField.activate();\n });\n const win = osparc.ui.window.Window.popUpInWindow(annotationEditor, \"Add Text Annotation\", 220, 135).set({\n clickAwayClose: true,\n showClose: true\n });\n annotationEditor.addListener(\"addAnnotation\", () => {\n win.close();\n const form = annotationEditor.getForm();\n serializeData.attributes.text = form.getItem(\"text\").getValue();\n serializeData.attributes.color = form.getItem(\"color\").getValue();\n serializeData.color = form.getItem(\"color\").getValue();\n serializeData.attributes.fontSize = form.getItem(\"size\").getValue();\n this.__addAnnotation(serializeData);\n }, this);\n win.open();\n }\n return true;\n },\n\n __addAnnotation: function(data, id) {\n const annotation = new osparc.workbench.Annotation(this.__svgLayer, data, id);\n this.__addAnnotationListeners(annotation);\n this.__annotations[annotation.getId()] = annotation;\n this.getStudy().getUi().addAnnotation(annotation);\n },\n\n __removeAnnotation: function(id) {\n if (id in this.__annotations) {\n const annotation = this.__annotations[id];\n this.__clearAnnotation(annotation);\n this.getStudy().getUi().removeAnnotation(id);\n }\n },\n\n __dropFile: async function(e) {\n this.__draggingFile(e, false);\n\n if (\"dataTransfer\" in e) {\n this.__isDraggingFile = false;\n const files = osparc.file.FileDrop.getFilesFromEvent(e);\n if (files.length) {\n if (files.length === 1) {\n const pos = {\n x: e.offsetX,\n y: e.offsetY\n };\n const service = qx.data.marshal.Json.createModel(osparc.service.Utils.getFilePicker());\n const nodeUI = await this.__addNode(service, pos);\n if (nodeUI) {\n const filePicker = new osparc.file.FilePicker(nodeUI.getNode(), \"workbench\");\n filePicker.uploadPendingFiles(files);\n filePicker.addListener(\"fileUploaded\", () => this.fireDataEvent(\"nodeSelected\", nodeUI.getNodeId()), this);\n }\n } else {\n osparc.FlashMessenger.getInstance().logAs(osparc.file.FileDrop.ONE_FILE_ONLY, \"ERROR\");\n }\n } else {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Folders are not accepted. You might want to upload a zip file.\"), \"ERROR\");\n }\n }\n },\n\n __dropLink: async function(e) {\n this.__draggingLink(e, false);\n\n if (this.__isDraggingLink && \"dragData\" in this.__isDraggingLink) {\n const data = this.__isDraggingLink[\"dragData\"];\n this.__isDraggingLink = null;\n const pos = this.__pointerEventToWorkbenchPos(e, false);\n const service = qx.data.marshal.Json.createModel(osparc.service.Utils.getFilePicker());\n const nodeUI = await this.__addNode(service, pos);\n if (nodeUI) {\n const node = nodeUI.getNode();\n osparc.file.FilePicker.setOutputValueFromStore(node, data.getLocation(), data.getDatasetId(), data.getFileId(), data.getLabel());\n }\n }\n },\n\n __updateHint: function() {\n if (!this.isPropertyInitialized(\"study\") || this.__startHint === null) {\n return;\n }\n const isEmptyWorkspace = this.getStudy().isPipelineEmpty();\n this.__startHint.setVisibility(isEmptyWorkspace ? \"visible\" : \"excluded\");\n if (isEmptyWorkspace) {\n const hintBounds = this.__startHint.getBounds() || this.__startHint.getSizeHint();\n const {\n height,\n width\n } = this.__workbenchLayout.getBounds();\n this.__startHint.setLayoutProperties({\n top: Math.round((height - hintBounds.height) / 2),\n left: Math.round((width - hintBounds.width) / 2)\n });\n }\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * @ignore(SVGElement)\n */\n\n/**\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let workbenchUIPreview = new osparc.workbench.WorkbenchUIPreview();\n * this.getRoot().add(workbenchUIPreview);\n *
\n */\n\nqx.Class.define(\"osparc.workbench.WorkbenchUIPreview\", {\n extend: osparc.workbench.WorkbenchUI,\n\n construct: function() {\n this.base(arguments);\n\n this.set({\n backgroundColor: \"background-main\"\n });\n },\n\n members: {\n // overridden\n _addItemsToLayout: function() {\n this._addWorkbenchLayer();\n },\n\n // overridden\n _loadModel: function(model) {\n this._clearAll();\n this.resetSelection();\n this._currentModel = model;\n if (model) {\n qx.ui.core.queue.Visibility.flush();\n\n // create nodes\n const nodes = model.getNodes();\n for (const nodeId in nodes) {\n const node = nodes[nodeId];\n const nodeUI = this._createNodeUI(nodeId);\n nodeUI.setIsMovable(false);\n this._addNodeUIToWorkbench(nodeUI, node.getPosition());\n }\n qx.ui.core.queue.Layout.flush();\n\n // create edges\n for (const nodeId in nodes) {\n const node = nodes[nodeId];\n const inputNodeIDs = node.getInputNodes();\n inputNodeIDs.forEach(inputNodeId => {\n if (inputNodeId in nodes) {\n this._createEdgeBetweenNodes(inputNodeId, nodeId, false);\n }\n });\n }\n\n const maxScale = 0.7;\n this._fitScaleToNodes(maxScale);\n }\n },\n\n // overridden\n _addEventListeners: function() {\n this.addListenerOnce(\"appear\", this._listenToMouseWheel, this);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/* global GitgraphJS */\n\n/**\n * @asset(gitgraph/gitgraph.js)\n * @ignore(GitgraphJS)\n */\n\n/**\n * A qooxdoo wrapper for\n * GitGraph\n */\n\nqx.Class.define(\"osparc.wrapper.GitGraph\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this.__commits = [];\n },\n\n statics: {\n NAME: \"GitGraph\",\n VERSION: \"1.4.0\",\n URL: \"https://github.com/nicoespeon/gitgraph.js/tree/master/packages/gitgraph-js\",\n\n COMMIT_SPACING: 20,\n\n getTemplateConfig: function() {\n const textColor = qx.theme.manager.Color.getInstance().resolve(\"text\");\n const masterColor = \"#1486da\";\n const iterationColor = \"#e01a94\";\n const colors = Array(50).fill(iterationColor);\n colors.unshift(masterColor);\n const defaultFont = osparc.utils.Utils.getDefaultFont();\n return {\n colors: colors,\n commit: {\n spacing: osparc.wrapper.GitGraph.COMMIT_SPACING,\n dot: {\n size: 3\n },\n message: {\n display: false,\n displayAuthor: false,\n displayBranch: false,\n displayHash: false,\n color: textColor,\n font: `normal ${defaultFont[\"size\"]}px ${defaultFont[\"family\"]}`\n }\n },\n branch: {\n spacing: 20,\n lineWidth: 1,\n label: {\n display: false,\n bgColor: \"transparent\",\n strokeColor: \"transparent\"\n }\n }\n };\n }\n },\n\n properties: {\n libReady: {\n nullable: false,\n init: false,\n check: \"Boolean\"\n }\n },\n\n events: {\n \"snapshotTap\": \"qx.event.type.Data\"\n },\n\n members: {\n __gitGraphCanvas: null,\n __gitgraph: null,\n __selectedCommit: null,\n __commits: null,\n __branches: null,\n __parentIDs: null,\n\n init: function(gitGraphCanvas, gitGraphInteract) {\n return new Promise((resolve, reject) => {\n this.__gitGraphCanvas = gitGraphCanvas;\n this.__gitGraphInteract = gitGraphInteract;\n const el = gitGraphCanvas.getContentElement().getDomElement();\n if (this.getLibReady()) {\n const gitgraph = this.__createGraph(el);\n resolve(gitgraph);\n return;\n }\n\n // initialize the script loading\n const gitGraphPath = \"gitgraph/gitgraph.js\";\n const dynLoader = new qx.util.DynamicScriptLoader([\n gitGraphPath\n ]);\n\n dynLoader.addListenerOnce(\"ready\", e => {\n console.log(gitGraphPath + \" loaded\");\n const gitgraph = this.__createGraph(el);\n this.setLibReady(true);\n resolve(gitgraph);\n }, this);\n\n dynLoader.addListener(\"failed\", e => {\n let data = e.getData();\n console.error(\"failed to load \" + data.script);\n reject(data);\n }, this);\n\n dynLoader.start();\n });\n },\n\n __createGraph: function(graphContainer) {\n const myTemplate = GitgraphJS.templateExtend(\"metro\", this.self().getTemplateConfig());\n\n const gitgraph = this.__gitgraph = GitgraphJS.createGitgraph(graphContainer, {\n // \"mode\": \"compact\",\n \"template\": myTemplate\n });\n return gitgraph;\n },\n\n __commit: function(branch, commitData, isCurrent = false) {\n if (isCurrent) {\n const defaultFont = osparc.utils.Utils.getDefaultFont();\n branch.commit({\n subject: commitData[\"tags\"],\n style: {\n dot: {\n size: 4 // default is 3\n },\n message: {\n font: `normal ${defaultFont[\"size\"]}px ${defaultFont[\"family\"]}`\n }\n }\n });\n } else {\n branch.commit(commitData[\"tags\"]);\n }\n branch[\"lastCommit\"] = commitData[\"id\"];\n\n // Widget for highlighting the overed commit with hint\n const widget = new qx.ui.core.Widget().set({\n opacity: 0.1,\n height: this.self().COMMIT_SPACING,\n minWidth: this.self().COMMIT_SPACING*this.__branches.length,\n allowGrowX: true\n });\n const texts = [];\n texts.push(commitData[\"tags\"]);\n if (commitData[\"message\"]) {\n texts.push(commitData[\"message\"]);\n }\n texts.push(commitData[\"createdAt\"]);\n const hintText = texts.join(\"
\");\n const hint = new osparc.ui.hint.Hint(widget, hintText);\n this.__gitGraphInteract.addAt(widget, 0);\n this.__commits.push({\n id: commitData[\"id\"],\n branch,\n commitData,\n widget\n });\n const bgColor = widget.getBackgroundColor();\n widget.addListener(\"mouseover\", e => {\n widget.set({\n backgroundColor: \"white\",\n cursor: \"pointer\"\n });\n hint.show();\n // since the widget might be hidden in the scroll area, take mouse's position.\n const native = e.getNativeEvent();\n hint.setLayoutProperties({\n top: native.clientY+2, // offset avoids flickering\n left: native.clientX\n });\n });\n widget.addListener(\"mouseout\", () => {\n widget.set({\n cursor: \"auto\"\n });\n if (this.__selectedCommit && this.__selectedCommit.id === commitData[\"id\"]) {\n widget.set({\n backgroundColor: \"white\"\n });\n } else {\n widget.set({\n backgroundColor: bgColor\n });\n }\n hint.exclude();\n });\n widget.addListener(\"tap\", () => {\n this.setSelection(commitData[\"id\"]);\n this.fireDataEvent(\"snapshotTap\", commitData[\"id\"]);\n });\n },\n\n resetSelection: function() {\n this.__selectedCommit = null;\n const bgColor = this.getBackgroundColor();\n this.__commits.forEach(commit => {\n commit.widget.set({\n backgroundColor: bgColor\n });\n });\n },\n\n setSelection: function(snapshotId) {\n this.resetSelection();\n this.__commits.forEach(commit => {\n if (commit.id === snapshotId) {\n commit.widget.set({\n backgroundColor: \"white\"\n });\n this.__selectedCommit = commit;\n }\n });\n },\n\n __createBranch: function(lastCommit, fromBranch, name) {\n if (name === undefined) {\n name = \"b-\"+this.__branches.length.toString();\n }\n const branch = fromBranch ? fromBranch.branch(name) : this.__gitgraph.branch(name);\n branch[\"lastCommit\"] = lastCommit;\n this.__branches.push(branch);\n return branch;\n },\n\n __getBranch: function(commitData) {\n if (commitData[\"parents_ids\"] === null) {\n const master = this.__createBranch(commitData[\"id\"], null, \"master\");\n return master;\n }\n const branchFound = this.__branches.find(branch => branch.lastCommit === commitData[\"parents_ids\"][0]);\n if (branchFound) {\n return branchFound;\n }\n const myOnHoldBranch = this.__branches.find(branch => branch.waitingFor === commitData[\"id\"]);\n if (myOnHoldBranch) {\n return myOnHoldBranch;\n }\n const newBranch = this.__createBranch(commitData[\"id\"]);\n return newBranch;\n },\n\n populateGraph: function(snapshots, currentSnapshot) {\n this.__branches = [];\n this.__parentIDs = [];\n const snapshotsClone = JSON.parse(JSON.stringify(snapshots));\n const sortedSnapshots = snapshotsClone.reverse();\n sortedSnapshots.forEach(snapshot => {\n if (\"parents_ids\" in snapshot && snapshot[\"parents_ids\"]) {\n snapshot[\"parents_ids\"].forEach(parentID => this.__parentIDs.push(parentID));\n }\n });\n sortedSnapshots.forEach(snapshot => {\n const currentBranch = this.__getBranch(snapshot);\n const snapshotDate = new Date(snapshot[\"created_at\"]);\n const commitData = {\n id: snapshot[\"id\"],\n tags: snapshot[\"tags\"].join(\", \"),\n message: snapshot[\"message\"],\n createdAt: osparc.utils.Utils.formatDateAndTime(snapshotDate),\n parentsIDs: snapshot[\"parents_ids\"]\n };\n this.__commit(currentBranch, commitData, snapshot[\"id\"] === currentSnapshot[\"id\"]);\n\n // create as many branches as necessary\n let idx = this.__parentIDs.indexOf(snapshot[\"id\"]);\n while (idx > -1) {\n this.__createBranch(snapshot[\"id\"], currentBranch);\n this.__parentIDs.splice(idx, 1);\n idx = this.__parentIDs.indexOf(snapshot[\"id\"]);\n }\n /*\n // due to this bug https://github.com/nicoespeon/gitgraph.js/issues/270\n // check if more branches need to be created now\n const needBranchedNow = snapshots.filter((snapshotCheck, j) => {\n if (j > i+1) {\n return snapshotCheck[\"parents_ids\"] && snapshotCheck[\"parents_ids\"][0] === snapshot[\"id\"];\n }\n return false;\n });\n needBranchedNow.forEach(snapshotOnHold => {\n const branchOnHold = this.__gitgraph.branch(\"it-\"+this.__branches.length);\n branchOnHold[\"waitingFor\"] = snapshotOnHold[\"id\"];\n this.__branches.push(branchOnHold);\n });\n */\n });\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2019 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * Qooxdoo's table widget with some convenient methods.\n */\nqx.Class.define(\"osparc.ui.table.Table\", {\n extend: qx.ui.table.Table,\n\n properties: {\n data: {\n check: \"Array\",\n apply: \"_applyData\"\n }\n },\n\n members: {\n getSelection: function() {\n const ret = [];\n const selectionRanges = this.getSelectionModel().getSelectedRanges();\n if (selectionRanges.length > 0) {\n selectionRanges.forEach(range => {\n for (let i=range.minIndex; i<=range.maxIndex; i++) {\n ret.push(this.getTableModel().getRowData(i));\n }\n });\n }\n return ret;\n },\n\n _applyData: function(data) {\n this.getTableModel().setData(data, false);\n },\n\n makeItLoose: function() {\n this.setHeaderCellHeight(26);\n this.setRowHeight(26);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.snapshots.Loading\", {\n extend: osparc.ui.table.Table,\n\n construct: function(resourceName) {\n const model = this.__initModel();\n\n this.base(arguments, model, {\n statusBarVisible: false\n });\n\n this.setColumnWidth(this.self().T_POS.NAME.col, 200);\n\n this.__populateTable(resourceName);\n },\n\n statics: {\n T_POS: {\n NAME: {\n col: 0,\n label: qx.locale.Manager.tr(\"Name\")\n }\n }\n },\n\n members: {\n\n __initModel: function() {\n const model = new qx.ui.table.model.Simple();\n\n const cols = [];\n Object.keys(this.self().T_POS).forEach(colKey => {\n const idx = this.self().T_POS[colKey].col;\n const label = this.self().T_POS[colKey].label;\n cols.splice(idx, 0, label);\n });\n\n model.setColumns(cols);\n\n return model;\n },\n\n __populateTable: function(resourceName) {\n const columnModel = this.getTableColumnModel();\n columnModel.setDataCellRenderer(this.self().T_POS.NAME.col, new qx.ui.table.cellrenderer.String());\n\n const rows = [];\n const row = [];\n row[this.self().T_POS.NAME.col] = this.tr(\"Loading \") + resourceName + \"...\";\n rows.push(row);\n\n this.getTableModel().setData(rows, false);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.snapshots.Iterations\", {\n extend: osparc.ui.table.Table,\n\n construct: function(metaStudy) {\n this.__metaStudy = metaStudy;\n const model = this.__initModel();\n\n this.base(arguments, model, {\n initiallyHiddenColumns: [\n this.self().T_POS.ID.col\n ],\n statusBarVisible: false\n });\n\n this.setColumnWidth(this.self().T_POS.NAME.col, 150);\n this.setColumnWidth(this.self().T_POS.PROGRESS.col, 70);\n },\n\n statics: {\n T_POS: {\n ID: {\n col: 0,\n label: \"uuid\"\n },\n NAME: {\n col: 1,\n label: qx.locale.Manager.tr(\"Name\")\n },\n PROGRESS: {\n col: 2,\n label: qx.locale.Manager.tr(\"Progress\")\n }\n },\n\n extractIterators: function(iteration) {\n const iterators = [];\n Object.values(iteration[\"workbench\"]).forEach(node => {\n if (osparc.data.model.Node.isIterator(node)) {\n iterators.push(node);\n }\n });\n return iterators;\n },\n\n extractProbes: function(iteration) {\n const probes = [];\n Object.values(iteration[\"workbench\"]).forEach(node => {\n if (osparc.data.model.Node.isProbe(node)) {\n probes.push(node);\n }\n });\n return probes;\n },\n\n extractIteratorOutput: function(iterator) {\n if (\"outputs\" in iterator && \"out_1\" in iterator[\"outputs\"]) {\n return iterator[\"outputs\"][\"out_1\"];\n }\n return null;\n },\n\n extractProbeOutput: function(iteration, probe) {\n let nodeUuid = null;\n let portKey = null;\n if (\"inputs\" in probe && \"in_1\" in probe[\"inputs\"]) {\n const input = probe[\"inputs\"][\"in_1\"];\n nodeUuid = input[\"nodeUuid\"];\n portKey = input[\"output\"];\n }\n const itWB = iteration[\"workbench\"];\n if (nodeUuid && nodeUuid in itWB &&\n \"outputs\" in itWB[nodeUuid] &&\n portKey && portKey in itWB[nodeUuid][\"outputs\"]) {\n return itWB[nodeUuid][\"outputs\"][portKey];\n }\n return null;\n }\n },\n\n members: {\n __metaStudy: null,\n\n getRowData: function(rowIdx) {\n return this.getTableModel().getRowDataAsMap(rowIdx);\n },\n\n __initModel: function() {\n const model = new qx.ui.table.model.Simple();\n\n const cols = [];\n Object.keys(this.self().T_POS).forEach(colKey => {\n const idx = this.self().T_POS[colKey].col;\n const label = this.self().T_POS[colKey].label;\n cols.splice(idx, 0, label);\n });\n\n const iteratorsInMeta = this.self().extractIterators(this.__metaStudy);\n iteratorsInMeta.forEach(iteratorInMeta => cols.push(iteratorInMeta[\"label\"]));\n\n const probesInMeta = this.self().extractProbes(this.__metaStudy);\n probesInMeta.forEach(probeInMeta => cols.push(probeInMeta[\"label\"]));\n\n model.setColumns(cols);\n\n return model;\n },\n\n populateTable: function(iterations) {\n if (iterations.length === 0) {\n return;\n }\n\n const iteratorsInMeta = this.self().extractIterators(iterations[0]);\n const probesInMeta = this.self().extractProbes(iterations[0]);\n\n const columnModel = this.getTableColumnModel();\n columnModel.setDataCellRenderer(this.self().T_POS.ID.col, new qx.ui.table.cellrenderer.Number());\n columnModel.setDataCellRenderer(this.self().T_POS.NAME.col, new qx.ui.table.cellrenderer.String());\n columnModel.setDataCellRenderer(this.self().T_POS.PROGRESS.col, new qx.ui.table.cellrenderer.String());\n let countFormat = this.self().T_POS.PROGRESS.col+1;\n iteratorsInMeta.forEach(() => {\n columnModel.setDataCellRenderer(countFormat, new qx.ui.table.cellrenderer.String());\n countFormat++;\n });\n probesInMeta.forEach(() => {\n columnModel.setDataCellRenderer(countFormat, new qx.ui.table.cellrenderer.String());\n countFormat++;\n });\n\n this.iterationsToTable(iterations);\n },\n\n iterationsToTable(iterations) {\n const rows = [];\n iterations.forEach(iteration => {\n const iterators = this.self().extractIterators(iteration);\n const probes = this.self().extractProbes(iteration);\n const row = [];\n row[this.self().T_POS.ID.col] = iteration[\"uuid\"];\n row[this.self().T_POS.NAME.col] = iteration[\"name\"];\n const studyProgress = osparc.data.model.Study.computeStudyProgress(iteration);\n row[this.self().T_POS.PROGRESS.col] = Math.floor(studyProgress)+\"%\";\n let countRow = this.self().T_POS.PROGRESS.col+1;\n iterators.forEach(iterator => {\n const itOut = this.self().extractIteratorOutput(iterator);\n if (itOut === null) {\n row[countRow] = \"unknown\";\n } else {\n row[countRow] = itOut.toString();\n }\n countRow++;\n });\n probes.forEach(probe => {\n const porbeOut = this.self().extractProbeOutput(iteration, probe);\n if (porbeOut === null) {\n row[countRow] = \"unknown\";\n } else {\n row[countRow] = porbeOut.toString();\n }\n countRow++;\n });\n rows.push(row);\n });\n this.getTableModel().setData(rows, false);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Andrei Neagu (gitHK)\n\n************************************************************************ */\n\n/**\n * @asset(schedulerWorker.js)\n */\n\n/**\n * Singleton class to be used as a drop-in replacement for`setInterval` and `clearInterval`.\n * Depending on browser and OS, `setInterval` might not be called if the window is\n * not visible on the screen.\n */\n\n\nqx.Class.define(\"osparc.utils.WebWorkerScheduler\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n construct: function() {\n this.__registeredCallbacks = {};\n this.__schedulerWorker = new Worker(\"resource/osparc/schedulerWorker.js\");\n this.__schedulerWorker.onmessage = event => {\n const { id, event: workerEvent } = event.data;\n\n if (workerEvent === \"tick\") {\n if (id in this.__registeredCallbacks) {\n const { callback } = this.__registeredCallbacks[id];\n callback();\n }\n } else {\n console.log(\"Received unsupported event from worker\", workerEvent)\n }\n };\n },\n\n members: {\n __schedulerWorker: null,\n __registeredCallbacks: null,\n\n setInterval: function(callback, interval) {\n const id = osparc.utils.Utils.uuidV4();\n this.__registeredCallbacks[id] = {\n callback,\n interval,\n };\n this.__schedulerWorker.postMessage({\n command: \"scheduleInterval\",\n id: id,\n interval: interval\n });\n return id;\n },\n\n clearInterval: function(id) {\n if (id in this.__registeredCallbacks) {\n this.__schedulerWorker.postMessage({\n command: \"clearInterval\",\n id: id\n });\n delete this.__registeredCallbacks[id];\n }\n },\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2011 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n************************************************************************ */\n\n/**\n * Checks whether a given font is available on the document and fires events\n * accordingly.\n * \n * This class does not need to be disposed, unless you want to abort the validation\n * early\n */\nqx.Class.define(\"qx.bom.webfonts.Validator\", {\n\n extend : qx.core.Object,\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param fontFamily {String} The name of the font to be verified\n * @param comparisonString {String?} String to be used to detect whether a font was loaded or not\n * whether the font has loaded properly\n */\n construct : function(fontFamily, comparisonString)\n {\n this.base(arguments);\n\n if (comparisonString) {\n this.setComparisonString(comparisonString);\n }\n\n if (fontFamily) {\n this.setFontFamily(fontFamily);\n this.__requestedHelpers = this._getRequestedHelpers();\n }\n },\n\n\n\n /*\n *****************************************************************************\n STATICS\n *****************************************************************************\n */\n\n statics :\n {\n /**\n * Sets of serif and sans-serif fonts to be used for size comparisons.\n * At least one of these fonts should be present on any system.\n */\n COMPARISON_FONTS : {\n sans : [\"Arial\", \"Helvetica\", \"sans-serif\"],\n serif : [\"Times New Roman\", \"Georgia\", \"serif\"]\n },\n\n\n /**\n * Map of common CSS attributes to be used for all size comparison elements\n */\n HELPER_CSS : {\n position: \"absolute\",\n margin: \"0\",\n padding: \"0\",\n top: \"-1000px\",\n left: \"-1000px\",\n fontSize: \"350px\",\n width: \"auto\",\n height: \"auto\",\n lineHeight: \"normal\",\n fontVariant: \"normal\",\n visibility: \"hidden\"\n },\n\n\n /**\n * The string to be used in the size comparison elements. This is the default string\n * which is used for the {@link #COMPARISON_FONTS} and the font to be validated. It\n * can be overridden for the font to be validated using the {@link #comparisonString}\n * property.\n */\n COMPARISON_STRING : \"WEei\",\n __defaultSizes : null,\n __defaultHelpers : null,\n\n\n /**\n * Removes the two common helper elements used for all size comparisons from\n * the DOM\n */\n removeDefaultHelperElements : function()\n {\n var defaultHelpers = qx.bom.webfonts.Validator.__defaultHelpers;\n if (defaultHelpers) {\n for (var prop in defaultHelpers) {\n document.body.removeChild(defaultHelpers[prop]);\n }\n }\n delete qx.bom.webfonts.Validator.__defaultHelpers;\n }\n },\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n /**\n * The font-family this validator should check\n */\n fontFamily :\n {\n nullable : true,\n init : null,\n apply : \"_applyFontFamily\"\n },\n\n /**\n * Comparison string used to check whether the font has loaded or not.\n */\n comparisonString :\n {\n nullable : true,\n init : null\n },\n\n /**\n * Time in milliseconds from the beginning of the check until it is assumed\n * that a font is not available\n */\n timeout :\n {\n check : \"Integer\",\n init : 5000\n }\n },\n\n\n\n /*\n *****************************************************************************\n EVENTS\n *****************************************************************************\n */\n\n events :\n {\n /**\n * Fired when the status of a web font has been determined. The event data\n * is a map with the keys \"family\" (the font-family name) and \"valid\"\n * (Boolean).\n */\n \"changeStatus\" : \"qx.event.type.Data\"\n },\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n __requestedHelpers : null,\n __checkTimer : null,\n __checkStarted : null,\n\n\n\n /*\n ---------------------------------------------------------------------------\n PUBLIC API\n ---------------------------------------------------------------------------\n */\n\n /**\n * Validates the font\n */\n validate : function()\n {\n this.__checkStarted = new Date().getTime();\n\n if (this.__checkTimer) {\n this.__checkTimer.restart();\n }\n else {\n this.__checkTimer = new qx.event.Timer(100);\n this.__checkTimer.addListener(\"interval\", this.__onTimerInterval, this);\n // Give the browser a chance to render the new elements\n qx.event.Timer.once(function() {\n this.__checkTimer.start();\n }, this, 0);\n }\n },\n\n\n\n /*\n ---------------------------------------------------------------------------\n PROTECTED API\n ---------------------------------------------------------------------------\n */\n\n /**\n * Removes the helper elements from the DOM\n */\n _reset : function()\n {\n if (this.__requestedHelpers) {\n for (var prop in this.__requestedHelpers) {\n var elem = this.__requestedHelpers[prop];\n document.body.removeChild(elem);\n }\n this.__requestedHelpers = null;\n }\n },\n\n\n /**\n * Checks if the font is available by comparing the widths of the elements\n * using the generic fonts to the widths of the elements using the font to\n * be validated\n *\n * @return {Boolean} Whether or not the font caused the elements to differ\n * in size\n */\n _isFontValid : function()\n {\n if (!qx.bom.webfonts.Validator.__defaultSizes) {\n this.__init();\n }\n\n if (!this.__requestedHelpers) {\n this.__requestedHelpers = this._getRequestedHelpers();\n }\n\n // force rerendering for chrome\n this.__requestedHelpers.sans.style.visibility = \"visible\";\n this.__requestedHelpers.sans.style.visibility = \"hidden\";\n this.__requestedHelpers.serif.style.visibility = \"visible\";\n this.__requestedHelpers.serif.style.visibility = \"hidden\";\n\n var requestedSans = qx.bom.element.Dimension.getWidth(this.__requestedHelpers.sans);\n var requestedSerif = qx.bom.element.Dimension.getWidth(this.__requestedHelpers.serif);\n\n var cls = qx.bom.webfonts.Validator;\n if (requestedSans !== cls.__defaultSizes.sans ||\n requestedSerif !== cls.__defaultSizes.serif)\n {\n return true;\n }\n return false;\n },\n\n\n /**\n * Creates the two helper elements styled with the font to be checked\n *\n * @return {Map} A map with the keys sans
and serif
\n * and the created span elements as values\n */\n _getRequestedHelpers : function()\n {\n var fontsSans = [this.getFontFamily()].concat(qx.bom.webfonts.Validator.COMPARISON_FONTS.sans);\n var fontsSerif = [this.getFontFamily()].concat(qx.bom.webfonts.Validator.COMPARISON_FONTS.serif);\n return {\n sans : this._getHelperElement(fontsSans, this.getComparisonString()),\n serif : this._getHelperElement(fontsSerif, this.getComparisonString())\n };\n },\n\n\n /**\n * Creates a span element with the comparison text (either {@link #COMPARISON_STRING} or\n * {@link #comparisonString}) and styled with the default CSS ({@link #HELPER_CSS}) plus\n * the given font-family value and appends it to the DOM\n *\n * @param fontFamily {String} font-family string\n * @param comparisonString {String?} String to be used to detect whether a font was loaded or not\n * @return {Element} the created DOM element\n */\n _getHelperElement : function(fontFamily, comparisonString)\n {\n var styleMap = qx.lang.Object.clone(qx.bom.webfonts.Validator.HELPER_CSS);\n if (fontFamily) {\n if (styleMap.fontFamily) {\n styleMap.fontFamily += \",\" + fontFamily.join(\",\");\n }\n else {\n styleMap.fontFamily = fontFamily.join(\",\");\n }\n }\n\n var elem = document.createElement(\"span\");\n elem.innerHTML = comparisonString || qx.bom.webfonts.Validator.COMPARISON_STRING;\n qx.bom.element.Style.setStyles(elem, styleMap);\n document.body.appendChild(elem);\n return elem;\n },\n\n\n // property apply\n _applyFontFamily : function(value, old)\n {\n if (value !== old) {\n this._reset();\n }\n },\n\n\n\n /*\n ---------------------------------------------------------------------------\n PRIVATE API\n ---------------------------------------------------------------------------\n */\n\n /**\n * Creates the default helper elements and gets their widths\n */\n __init : function()\n {\n var cls = qx.bom.webfonts.Validator;\n if (!cls.__defaultHelpers) {\n cls.__defaultHelpers = {\n sans : this._getHelperElement(cls.COMPARISON_FONTS.sans),\n serif : this._getHelperElement(cls.COMPARISON_FONTS.serif)\n };\n }\n\n cls.__defaultSizes = {\n sans : qx.bom.element.Dimension.getWidth(cls.__defaultHelpers.sans),\n serif: qx.bom.element.Dimension.getWidth(cls.__defaultHelpers.serif)\n };\n },\n\n\n /**\n * Triggers helper element size comparison and fires a ({@link #changeStatus})\n * event with the result.\n */\n __onTimerInterval : function()\n {\n if (this._isFontValid()) {\n this.__checkTimer.stop();\n this._reset();\n this.fireDataEvent(\"changeStatus\", {\n family : this.getFontFamily(),\n valid : true\n });\n }\n else\n {\n var now = new Date().getTime();\n if (now - this.__checkStarted >= this.getTimeout()) {\n this.__checkTimer.stop();\n this._reset();\n this.fireDataEvent(\"changeStatus\", {\n family : this.getFontFamily(),\n valid : false\n });\n }\n }\n }\n\n },\n\n\n\n /*\n *****************************************************************************\n DESTRUCTOR\n *****************************************************************************\n */\n\n destruct : function()\n {\n this._reset();\n this.__checkTimer.stop();\n this.__checkTimer.removeListener(\"interval\", this.__onTimerInterval, this);\n this._disposeObjects(\"__checkTimer\");\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Class that stores Edge data.\n *\n * -> {EDGES}\n * STUDY -> METADATA + WORKBENCH ->|\n * -> {LINKS}\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let edge = new osparc.data.model.Edge(edgeId, node1, node2);\n *
\n */\n\nqx.Class.define(\"osparc.data.model.Edge\", {\n extend: qx.core.Object,\n\n /**\n * @param edgeId {String} uuid if the edge. If not provided, a random one will be assigned\n * @param node1 {osparc.data.model.Node} node where the edge comes from\n * @param node2 {osparc.data.model.Node} node where the edge goes to\n */\n construct: function(edgeId, node1, node2) {\n this.base();\n\n this.setEdgeId(edgeId || osparc.utils.Utils.uuidV4());\n this.setInputNode(node1);\n this.setOutputNode(node2);\n },\n\n properties: {\n edgeId: {\n check: \"String\",\n nullable: false\n },\n\n inputNode: {\n check: \"osparc.data.model.Node\",\n nullable: false\n },\n\n outputNode: {\n check: \"osparc.data.model.Node\",\n apply: \"__applyOutputNode\",\n nullable: false\n },\n\n portConnected: {\n check: \"Boolean\",\n init: false,\n event: \"changePortConnected\",\n nullable: false\n }\n },\n\n statics: {\n checkAnyPortsConnected: function(node1, node2) {\n if (node2.getPropsForm()) {\n const links = node2.getLinks();\n const anyConnected = links.some(link => link[\"nodeUuid\"] === node1.getNodeId());\n return anyConnected;\n }\n return false;\n }\n },\n\n members: {\n getInputNodeId: function() {\n return this.getInputNode().getNodeId();\n },\n\n getOutputNodeId: function() {\n return this.getOutputNode().getNodeId();\n },\n\n __applyOutputNode: function(node2) {\n node2.bind(\"portsConnected\", this, \"portConnected\", {\n converter: () => {\n const isConnected = this.__checkIsPortConnected();\n return Boolean(isConnected);\n }\n });\n },\n\n __checkIsPortConnected: function() {\n let anyConnected = false;\n const node1 = this.getInputNode();\n let node2 = this.getOutputNode();\n if (node2.getPropsForm()) {\n anyConnected |= this.self().checkAnyPortsConnected(node1, node2);\n }\n return anyConnected;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.workbench.BaseNodeUI\", {\n extend: qx.ui.window.Window,\n include: osparc.filter.MFilterable,\n implement: osparc.filter.IFilterable,\n type: \"abstract\",\n\n construct: function() {\n this.base();\n\n const grid = new qx.ui.layout.Grid(4, 1);\n grid.setColumnFlex(1, 1);\n\n this.set({\n appearance: \"node-ui-cap\",\n layout: grid,\n showMinimize: false,\n showMaximize: false,\n showClose: false,\n showStatusbar: false,\n resizable: false,\n allowMaximize: false,\n contentPadding: this.self().CONTENT_PADDING\n });\n\n this.getContentElement().setStyles({\n \"border-radius\": \"4px\"\n });\n\n this.subscribeToFilterGroup(\"workbench\");\n\n const captionBar = this.getChildControl(\"captionbar\");\n captionBar.set({\n cursor: \"move\",\n paddingRight: 0,\n paddingLeft: this.self().PORT_WIDTH\n });\n\n const menuBtn = this.__getMenuButton();\n captionBar.add(menuBtn, {\n row: 0,\n column: this.self().CAPTION_POS.MENU\n });\n\n const captionTitle = this.getChildControl(\"title\");\n captionTitle.set({\n rich: true,\n cursor: \"move\"\n });\n captionTitle.addListener(\"appear\", () => {\n qx.event.Timer.once(() => {\n const labelDom = captionTitle.getContentElement().getDomElement();\n const maxWidth = parseInt(labelDom.style.width);\n // eslint-disable-next-line no-underscore-dangle\n const width = captionTitle.__contentSize.width;\n if (width > maxWidth) {\n this.getNode().bind(\"label\", captionTitle, \"toolTipText\");\n }\n }, this, 50);\n });\n\n this.__nodeMoving = false;\n },\n\n properties: {\n scale: {\n check: \"Number\",\n event: \"changeScale\",\n nullable: false\n },\n\n isMovable: {\n check: \"Boolean\",\n init: true,\n nullable: false\n }\n },\n\n statics: {\n PORT_HEIGHT: 18,\n PORT_WIDTH: 11,\n CONTENT_PADDING: 2,\n PORT_CONNECTED: \"@FontAwesome5Regular/dot-circle/18\",\n PORT_DISCONNECTED: \"@FontAwesome5Regular/circle/18\",\n\n CAPTION_POS: {\n ICON: 0, // from qooxdoo\n TITLE: 1, // from qooxdoo\n LOCK: 2,\n MARKER: 3,\n DEPRECATED: 4,\n MENU: 5\n },\n\n captionHeight: function() {\n return osparc.theme.Appearance.appearances[\"node-ui-cap/captionbar\"].style().height ||\n osparc.theme.Appearance.appearances[\"node-ui-cap/captionbar\"].style().minHeight;\n }\n },\n\n events: {\n \"renameNode\": \"qx.event.type.Data\",\n \"infoNode\": \"qx.event.type.Data\",\n \"markerClicked\": \"qx.event.type.Data\",\n \"removeNode\": \"qx.event.type.Data\",\n \"edgeDragStart\": \"qx.event.type.Data\",\n \"edgeDragOver\": \"qx.event.type.Data\",\n \"edgeDrop\": \"qx.event.type.Data\",\n \"edgeDragEnd\": \"qx.event.type.Data\",\n \"nodeMovingStart\": \"qx.event.type.Event\",\n \"nodeMoving\": \"qx.event.type.Event\",\n \"nodeMovingStop\": \"qx.event.type.Event\"\n },\n\n members: {\n __inputLayout: null,\n __outputLayout: null,\n _optionsMenu: null,\n _markerBtn: null,\n _deleteBtn: null,\n __nodeMoving: null,\n\n __getMenuButton: function() {\n const optionsMenu = this._optionsMenu = new qx.ui.menu.Menu().set({\n position: \"bottom-right\"\n });\n\n const renameBtn = new qx.ui.menu.Button().set({\n label: this.tr(\"Rename\"),\n icon: \"@FontAwesome5Solid/i-cursor/10\"\n });\n renameBtn.getChildControl(\"shortcut\").setValue(\"F2\");\n renameBtn.addListener(\"execute\", () => this.fireDataEvent(\"renameNode\", this.getNodeId()));\n optionsMenu.add(renameBtn);\n\n const markerBtn = this._markerBtn = new qx.ui.menu.Button().set({\n icon: \"@FontAwesome5Solid/bookmark/10\",\n visibility: \"excluded\"\n });\n optionsMenu.add(markerBtn);\n\n const infoBtn = new qx.ui.menu.Button().set({\n label: this.tr(\"Information...\"),\n icon: \"@FontAwesome5Solid/info/10\"\n });\n infoBtn.getChildControl(\"shortcut\").setValue(\"I\");\n infoBtn.addListener(\"execute\", () => this.fireDataEvent(\"infoNode\", this.getNodeId()));\n optionsMenu.add(infoBtn);\n\n const deleteBtn = this._deleteBtn = new qx.ui.menu.Button().set({\n label: this.tr(\"Delete\"),\n icon: \"@FontAwesome5Solid/trash/10\"\n });\n deleteBtn.getChildControl(\"shortcut\").setValue(\"Del\");\n deleteBtn.addListener(\"execute\", () => this.fireDataEvent(\"removeNode\", this.getNodeId()));\n optionsMenu.add(deleteBtn);\n\n const menuBtn = new qx.ui.form.MenuButton().set({\n menu: optionsMenu,\n icon: \"@FontAwesome5Solid/ellipsis-v/9\",\n height: 18,\n width: 18,\n allowGrowX: false,\n allowGrowY: false\n });\n return menuBtn;\n },\n\n getInputPort: function() {\n return this.__inputLayout;\n },\n\n getOutputPort: function() {\n return this.__outputLayout;\n },\n\n _createPort: function(isInput, placeholder = false) {\n let port = null;\n const width = this.self().PORT_HEIGHT;\n if (placeholder) {\n port = new qx.ui.core.Spacer(width, width);\n } else {\n port = new qx.ui.basic.Image().set({\n source: this.self().PORT_DISCONNECTED, // disconnected by default\n height: width,\n draggable: true,\n droppable: true,\n width: width,\n alignY: \"top\",\n backgroundColor: \"background-main\"\n });\n port.setCursor(\"pointer\");\n port.getContentElement().setStyles({\n \"border-radius\": width+\"px\"\n });\n port.isInput = isInput;\n }\n // make the ports exit the NodeUI\n port.set({\n marginLeft: isInput ? (-10 + this.self().CONTENT_PADDING) : 0,\n marginRight: isInput ? 0 : (-10 - this.self().CONTENT_PADDING)\n });\n\n this.add(port, {\n row: 0,\n column: isInput ? 0 : 2\n });\n\n if (isInput) {\n this.__inputLayout = port;\n } else {\n this.__outputLayout = port;\n }\n\n return port;\n },\n\n getEdgePoint: function(port) {\n const bounds = this.getCurrentBounds();\n const captionHeight = Math.max(this.getChildControl(\"captionbar\").getSizeHint().height, this.self().captionHeight());\n const x = port.isInput ? bounds.left - 6 : bounds.left + bounds.width - 1;\n const y = bounds.top + captionHeight + this.self().PORT_HEIGHT/2 + 2;\n return [x, y];\n },\n\n getCurrentBounds: function() {\n let bounds = this.getBounds();\n let cel = this.getContentElement();\n if (cel) {\n let domeEle = cel.getDomElement();\n if (domeEle) {\n bounds.left = parseInt(domeEle.style.left);\n bounds.top = parseInt(domeEle.style.top);\n }\n }\n return bounds;\n },\n\n __scaleCoordinates: function(x, y) {\n return {\n x: parseInt(x / this.getScale()),\n y: parseInt(y / this.getScale())\n };\n },\n\n _setPositionFromEvent: function(e) {\n const sideBarWidth = this.__dragRange.left;\n const navigationBarHeight = this.__dragRange.top;\n const native = e.getNativeEvent();\n const x = native.clientX + this.__dragLeft - sideBarWidth;\n const y = native.clientY + this.__dragTop - navigationBarHeight;\n const coords = this.__scaleCoordinates(x, y);\n const insets = this.getLayoutParent().getInsets();\n this.setDomPosition(coords.x - (insets.left || 0), coords.y - (insets.top || 0));\n return coords;\n },\n\n // override qx.ui.core.MMovable\n _onMovePointerMove: function(e) {\n // Only react when dragging is active\n if (!this.hasState(\"move\") || !this.getIsMovable()) {\n return;\n }\n e.stopPropagation();\n if (this.__nodeMoving === false) {\n this.__nodeMoving = true;\n this.fireEvent(\"nodeMovingStart\");\n }\n this.fireEvent(\"nodeMoving\");\n },\n\n // override qx.ui.core.MMovable\n _onMovePointerUp : function(e) {\n if (this.hasListener(\"roll\")) {\n this.removeListener(\"roll\", this._onMoveRoll, this);\n }\n\n // Only react when dragging is active\n if (!this.hasState(\"move\") || !this.getIsMovable()) {\n return;\n }\n\n this._onMovePointerMove(e);\n\n this.__nodeMoving = false;\n this.fireEvent(\"nodeMovingStop\");\n\n // Remove drag state\n this.removeState(\"move\");\n\n this.releaseCapture();\n\n e.stopPropagation();\n },\n\n // implement osparc.filter.IFilterable\n _filter: function() {\n this.setOpacity(0.4);\n },\n\n // implement osparc.filter.IFilterable\n _unfilter: function() {\n this.setOpacity(1);\n },\n\n /**\n * @abstract\n */\n _shouldApplyFilter: function(data) {\n throw new Error(\"Abstract method called!\");\n },\n\n // implement osparc.filter.IFilterable\n _shouldReactToFilter: function(data) {\n if (data.text && data.text.length > 1) {\n return true;\n }\n if (data.tags && data.tags.length) {\n return true;\n }\n return false;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Window that is used to represent a node in the WorkbenchUI.\n *\n * It implements Drag&Drop mechanism to provide internode connections.\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let nodeUI = new osparc.workbench.NodeUI(node);\n * nodeUI.populateNodeLayout();\n * workbench.add(nodeUI)\n *
\n */\n\nqx.Class.define(\"osparc.workbench.NodeUI\", {\n extend: osparc.workbench.BaseNodeUI,\n\n /**\n * @param node {osparc.data.model.Node} Node owning the widget\n */\n construct: function(node) {\n this.base(arguments);\n\n this.setNode(node);\n\n this.__resetNodeUILayout();\n },\n\n properties: {\n node: {\n check: \"osparc.data.model.Node\",\n nullable: false,\n apply: \"__applyNode\"\n },\n\n type: {\n check: [\"normal\", \"file\", \"parameter\", \"iterator\", \"probe\"],\n init: \"normal\",\n nullable: false,\n apply: \"__applyType\"\n },\n\n thumbnail: {\n check: \"String\",\n nullable: true,\n apply: \"__applyThumbnail\"\n }\n },\n\n statics: {\n NODE_WIDTH: 180,\n NODE_HEIGHT: 80,\n FILE_NODE_WIDTH: 120,\n },\n\n events: {\n \"updateNodeDecorator\": \"qx.event.type.Event\",\n \"requestOpenLogger\": \"qx.event.type.Event\",\n },\n\n members: {\n __thumbnail: null,\n __svgWorkbenchCanvas: null,\n\n getNodeType: function() {\n return \"service\";\n },\n\n getNodeId: function() {\n return this.getNode().getNodeId();\n },\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"lock\":\n control = new qx.ui.basic.Image().set({\n source: \"@FontAwesome5Solid/lock/12\",\n padding: 4,\n visibility: \"excluded\"\n });\n this.getChildControl(\"captionbar\").add(control, {\n row: 0,\n column: osparc.workbench.BaseNodeUI.CAPTION_POS.LOCK\n });\n break;\n case \"marker\":\n control = new qx.ui.basic.Image().set({\n source: \"@FontAwesome5Solid/bookmark/12\",\n padding: 4,\n visibility: \"excluded\"\n });\n this.getChildControl(\"captionbar\").add(control, {\n row: 0,\n column: osparc.workbench.BaseNodeUI.CAPTION_POS.MARKER\n });\n control.addListener(\"tap\", () => this.fireDataEvent(\"markerClicked\", this.getNode().getNodeId()));\n break;\n case \"deprecated-icon\":\n control = new qx.ui.basic.Image().set({\n source: \"@MaterialIcons/update/14\",\n padding: 4\n });\n this.getChildControl(\"captionbar\").add(control, {\n row: 0,\n column: osparc.workbench.BaseNodeUI.CAPTION_POS.DEPRECATED\n });\n break;\n case \"chips\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.Flow(3, 3).set({\n alignY: \"middle\"\n })).set({\n margin: [3, 4]\n });\n let nodeType = this.getNode().getMetaData().type;\n if (this.getNode().isIterator()) {\n nodeType = \"iterator\";\n } else if (this.getNode().isProbe()) {\n nodeType = \"probe\";\n }\n const type = osparc.service.Utils.getType(nodeType);\n if (type) {\n const chip = new osparc.ui.basic.Chip().set({\n icon: type.icon + \"14\",\n toolTipText: type.label\n });\n control.add(chip);\n }\n const nodeStatus = new osparc.ui.basic.NodeStatusUI(this.getNode());\n control.add(nodeStatus);\n const statusLabel = nodeStatus.getChildControl(\"label\");\n const requestOpenLogger = () => this.fireEvent(\"requestOpenLogger\");\n const evaluateLabel = () => {\n const failed = statusLabel.getValue() === \"Failed\";\n statusLabel.setCursor(failed ? \"pointer\" : \"auto\");\n if (nodeStatus.hasListener(\"tap\")) {\n nodeStatus.removeListener(\"tap\", requestOpenLogger);\n }\n if (failed) {\n nodeStatus.addListener(\"tap\", requestOpenLogger);\n }\n };\n evaluateLabel();\n statusLabel.addListener(\"changeValue\", evaluateLabel);\n this.add(control, {\n row: 0,\n column: 1\n });\n break;\n }\n case \"progress\":\n control = new qx.ui.indicator.ProgressBar().set({\n height: 10,\n margin: 4\n });\n this.add(control, {\n row: 1,\n column: 0,\n colSpan: 3\n });\n break;\n case \"usage-indicator\":\n control = new osparc.workbench.DiskUsageIndicator();\n this.add(control, {\n row: 2,\n column: 0,\n colSpan: 4\n });\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __resetNodeUILayout: function() {\n this.set({\n width: this.self(arguments).NODE_WIDTH,\n maxWidth: this.self(arguments).NODE_WIDTH,\n minWidth: this.self(arguments).NODE_WIDTH\n });\n this.resetThumbnail();\n\n this.__createWindowLayout();\n },\n\n __createWindowLayout: function() {\n const node = this.getNode();\n\n this.getChildControl(\"chips\").show();\n\n if (node.isComputational() || node.isFilePicker() || node.isIterator()) {\n this.getChildControl(\"progress\").show();\n }\n },\n\n populateNodeLayout: function(svgWorkbenchCanvas) {\n const node = this.getNode();\n node.bind(\"label\", this, \"caption\", {\n onUpdate: () => {\n setTimeout(() => this.fireEvent(\"updateNodeDecorator\"), 50);\n }\n });\n const metadata = node.getMetaData();\n this.__createPorts(true, Boolean((metadata && metadata.inputs && Object.keys(metadata.inputs).length)));\n this.__createPorts(false, Boolean((metadata && metadata.outputs && Object.keys(metadata.outputs).length)));\n if (node.isComputational() || node.isFilePicker()) {\n node.getStatus().bind(\"progress\", this.getChildControl(\"progress\"), \"value\", {\n converter: val => val === null ? 0 : val\n });\n }\n if (node.isFilePicker()) {\n this.setType(\"file\");\n } else if (node.isParameter()) {\n this.setType(\"parameter\");\n } else if (node.isIterator()) {\n this.__svgWorkbenchCanvas = svgWorkbenchCanvas;\n this.setType(\"iterator\");\n } else if (node.isProbe()) {\n this.setType(\"probe\");\n }\n },\n\n __applyNode: function(node) {\n if (node.isDynamic()) {\n const startButton = new qx.ui.menu.Button().set({\n label: this.tr(\"Start\"),\n icon: \"@FontAwesome5Solid/play/10\"\n });\n node.attachHandlersToStartButton(startButton);\n this._optionsMenu.addAt(startButton, 0);\n\n const stopButton = new qx.ui.menu.Button().set({\n label: this.tr(\"Stop\"),\n icon: \"@FontAwesome5Solid/stop/10\"\n });\n node.attachHandlersToStopButton(stopButton);\n this._optionsMenu.addAt(stopButton, 1);\n }\n\n if (node.getKey().includes(\"parameter/int\")) {\n const makeIterator = new qx.ui.menu.Button().set({\n label: this.tr(\"Convert to Iterator\"),\n icon: \"@FontAwesome5Solid/sync-alt/10\"\n });\n makeIterator.addListener(\"execute\", () => node.convertToIterator(\"int\"), this);\n this._optionsMenu.add(makeIterator);\n } else if (node.getKey().includes(\"data-iterator/int-range\")) {\n const convertToParameter = new qx.ui.menu.Button().set({\n label: this.tr(\"Convert to Parameter\"),\n icon: \"@FontAwesome5Solid/sync-alt/10\"\n });\n convertToParameter.addListener(\"execute\", () => node.convertToParameter(\"int\"), this);\n this._optionsMenu.add(convertToParameter);\n }\n\n const lock = this.getChildControl(\"lock\");\n if (node.getPropsForm()) {\n node.getPropsForm().bind(\"enabled\", lock, \"visibility\", {\n converter: val => val ? \"excluded\" : \"visible\"\n });\n }\n this._markerBtn.show();\n this.getNode().bind(\"marker\", this._markerBtn, \"label\", {\n converter: val => val ? this.tr(\"Remove Marker\") : this.tr(\"Add Marker\")\n });\n this._markerBtn.addListener(\"execute\", () => node.toggleMarker());\n\n const marker = this.getChildControl(\"marker\");\n const updateMarker = () => {\n node.bind(\"marker\", marker, \"visibility\", {\n converter: val => val ? \"visible\" : \"excluded\"\n });\n if (node.getMarker()) {\n node.getMarker().bind(\"color\", marker, \"textColor\");\n }\n };\n node.addListener(\"changeMarker\", () => updateMarker());\n updateMarker();\n\n node.getStudy().bind(\"pipelineRunning\", this._deleteBtn, \"enabled\", {\n converter: running => !running\n });\n\n const evaluateLifeCycleIcon = () => {\n const deprecatedIcon = this.getChildControl(\"deprecated-icon\");\n deprecatedIcon.exclude();\n if (node.isDeprecated()) {\n deprecatedIcon.show();\n deprecatedIcon.set({\n textColor: osparc.service.StatusUI.getColor(\"deprecated\")\n });\n let ttMsg = osparc.service.Utils.DEPRECATED_SERVICE_TEXT;\n const deprecatedDateMsg = osparc.service.Utils.getDeprecationDateText(node.getMetaData());\n if (deprecatedDateMsg) {\n ttMsg = ttMsg + \"
\" + deprecatedDateMsg;\n }\n const deprecatedTTMsg = node.isDynamic() ? osparc.service.Utils.DEPRECATED_DYNAMIC_INSTRUCTIONS : osparc.service.Utils.DEPRECATED_COMPUTATIONAL_INSTRUCTIONS;\n if (deprecatedTTMsg) {\n ttMsg = ttMsg + \"
\" + deprecatedTTMsg;\n }\n const toolTip = new qx.ui.tooltip.ToolTip().set({\n label: ttMsg,\n icon: osparc.service.StatusUI.getIconSource(\"deprecated\"),\n rich: true,\n maxWidth: 250\n });\n deprecatedIcon.setToolTip(toolTip);\n } else if (node.isRetired()) {\n deprecatedIcon.show();\n deprecatedIcon.set({\n textColor: osparc.service.StatusUI.getColor(\"retired\")\n });\n\n let ttMsg = osparc.service.Utils.RETIRED_SERVICE_TEXT;\n const deprecatedTTMsg = node.isDynamic() ? osparc.service.Utils.RETIRED_DYNAMIC_INSTRUCTIONS : osparc.service.Utils.RETIRED_COMPUTATIONAL_INSTRUCTIONS;\n if (deprecatedTTMsg) {\n ttMsg = ttMsg + \"
\" + deprecatedTTMsg;\n }\n const toolTip = new qx.ui.tooltip.ToolTip().set({\n label: ttMsg,\n icon: osparc.service.StatusUI.getIconSource(\"retired\"),\n rich: true,\n maxWidth: 250\n });\n deprecatedIcon.setToolTip(toolTip);\n }\n };\n evaluateLifeCycleIcon();\n this.getNode().addListener(\"changeVersion\", () => evaluateLifeCycleIcon());\n const indicator = this.getChildControl(\"usage-indicator\");\n indicator.setCurrentNode(node);\n },\n\n __applyType: function(type) {\n switch (type) {\n case \"file\":\n this.__checkTurnIntoFileUI();\n this.getNode().addListener(\"changeOutputs\", () => this.__checkTurnIntoFileUI(), this);\n break;\n case \"parameter\":\n this.__turnIntoParameterUI();\n break;\n case \"iterator\":\n this.__checkTurnIntoIteratorUI();\n this.getNode().addListener(\"changeOutputs\", () => this.__checkTurnIntoIteratorUI(), this);\n break;\n case \"probe\":\n this.__turnIntoProbeUI();\n break;\n }\n },\n\n __setNodeUIWidth: function(width) {\n this.set({\n width: width,\n maxWidth: width,\n minWidth: width,\n minHeight: 60\n });\n },\n\n __checkTurnIntoFileUI: function() {\n const outputs = this.getNode().getOutputs();\n if ([null, \"\"].includes(osparc.file.FilePicker.getOutput(outputs))) {\n this.__resetNodeUILayout();\n } else {\n this.__turnIntoFileUI();\n }\n },\n\n __turnIntoFileUI: function() {\n const width = this.self().FILE_NODE_WIDTH;\n this.__setNodeUIWidth(width);\n\n const chipContainer = this.getChildControl(\"chips\");\n chipContainer.exclude();\n\n if (this.hasChildControl(\"progress\")) {\n this.getChildControl(\"progress\").exclude();\n }\n\n const title = this.getChildControl(\"title\");\n title.set({\n // maxHeight: 28, // two lines in Roboto\n maxHeight: 34, // two lines in Manrope\n maxWidth: 90\n });\n\n const outputs = this.getNode().getOutputs();\n let imageSrc = null;\n if (osparc.file.FilePicker.isOutputFromStore(outputs)) {\n imageSrc = \"@FontAwesome5Solid/file-alt/34\";\n } else if (osparc.file.FilePicker.isOutputDownloadLink(outputs)) {\n imageSrc = \"@FontAwesome5Solid/link/34\";\n }\n if (imageSrc) {\n this.setThumbnail(imageSrc);\n }\n this.fireEvent(\"updateNodeDecorator\");\n },\n\n __turnIntoParameterUI: function() {\n const width = 100;\n this.__setNodeUIWidth(width);\n\n const label = new qx.ui.basic.Label().set({\n font: \"text-18\"\n });\n const chipContainer = this.getChildControl(\"chips\");\n chipContainer.add(label);\n\n this.getNode().bind(\"outputs\", label, \"value\", {\n converter: outputs => {\n if (\"out_1\" in outputs && \"value\" in outputs[\"out_1\"]) {\n const val = outputs[\"out_1\"][\"value\"];\n if (Array.isArray(val)) {\n return \"[\" + val.join(\",\") + \"]\";\n }\n return String(val);\n }\n return \"\";\n }\n });\n this.fireEvent(\"updateNodeDecorator\");\n },\n\n __turnIntoIteratorUI: function() {\n const width = 150;\n const height = 69;\n this.__setNodeUIWidth(width);\n\n // add shadows\n if (this.__svgWorkbenchCanvas) {\n const nShadows = 2;\n this.shadows = [];\n for (let i=0; i this.__setProbeValue(linkLabel), this);\n this.__setProbeValue(linkLabel);\n },\n\n __checkTurnIntoIteratorUI: function() {\n const outputs = this.getNode().getOutputs();\n const portKey = \"out_1\";\n if (portKey in outputs && \"value\" in outputs[portKey]) {\n this.__turnIntoIteratorIteratedUI();\n } else {\n this.__turnIntoIteratorUI();\n }\n },\n\n removeShadows: function() {\n if (this.__svgWorkbenchCanvas && \"shadows\" in this) {\n this.shadows.forEach(shadow => {\n osparc.wrapper.Svg.removeItem(shadow);\n });\n delete this[\"shadows\"];\n }\n },\n\n __setProbeValue: function(linkLabel) {\n const populateLinkLabel = linkInfo => {\n const download = true;\n const locationId = linkInfo.store;\n const fileId = linkInfo.path;\n osparc.store.Data.getInstance().getPresignedLink(download, locationId, fileId)\n .then(presignedLinkData => {\n if (\"resp\" in presignedLinkData && presignedLinkData.resp) {\n const filename = linkInfo.filename || osparc.file.FilePicker.getFilenameFromPath(linkInfo);\n linkLabel.set({\n value: filename,\n url: presignedLinkData.resp.link\n });\n }\n });\n }\n\n const link = this.getNode().getLink(\"in_1\");\n if (link && \"nodeUuid\" in link) {\n const inputNodeId = link[\"nodeUuid\"];\n const portKey = link[\"output\"];\n const inputNode = this.getNode().getWorkbench().getNode(inputNodeId);\n if (inputNode) {\n inputNode.bind(\"outputs\", linkLabel, \"value\", {\n converter: outputs => {\n if (portKey in outputs && \"value\" in outputs[portKey] && outputs[portKey][\"value\"]) {\n const val = outputs[portKey][\"value\"];\n if (this.getNode().getMetaData()[\"key\"].includes(\"probe/array\")) {\n return \"[\" + val.join(\",\") + \"]\";\n } else if (this.getNode().getMetaData()[\"key\"].includes(\"probe/file\")) {\n const filename = val.filename || osparc.file.FilePicker.getFilenameFromPath(val);\n populateLinkLabel(val);\n return filename;\n }\n return String(val);\n }\n return \"\";\n }\n });\n }\n } else {\n linkLabel.setValue(\"\");\n }\n },\n\n __createPorts: function(isInput, draw) {\n if (draw === false) {\n this._createPort(isInput, true);\n return;\n }\n const port = this._createPort(isInput);\n port.addListener(\"mouseover\", () => {\n port.setSource(osparc.workbench.BaseNodeUI.PORT_CONNECTED);\n }, this);\n port.addListener(\"mouseout\", () => {\n const isConnected = isInput ? this.getNode().getInputConnected() : this.getNode().getOutputConnected();\n port.set({\n source: isConnected ? osparc.workbench.BaseNodeUI.PORT_CONNECTED : osparc.workbench.BaseNodeUI.PORT_DISCONNECTED\n });\n }, this);\n if (isInput) {\n this.getNode().getStatus().bind(\"dependencies\", port, \"textColor\", {\n converter: dependencies => {\n if (dependencies !== null) {\n return osparc.service.StatusUI.getColor(dependencies.length ? \"modified\" : \"ready\");\n }\n return osparc.service.StatusUI.getColor();\n }\n });\n this.getNode().bind(\"inputConnected\", port, \"source\", {\n converter: isConnected => isConnected ? osparc.workbench.BaseNodeUI.PORT_CONNECTED : osparc.workbench.BaseNodeUI.PORT_DISCONNECTED\n });\n } else {\n this.getNode().getStatus().bind(\"output\", port, \"textColor\", {\n converter: output => osparc.service.StatusUI.getColor(output)\n });\n this.getNode().bind(\"outputConnected\", port, \"source\", {\n converter: isConnected => isConnected ? osparc.workbench.BaseNodeUI.PORT_CONNECTED : osparc.workbench.BaseNodeUI.PORT_DISCONNECTED\n });\n }\n\n this.__addDragDropMechanism(port, isInput);\n },\n\n __addDragDropMechanism: function(port, isInput) {\n [\n [\"dragstart\", \"edgeDragStart\"],\n [\"dragover\", \"edgeDragOver\"],\n [\"drop\", \"edgeDrop\"],\n [\"dragend\", \"edgeDragEnd\"]\n ].forEach(eventPair => {\n port.addListener(eventPair[0], e => {\n const eData = this.__createDragDropEventData(e, isInput);\n this.fireDataEvent(eventPair[1], eData);\n }, this);\n }, this);\n },\n\n __createDragDropEventData: function(e, isInput) {\n return {\n event: e,\n nodeId: this.getNodeId(),\n isInput: isInput\n };\n },\n\n // override qx.ui.core.MMovable\n _onMovePointerMove: function(e) {\n // Only react when dragging is active\n if (!this.hasState(\"move\") || !this.getIsMovable()) {\n return;\n }\n const coords = this._setPositionFromEvent(e);\n this.getNode().setPosition(coords);\n this.base(arguments, e);\n },\n\n setPosition: function(pos) {\n const node = this.getNode();\n node.setPosition(pos);\n this.moveTo(node.getPosition().x, node.getPosition().y);\n },\n\n snapToGrid: function() {\n const node = this.getNode();\n const {\n x,\n y\n } = node.getPosition();\n const snapGrid = 20;\n const snapX = Math.round(x/snapGrid)*snapGrid;\n const snapY = Math.round(y/snapGrid)*snapGrid;\n node.setPosition({\n x: snapX,\n y: snapY\n });\n this.moveTo(node.getPosition().x, node.getPosition().y);\n },\n\n __applyThumbnail: function(thumbnailSrc) {\n if (this.__thumbnail) {\n this.remove(this.__thumbnail);\n this.__thumbnail = null;\n }\n if (thumbnailSrc) {\n if (osparc.utils.Utils.isUrl(thumbnailSrc)) {\n this.__thumbnail = new qx.ui.basic.Image(thumbnailSrc).set({\n height: 100,\n allowShrinkX: true,\n scale: true\n });\n } else {\n this.__thumbnail = new osparc.ui.basic.Thumbnail(thumbnailSrc).set({\n padding: 12\n });\n }\n this.add(this.__thumbnail, {\n row: 0,\n column: 1\n });\n }\n },\n\n __filterText: function(text) {\n const label = this.getNode().getLabel()\n .trim()\n .toLowerCase();\n if (label.indexOf(text) === -1) {\n return true;\n }\n return false;\n },\n\n __filterTags: function(tags) {\n if (tags && tags.length) {\n const category = this.getNode().getMetaData().category || \"\";\n const type = this.getNode().getMetaData().type || \"\";\n if (!tags.includes(osparc.utils.Utils.capitalize(category.trim())) && !tags.includes(osparc.utils.Utils.capitalize(type.trim()))) {\n return true;\n }\n }\n return false;\n },\n\n // implement osparc.filter.IFilterable\n _shouldApplyFilter: function(data) {\n if (data.text) {\n return this.__filterText(data.text);\n }\n if (data.tags && data.tags.length) {\n return this.__filterTags(data.tags);\n }\n return false;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n *\n */\n\nqx.Class.define(\"osparc.data.model.Slideshow\", {\n extend: qx.core.Object,\n\n /**\n * @param slideshowData {Object} Object containing the serialized Slide Show Data\n */\n construct: function(slideshowData) {\n this.base(arguments);\n\n this.setData(slideshowData);\n },\n\n properties: {\n data: {\n check: \"Object\",\n init: {},\n nullable: true\n }\n },\n\n events: {\n \"changeSlideshow\": \"qx.event.type.Event\"\n },\n\n statics: {\n getSortedNodes: function(slideshow) {\n const nodes = [];\n for (let nodeId in slideshow) {\n const node = slideshow[nodeId];\n if (node[\"position\"] !== -1) {\n nodes.push({\n ...node,\n nodeId\n });\n }\n }\n nodes.sort((a, b) => (a.position > b.position) ? 1 : -1);\n return nodes;\n },\n\n getSortedNodeIds: function(slideshow) {\n const nodes = this.self().getSortedNodes(slideshow);\n const nodeIds = [];\n nodes.forEach(node => {\n nodeIds.push(node.nodeId);\n });\n return nodeIds;\n }\n },\n\n members: {\n isEmpty: function() {\n return Object.values(this.getData()).every(node => node.position === -1);\n },\n\n getSortedNodes: function() {\n return this.self().getSortedNodes(this.getData());\n },\n\n getSortedNodeIds: function() {\n return this.self().getSortedNodeIds(this.getData());\n },\n\n insertNode: function(nodeId, pos) {\n const slideshow = this.getData();\n for (let nodeId2 in slideshow) {\n if (slideshow[nodeId2].position >= pos) {\n slideshow[nodeId2].position++;\n }\n }\n slideshow[nodeId] = {\n position: pos,\n instructions: null\n };\n },\n\n removeNode: function(nodeId) {\n const slideshow = this.getData();\n if (nodeId in slideshow) {\n const pos = slideshow[nodeId];\n for (let nodeId2 in slideshow) {\n if (slideshow[nodeId2].position > pos.position) {\n slideshow[nodeId2].position--;\n }\n }\n\n delete slideshow[nodeId];\n }\n },\n\n getPosition: function(nodeId) {\n const slideshow = this.getData();\n if (nodeId in slideshow) {\n return slideshow[nodeId].position;\n }\n return -1;\n },\n\n getInstructions: function(nodeId) {\n const slideshow = this.getData();\n if (nodeId in slideshow && \"instructions\" in slideshow[nodeId]) {\n return slideshow[nodeId].instructions;\n }\n return \"\";\n },\n\n setInstructions: function(nodeId, instructions) {\n const slideshow = this.getData();\n if (nodeId in slideshow) {\n slideshow[nodeId][\"instructions\"] = instructions;\n }\n },\n\n addNodeToSlideshow: function(newNode, leftNodeId, rightNodeId) {\n const nodeId = newNode.getNodeId();\n if (leftNodeId) {\n let leftPos = this.getPosition(leftNodeId);\n this.insertNode(nodeId, leftPos+1);\n } else if (rightNodeId) {\n const rightPos = this.getPosition(rightNodeId);\n this.insertNode(nodeId, rightPos);\n } else {\n this.insertNode(nodeId, 0);\n }\n },\n\n __moveNode: function(nodes, from, to) {\n let numberOfDeletedElm = 1;\n const elm = nodes.splice(from, numberOfDeletedElm)[0];\n numberOfDeletedElm = 0;\n nodes.splice(to, numberOfDeletedElm, elm);\n },\n\n isMovingForward: function(lastNodeId, targetNodeId) {\n let movingForward = false;\n if (lastNodeId && targetNodeId) {\n const sortedNodeIds = this.getSortedNodeIds();\n movingForward = sortedNodeIds.indexOf(lastNodeId) < sortedNodeIds.indexOf(targetNodeId);\n }\n return movingForward;\n },\n\n serialize: function() {\n return this.getData();\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.data.model.IframeHandler\", {\n extend: qx.core.Object,\n include: qx.locale.MTranslation,\n\n construct: function(study, node) {\n this.setStudy(study);\n this.setNode(node);\n\n node.getStatus().addListener(\"changeInteractive\", e => {\n const newStatus = e.getData();\n const oldStatus = e.getOldData();\n this.__statusInteractiveChanged(newStatus, oldStatus);\n });\n\n this.__initLoadingPage();\n this.__initIFrame();\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n init: null,\n nullable: false,\n event: \"changeStudy\"\n },\n\n node: {\n check: \"osparc.data.model.Node\",\n init: null,\n nullable: false\n },\n\n loadingPage: {\n check: \"osparc.ui.message.Loading\",\n init: null,\n nullable: true\n },\n\n iFrame: {\n check: \"osparc.widget.PersistentIframe\",\n init: null,\n nullable: true\n }\n },\n\n events: {\n \"iframeChanged\": \"qx.event.type.Event\"\n },\n\n members: {\n __unresponsiveRetries: null,\n __stopRequestingStatus: null,\n __retriesLeft: null,\n\n checkState: function() {\n this.getNode().getStatus().getProgressSequence()\n .resetSequence();\n\n this.__unresponsiveRetries = 5;\n this.__nodeState();\n },\n\n stopIframe: function() {\n this.getNode().getStatus().getProgressSequence()\n .resetSequence();\n\n this.__unresponsiveRetries = 5;\n this.__nodeState();\n\n if (this.getIFrame()) {\n this.getIFrame().resetSource();\n }\n },\n\n __initIFrame: function() {\n const iframe = new osparc.widget.PersistentIframe();\n osparc.utils.Utils.setIdToWidget(iframe.getIframe(), \"iframe_\"+this.getNode().getNodeId());\n if (osparc.product.Utils.isProduct(\"s4llite\")) {\n iframe.setShowToolbar(false);\n } else {\n this.getStudy().getUi().bind(\"mode\", iframe, \"showToolbar\", {\n converter: mode => mode !== \"standalone\"\n });\n }\n iframe.addListener(\"restart\", () => this.restartIFrame(), this);\n iframe.getDiskUsageIndicator().setCurrentNode(this.getNode())\n this.setIFrame(iframe);\n },\n\n __initLoadingPage: function() {\n const loadingPage = new osparc.ui.message.Loading().set({\n header: this.__getLoadingPageHeader()\n });\n if (osparc.product.Utils.isProduct(\"s4llite\")) {\n loadingPage.setShowToolbar(false);\n } else {\n this.getStudy().getUi().bind(\"mode\", loadingPage, \"showToolbar\", {\n converter: mode => mode !== \"standalone\"\n });\n }\n\n const node = this.getNode();\n const thumbnail = node.getMetaData()[\"thumbnail\"];\n if (thumbnail) {\n loadingPage.setLogo(thumbnail);\n }\n node.addListener(\"changeLabel\", () => loadingPage.setHeader(this.__getLoadingPageHeader()), this);\n\n const nodeStatus = node.getStatus();\n const sequenceWidget = nodeStatus.getProgressSequence().getWidgetForLoadingPage().set({\n width: 400\n });\n nodeStatus.bind(\"interactive\", sequenceWidget, \"visibility\", {\n converter: state => [\"pending\", \"pulling\", \"starting\", \"connecting\"].includes(state) ? \"visible\" : \"excluded\"\n });\n loadingPage.addExtraWidget(sequenceWidget);\n\n this.setLoadingPage(loadingPage);\n },\n\n __getLoadingPageHeader: function(status) {\n const node = this.getNode();\n if (status === undefined) {\n status = node.getStatus().getInteractive();\n }\n const statusText = status ? (status.charAt(0).toUpperCase() + status.slice(1)) : this.tr(\"Starting\");\n const metadata = node.getMetaData();\n const versionDisplay = osparc.service.Utils.extractVersionDisplay(metadata);\n return statusText + \" \" + node.getLabel() + \" v\" + versionDisplay + \"\";\n },\n\n __nodeState: function() {\n // Check if study is still there\n if (this.getStudy() === null || this.__stopRequestingStatus === true) {\n return;\n }\n // Check if node is still there\n if (this.getStudy().getWorkbench().getNode(this.getNode().getNodeId()) === null) {\n return;\n }\n\n const node = this.getNode();\n const params = {\n url: {\n studyId: this.getStudy().getUuid(),\n nodeId: node.getNodeId()\n }\n };\n osparc.data.Resources.fetch(\"studies\", \"getNode\", params)\n .then(data => this.onNodeState(data))\n .catch(err => {\n let errorMsg = `Error retrieving ${node.getLabel()} status: ${err}`;\n if (\"status\" in err && err.status === 406) {\n errorMsg = node.getKey() + \":\" + node.getVersion() + \"is retired\";\n node.getStatus().setInteractive(\"retired\");\n osparc.FlashMessenger.getInstance().logAs(node.getLabel() + this.tr(\" is retired\"), \"ERROR\");\n }\n const errorMsgData = {\n nodeId: node.getNodeId(),\n msg: errorMsg,\n level: \"ERROR\"\n };\n node.fireDataEvent(\"showInLogger\", errorMsgData);\n if (\"status\" in err && err.status === 406) {\n return;\n }\n if (this.__unresponsiveRetries > 0) {\n const retryMsg = `Retrying (${this.__unresponsiveRetries})`;\n const retryMsgData = {\n nodeId: node.getNodeId(),\n msg: retryMsg,\n level: \"ERROR\"\n };\n node.fireDataEvent(\"showInLogger\", retryMsgData);\n this.__unresponsiveRetries--;\n } else {\n node.getStatus().setInteractive(\"failed\");\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"There was an error starting\") + \" \" + node.getLabel(), \"ERROR\");\n }\n });\n },\n\n onNodeState: function(data) {\n const serviceState = data[\"service_state\"];\n const nodeId = data[\"service_uuid\"];\n const node = this.getNode();\n const status = node.getStatus();\n const loadingPage = this.getLoadingPage();\n loadingPage.clearMessages();\n switch (serviceState) {\n case \"idle\": {\n status.setInteractive(serviceState);\n if (this.__unresponsiveRetries>0) {\n // a bit of a hack. We will get rid of it when the backend pushes the states\n this.__unresponsiveRetries--;\n }\n break;\n }\n case \"pending\": {\n if (data[\"service_message\"]) {\n const serviceMessage = data[\"service_message\"];\n loadingPage.setMessages([serviceMessage]);\n // show pending messages only after 10\"\n loadingPage.getMessageLabels().forEach(label => label.exclude());\n setTimeout(() => {\n loadingPage.getMessageLabels().forEach(label => label.show());\n }, 10000);\n const serviceName = node.getLabel();\n const msg = `The service \"${serviceName}\" is waiting for available ` +\n `resources. Please inform support and provide the following message ` +\n `in case this does not resolve in a few minutes: \"${nodeId}\" ` +\n `reported \"${serviceMessage}\"`;\n const msgData = {\n nodeId: node.getNodeId(),\n msg: msg,\n level: \"INFO\"\n };\n node.fireDataEvent(\"showInLogger\", msgData);\n }\n status.setInteractive(serviceState);\n break;\n }\n case \"stopping\":\n case \"unknown\":\n case \"starting\":\n case \"pulling\": {\n status.setInteractive(serviceState);\n break;\n }\n case \"running\": {\n if (nodeId !== node.getNodeId()) {\n break;\n }\n const {\n srvUrl,\n isDynamicV2\n } = osparc.utils.Utils.computeServiceUrl(data);\n node.setDynamicV2(isDynamicV2);\n if (\n srvUrl &&\n srvUrl !== node.getServiceUrl() // if it's already connected, do not restart the connection process\n ) {\n this.__statusInteractiveChanged(\"connecting\", node.getStatus().getInteractive());\n this.__retriesLeft = 40;\n this.__waitForServiceReady(srvUrl);\n }\n break;\n }\n case \"complete\":\n break;\n case \"failed\": {\n status.setInteractive(serviceState);\n const msg = \"Service failed: \" + data[\"service_message\"];\n const errorMsgData = {\n nodeId: node.getNodeId(),\n msg,\n level: \"ERROR\"\n };\n node.fireDataEvent(\"showInLogger\", errorMsgData);\n return;\n }\n default:\n console.error(serviceState, \"service state not supported\");\n break;\n }\n },\n\n __waitForServiceReady: function(srvUrl) {\n if (this.__retriesLeft === 0) {\n return;\n }\n\n const retry = () => {\n this.__retriesLeft--;\n\n // Check if node is still there\n if (this.getStudy().getWorkbench().getNode(this.getNode().getNodeId()) === null) {\n return;\n }\n const interval = 5000;\n qx.event.Timer.once(() => this.__waitForServiceReady(srvUrl), this, interval);\n };\n\n // ping for some time until it is really reachable\n try {\n if (osparc.utils.Utils.isDevelopmentPlatform()) {\n console.log(\"Connecting: about to fetch\", srvUrl);\n }\n fetch(srvUrl, {credentials: \"include\"})\n .then(response => {\n if (osparc.utils.Utils.isDevelopmentPlatform()) {\n console.log(\"Connecting: fetch's response status\", response.status);\n }\n if (response.status < 400) {\n this.__serviceReadyIn(srvUrl);\n } else {\n console.error(`Connecting: ${srvUrl} is not reachable. Status: ${response.status}`);\n retry();\n }\n })\n .catch(err => {\n console.error(\"Connecting: Error\", err);\n retry();\n });\n } catch (error) {\n console.error(`Connecting: Error while checking ${srvUrl}:`, error);\n retry();\n }\n },\n\n __serviceReadyIn: function(srvUrl) {\n const node = this.getNode();\n node.setServiceUrl(srvUrl);\n node.getStatus().setInteractive(\"ready\");\n },\n\n __statusInteractiveChanged: function(status, oldStatus) {\n if (status === oldStatus) {\n return;\n }\n\n const node = this.getNode();\n\n const loadingPage = node.getLoadingPage();\n loadingPage.setHeader(this.__getLoadingPageHeader(status));\n loadingPage.clearMessages();\n if ([\"idle\", \"failed\"].includes(status)) {\n const startButton = new qx.ui.form.Button().set({\n label: this.tr(\"Start\"),\n icon: \"@FontAwesome5Solid/play/18\",\n font: \"text-18\",\n allowGrowX: false,\n height: 32\n });\n startButton.addListener(\"execute\", () => node.requestStartNode());\n loadingPage.addWidgetToMessages(startButton);\n }\n\n if (status === \"ready\") {\n const msg = `Service ${node.getLabel()} ${status}`;\n const msgData = {\n nodeId: node.getNodeId(),\n msg,\n level: \"INFO\"\n };\n node.fireDataEvent(\"showInLogger\", msgData);\n\n // will switch to iframe's content\n this.restartIFrame();\n if (!node.isDynamicV2()) {\n node.callRetrieveInputs();\n }\n } else if ([\"idle\", \"failed\", \"stopping\"].includes(status) && oldStatus) {\n const msg = `Service ${node.getLabel()} ${status}`;\n const msgData = {\n nodeId: node.getNodeId(),\n msg,\n level: \"INFO\"\n };\n node.fireDataEvent(\"showInLogger\", msgData);\n\n // will switch to the loading page\n node.resetServiceUrl();\n if (this.getIFrame()) {\n this.getIFrame().resetSource();\n }\n this.fireEvent(\"iframeChanged\");\n }\n },\n\n restartIFrame: function() {\n const node = this.getNode();\n if (node.getServiceUrl() !== null) {\n // restart button pushed\n if (this.getIFrame() && this.getIFrame().getSource().includes(node.getServiceUrl())) {\n this.__loadIframe();\n }\n\n const loadingPage = this.getLoadingPage();\n const bounds = loadingPage.getBounds();\n const domEle = loadingPage.getContentElement().getDomElement();\n const boundsCR = domEle ? domEle.getBoundingClientRect() : null;\n if (bounds !== null && boundsCR && boundsCR.width > 0) {\n this.__loadIframe();\n } else {\n // lazy loading\n loadingPage.addListenerOnce(\"appear\", () => this.__loadIframe(), this);\n }\n }\n },\n\n __loadIframe: function() {\n const node = this.getNode();\n const status = node.getStatus().getInteractive();\n // it might have been stopped\n if ([\"running\", \"ready\"].includes(status)) {\n if (this.getIFrame()) {\n this.getIFrame().resetSource();\n this.getIFrame().setSource(node.getServiceUrl());\n }\n\n // fire event to force switching to iframe's content:\n // it is required in those cases where the native 'load' event isn't triggered (voila)\n this.fireEvent(\"iframeChanged\");\n }\n }\n }\n});\n","/* ************************************************************************\n Copyright: 2013 OETIKER+PARTNER AG\n 2018 ITIS Foundation\n License: MIT\n Authors: Tobi Oetiker \n Utf8Check: äöü\n************************************************************************ */\n\n/**\n * Create a form. The argument to the form\n * widget defines the structure of the form.\n *\n * \n * {\n * key: {\n * displayOrder: 5,\n * label: \"Widget SelectBox Test\",\n * description: \"Test Input for SelectBox\",\n * defaultValue: \"dog\",\n * type: \"string\",\n * widget: {\n * type: \"SelectBox\",\n * structure: [{\n * key: \"dog\",\n * label: \"A Dog\"\n * }, {\n * key: \"cat\",\n * label: \"A Cat\"\n * }]\n * }\n * },\n * }\n *
\n *\n * The default widgets for data types are as follows:\n * string: text\n * integer: spinner\n * bool: checkBox\n * number: text\n * data: file-upload/selection\n *\n * The following widget types are supported:\n * selectBox: { structure: [ {key: x, label: y}, ...] },\n * date: { }, // following unix tradition, dates are represented in epoc seconds\n * password: {},\n * textArea: {},\n * hiddenText: {},\n * checkBox: {},\n * comboBox: {},\n *\n *\n * Populate the new form using the setData method, providing a map\n * with the required data.\n *\n */\n\nqx.Class.define(\"osparc.form.Auto\", {\n extend: qx.ui.form.Form,\n include: [qx.locale.MTranslation],\n\n /**\n * @param structure {Object} form structure\n */\n construct: function(structure) {\n this.base(arguments);\n this.__ctrlMap = {};\n let formCtrl = this.__formCtrl = new qx.data.controller.Form(null, this);\n this.__boxCtrl = {};\n for (let key in structure) {\n this.__addField(structure[key], key);\n }\n let model = this.__model = formCtrl.createModel(true);\n\n model.addListener(\"changeBubble\", e => {\n if (!this.__settingData) {\n this.fireDataEvent(\"changeData\", this.getData());\n }\n },\n this);\n },\n\n events: {\n /**\n * fire when the form changes content and\n * and provide access to the data\n */\n \"changeData\": \"qx.event.type.Data\"\n },\n\n statics: {\n hasValidatableProp: function(s) {\n return Object.keys(s).some(r => [\"minimum\", \"maximum\"].includes(r));\n }\n },\n\n members: {\n __boxCtrl: null,\n __ctrlMap: null,\n __formCtrl: null,\n __model: null,\n __settingData: false,\n\n\n /**\n * Use normal Form validation to validate the content of the form\n *\n * @return {let} validation output\n */\n validate: function() {\n return this.__formCtrl.validate();\n },\n\n\n /**\n * Reset the form content\n *\n */\n reset: function() {\n this.__formCtrl.reset();\n },\n\n\n /**\n * get a handle to the control with the given name\n *\n * @param key {let} key of the the field\n * @return {let} control associated with the field\n */\n getControl: function(key) {\n return this.__ctrlMap[key];\n },\n\n getControls: function() {\n return this.__ctrlMap;\n },\n\n\n /**\n * fetch the data for this form\n *\n * @return {let} all data from the form\n */\n getData: function() {\n return this.__getData(this.__model);\n },\n\n /**\n * load new data into the data main model\n *\n * @param data {let} map with key value pairs to apply\n * @param relax {let} ignore non existing keys\n */\n setData: function(data, relax) {\n this.__setData(this.__model, data, relax);\n },\n\n\n /**\n * load new data into a model\n * if relax is set unknown properties will be ignored\n *\n * @param model {let} TODOC\n * @param data {let} TODOC\n * @param relax {let} TODOC\n */\n __setData: function(model, data, relax) {\n this.__settingData = true;\n\n for (let key in data) {\n // this.getControl(key).setEnabled(true);\n let upkey = qx.lang.String.firstUp(key);\n let setter = \"set\" + upkey;\n let value = data[key];\n if (relax && !model[setter]) {\n continue;\n }\n model[setter](value);\n }\n\n this.__settingData = false;\n\n /* only fire ONE if there was an attempt at change */\n this.fireDataEvent(\"changeData\", this.getData());\n },\n\n\n /**\n * turn a model object into a plain data structure\n *\n * @param model {let} TODOC\n * @return {let} TODOC\n */\n __getData: function(model) {\n let props = model.constructor.$$properties;\n let data = {};\n\n for (let key in props) {\n let getter = \"get\" + qx.lang.String.firstUp(key);\n data[key] = model[getter]();\n }\n\n return data;\n },\n\n\n /**\n * set the data in a selectbox\n *\n * @param box {let} selectbox name\n * @param data {let} configuration of the box\n */\n setSelectBoxData: function(box, data) {\n let model;\n this.__settingData = true;\n\n if (data.length == 0) {\n model = qx.data.marshal.Json.createModel([{\n label: \"\",\n key: null\n }]);\n } else {\n model = qx.data.marshal.Json.createModel(data);\n }\n\n this.__boxCtrl[box].setModel(model);\n this.__boxCtrl[box].getTarget().resetSelection();\n this.__settingData = false;\n },\n\n __setupDateField: function(s) {\n this.__formCtrl.addBindingOptions(s.key,\n { // model2target\n converter: function(data) {\n if (/^\\d+$/.test(String(data))) {\n let d = new Date();\n d.setTime(parseInt(data) * 1000);\n let d2 = new Date(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), 0, 0, 0, 0);\n return d2;\n }\n if (qx.lang.Type.isDate(data)) {\n return data;\n }\n return null;\n }\n },\n { // target2model\n converter: function(data) {\n if (qx.lang.Type.isDate(data)) {\n let d = new Date(Date.UTC(data.getFullYear(), data.getMonth(), data.getDate(), 0, 0, 0, 0));\n return Math.round(d.getTime()/1000);\n }\n return null;\n }\n }\n );\n s.set.dateFormat = new qx.util.format.DateFormat(\n this[\"tr\"](\n s.set.dateFormat ?\n s.set.dateFormat :\n \"dd.MM.yyyy\"\n )\n );\n let dateValue = s.defaultValue;\n if (dateValue !== null) {\n if (typeof dateValue == \"number\") {\n s.defaultValue = new Date(dateValue * 1000);\n } else {\n s.defaultValue = new Date(dateValue);\n }\n }\n },\n __setupTextArea: function(s, key, control) {\n if (s.widget.minHeight) {\n control.setMinHeight(s.widget.minHeight);\n }\n this.__setupTextField(s, key, control);\n },\n __setupTextField: function(s, key) {\n this.__formCtrl.addBindingOptions(key,\n { // model2target\n converter: function(data) {\n return String(data);\n }\n },\n { // target2model\n converter: function(data) {\n return data;\n }\n }\n );\n },\n __setupNumberField: function(s, key) {\n if (s.defaultValue) {\n s.set.value = qx.lang.Type.isNumber(s.defaultValue) ? String(s.defaultValue) : s.defaultValue;\n } else {\n s.set.value = String(0);\n }\n const model2target = {\n converter: function(data) {\n if (qx.lang.Type.isNumber(data) && !isNaN(parseFloat(data))) {\n return String(data);\n }\n return null;\n }\n };\n const target2model = {\n myContext: {\n that: this,\n s,\n key\n },\n converter: function(data) {\n if (!data) {\n // this avoids the moustached template issue\n return parseFloat(s.defaultValue);\n }\n const tmp = data.split(\" \");\n if (tmp.length > 1 && \"x_unit\" in this.myContext.s) {\n // extract unit with prefix from text\n const prefix = osparc.utils.Units.getPrefix(this.myContext.s[\"x_unit\"], tmp[1]);\n if (prefix !== null) {\n // eslint-disable-next-line no-underscore-dangle\n const item = this.myContext.that.__ctrlMap[key];\n item.unitPrefix = prefix;\n osparc.form.renderer.PropFormBase.updateUnitLabelPrefix(item);\n }\n }\n return parseFloat(data);\n }\n };\n this.__formCtrl.addBindingOptions(key, model2target, target2model);\n },\n __setupSpinner: function(s, key) {\n s.set.maximum = s.maximum ? parseInt(s.maximum) : 10000;\n s.set.minimum = s.minimum ? parseInt(s.minimum) : -10000;\n s.set.value = s.defaultValue ? parseInt(String(s.defaultValue)) : 0;\n\n this.__formCtrl.addBindingOptions(key,\n { // model2target\n converter: function(data) {\n let d = String(data);\n if (/^\\d+$/.test(d)) {\n return parseInt(d);\n }\n return null;\n }\n },\n { // target2model\n converter: function(data) {\n return parseInt(data);\n }\n }\n );\n },\n\n __setupSelectBox: function(s, key, control) {\n let controller = this.__boxCtrl[key] = new qx.data.controller.List(null, control, \"label\");\n controller.setDelegate({\n bindItem: function(ctrl, item, index) {\n ctrl.bindProperty(\"key\", \"model\", null, item, index);\n ctrl.bindProperty(\"label\", \"label\", null, item, index);\n }\n });\n // Content Schema\n if (\"enum\" in s) {\n const entries = [];\n s.enum.forEach(entry => {\n entries.push({\n label: entry.toString(),\n key: entry\n });\n });\n s.widget[\"structure\"] = entries;\n }\n const cfg = s.widget;\n let items = cfg.structure;\n if (items) {\n items.forEach(item => {\n item.label = item.label || \"\";\n }, this);\n } else {\n items = [{\n label: \"\",\n key: null\n }];\n }\n if (\"defaultValue\" in s) {\n s.set.value = [s.defaultValue];\n }\n // Content Schema\n if (\"default\" in s) {\n s.set.value = [s.default];\n }\n let sbModel = qx.data.marshal.Json.createModel(items);\n controller.setModel(sbModel);\n control.setModelSelection(s.set.value);\n },\n __setupComboBox: function(s, key, control) {\n let ctrl = this.__boxCtrl[key] = new qx.data.controller.List(null, control);\n let cfg = s.cfg;\n if (cfg.structure) {\n cfg.structure.forEach(function(item) {\n item = item ? this[\"tr\"](item):null;\n }, this);\n } else {\n cfg.structure = [];\n }\n let sbModel = qx.data.marshal.Json.createModel(cfg.structure);\n ctrl.setModel(sbModel);\n },\n __setupBoolField: function(s, key, control) {\n if (s.set.value && typeof s.set.value === \"string\") {\n s.set.value = Boolean(s.set.value.toLowerCase() === \"true\");\n }\n this.__formCtrl.addBindingOptions(key,\n { // model2target\n converter: function(data) {\n return data;\n }\n },\n { // target2model\n converter: function(data) {\n return data;\n }\n }\n );\n },\n __setupFileButton: function(s, key) {\n this.__formCtrl.addBindingOptions(key,\n { // model2target\n converter: function(data) {\n return String(data);\n }\n },\n { // target2model\n converter: function(data) {\n return data;\n }\n }\n );\n },\n __setupContentSchema: function(s, key, control) {\n control.setContentSchema(s.contentSchema);\n },\n\n __addField: function(s, key) {\n const control = this.__getField(s, key);\n\n this.__ctrlMap[key] = control;\n let option = {}; // could use this to pass on info to the form renderer\n this.add(control, s.label ? this[\"tr\"](s.label) : null, null, key, null, option);\n },\n\n __getField: function(s, key) {\n if (s.type === \"ref_contentSchema\") {\n Object.assign(s, s.contentSchema);\n }\n\n if (!s.set) {\n s.set = {};\n }\n if (\"defaultValue\" in s) {\n s.set.value = s.defaultValue;\n }\n // Content Schema\n if (\"default\" in s) {\n s.set.value = s.default;\n }\n\n if (!s.widget) {\n let type = s.type;\n if (type.match(/^data:/)) {\n type = \"data\";\n }\n s.widget = {\n type: {\n string: \"Text\",\n integer: \"Spinner\",\n number: \"Number\",\n boolean: \"CheckBox\",\n data: \"FileButton\",\n array: \"ArrayTextField\",\n \"ref_contentSchema\": \"ContentSchema\"\n }[type]\n };\n }\n // Content Schema\n if (\"enum\" in s) {\n s.widget[\"type\"] = \"SelectBox\";\n }\n let control;\n let setup;\n switch (s.widget.type) {\n case \"Date\":\n control = new qx.ui.form.DateField();\n setup = this.__setupDateField;\n break;\n case \"Text\":\n control = new qx.ui.form.TextField();\n setup = this.__setupTextField;\n break;\n case \"Number\":\n control = new qx.ui.form.TextField();\n setup = this.__setupNumberField;\n break;\n case \"Spinner\":\n control = new qx.ui.form.Spinner();\n setup = this.__setupSpinner;\n break;\n case \"Password\":\n control = new osparc.ui.form.PasswordField();\n setup = this.__setupTextField;\n break;\n case \"TextArea\":\n control = new qx.ui.form.TextArea();\n setup = this.__setupTextArea;\n break;\n case \"CheckBox\":\n control = new qx.ui.form.CheckBox();\n setup = this.__setupBoolField;\n break;\n case \"SelectBox\":\n control = new qx.ui.form.SelectBox();\n setup = this.__setupSelectBox;\n s.set[\"minWidth\"] = 80;\n break;\n case \"ComboBox\":\n control = new qx.ui.form.ComboBox();\n setup = this.__setupComboBox;\n break;\n case \"FileButton\":\n control = new qx.ui.form.TextField();\n setup = this.__setupFileButton;\n break;\n case \"ArrayTextField\":\n control = new osparc.ui.form.ContentSchemaArray();\n setup = this.__setupContentSchema;\n break;\n default:\n throw new Error(\"unknown widget type \" + s.widget.type);\n }\n\n setup.call(this, s, key, control);\n\n if (s.set) {\n if (s.set.filter) {\n s.set.filter = RegExp(s.filter);\n }\n if (\"minimum\" in s.set) {\n control.setMinimum(s.set[\"minimum\"]);\n }\n if (\"maximum\" in s.set) {\n control.setMaximum(s.set[\"maximum\"]);\n }\n control.set(s.set);\n }\n control.key = key;\n control.description = s.description;\n const rangeText = osparc.ui.form.ContentSchemaHelper.getDomainText(s);\n if (rangeText) {\n control.description += `
----
${rangeText}`;\n }\n control.type = s.type;\n control.widgetType = s.widget.type;\n control.unitShort = s.unitShort;\n control.unitLong = s.unitLong;\n if (\"x_unit\" in s) {\n const {\n unitPrefix,\n unit\n } = osparc.utils.Units.decomposeXUnit(s.x_unit);\n control.unitPrefix = unitPrefix;\n control.unit = unit;\n }\n\n let validator = null;\n if (\"getValidator\" in control) {\n validator = control.getValidator();\n } else if (this.self().hasValidatableProp(s)) {\n validator = osparc.ui.form.ContentSchemaHelper.createValidator(control, s);\n }\n if (validator) {\n control.addListener(\"changeValue\", () => validator.validate());\n }\n\n return control;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Here is a little example of how to use the widget.\n *\n * \n * let nodeOutputs = new osparc.widget.NodeOutputs(node, port);\n * this.getRoot().add(nodeOutputs);\n *
\n */\n\nqx.Class.define(\"osparc.widget.NodeOutputs\", {\n extend: qx.ui.core.Widget,\n\n /**\n * @param node {osparc.data.model.Node} Node owning the widget\n */\n construct: function(node) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(15));\n\n const grid = new qx.ui.layout.Grid(5, 5);\n grid.setColumnFlex(this.self().POS.LABEL, 1);\n grid.setColumnFlex(this.self().POS.VALUE, 1);\n grid.setColumnMinWidth(this.self().POS.VALUE, 50);\n grid.setColumnMaxWidth(this.self().POS.RETRIEVE_STATUS, 25);\n Object.keys(this.self().POS).forEach((_, idx) => grid.setColumnAlign(idx, \"left\", \"middle\"));\n const gridLayout = this.__gridLayout = new qx.ui.container.Composite(grid);\n this._add(gridLayout);\n\n this.set({\n node,\n ports: node.getMetaData().outputs\n });\n\n node.addListener(\"changeOutputs\", () => this.__outputsChanged(), this);\n\n this.addListener(\"appear\", () => this.__makeLabelsResponsive(), this);\n this.addListener(\"resize\", () => this.__makeLabelsResponsive(), this);\n },\n\n properties: {\n node: {\n check: \"osparc.data.model.Node\",\n nullable: false\n },\n\n ports: {\n nullable: false,\n apply: \"__populateGrid\"\n },\n\n offerProbes: {\n check: \"Boolean\",\n init: false,\n event: \"changeOfferProbes\"\n }\n },\n\n events: {\n \"probeRequested\": \"qx.event.type.Data\"\n },\n\n statics: {\n POS: {\n LABEL: 0,\n INFO: 1,\n ICON: 2,\n VALUE: 3,\n UNIT: 4,\n PROBE: 5,\n RETRIEVE_STATUS: 6,\n }\n },\n\n members: {\n __gridLayout: null,\n\n __populateGrid: function() {\n this.__gridLayout.removeAll();\n\n const ports = this.getPorts();\n const portKeys = Object.keys(ports);\n for (let i=0; i val ? \"visible\" : \"excluded\"\n });\n probeBtn.addListener(\"execute\", () => this.getNode().fireDataEvent(\"probeRequested\", {\n portId: portKey,\n nodeId: this.getNode().getNodeId()\n }));\n this.__gridLayout.add(probeBtn, {\n row: i,\n column: this.self().POS.PROBE\n });\n\n this.__gridLayout.getLayout().setRowHeight(i, 23);\n }\n },\n\n __outputsChanged: function() {\n const outputs = this.getNode().getOutputs();\n const ports = this.getPorts();\n const portKeys = Object.keys(ports);\n for (let i=0; i {\n if (\"resp\" in presignedLinkData && presignedLinkData.resp) {\n valueWidget.setUrl(presignedLinkData.resp.link);\n }\n });\n } else if (\"downloadLink\" in value) {\n // it's a link\n const filename = (value.filename && value.filename.length > 0) ? value.filename : osparc.file.FileDownloadLink.extractLabelFromLink(value[\"downloadLink\"]);\n valueWidget.set({\n value: filename,\n url: value.downloadLink\n });\n }\n } else {\n valueWidget = new qx.ui.basic.Label(\"-\");\n if (value) {\n valueWidget.setValue(String(value));\n }\n }\n\n // remove first if any\n this.__removeEntry(row, this.self().POS.VALUE);\n\n this.__gridLayout.add(valueWidget, {\n row: row,\n column: this.self().POS.VALUE\n });\n },\n\n __makeLabelsResponsive: function() {\n const grid = this.__gridLayout.getLayout();\n const firstColumnWidth = osparc.utils.Utils.getGridsFirstColumnWidth(grid);\n if (firstColumnWidth === null) {\n // not rendered yet\n setTimeout(() => this.__makeLabelsResponsive(), 100);\n return;\n }\n const extendedVersion = firstColumnWidth > 300;\n\n const ports = this.getPorts();\n const portKeys = Object.keys(ports);\n for (let i=0; i\" + port.description: port.label\n });\n infoButton.setVisibility(extendedVersion ? \"hidden\" : \"visible\");\n grid.setColumnMinWidth(this.self().POS.VALUE, extendedVersion ? 150 : 50);\n }\n },\n\n __removeEntry: function(row, column) {\n let children = this.__gridLayout.getChildren();\n for (let i=0; i {\n jsonObject[key] = this.get(key);\n });\n return jsonObject;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Class that stores Workspace data.\n */\n\nqx.Class.define(\"osparc.data.model.Workspace\", {\n extend: qx.core.Object,\n\n /**\n * @param workspaceData {Object} Object containing the serialized Workspace Data\n */\n construct: function(workspaceData) {\n this.base(arguments);\n\n this.set({\n workspaceId: workspaceData.workspaceId,\n name: workspaceData.name,\n description: workspaceData.description,\n thumbnail: workspaceData.thumbnail,\n myAccessRights: workspaceData.myAccessRights,\n accessRights: workspaceData.accessRights,\n createdAt: new Date(workspaceData.createdAt),\n modifiedAt: new Date(workspaceData.modifiedAt),\n trashedAt: workspaceData.trashedAt ? new Date(workspaceData.trashedAt) : null,\n trashedBy: workspaceData.trashedBy,\n });\n },\n\n properties: {\n workspaceId: {\n check: \"Number\",\n nullable: false,\n init: null,\n event: \"changeId\"\n },\n\n name: {\n check: \"String\",\n nullable: false,\n init: null,\n event: \"changeName\"\n },\n\n description: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeDescription\"\n },\n\n thumbnail: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeThumbnail\"\n },\n\n myAccessRights: {\n check: \"Object\",\n nullable: false,\n init: null,\n event: \"changeMyAccessRights\"\n },\n\n accessRights: {\n check: \"Object\",\n nullable: false,\n init: null,\n event: \"changeAccessRights\"\n },\n\n createdAt: {\n check: \"Date\",\n nullable: true,\n init: null,\n event: \"changeCreatedAt\"\n },\n\n modifiedAt: {\n check: \"Date\",\n nullable: true,\n init: null,\n event: \"changeModifiedAt\"\n },\n\n trashedAt: {\n check: \"Date\",\n nullable: true,\n init: null,\n event: \"changeTrashedAt\",\n },\n\n trashedBy: {\n check: \"Number\",\n nullable: true,\n init: null,\n event: \"changeTrashedBy\",\n },\n },\n\n statics: {\n getProperties: function() {\n return Object.keys(qx.util.PropertyUtil.getProperties(osparc.data.model.Workspace));\n }\n },\n\n members: {\n serialize: function() {\n const jsonObject = {};\n const propertyKeys = this.self().getProperties();\n propertyKeys.forEach(key => {\n jsonObject[key] = this.get(key);\n });\n return jsonObject;\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2015 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Adrian Olaru (adrianolaru)\n\n************************************************************************ */\n\n\n/**\n * The Progress bar is designed to simply display the current % complete\n * for a process.\n *\n * The Value is limited between 0 and Maximum value.\n * It's not allowed to set a Maximum value of 0. If you set a Maximum value\n * bigger than 0, but smaller than Value, it will be limited to Value.\n *\n * The following example creates and adds a progress bar to the root element.\n * A listener is used to show the user if the value is changed,\n * and another one when the progress is complete.\n *\n * \n * var pb = new qx.ui.indicator.ProgressBar();\n * this.getRoot().add(pb, { left : 20, top: 20});\n *\n * pb.addListener(\"change\", function(e) {\n * this.debug(e.getData()); // % complete\n * this.debug(pb.getValue()); // absolute value\n * });\n *\n * pb.addListener(\"complete\", function(e) {\n * this.debug(\"complete\");\n * });\n *\n * //set a value\n * pb.setValue(20);\n *
\n *\n * @childControl progress {qx.ui.container.Composite} The progress bar\n */\nqx.Class.define(\"qx.ui.indicator.ProgressBar\",\n{\n extend: qx.ui.container.Composite,\n\n\n /**\n * @param value {Number ? 0} Progress bar value\n * @param maximum {Number ? 100} Progress bar maximum value\n */\n construct: function(value, maximum) {\n this.base(arguments);\n\n this._createChildControl(\"progress\");\n\n this.setLayout(new qx.ui.layout.HBox());\n\n if (maximum != null) {\n this.setMaximum(maximum);\n }\n\n if (value != null) {\n this.setValue(value);\n }\n\n },\n\n\n properties:\n {\n appearance:\n {\n refine: true,\n init: \"progressbar\"\n },\n\n /** Maximum value of the progress bar */\n maximum :\n {\n init : 100,\n event : \"changeMaximum\",\n apply : \"_applyMaximum\"\n },\n\n /** Current value of the progress bar */\n value :\n {\n init : 0,\n event : \"changeValue\",\n apply : \"_applyValue\"\n }\n },\n\n\n events:\n {\n /**\n * Fired when the process is complete (value === maximum value)\n */\n complete: \"qx.event.type.Event\",\n\n\n /**\n * Fired when the % complete value is changed.\n */\n change: \"qx.event.type.Data\"\n },\n\n\n members:\n {\n // property apply\n _applyValue: function(value, old) {\n var max = this.getMaximum();\n\n //do nothing if is not a number\n if (!qx.lang.Type.isNumber(value) || !isFinite(value)) {\n value = old;\n }\n\n if (value < 0) {\n // limit value to 0\n value = 0;\n } else if (value > max) {\n // limit value to max\n value = max;\n }\n\n //set value\n this.setValue(value);\n\n //update progress\n this._changeProgress(value / max);\n },\n\n\n // property apply\n _applyMaximum: function(value, old) {\n var max = value;\n var val = this.getValue();\n\n //do nothing if is not a number, is negative or zero\n if (!qx.lang.Type.isNumber(max) || !isFinite(max) || max <= 0) {\n max = old;\n }\n\n //limit max to a greater than 0 value\n if (max < val) {\n max = val;\n }\n\n //set max\n this.setMaximum(max);\n\n //update progress\n this._changeProgress(val / max);\n },\n\n\n //overridden\n _createChildControlImpl: function(id, hash) {\n var control;\n\n switch (id)\n {\n case \"progress\":\n control = new qx.ui.container.Composite(new qx.ui.layout.Canvas());\n this._add(control, { width: \"0%\" });\n break;\n }\n return control || this.base(arguments, id);\n },\n\n\n /**\n * Update the progress bar.\n *\n * @param value {Number} future value of progress bar\n */\n _changeProgress: function(value) {\n var bar = this.getChildControl(\"progress\");\n var to = Math.floor(value * 100);\n var from = parseInt(bar.getLayoutProperties().width, 10);\n\n bar.setLayoutProperties({width: to + \"%\"});\n\n //fire change event\n if (to != from) {\n this.fireDataEvent(\"change\", to, from);\n }\n\n //fire complete event if 100% complete\n if (to === 100) {\n this.fireEvent(\"complete\");\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget that provides a way to use a download link\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let typeDownloadLink = new osparc.file.FileDownloadLink();\n * this.getRoot().add(typeDownloadLink);\n *
\n */\n\nqx.Class.define(\"osparc.file.FileDownloadLink\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.HBox(5));\n\n const downloadLinkField = this.getChildControl(\"downloadLinkField\");\n\n const selectButton = this.getChildControl(\"selectButton\");\n selectButton.addListener(\"execute\", () => {\n const downloadLink = downloadLinkField.getValue();\n if (osparc.utils.Utils.isValidHttpUrl(downloadLink)) {\n this.fireDataEvent(\"fileLinkAdded\", downloadLink);\n } else {\n downloadLinkField.resetValue();\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Error checking link\"), \"WARNING\");\n }\n }, this);\n },\n\n events: {\n \"fileLinkAdded\": \"qx.event.type.Data\"\n },\n\n statics: {\n extractLabelFromLink: function(downloadLink) {\n // works for sparc.science portal download links\n // http://www.mydomain.com/my_file.ext?word=blah\n // until question mark\n const regex = \"(^.*)(?=\\\\?)\";\n const found = downloadLink.match(regex);\n if (found && found.length > 1) {\n const parts = found[1].split(\"/\");\n return parts[parts.length - 1];\n }\n\n const idx = downloadLink.lastIndexOf(\"/\");\n if (idx > -1) {\n return downloadLink.substring(idx + 1);\n }\n\n return \"unknown\";\n },\n\n checkFileExists: function(urlToFile) {\n return new Promise(resolve => {\n const xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", urlToFile, true);\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) { // 4=this.DONE\n resolve(true);\n } else {\n resolve(false);\n }\n };\n xhr.send();\n });\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"downloadLinkField\":\n control = new qx.ui.form.TextField().set({\n placeholder: this.tr(\"Type a Link\")\n });\n this._add(control, {\n flex: 1\n });\n break;\n case \"checkButton\":\n control = new qx.ui.form.Button(this.tr(\"Validate\"));\n this._add(control);\n break;\n case \"checkLink\":\n control = new qx.ui.basic.Image();\n control.set({\n source: \"@FontAwesome5Solid/question-circle/14\"\n });\n this._add(control);\n break;\n case \"selectButton\":\n control = new qx.ui.form.Button(this.tr(\"Select\"));\n this._add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n getValue: function() {\n return this.getChildControl(\"downloadLinkField\").getValue();\n },\n\n setValue: function(value) {\n this.getChildControl(\"downloadLinkField\").setValue(value);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * @ignore(SVGElement)\n */\n\nqx.Class.define(\"osparc.file.FileDrop\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.Canvas());\n\n const contentElement = this.getContentElement();\n contentElement.setStyles(this.self().getBorderStyle());\n const colorManager = qx.theme.manager.Color.getInstance();\n colorManager.addListener(\"changeTheme\", () => {\n if (this.getShowBorder()) {\n contentElement.setStyles(this.self().getBorderStyle());\n }\n }, this);\n\n let msg = \"\";\n const options = [\n this.tr(\"Upload file\"),\n this.tr(\"Drop file from explorer\"),\n this.tr(\"Drop file from tree\"),\n this.tr(\"Provide Link\")\n ];\n for (let i=0; i\" + this.tr(\"or\") + \"
\";\n }\n }\n msg += \" \";\n\n const dropHereMessage = this.__dropHereMessage = new qx.ui.basic.Label(msg).set({\n font: \"text-14\",\n rich: true,\n alignX: \"center\",\n alignY: \"middle\"\n });\n this._add(dropHereMessage);\n\n dropHereMessage.addListener(\"appear\", () => this.__centerDropHereMessage(), this);\n this.addListener(\"resize\", () => this.__centerDropHereMessage(), this);\n\n const svgLayer = this.__svgLayer = new osparc.workbench.SvgWidget();\n this._add(svgLayer, {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n });\n\n this.__addDragAndDropListeners();\n },\n\n statics: {\n getBorderStyle: function() {\n return {\n \"border-width\": \"3px\",\n \"border-radius\": \"10px\",\n \"border-color\": qx.theme.manager.Color.getInstance().resolve(\"background-main-4\"),\n \"border-style\": \"dotted\"\n };\n },\n\n getNoBorderStyle: function() {\n return {\n \"border-width\": \"0px\"\n };\n },\n\n getFilesFromEvent: function(e) {\n const files = [];\n if (e.dataTransfer.items) {\n const items = e.dataTransfer.items;\n for (let i = 0; i < items.length; i++) {\n // If dropped items aren't files, reject them\n if (items[i].webkitGetAsEntry()[\"isFile\"]) {\n const file = items[i].getAsFile();\n files.push(file);\n }\n }\n }\n return files;\n },\n\n ONE_FILE_ONLY: qx.locale.Manager.tr(\"Only one file at a time is accepted.\") + \"
\" + qx.locale.Manager.tr(\"Please zip all files together.\"),\n },\n\n events: {\n \"localFileDropped\": \"qx.event.type.Data\",\n \"fileLinkDropped\": \"qx.event.type.Data\"\n },\n\n properties: {\n showBorder: {\n check: \"Boolean\",\n init: true,\n apply: \"__applyShowBorder\"\n },\n\n showDropHere: {\n check: \"Boolean\",\n init: true,\n apply: \"__applyShowDropHere\"\n }\n },\n\n members: {\n __svgLayer: null,\n __dropHereMessage: null,\n __dropMe: null,\n __isDraggingFile: null,\n __isDraggingLink: null,\n\n __applyShowBorder: function(show) {\n const contentElement = this.getContentElement();\n contentElement.setStyles(show ? this.self().getBorderStyle() : this.self().getNoBorderStyle());\n },\n\n __applyShowDropHere: function(value) {\n this.__dropHereMessage.setVisibility(value ? \"visible\" : \"excluded\");\n },\n\n __centerDropHereMessage: function() {\n const dropHere = this.__dropHereMessage;\n // center it\n const dropHereBounds = dropHere.getBounds() || dropHere.getSizeHint();\n const fileDropBounds = this.getBounds() || this.getSizeHint();\n dropHere.setLayoutProperties({\n top: parseInt((fileDropBounds.height - dropHereBounds.height) / 2),\n left: parseInt((fileDropBounds.width - dropHereBounds.width) / 2)\n });\n },\n\n setDropHereMessage: function(msg) {\n this.__dropHereMessage.set({\n value: msg\n });\n this.__centerDropHereMessage();\n },\n\n resetDropAction: function() {\n this.__updateWidgets(false);\n },\n\n __pointerFileEventToScreenPos: function(e) {\n const rect = this.getContentElement().getDomElement().getBoundingClientRect();\n return {\n x: e.pageX - rect.x,\n y: e.pageY - rect.y\n };\n },\n\n __pointerLinkEventToScreenPos: function(e) {\n const rect = this.getContentElement().getDomElement().getBoundingClientRect();\n return {\n x: e.getDocumentLeft() - rect.x,\n y: e.getDocumentTop() - rect.y\n };\n },\n\n __allowDragFile: function(e) {\n let allow = false;\n if (this.__isDraggingFile) {\n // item still being dragged\n allow = true;\n } else {\n allow = e.target instanceof SVGElement;\n this.__isDraggingFile = allow;\n }\n return allow;\n },\n\n __allowDragLink: function(e) {\n let allow = false;\n if (this.__isDraggingLink) {\n // item still being dragged\n allow = true;\n } else if (\"supportsType\" in e) {\n // item drag from osparc's file tree\n allow = e.supportsType(\"osparc-file-link\");\n if (allow) {\n // store \"osparc-file-link\" data in variable,\n // because the mousemove event doesn't contain that information\n this.__isDraggingLink = e.getData(\"osparc-file-link\");\n }\n }\n return allow;\n },\n\n __draggingFile: function(e, dragging) {\n if (this.__allowDragFile(e)) {\n e.preventDefault();\n e.stopPropagation();\n } else {\n dragging = false;\n }\n\n const pos = this.__pointerFileEventToScreenPos(e);\n this.__updateWidgets(dragging, pos.x, pos.y);\n },\n\n __draggingLink: function(e, dragging) {\n if (this.__allowDragLink(e)) {\n e.preventDefault();\n e.stopPropagation();\n } else {\n dragging = false;\n }\n\n const pos = this.__pointerLinkEventToScreenPos(e);\n this.__updateWidgets(dragging, pos.x, pos.y);\n },\n\n __updateWidgets: function(dragging, posX, posY) {\n if (dragging) {\n this.__dropHereMessage.exclude();\n this.__updateDropMe(posX, posY);\n } else {\n if (this.getShowDropHere()) {\n this.__dropHereMessage.show();\n }\n this.__hideDropMe();\n }\n },\n\n __updateDropMe: function(posX, posY) {\n const boxWidth = 120;\n const boxHeight = 60;\n if (this.__dropMe === null) {\n this.__dropMe = new qx.ui.basic.Label(this.tr(\"Drop me\")).set({\n font: \"text-14\",\n textAlign: \"center\"\n });\n this._add(this.__dropMe);\n const svgLayer = this.__svgLayer;\n if (svgLayer.getReady()) {\n this.__dropMe.rect = svgLayer.drawDashedRect(boxWidth, boxHeight);\n } else {\n svgLayer.addListenerOnce(\"SvgWidgetReady\", () => this.__dropMe.rect = svgLayer.drawDashedRect(boxWidth, boxHeight), this);\n }\n }\n const dropMe = this.__dropMe;\n dropMe.show();\n const dropMeBounds = dropMe.getBounds() || dropMe.getSizeHint();\n dropMe.setLayoutProperties({\n left: posX - parseInt(dropMeBounds.width/2) - parseInt(boxWidth/2),\n top: posY - parseInt(dropMeBounds.height/2)- parseInt(boxHeight/2)\n });\n if (\"rect\" in dropMe) {\n dropMe.rect.stroke({\n width: 1\n });\n osparc.wrapper.Svg.updateItemPos(dropMe.rect, posX - boxWidth, posY - boxHeight);\n }\n },\n\n __hideDropMe: function() {\n const dropMe = this.__dropMe;\n if (dropMe) {\n if (\"rect\" in dropMe) {\n dropMe.rect.stroke({\n width: 0\n });\n }\n dropMe.exclude();\n }\n },\n\n __dropFile: function(e) {\n this.__draggingFile(e, false);\n\n this.__isDraggingFile = false;\n if (\"dataTransfer\" in e) {\n const files = osparc.file.FileDrop.getFilesFromEvent(e);\n if (files.length) {\n if (files.length === 1) {\n this.fireDataEvent(\"localFileDropped\", {\n data: files,\n pos: this.__pointerFileEventToScreenPos(e)\n });\n } else {\n osparc.FlashMessenger.getInstance().logAs(osparc.file.FileDrop.ONE_FILE_ONLY, \"ERROR\");\n }\n } else {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Folders are not accepted. You might want to upload a zip file.\"), \"ERROR\");\n }\n }\n },\n\n __dropLink: function(e) {\n this.__draggingLink(e, false);\n\n if (this.__isDraggingLink && \"dragData\" in this.__isDraggingLink) {\n this.fireDataEvent(\"fileLinkDropped\", {\n data: this.__isDraggingLink[\"dragData\"],\n pos: this.__pointerLinkEventToScreenPos(e)\n });\n this.__isDraggingLink = null;\n }\n },\n\n __addDragAndDropListeners: function() {\n this.addListenerOnce(\"appear\", () => {\n // listen to drag&drop files from local-storage\n const domEl = this.getContentElement().getDomElement();\n [\n \"dragenter\",\n \"dragover\",\n \"dragleave\"\n ].forEach(signalName => {\n domEl.addEventListener(signalName, e => {\n const dragging = signalName !== \"dragleave\";\n this.__draggingFile(e, dragging);\n }, this);\n });\n domEl.addEventListener(\"drop\", this.__dropFile.bind(this), false);\n\n // listen to drag&drop file-links from osparc-storage\n this.setDroppable(true);\n\n const stopDraggingLink = () => {\n this.__isDraggingLink = null;\n this.__updateWidgets(false);\n };\n const startDraggingLink = e => {\n this.addListenerOnce(\"dragleave\", stopDraggingLink, this);\n this.addListenerOnce(\"dragover\", startDraggingLink, this);\n this.__draggingLink(e, true);\n };\n this.addListenerOnce(\"dragover\", startDraggingLink, this);\n\n this.addListener(\"mousemove\", e => {\n if (this.__isDraggingLink) {\n this.__draggingLink(e, true);\n }\n }, this);\n this.addListener(\"mouseup\", e => {\n if (this.__isDraggingLink) {\n this.__dropLink(e, true);\n }\n }, this);\n }, this);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.file.FileUploader\", {\n extend: qx.core.Object,\n\n /**\n * @param node {osparc.data.model.Node} Node owning the widget\n */\n construct: function(node) {\n this.base(arguments);\n\n this.set({\n node\n });\n\n this.__presignedLinkData = null;\n },\n\n properties: {\n node: {\n check: \"osparc.data.model.Node\"\n }\n },\n\n events: {\n \"uploadAborted\": \"qx.event.type.Event\",\n \"fileUploaded\": \"qx.event.type.Data\",\n },\n\n statics: {\n PROGRESS_VALUES: {\n FETCHING_PLINK: 1,\n CHUNKING: 2,\n COMPLETING: 99\n },\n\n createChunk: function(file, fileSize, chunkIdx, chunkSize) {\n const start = chunkIdx * chunkSize;\n const chunkEnd = Math.min(start + chunkSize, fileSize);\n const chunkBlob = file.slice(start, chunkEnd);\n return chunkBlob;\n }\n },\n\n members: {\n __presignedLinkData: null,\n __uploadedParts: null,\n __fileMetadata: null,\n\n // Request to the server an upload URL.\n retrieveUrlAndUpload: function(file) {\n if (this.getNode() === null) {\n return;\n }\n\n const download = false;\n const locationId = 0;\n const studyId = this.getNode().getStudy().getUuid();\n const nodeId = this.getNode() ? this.getNode().getNodeId() : osparc.utils.Utils.uuidV4();\n const fileId = file.name;\n const fileUuid = studyId +\"/\"+ nodeId +\"/\"+ fileId;\n const fileSize = file.size;\n const dataStore = osparc.store.Data.getInstance();\n this.getNode().getStatus().setProgress(this.self().PROGRESS_VALUES.FETCHING_PLINK);\n dataStore.getPresignedLink(download, locationId, fileUuid, fileSize)\n .then(presignedLinkData => {\n if (presignedLinkData.resp.urls) {\n this.__presignedLinkData = presignedLinkData;\n\n this.__fileMetadata = {\n location: presignedLinkData.locationId,\n dataset: studyId,\n path: presignedLinkData.fileUuid,\n name: file.name\n };\n\n try {\n this.__uploadFile(file);\n } catch (error) {\n console.error(error);\n this.__abortUpload();\n }\n }\n });\n },\n\n // Use XMLHttpRequest to upload the file to S3.\n __uploadFile: async function(file) {\n const presignedLinkData = this.__presignedLinkData;\n this.getNode().getStatus().setProgress(this.self().PROGRESS_VALUES.CHUNKING);\n\n // create empty object, it will be filled up with etags and 1 based chunk ids when chunks get uploaded\n this.__uploadedParts = [];\n for (let chunkIdx = 0; chunkIdx < presignedLinkData.resp.urls.length; chunkIdx++) {\n this.__uploadedParts.push({\n \"number\": chunkIdx+1,\n \"e_tag\": null\n });\n }\n const fileSize = presignedLinkData.fileSize;\n const chunkSize = presignedLinkData.resp[\"chunk_size\"];\n for (let chunkIdx = 0; chunkIdx < presignedLinkData.resp.urls.length; chunkIdx++) {\n if (this.getNode()[\"fileUploadAbortRequested\"]) {\n this.__abortUpload();\n break;\n }\n const chunkBlob = this.self().createChunk(file, fileSize, chunkIdx, chunkSize);\n try {\n const eTag = await this.__uploadChunk(chunkBlob, chunkIdx);\n if (eTag) {\n // remove double double quotes \"\"e_tag\"\" -> \"e_tag\"\n this.__uploadedParts[chunkIdx][\"e_tag\"] = eTag.slice(1, -1);\n const uploadedParts = this.__uploadedParts.filter(uploadedPart => uploadedPart[\"e_tag\"] !== null).length;\n const progress = uploadedParts/this.__uploadedParts.length;\n // normalize progress value between CHUNKING and COMPLETING\n const min = this.self().PROGRESS_VALUES.CHUNKING;\n const max = this.self().PROGRESS_VALUES.COMPLETING;\n const nProgress = Math.min(Math.max(100*progress-min, min), max);\n this.getNode().getStatus().setProgress(nProgress);\n if (this.__uploadedParts.every(uploadedPart => uploadedPart[\"e_tag\"] !== null)) {\n this.__checkCompleteUpload();\n }\n }\n } catch (err) {\n console.error(err);\n this.__abortUpload();\n }\n }\n },\n\n __uploadChunk: function(chunkBlob, chunkIdx) {\n return new Promise((resolve, reject) => {\n // From https://github.com/minio/cookbook/blob/master/docs/presigned-put-upload-via-browser.md\n const url = this.__presignedLinkData.resp.urls[chunkIdx];\n const xhr = new XMLHttpRequest();\n xhr.onload = () => {\n if (xhr.status == 200) {\n const eTag = xhr.getResponseHeader(\"etag\");\n resolve(eTag);\n } else {\n reject(xhr.response);\n }\n };\n xhr.open(\"PUT\", url, true);\n xhr.send(chunkBlob);\n });\n },\n\n // Use XMLHttpRequest to complete the upload to S3\n __checkCompleteUpload: function() {\n if (this.getNode()[\"fileUploadAbortRequested\"]) {\n this.__abortUpload();\n return;\n }\n\n const presignedLinkData = this.__presignedLinkData;\n this.getNode().getStatus().setProgress(this.self().PROGRESS_VALUES.COMPLETING);\n const completeUrl = presignedLinkData.resp.links.complete_upload;\n const xhr = new XMLHttpRequest();\n xhr.onloadend = () => {\n const resp = JSON.parse(xhr.responseText);\n if (\"error\" in resp && resp[\"error\"]) {\n console.error(resp[\"error\"]);\n this.__abortUpload();\n } else if (\"data\" in resp) {\n if (xhr.status == 202) {\n console.log(\"waiting for completion\", this.__fileMetadata.name);\n // @odeimaiz: we need to poll the received new location in the response\n // we do have links.state -> poll that link until it says ok\n // right now this kind of work if files are small and this happens fast\n this.__pollFileUploadState(resp[\"data\"][\"links\"][\"state\"]);\n } else if (xhr.status == 200) {\n this.__completeUpload();\n }\n }\n };\n xhr.open(\"POST\", completeUrl, true);\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n const body = {\n parts: this.__uploadedParts\n };\n xhr.send(JSON.stringify(body));\n },\n\n __pollFileUploadState: function(stateLink) {\n const xhr = new XMLHttpRequest();\n xhr.open(\"POST\", stateLink, true);\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.onloadend = () => {\n const resp = JSON.parse(xhr.responseText);\n if (\"data\" in resp && resp[\"data\"] && resp[\"data\"][\"state\"] === \"ok\") {\n this.__completeUpload();\n } else {\n const interval = 2000;\n qx.event.Timer.once(() => this.__pollFileUploadState(stateLink), this, interval);\n }\n };\n xhr.send();\n },\n\n __completeUpload: function() {\n this.getNode()[\"fileUploadAbortRequested\"] = false;\n\n this.__presignedLinkData = null;\n this.fireDataEvent(\"fileUploaded\", this.__fileMetadata);\n },\n\n __abortUpload: function() {\n this.getNode()[\"fileUploadAbortRequested\"] = false;\n\n const aborted = () => {\n this.__presignedLinkData = null;\n // avoid interfering with the progress update\n setTimeout(() => this.fireEvent(\"uploadAborted\"), osparc.desktop.StudyEditor.AUTO_SAVE_INTERVAL*2);\n };\n const abortUrl = this.__presignedLinkData.resp.links.abort_upload;\n if (abortUrl) {\n const xhr = new XMLHttpRequest();\n xhr.open(\"POST\", abortUrl, true);\n xhr.onload = () => aborted();\n xhr.send();\n } else {\n aborted();\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (ignapas)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.RadioCollapsibleViews\", {\n extend: qx.core.Object,\n\n /**\n * @param {Array} collapsibleViews array of osparc.widget.CollapsibleView\n */\n construct: function(collapsibleViews = []) {\n this.base(arguments);\n\n this.__collapsibleViews = [];\n\n collapsibleViews.forEach(cv => this.addCollapsibleView(cv));\n },\n\n members: {\n __collapsibleViews: null,\n\n /**\n * @param {osparc.widget.CollapsibleView | osparc.desktop.PanelView} collapsibleView\n */\n addCollapsibleView: function(collapsibleView) {\n this.__collapsibleViews.push(collapsibleView);\n\n collapsibleView.addListener(\"changeCollapsed\", e => {\n const collapsed = e.getData();\n if (collapsed === false) {\n // close the other views\n const idx = this.__collapsibleViews.indexOf(collapsibleView);\n this.__collapsibleViews.forEach((cv, idx2) => {\n if (idx !== idx2) {\n cv.setCollapsed(true);\n }\n })\n }\n }, this);\n },\n\n openCollapsibleView: function(idx = 0) {\n if (idx < this.__collapsibleViews.length) {\n this.__collapsibleViews[idx].setCollapsed(false);\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n *\n */\n\nqx.Class.define(\"osparc.file.FolderViewer\", {\n extend: qx.ui.core.Widget,\n\n construct: function(allowMultiSelection = true) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this.setPaddingLeft(10);\n\n const folderUpBtn = this.getChildControl(\"folder-up\");\n folderUpBtn.addListener(\"execute\", () => this.fireDataEvent(\"folderUp\", this.getFolder()), this);\n this.getChildControl(\"folder-path\");\n let multiSelectButton = null;\n if (allowMultiSelection) {\n multiSelectButton = this.getChildControl(\"multi-select-button\");\n }\n const listViewButton = this.getChildControl(\"view-options-list\");\n const gridViewButton = this.getChildControl(\"view-options-icons\");\n const folderContent = this.getChildControl(\"folder-content\");\n const selectedFileLayout = this.getChildControl(\"selected-file-layout\");\n\n this.bind(\"folder\", this.getChildControl(\"folder-up\"), \"enabled\", {\n converter: folder => Boolean(folder && folder.getPathLabel && folder.getPathLabel().length > 1)\n });\n\n this.bind(\"folder\", this.getChildControl(\"folder-path\"), \"value\", {\n converter: folder => folder ? folder.getPathLabel().join(\" / \") : this.tr(\"Select folder\")\n });\n\n this.bind(\"folder\", folderContent, \"folder\");\n\n if (allowMultiSelection) {\n multiSelectButton.bind(\"value\", folderContent, \"multiSelect\");\n folderContent.bind(\"multiSelect\", multiSelectButton, \"value\");\n multiSelectButton.addListener(\"changeValue\", e => {\n selectedFileLayout.setMultiSelect(e.getData());\n });\n }\n gridViewButton.addListener(\"execute\", () => {\n folderContent.setMode(\"icons\");\n selectedFileLayout.resetSelection();\n multiSelectButton.setValue(false);\n });\n listViewButton.addListener(\"execute\", () => {\n folderContent.setMode(\"list\");\n selectedFileLayout.resetSelection();\n multiSelectButton.setValue(false);\n });\n\n folderContent.addListener(\"requestDatasetFiles\", e => this.fireDataEvent(\"requestDatasetFiles\", e.getData()));\n folderContent.addListener(\"selectionChanged\", e => {\n const selectionData = e.getData();\n selectedFileLayout.setItemSelected(selectionData);\n }, this);\n folderContent.addListener(\"multiSelectionChanged\", e => {\n const multiSelectionData = e.getData();\n selectedFileLayout.setMultiItemSelected(multiSelectionData);\n }, this);\n folderContent.addListener(\"openItemSelected\", e => {\n const entry = e.getData();\n this.fireDataEvent(\"openItemSelected\", entry);\n if (osparc.file.FilesTree.isDir(entry)) {\n this.setFolder(entry);\n }\n });\n },\n\n properties: {\n folder: {\n check: \"qx.core.Object\",\n init: null,\n nullable: true,\n event: \"changeFolder\",\n apply: \"__applyFolder\",\n },\n },\n\n events: {\n \"openItemSelected\": \"qx.event.type.Data\", // dbltap\n \"folderUp\": \"qx.event.type.Data\",\n \"requestDatasetFiles\": \"qx.event.type.Data\"\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"header\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox());\n this._add(control);\n break;\n case \"folder-up\": {\n const header = this.getChildControl(\"header\");\n control = new qx.ui.form.Button(null, \"@FontAwesome5Solid/arrow-up/12\").set({\n enabled: false\n });\n header.addAt(control, 0);\n break;\n }\n case \"folder-path\": {\n const header = this.getChildControl(\"header\");\n control = new qx.ui.basic.Label(this.tr(\"Select folder\")).set({\n font: \"text-14\",\n allowGrowX: true,\n alignY: \"middle\",\n marginLeft: 10,\n marginRight: 10\n });\n header.addAt(control, 1, {\n flex: 1\n });\n break;\n }\n case \"multi-select-button\": {\n control = new qx.ui.form.ToggleButton(this.tr(\"Multiselect\")).set({\n value: false,\n marginRight: 10,\n });\n const header = this.getChildControl(\"header\");\n header.addAt(control, 2);\n break;\n }\n case \"view-options-radio-group\":\n control = new qx.ui.form.RadioGroup();\n break;\n case \"view-options-icons\": {\n control = new qx.ui.form.ToggleButton(null, \"@MaterialIcons/apps/18\");\n osparc.utils.Utils.setIdToWidget(control, \"folderGridView\");\n const group = this.getChildControl(\"view-options-radio-group\");\n group.add(control);\n const header = this.getChildControl(\"header\");\n header.addAt(control, 3);\n break;\n }\n case \"view-options-list\": {\n control = new qx.ui.form.ToggleButton(null, \"@MaterialIcons/reorder/18\");\n const group = this.getChildControl(\"view-options-radio-group\");\n group.add(control);\n const header = this.getChildControl(\"header\");\n header.addAt(control, 4);\n break;\n }\n case \"folder-content\": {\n control = new osparc.file.FolderContent();\n this._add(control, {\n flex: 1\n });\n break;\n }\n case \"selected-file-layout\":\n control = new osparc.file.FileLabelWithActions().set({\n alignY: \"middle\"\n });\n this._add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __applyFolder: function() {\n this.getChildControl(\"selected-file-layout\").resetSelection();\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Andreas Ecker (ecker)\n * Jonathan Weiß (jonathan_rass)\n\n************************************************************************ */\n\n/**\n * The container used by {@link Part} to insert the buttons.\n *\n * @internal\n */\nqx.Class.define(\"qx.ui.toolbar.PartContainer\",\n{\n extend : qx.ui.container.Composite,\n\n\n construct : function()\n {\n this.base(arguments);\n this._setLayout(new qx.ui.layout.HBox);\n },\n\n\n events : {\n /** Fired if a child has been added or removed */\n changeChildren : \"qx.event.type.Event\"\n },\n\n properties :\n {\n appearance :\n {\n refine : true,\n init : \"toolbar/part/container\"\n },\n\n /** Whether icons, labels, both or none should be shown. */\n show :\n {\n init : \"both\",\n check : [ \"both\", \"label\", \"icon\" ],\n inheritable : true,\n event : \"changeShow\"\n }\n },\n\n\n members : {\n // overridden\n _afterAddChild : function(child) {\n this.fireEvent(\"changeChildren\");\n },\n\n\n // overridden\n _afterRemoveChild : function(child) {\n this.fireEvent(\"changeChildren\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.info.ServiceUtils\", {\n type: \"static\",\n\n statics: {\n /**\n * @param label {String} label\n */\n createTitle: function(label) {\n const title = osparc.info.Utils.createTitle();\n title.setValue(label);\n return title;\n },\n\n /**\n * @param serviceData {Object} Serialized Service Object\n */\n createNodeId: function(instanceUuid) {\n const label = osparc.info.Utils.createLabel();\n label.set({\n value: instanceUuid\n });\n return label;\n },\n\n /**\n * @param serviceKey {String} Service key\n */\n createKey: function(serviceKey) {\n const key = osparc.info.Utils.createLabel();\n key.set({\n value: serviceKey,\n toolTipText: serviceKey\n });\n return key;\n },\n\n /**\n * @param serviceVersion {String} Service version\n */\n createVersion: function(serviceVersion) {\n const version = osparc.info.Utils.createLabel();\n version.set({\n value: serviceVersion\n });\n return version;\n },\n\n createVersionDisplay: function(key, version) {\n const versionDisplay = osparc.service.Utils.getVersionDisplay(key, version);\n const label = new qx.ui.basic.Label(versionDisplay);\n osparc.utils.Utils.setIdToWidget(label, \"serviceVersion\");\n return label;\n },\n\n createReleasedDate: function(key, version) {\n const releasedDate = osparc.service.Utils.getReleasedDate(key, version);\n if (releasedDate) {\n const label = new qx.ui.basic.Label();\n label.set({\n value: osparc.utils.Utils.formatDateAndTime(new Date(releasedDate)),\n });\n return label;\n }\n return null;\n },\n\n /**\n * @param serviceData {Object} Serialized Service Object\n */\n createContact: function(serviceData) {\n const contact = osparc.store.Support.getMailToLabel(serviceData[\"contact\"], serviceData[\"name\"] + \":\" + serviceData[\"version\"]);\n return contact;\n },\n\n /**\n * @param serviceData {Object} Serialized Service Object\n */\n createAuthors: function(serviceData) {\n const authors = new qx.ui.basic.Label().set({\n rich: true\n });\n serviceData[\"authors\"].forEach(author => {\n const oldVal = authors.getValue();\n const oldTTT = authors.getToolTipText();\n authors.set({\n value: (oldVal ? oldVal : \"\") + `${author[\"name\"]}
`,\n toolTipText: (oldTTT ? oldTTT : \"\") + `${author[\"email\"]} - ${author[\"affiliation\"]}
`\n });\n });\n return authors;\n },\n\n /**\n * @param serviceData {Object} Serialized Service Object\n */\n createAccessRights: function(serviceData) {\n let permissions = \"\";\n const myGID = osparc.auth.Data.getInstance().getGroupId();\n const ar = serviceData[\"accessRights\"];\n if (myGID in ar) {\n if (ar[myGID][\"write\"]) {\n permissions = qx.locale.Manager.tr(\"Write\");\n } else if (ar[myGID][\"execute\"]) {\n permissions = qx.locale.Manager.tr(\"Execute\");\n }\n } else {\n permissions = qx.locale.Manager.tr(\"Public\");\n }\n const accessRights = new qx.ui.basic.Label(permissions);\n return accessRights;\n },\n\n /**\n * @param serviceData {Object} Serialized Service Object\n */\n createClassifiers: function(serviceData) {\n const nClassifiers = new qx.ui.basic.Label();\n nClassifiers.setValue(`(${serviceData[\"classifiers\"].length})`);\n return nClassifiers;\n },\n\n /**\n * @param serviceData {Object} Serialized Service Object\n */\n createQuality: function(serviceData) {\n const tsrLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(2)).set({\n toolTipText: qx.locale.Manager.tr(\"Ten Simple Rules score\")\n });\n const addStars = data => {\n tsrLayout.removeAll();\n const quality = data[\"quality\"];\n if (osparc.metadata.Quality.isEnabled(quality)) {\n const tsrRating = new osparc.ui.basic.StarsRating();\n tsrRating.set({\n nStars: 4,\n showScore: true\n });\n osparc.ui.basic.StarsRating.scoreToStarsRating(quality[\"tsr_current\"], quality[\"tsr_target\"], tsrRating);\n tsrLayout.add(tsrRating);\n } else {\n tsrLayout.exclude();\n }\n };\n addStars(serviceData);\n return tsrLayout;\n },\n\n /**\n * @param serviceData {Object} Serialized Service Object\n * @param maxHeight {Number} description's maxHeight\n */\n createDescription: function(serviceData) {\n const descriptionLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(5).set({\n alignY: \"middle\"\n }));\n\n const label = new qx.ui.basic.Label(qx.locale.Manager.tr(\"Description\")).set({\n font: \"text-13\"\n });\n descriptionLayout.add(label);\n\n const description = new osparc.ui.markdown.Markdown();\n // display markdown link content if that's the case\n if (\n osparc.utils.Utils.isValidHttpUrl(serviceData[\"description\"]) &&\n serviceData[\"description\"].endsWith(\".md\")\n ) {\n // if it's a link, fetch the content\n fetch(serviceData[\"description\"])\n .then(response => response.blob())\n .then(blob => blob.text())\n .then(markdown => {\n description.setValue(markdown)\n })\n .catch(err => {\n console.error(err);\n description.setValue(serviceData[\"description\"]);\n });\n } else {\n description.setValue(serviceData[\"description\"]);\n }\n descriptionLayout.add(description);\n\n return descriptionLayout;\n },\n\n RESOURCES_INFO: {\n \"limit\": {\n label: qx.locale.Manager.tr(\"Limit\"),\n tooltip: qx.locale.Manager.tr(\"Runtime check:
The service can consume a maximum of 'limit' resources - if it attempts to use more resources than this limit, it will be stopped\")\n }\n },\n\n createResourcesInfo: function() {\n const resourcesLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(5).set({\n alignY: \"middle\"\n }));\n\n const label = new qx.ui.basic.Label(qx.locale.Manager.tr(\"Resources\")).set({\n font: \"text-13\"\n });\n resourcesLayout.add(label);\n\n const grid = new qx.ui.layout.Grid(10, 5);\n grid.setColumnAlign(0, \"right\", \"middle\"); // subservice name\n grid.setColumnAlign(1, \"left\", \"middle\"); // resource type\n grid.setColumnAlign(2, \"left\", \"middle\"); // resource limit value\n const resourcesInfo = new qx.ui.container.Composite(grid).set({\n allowGrowX: false,\n alignX: \"left\",\n alignY: \"middle\"\n });\n resourcesLayout.add(resourcesInfo);\n\n const limitLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n limitLayout.add(new qx.ui.basic.Label(this.RESOURCES_INFO[\"limit\"].label).set({\n font: \"text-13\"\n }));\n limitLayout.add(new osparc.ui.hint.InfoHint(this.RESOURCES_INFO[\"limit\"].tooltip));\n resourcesInfo.add(limitLayout, {\n row: 0,\n column: 2\n });\n\n return resourcesLayout;\n },\n\n createResourcesInfoCompact: function() {\n const resourcesLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(5).set({\n alignY: \"middle\"\n }));\n\n const headerLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n const label = new qx.ui.basic.Label(qx.locale.Manager.tr(\"Resource Limits\")).set({\n font: \"text-13\"\n });\n headerLayout.add(label);\n const infoHint = new osparc.ui.hint.InfoHint(this.RESOURCES_INFO[\"limit\"].tooltip);\n headerLayout.add(infoHint);\n resourcesLayout.add(headerLayout);\n\n const grid = new qx.ui.layout.Grid(10, 5);\n grid.setColumnAlign(0, \"left\", \"middle\"); // resource type\n grid.setColumnAlign(1, \"left\", \"middle\"); // resource limit value\n const resourcesInfo = new qx.ui.container.Composite(grid).set({\n allowGrowX: false,\n alignX: \"left\",\n alignY: \"middle\"\n });\n resourcesLayout.add(resourcesInfo);\n\n return resourcesLayout;\n },\n\n resourcesToResourcesInfo: function(resourcesLayout, imagesResourcesInfo) {\n if (resourcesLayout.getChildren().length < 2) {\n return;\n }\n const layout = resourcesLayout.getChildren()[1];\n let row = 1;\n Object.entries(imagesResourcesInfo).forEach(([imageName, imageInfo]) => {\n layout.add(new qx.ui.basic.Label(imageName).set({\n font: \"text-13\"\n }), {\n row,\n column: 0\n });\n if (\"resources\" in imageInfo) {\n const resourcesInfo = imageInfo[\"resources\"];\n Object.keys(resourcesInfo).forEach(resourceKey => {\n let column = 1;\n const resourceInfo = resourcesInfo[resourceKey];\n let label = resourceKey;\n if (resourceKey === \"RAM\") {\n label += \" (GiB)\";\n }\n layout.add(new qx.ui.basic.Label(label).set({\n font: \"text-13\"\n }), {\n row,\n column\n });\n column++;\n Object.keys(this.RESOURCES_INFO).forEach(resourceInfoKey => {\n if (resourceInfoKey in resourceInfo) {\n let value = resourceInfo[resourceInfoKey];\n if (resourceKey === \"RAM\") {\n value = osparc.utils.Utils.bytesToGiB(value);\n }\n layout.add(new qx.ui.basic.Label(String(value)).set({\n font: \"text-12\"\n }), {\n row,\n column\n });\n column++;\n }\n });\n row++;\n });\n }\n });\n },\n\n resourcesToResourcesInfoCompact: function(resourcesLayout, imagesResourcesInfo) {\n if (resourcesLayout.getChildren().length < 2) {\n return;\n }\n const gridLayout = resourcesLayout.getChildren()[1];\n\n const compactInfo = {};\n Object.values(imagesResourcesInfo).forEach(imageInfo => {\n const resourcesInfo = imageInfo[\"resources\"];\n Object.keys(resourcesInfo).forEach(resourceKey => {\n if (resourcesInfo[resourceKey][\"limit\"]) {\n if (!(resourceKey in compactInfo)) {\n compactInfo[resourceKey] = 0;\n }\n compactInfo[resourceKey] += resourcesInfo[resourceKey][\"limit\"]\n }\n });\n });\n\n let row = 0;\n Object.entries(compactInfo).forEach(([resourceKey, limitsSumUp]) => {\n let label = resourceKey;\n let value = limitsSumUp;\n if (resourceKey === \"RAM\") {\n label += \" (GiB)\";\n value = osparc.utils.Utils.bytesToGiB(value);\n }\n gridLayout.add(new qx.ui.basic.Label(label).set({\n font: \"text-13\"\n }), {\n row,\n column: 0\n });\n gridLayout.add(new qx.ui.basic.Label(String(value)).set({\n font: \"text-13\"\n }), {\n row,\n column: 1\n });\n row++;\n });\n },\n\n /**\n * @param serviceData {Object} Serialized Service Object\n */\n openAccessRights: function(serviceData) {\n const permissionsView = new osparc.share.CollaboratorsService(serviceData);\n const title = qx.locale.Manager.tr(\"Share with Collaborators and Organizations\");\n osparc.ui.window.Window.popUpInWindow(permissionsView, title, 400, 300);\n return permissionsView;\n },\n\n /**\n * @param serviceData {Object} Serialized Service Object\n */\n openQuality: function(serviceData) {\n const qualityEditor = new osparc.metadata.QualityEditor(serviceData);\n const title = serviceData[\"name\"] + \" - \" + qx.locale.Manager.tr(\"Quality Assessment\");\n osparc.ui.window.Window.popUpInWindow(qualityEditor, title, 650, 700);\n return qualityEditor;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.info.Utils\", {\n type: \"static\",\n\n statics: {\n createTitle: function() {\n const label = new qx.ui.basic.Label().set({\n font: \"text-14\",\n maxWidth: 600,\n rich: true,\n wrap: true\n });\n return label;\n },\n\n createLabel: function() {\n const label = new qx.ui.basic.Label().set({\n maxWidth: 220\n });\n return label;\n },\n\n createThumbnail: function(maxWidth, maxHeight = 160) {\n const image = new osparc.ui.basic.Thumbnail(null, maxWidth, maxHeight);\n return image;\n },\n\n extraInfosToGrid: function(extraInfos) {\n const grid = new qx.ui.layout.Grid(8, 5);\n grid.setColumnAlign(0, \"right\", \"middle\");\n grid.setColumnAlign(1, \"left\", \"middle\");\n const moreInfo = new qx.ui.container.Composite(grid);\n\n for (let i=0; i {\n const cb = extraInfo.action.callback;\n if (typeof cb === \"string\") {\n extraInfo.action.ctx.fireEvent(cb);\n } else {\n cb.call(extraInfo.action.ctx);\n }\n }, this);\n moreInfo.add(extraInfo.action.button, {\n row: i,\n column: 2\n });\n }\n }\n\n return moreInfo;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\n/**\n * Widget containing a JsonTreeViewer dom element\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let jsonTreeWidget = new osparc.ui.basic.JsonTreeWidget(data);\n * this.getRoot().add(jsonTreeWidget);\n *
\n */\n\nqx.Class.define(\"osparc.ui.basic.JsonTreeWidget\", {\n extend: qx.ui.basic.Label,\n\n /**\n * @param data {Object} Json object to be displayed by JsonTreeViewer\n */\n construct: function(data) {\n this.base(arguments);\n this.set({\n rich: true,\n selectable: true\n });\n\n if (data) {\n this.setJson(data);\n }\n },\n\n members: {\n setJson(data) {\n const prettyJson = JSON.stringify(data, null, \" \").replace(/\\n/ig, \"
\");\n this.setValue(prettyJson);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.editor.TextEditor\", {\n extend: qx.ui.core.Widget,\n\n /**\n * @param initText {String} Initialization text\n */\n construct: function(initText = \"\") {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(2));\n\n this.getChildControl(\"text-area\");\n if (initText) {\n this.setText(initText);\n }\n\n this.__addButtons();\n },\n\n events: {\n \"textChanged\": \"qx.event.type.Data\",\n \"cancel\": \"qx.event.type.Event\"\n },\n\n properties: {\n text: {\n check: \"String\",\n event: \"changeText\",\n init: \"\",\n nullable: true\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"tabs\":\n control = new qx.ui.tabview.TabView().set({\n contentPadding: 0,\n barPosition: \"top\"\n });\n this._add(control, {\n flex: 1\n });\n break;\n case \"text-area\": {\n control = new qx.ui.form.TextArea().set({\n allowGrowX: true\n });\n control.addListener(\"appear\", () => {\n if (control.getValue()) {\n control.setTextSelection(0, control.getValue().length);\n }\n }, this);\n this.bind(\"text\", control, \"value\");\n const tabs = this.getChildControl(\"tabs\");\n const writePage = new qx.ui.tabview.Page(this.tr(\"Write\")).set({\n layout: new qx.ui.layout.VBox(5)\n });\n writePage.getChildControl(\"button\").getChildControl(\"label\").set({\n font: \"text-13\"\n });\n writePage.add(control, {\n flex: 1\n });\n const subtitle = this.getChildControl(\"subtitle\").set({\n value: this.tr(\"Supports HTML\")\n });\n writePage.add(subtitle);\n tabs.add(writePage);\n break;\n }\n case \"subtitle\":\n control = new qx.ui.basic.Label().set({\n font: \"text-12\"\n });\n this._add(control);\n break;\n case \"buttons\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(5).set({\n alignX: \"right\"\n }));\n this._add(control);\n break;\n case \"cancel-button\": {\n const buttons = this.getChildControl(\"buttons\");\n control = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"form-button-text\"\n });\n control.addListener(\"execute\", () => {\n this.fireDataEvent(\"cancel\");\n }, this);\n buttons.add(control);\n break;\n }\n case \"accept-button\": {\n const buttons = this.getChildControl(\"buttons\");\n control = new qx.ui.form.Button(this.tr(\"Save\")).set({\n appearance: \"form-button\"\n });\n control.addListener(\"execute\", () => {\n const newText = this.getChildControl(\"text-area\").getValue();\n this.fireDataEvent(\"textChanged\", newText);\n }, this);\n buttons.add(control);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __addButtons: function() {\n this.getChildControl(\"cancel-button\");\n this.getChildControl(\"accept-button\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Window that shows a text area with a given input text.\n * It can be used to dit a longer texts\n */\n\nqx.Class.define(\"osparc.editor.MarkdownEditor\", {\n extend: osparc.editor.TextEditor,\n\n /**\n * @param initText {String} Initialization text\n */\n construct: function(initText = \"\") {\n this.base(arguments, initText);\n\n this.getChildControl(\"preview-markdown\");\n this.getChildControl(\"subtitle\").set({\n value: this.tr(\"Supports Markdown\")\n });\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"preview-markdown\": {\n control = new osparc.ui.markdown.Markdown().set({\n padding: 3,\n });\n const textArea = this.getChildControl(\"text-area\");\n textArea.bind(\"value\", control, \"value\");\n const tabs = this.getChildControl(\"tabs\");\n const previewPage = new qx.ui.tabview.Page(this.tr(\"Preview\")).set({\n layout: new qx.ui.layout.VBox(5)\n });\n previewPage.getChildControl(\"button\").getChildControl(\"label\").set({\n font: \"text-13\"\n });\n const scrollContainer = new qx.ui.container.Scroll();\n scrollContainer.add(control);\n previewPage.add(scrollContainer, {\n flex: 1\n });\n tabs.add(previewPage);\n break;\n }\n }\n return control || this.base(arguments, id);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.store.Pricing\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n construct: function() {\n this.base(arguments);\n\n this.pricingPlansCached = [];\n },\n\n events: {\n \"pricingPlansChanged\": \"qx.event.type.Data\",\n },\n\n members: {\n pricingPlansCached: null,\n\n fetchPricingPlans: function() {\n const resourceName = osparc.data.Permissions.getInstance().isAdmin() ? \"adminPricingPlans\" : \"pricingPlans\";\n return osparc.data.Resources.getInstance().getAllPages(resourceName)\n .then(pricingPlansData => {\n const pricingPlans = [];\n pricingPlansData.forEach(pricingPlanData => {\n const pricingPlan = this.__addToCache(pricingPlanData);\n pricingPlans.push(pricingPlan);\n });\n return pricingPlans;\n });\n },\n\n postPricingPlan: function(newPricingPlanData) {\n const params = {\n data: newPricingPlanData\n };\n return osparc.data.Resources.fetch(\"adminPricingPlans\", \"post\", params)\n .then(pricingPlanData => {\n const pricingPlan = this.__addToCache(pricingPlanData);\n this.fireDataEvent(\"pricingPlansChanged\", pricingPlan);\n return pricingPlan;\n });\n },\n\n putPricingPlan: function(pricingPlanId, updateData) {\n const params = {\n url: {\n pricingPlanId\n },\n data: updateData\n };\n return osparc.data.Resources.getInstance().fetch(\"adminPricingPlans\", \"update\", params)\n .then(pricingPlanData => {\n return this.__addToCache(pricingPlanData);\n })\n .catch(console.error);\n },\n\n fetchPricingPlansService: function(serviceKey, serviceVersion) {\n const plansParams = {\n url: osparc.data.Resources.getServiceUrl(serviceKey, serviceVersion)\n };\n return osparc.data.Resources.fetch(\"services\", \"pricingPlans\", plansParams)\n .then(pricingPlansData => {\n return pricingPlansData;\n });\n },\n\n fetchPricingUnits: function(pricingPlanId) {\n if (this.getPricingPlan(pricingPlanId) && this.getPricingPlan(pricingPlanId).getPricingUnits().length !== 0) {\n return new Promise(resolve => resolve(this.getPricingPlan(pricingPlanId).getPricingUnits()));\n }\n const params = {\n url: {\n pricingPlanId,\n }\n };\n const resourceName = osparc.data.Permissions.getInstance().isAdmin() ? \"adminPricingPlans\" : \"pricingPlans\";\n return osparc.data.Resources.fetch(resourceName, \"getOne\", params)\n .then(pricingPlanData => {\n const pricingPlan = this.__addToCache(pricingPlanData);\n const pricingUnits = pricingPlan.getPricingUnits();\n pricingUnits.length = 0;\n pricingPlanData[\"pricingUnits\"].forEach(pricingUnitData => {\n this.__addPricingUnitToCache(pricingPlan, pricingUnitData);\n });\n return pricingUnits;\n });\n },\n\n createPricingUnit: function(pricingPlanId, pricingUnitData) {\n const params = {\n url: {\n \"pricingPlanId\": pricingPlanId\n },\n data: pricingUnitData\n };\n return osparc.data.Resources.fetch(\"pricingUnits\", \"post\", params)\n .then(newPricingUnitData => {\n const pricingPlan = this.getPricingPlan(pricingPlanId);\n this.__addPricingUnitToCache(pricingPlan, newPricingUnitData);\n return pricingPlan;\n })\n },\n\n updatePricingUnit: function(pricingPlanId, pricingUnitId, pricingUnitData) {\n const params = {\n url: {\n \"pricingPlanId\": pricingPlanId,\n \"pricingUnitId\": pricingUnitId,\n },\n data: pricingUnitData\n };\n return osparc.data.Resources.fetch(\"pricingUnits\", \"post\", params)\n .then(() => {\n const pricingPlan = this.getPricingPlan(pricingPlanId);\n // OM do not add but replace\n this.__addPricingUnitToCache(pricingPlan, pricingUnitData);\n return pricingPlan;\n })\n },\n\n getPricingPlans: function() {\n return this.pricingPlansCached;\n },\n\n getPricingPlan: function(pricingPlanId = null) {\n return this.pricingPlansCached.find(f => f.getPricingPlanId() === pricingPlanId);\n },\n\n getPricingUnits: function(pricingPlanId) {\n const pricingPlan = this.getPricingPlan(pricingPlanId);\n if (pricingPlan) {\n return pricingPlan.getPricingUnits();\n }\n return null;\n },\n\n getPricingUnit: function(pricingPlanId, pricingUnitId) {\n const pricingPlan = this.getPricingPlan(pricingPlanId);\n if (pricingPlan) {\n return pricingPlan.getPricingUnits().find(pricingUnit => pricingUnit.getPricingUnitId() === pricingUnitId);\n }\n return null;\n },\n\n __addToCache: function(pricingPlanData) {\n let pricingPlan = this.pricingPlansCached.find(f => f.getPricingPlanId() === pricingPlanData[\"pricingPlanId\"]);\n if (pricingPlan) {\n // put\n pricingPlan.set({\n pricingPlanKey: pricingPlanData[\"pricingPlanKey\"],\n name: pricingPlanData[\"displayName\"],\n description: pricingPlanData[\"description\"],\n classification: pricingPlanData[\"classification\"],\n isActive: pricingPlanData[\"isActive\"],\n });\n } else {\n // get and post\n pricingPlan = new osparc.data.model.PricingPlan(pricingPlanData);\n this.pricingPlansCached.unshift(pricingPlan);\n }\n return pricingPlan;\n },\n\n __addPricingUnitToCache: function(pricingPlan, pricingUnitData) {\n const pricingUnits = pricingPlan.getPricingUnits();\n let pricingUnit = pricingUnits ? pricingUnits.find(unit => (\"getPricingUnitId\" in unit) && unit.getPricingUnitId() === pricingUnitData[\"pricingUnitId\"]) : null;\n if (pricingUnit) {\n const props = Object.keys(qx.util.PropertyUtil.getProperties(osparc.data.model.PricingPlan));\n // put\n Object.keys(pricingUnitData).forEach(key => {\n if (props.includes(key)) {\n pricingPlan.set(key, pricingUnitData[key]);\n }\n });\n } else {\n // get and post\n pricingUnit = new osparc.data.model.PricingUnit(pricingUnitData);\n pricingPlan.bind(\"classification\", pricingUnit, \"classification\");\n pricingUnits.push(pricingUnit);\n }\n return pricingUnit;\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.study.PricingUnitTiers\", {\n extend: qx.ui.container.Composite,\n\n construct: function(pricingUnitsData, preselectedPricingUnit, changeSelectionAllowed = true) {\n this.base(arguments);\n\n this.set({\n layout: new qx.ui.layout.HBox(10),\n allowGrowY: false,\n });\n\n this.__buildLayout(pricingUnitsData, preselectedPricingUnit, changeSelectionAllowed);\n },\n\n properties: {\n selectedUnitId: {\n check: \"Number\",\n init: null,\n nullable: false,\n event: \"changeSelectedUnitId\",\n apply: \"__applySelectedUnitId\",\n }\n },\n\n events: {\n \"selectPricingUnitRequested\": \"qx.event.type.Event\",\n },\n\n members: {\n __pricingUnitTiers: null,\n\n __buildLayout: function(pricingUnitsData, preselectedPricingUnit, changeSelectionAllowed) {\n const pricingUnitTiers = this.__pricingUnitTiers = [];\n pricingUnitsData.forEach(pricingUnitData => {\n const pricingUnit = new osparc.data.model.PricingUnit(pricingUnitData);\n const pricingUnitTier = new osparc.study.PricingUnitTier(pricingUnit).set({\n showSelectButton: changeSelectionAllowed,\n });\n pricingUnitTiers.push(pricingUnitTier);\n this._add(pricingUnitTier);\n });\n\n if (preselectedPricingUnit) {\n const pricingUnitTierFound = pricingUnitTiers.find(pricingUnitTier => pricingUnitTier.getUnitData().getPricingUnitId() === preselectedPricingUnit[\"pricingUnitId\"]);\n if (pricingUnitTierFound) {\n pricingUnitTierFound.setSelected(true);\n }\n } else {\n // preselect default\n pricingUnitTiers.forEach(pricingUnitTier => {\n if (pricingUnitTier.getUnitData().getIsDefault()) {\n pricingUnitTier.setSelected(true);\n }\n });\n }\n\n pricingUnitTiers.forEach(pricingUnitTier => {\n pricingUnitTier.addListener(\"selectPricingUnit\", () => {\n if (changeSelectionAllowed) {\n this.fireDataEvent(\"selectPricingUnitRequested\", pricingUnitTier.getUnitData().getPricingUnitId());\n }\n });\n });\n },\n\n __applySelectedUnitId: function(selectedUnitId) {\n // select and unselect the rest\n this.__pricingUnitTiers.forEach(puTIer => puTIer.setSelected(puTIer.getUnitData().getPricingUnitId() === selectedUnitId));\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.info.CommentUI\", {\n extend: qx.ui.core.Widget,\n\n /**\n * @param comment {Object} comment\n */\n construct: function(comment) {\n this.base(arguments);\n\n this.__comment = comment;\n\n const isMyComment = this.__isMyComment();\n const layout = new qx.ui.layout.Grid(12, 5);\n layout.setColumnFlex(isMyComment ? 0 : 1, 1); // message content\n this._setLayout(layout);\n this.setPadding(5);\n\n this.__buildLayout();\n },\n\n members: {\n __comment: null,\n\n __isMyComment: function() {\n return this.__comment && osparc.auth.Data.getInstance().getUserId() === this.__comment[\"user_id\"];\n },\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"meta-data-grid\": {\n const layout = new qx.ui.layout.Grid(12, 5)\n layout.setColumnWidth(this.__isMyComment() ? 1 : 0, 32); // thumbnail\n control = new qx.ui.container.Composite(layout);\n this._add(control, {\n row: 0,\n column: this.__isMyComment() ? 1 : 0\n });\n break;\n }\n case \"thumbnail\":\n control = new qx.ui.basic.Image().set({\n scale: true,\n maxWidth: 32,\n maxHeight: 32,\n decorator: \"rounded\",\n });\n this.getChildControl(\"meta-data-grid\").add(control, {\n row: 0,\n column: this.__isMyComment() ? 1 : 0,\n rowSpan: 2\n });\n break;\n case \"user-name\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\"\n });\n this.getChildControl(\"meta-data-grid\").add(control, {\n row: 0,\n column: this.__isMyComment() ? 0 : 1\n });\n break;\n case \"last-updated\":\n control = new qx.ui.basic.Label().set({\n font: \"text-12\"\n });\n this.getChildControl(\"meta-data-grid\").add(control, {\n row: 1,\n column: this.__isMyComment() ? 0 : 1\n });\n break;\n case \"comment-content\":\n control = new osparc.ui.markdown.Markdown();\n control.getContentElement().setStyles({\n \"text-align\": this.__isMyComment() ? \"right\" : \"left\"\n });\n this._add(control, {\n row: 0,\n column: this.__isMyComment() ? 0 : 1\n });\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n __buildLayout: function() {\n const thumbnail = this.getChildControl(\"thumbnail\");\n thumbnail.setSource(osparc.utils.Avatar.emailToThumbnail(\"\", \"\", 32));\n\n const userName = this.getChildControl(\"user-name\");\n userName.setValue(\"Unknown\");\n\n const date = new Date(this.__comment[\"modified\"]);\n const date2 = osparc.utils.Utils.formatDateAndTime(date);\n const lastUpdate = this.getChildControl(\"last-updated\");\n lastUpdate.setValue(date2);\n\n const commentContent = this.getChildControl(\"comment-content\");\n commentContent.setValue(this.__comment[\"contents\"]);\n\n const user = osparc.store.Groups.getInstance().getUserByUserId(this.__comment[\"user_id\"])\n if (user) {\n thumbnail.setSource(user.getThumbnail());\n userName.setValue(user.getLabel());\n }\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\nqx.Class.define(\"osparc.filter.ClassifiersFilter\", {\n extend: osparc.filter.UIFilter,\n\n /**\n * @param {string} filterId Group-unique id for the filter.\n * @param {string} filterGroupId Unique group id where the filter belongs.\n * @param {Array} initTreeData Initialization data\n */\n construct: function(filterId, filterGroupId, initTreeData = []) {\n this.base(arguments, filterId, filterGroupId);\n this._setLayout(new qx.ui.layout.Grow());\n this.__createClassifiersTree(initTreeData);\n },\n\n members: {\n __tree: null,\n\n recreateTree: function() {\n const checkedClassifiers = this.getCheckedClassifierIDs();\n this.__createClassifiersTree(checkedClassifiers);\n },\n\n __createClassifiersTree: function(checkedClassifiers, reload = false) {\n osparc.utils.Classifiers.getClassifiersAsTree(reload)\n .then(classifiers => {\n if (classifiers && classifiers.children.length) {\n this.__tree = new osparc.ui.tree.CheckboxTree(classifiers);\n this.__tree.addListener(\"checkedChanged\", e => {\n this._filterChange(e.getData());\n });\n this._removeAll();\n this._add(this.__tree);\n\n if (checkedClassifiers.length) {\n this.__setCheckedClassifiers(this.__tree.getModel(), checkedClassifiers);\n this._filterChange(this.__tree.getChecked());\n }\n }\n });\n },\n\n getCheckedClassifierIDs: function() {\n const checkedClassifierIDs = [];\n if (this.__tree) {\n this.__tree.getChecked().forEach(checkedClassifier => {\n if (checkedClassifier.children.length === 0) {\n checkedClassifierIDs.push(checkedClassifier.data.classifier);\n }\n });\n }\n return checkedClassifierIDs;\n },\n\n __setCheckedClassifiers: function(model, checkedClassifiers) {\n if (checkedClassifiers.length === 0) {\n return;\n }\n\n const nodes = model.getChildren();\n nodes.forEach(node => {\n if (\"getData\" in node) {\n // this is a leaf\n if (checkedClassifiers.includes(node.getData().getClassifier())) {\n node.setChecked(true);\n }\n } else {\n // this is a branch\n this.__setCheckedClassifiers(node, checkedClassifiers);\n }\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Collection of methods for dealing with Classifiers.\n *\n */\n\nqx.Class.define(\"osparc.utils.Classifiers\", {\n type: \"static\",\n\n statics: {\n /**\n * @param reload {Boolean} Whether Classifiers need to be reloaded\n * @param filtered {Array} Only the Classifiers included in this array will be added to the tree\n */\n getClassifiersAsTree: function(reload = false, filtered = null) {\n return new Promise((resolve, reject) => {\n const rootData = {\n label: \"root\",\n children: []\n };\n osparc.store.Store.getInstance().getAllClassifiers(reload)\n .then(classifiers => {\n const idxs = Object.keys(classifiers);\n if (idxs.length) {\n // Tree-ify\n const tree = {};\n idxs.forEach(idx => {\n const classifier = classifiers[idx];\n if (filtered === null || filtered.includes(classifier[\"classifier\"])) {\n this.__buildTree(classifiers, idx, classifier[\"key\"].split(\"::\"), tree);\n }\n }, this);\n rootData.children.push(...this.__virtualTree(tree));\n }\n resolve(rootData);\n });\n });\n },\n\n // Converts the classifiers to a tree-shaped object\n __buildTree: function(classifiers, classifierId, currentPath, currentNode) {\n const pathName = currentPath.shift();\n if (currentPath.length) {\n currentNode[pathName] = currentNode[pathName] || {};\n this.__buildTree(classifiers, classifierId, currentPath, currentNode[pathName]);\n } else {\n currentNode[pathName] = classifiers[classifierId];\n }\n },\n\n // Converts the treefied classifiers to a Qooxdoo's VirtualTree friendly format\n __virtualTree: function(currentNode) {\n return Object.entries(currentNode).map(([key, value]) => {\n if (value.classifier) {\n return {\n label: value[\"display_name\"],\n description: value[\"short_description\"],\n url: value[\"url\"],\n data: value\n };\n }\n return {\n label: key,\n children: this.__virtualTree(currentNode[key])\n };\n });\n },\n\n getLeafClassifiers: function(classifiers, leaves = []) {\n for (let i=0; i this.__extendData(child));\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\n/**\n * @asset(hint/hint.css)\n */\n\nqx.Class.define(\"osparc.form.FieldWHint\", {\n extend: qx.ui.core.Widget,\n\n /**\n * Text field with a hint tooltip\n *\n * @extends qx.ui.core.Widget\n */\n construct: function(value, hint, field) {\n this.base(arguments);\n this._setLayout(new qx.ui.layout.Canvas());\n\n this.__field = field || new qx.ui.form.TextField();\n if (value) {\n this.__field.setValue(value);\n }\n this.__field.setPaddingRight(18);\n this.getContentElement().addClass(\"hint-input\");\n this.__field.getContentElement().addClass(\"hint-field\");\n this._add(this.__field, {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n });\n\n this.__infoButton = this.getChildControl(\"infobutton\");\n if (hint) {\n this.__infoButton.setHintText(hint);\n }\n\n this.__field.bind(\"visibility\", this, \"visibility\");\n },\n\n properties: {\n hintPosition: {\n check: [\"left\", \"right\"],\n init: \"right\",\n apply: \"__applyHintPosition\"\n }\n },\n\n statics: {\n TOP_MARGIN: 3\n },\n\n members: {\n __field: null,\n __infoButton: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"infobutton\":\n control = new osparc.ui.hint.InfoHint();\n this._add(control, {\n right: 0,\n top: this.self().TOP_MARGIN\n });\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __applyHintPosition: function(value) {\n this._removeAll();\n this._add(this.__field, {\n top: 0,\n right: 0,\n bottom: 0,\n left: value === \"left\" ? 18 : 0\n });\n if (value === \"left\") {\n this._add(this.__infoButton, {\n left: 0,\n top: this.self().TOP_MARGIN\n });\n } else {\n this._add(this.__infoButton, {\n right: 0,\n top: this.self().TOP_MARGIN\n });\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\n/**\n * TextField to make a simple text filter.\n */\nqx.Class.define(\"osparc.filter.TextFilter\", {\n extend: osparc.filter.UIFilter,\n\n /**\n * Constructor for the TextFilter takes UIFilters mandatory params plus an optional translation id for its label.\n *\n * @extends osparc.filter.UIFilter\n */\n construct: function(filterId, filterGroupId) {\n this.base(arguments, filterId, filterGroupId);\n this._setLayout(new qx.ui.layout.Canvas());\n\n this.set({\n allowStretchX: false,\n allowStretchY: false\n });\n\n this.getChildControl(\"textfield\");\n this.getChildControl(\"clearbutton\");\n\n this.__attachEventHandlers();\n },\n\n properties: {\n appearance: {\n refine: true,\n init: \"textfilter\"\n },\n\n compact: {\n check: \"Boolean\",\n init: false,\n apply: \"__applyCompact\",\n },\n },\n\n members: {\n /**\n * Function that resets the field and dispatches the update.\n */\n reset: function() {\n const textField = this.getChildControl(\"textfield\");\n textField.resetValue();\n textField.fireDataEvent(\"input\", \"\");\n },\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"textfield\":\n control = new qx.ui.form.TextField().set({\n paddingRight: 15,\n placeholder: this.tr(\"Filter\")\n });\n control.getContentElement().setAttribute(\"autocomplete\", \"off\");\n // FIXME: autocomplete \"off\" doesn't work on Chrome\n // https://www.codementor.io/leonardofaria/disabling-autofill-in-chrome-zec47xcui\n this._add(control, {\n width: \"100%\"\n });\n break;\n case \"clearbutton\":\n control = new osparc.ui.basic.IconButton(\"@MaterialIcons/close/12\", () => {\n this.reset();\n this.getChildControl(\"textfield\").focus();\n });\n this._add(control, {\n right: 0,\n bottom: 6\n });\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __applyCompact: function(compact) {\n this.set({\n allowStretchX: compact,\n allowGrowX: compact,\n maxHeight: compact ? 30 : null,\n margin: compact ? 0 : null,\n });\n\n this.getChildControl(\"textfield\").set({\n margin: compact ? 0 : null,\n });\n },\n\n __attachEventHandlers: function() {\n this.getChildControl(\"textfield\").addListener(\"input\", evt => {\n this._filterChange(evt.getData().trim().toLowerCase());\n });\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * Represents one tag in the preferences page.\n */\nqx.Class.define(\"osparc.form.tag.TagItem\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n this._setLayout(new qx.ui.layout.HBox(5));\n this.set({\n alignY: \"middle\",\n });\n this.__validationManager = new qx.ui.form.validation.Manager();\n },\n\n statics: {\n modes: {\n DISPLAY: \"display\",\n EDIT: \"edit\"\n }\n },\n\n properties: {\n tag: {\n check: \"osparc.data.model.Tag\",\n nullable: false,\n init: null,\n event: \"changeTag\",\n apply: \"__applyTag\",\n },\n\n id: {\n check: \"Integer\"\n },\n\n name: {\n check: \"String\",\n event: \"changeName\",\n init: \"\"\n },\n\n description: {\n check: \"String\",\n nullable: true,\n event: \"changeDescription\",\n init: \"\"\n },\n\n color: {\n check: \"Color\",\n event: \"changeColor\",\n init: \"#303030\"\n },\n\n myAccessRights: {\n check: \"Object\",\n nullable: false,\n event: \"changeMyAccessRights\",\n },\n\n accessRights: {\n check: \"Object\",\n nullable: false,\n event: \"changeAccessRights\",\n },\n\n mode: {\n check: \"String\",\n init: \"display\",\n nullable: false,\n apply: \"__applyMode\"\n },\n\n appearance: {\n init: \"tagitem\",\n refine: true\n }\n },\n\n events: {\n \"tagSaved\": \"qx.event.type.Event\",\n \"cancelNewTag\": \"qx.event.type.Event\",\n \"deleteTag\": \"qx.event.type.Event\"\n },\n\n members: {\n __validationManager: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"tag\":\n control = new osparc.ui.basic.Tag().set({\n alignY: \"middle\",\n });\n this.bind(\"name\", control, \"value\");\n this.bind(\"color\", control, \"color\");\n break;\n case \"description\":\n control = new qx.ui.basic.Label().set({\n rich: true,\n allowGrowX: true,\n alignY: \"middle\",\n });\n this.bind(\"description\", control, \"value\");\n break;\n case \"shared-icon\":\n control = new qx.ui.basic.Image().set({\n minWidth: 30,\n alignY: \"middle\",\n });\n osparc.dashboard.CardBase.populateShareIcon(control, this.getAccessRights());\n break;\n case \"name-input\":\n control = new qx.ui.form.TextField().set({\n required: true\n });\n this.__validationManager.add(control);\n control.getContentElement().setAttribute(\"autocomplete\", \"off\");\n break;\n case \"description-input\":\n control = new qx.ui.form.TextArea().set({\n autoSize: true,\n minimalLineHeight: 1\n });\n break;\n case \"color-input\":\n control = new qx.ui.form.TextField().set({\n value: this.getColor(),\n width: 60,\n required: true\n });\n control.bind(\"value\", this.getChildControl(\"color-button\"), \"backgroundColor\");\n control.bind(\"value\", this.getChildControl(\"color-button\"), \"textColor\", {\n converter: value => osparc.utils.Utils.getContrastedBinaryColor(value)\n });\n this.__validationManager.add(control, osparc.utils.Validators.hexColor);\n break;\n case \"color-button\":\n control = new qx.ui.form.Button(null, \"@FontAwesome5Solid/sync-alt/12\");\n control.addListener(\"execute\", () => {\n this.getChildControl(\"color-input\").setValue(osparc.utils.Utils.getRandomColor());\n }, this);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __applyTag: function(tag) {\n tag.bind(\"tagId\", this, \"id\");\n tag.bind(\"name\", this, \"name\");\n tag.bind(\"description\", this, \"description\");\n tag.bind(\"color\", this, \"color\");\n tag.bind(\"myAccessRights\", this, \"myAccessRights\");\n tag.bind(\"accessRights\", this, \"accessRights\");\n\n this.__renderLayout();\n },\n\n /**\n * Renders this tag item from scratch.\n */\n __renderLayout: function() {\n this._removeAll();\n if (this.getMode() === this.self().modes.EDIT) {\n this.__renderEditMode();\n } else if (this.getMode() === this.self().modes.DISPLAY) {\n this.__renderDisplayMode();\n }\n },\n\n __renderEditMode: function() {\n const nameContainer = new qx.ui.container.Composite(new qx.ui.layout.VBox()).set({\n width: 90\n });\n nameContainer.add(new qx.ui.basic.Label(this.tr(\"Name\")).set({\n buddy: this.getChildControl(\"name-input\")\n }));\n nameContainer.add(this.getChildControl(\"name-input\").set({\n value: this.getName()\n }));\n this._add(nameContainer);\n const descInputContainer = new qx.ui.container.Composite(new qx.ui.layout.VBox());\n descInputContainer.add(new qx.ui.basic.Label(this.tr(\"Description\")).set({\n buddy: this.getChildControl(\"description-input\")\n }));\n descInputContainer.add(this.getChildControl(\"description-input\").set({\n value: this.getDescription()\n }));\n this._add(descInputContainer, {\n flex: 1\n });\n this._add(this.__colorPicker());\n this._add(this.__tagItemEditButtons());\n },\n\n __renderDisplayMode: function() {\n this._add(this.getChildControl(\"tag\"));\n this._add(this.getChildControl(\"description\"), {\n flex: 1\n });\n this._add(this.__tagItemButtons());\n this.resetBackgroundColor();\n },\n\n __openAccessRights: function() {\n const permissionsView = new osparc.share.CollaboratorsTag(this.getTag());\n const title = this.tr(\"Share Tag\");\n osparc.ui.window.Window.popUpInWindow(permissionsView, title, 600, 600);\n\n permissionsView.addListener(\"updateAccessRights\", () => {\n const accessRights = this.getTag().getAccessRights();\n if (accessRights) {\n const sharedIcon = this.getChildControl(\"shared-icon\");\n osparc.dashboard.CardBase.populateShareIcon(sharedIcon, accessRights);\n }\n }, this);\n },\n\n /**\n * Generates and returns the buttons for deleting and editing an existing label (display mode)\n */\n __tagItemButtons: function() {\n const canIWrite = osparc.share.CollaboratorsTag.canIWrite(this.getMyAccessRights());\n const canIDelete = osparc.share.CollaboratorsTag.canIDelete(this.getMyAccessRights());\n const buttonContainer = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n\n const sharedIcon = this.getChildControl(\"shared-icon\");\n sharedIcon.set({\n cursor: canIWrite ? \"pointer\" : null,\n });\n if (canIWrite) {\n sharedIcon.addListener(\"tap\", () => this.__openAccessRights(), this);\n }\n buttonContainer.add(sharedIcon);\n\n const editButton = new qx.ui.form.Button().set({\n icon: \"@FontAwesome5Solid/pencil-alt/12\",\n toolTipText: this.tr(\"Edit\"),\n enabled: canIWrite,\n });\n buttonContainer.add(editButton);\n editButton.addListener(\"execute\", () => this.setMode(this.self().modes.EDIT), this);\n\n const deleteButton = new osparc.ui.form.FetchButton().set({\n appearance: \"danger-button\",\n icon: \"@FontAwesome5Solid/trash/12\",\n toolTipText: this.tr(\"Delete\"),\n enabled: canIDelete,\n });\n buttonContainer.add(deleteButton);\n deleteButton.addListener(\"execute\", () => {\n deleteButton.setFetching(true);\n osparc.store.Tags.getInstance().deleteTag(this.getId())\n .then(() => this.fireEvent(\"deleteTag\"))\n .catch(console.error)\n .finally(() => deleteButton.setFetching(false));\n }, this);\n\n return buttonContainer;\n },\n /**\n * Generates and returns the buttons for cancelling edition and saving tag of a new or existing label (edit mode)\n */\n __tagItemEditButtons: function() {\n const buttonContainer = new qx.ui.container.Composite(new qx.ui.layout.HBox());\n const saveButton = new osparc.ui.form.FetchButton(null, \"@FontAwesome5Solid/check/12\").set({\n appearance: \"link-button\",\n paddingTop: 15, // avoid buddy text\n alignY: \"middle\"\n });\n const cancelButton = new qx.ui.form.Button(null, \"@FontAwesome5Solid/times/12\").set({\n appearance: \"link-button\",\n paddingTop: 15, // avoid buddy text\n alignY: \"middle\"\n });\n buttonContainer.add(saveButton);\n buttonContainer.add(cancelButton);\n saveButton.addListener(\"execute\", () => {\n if (this.__validationManager.validate()) {\n const data = this.__serializeData();\n saveButton.setFetching(true);\n const tagsStore = osparc.store.Tags.getInstance();\n if (this.isPropertyInitialized(\"id\")) {\n tagsStore.patchTag(this.getId(), data)\n .then(tag => this.setTag(tag))\n .catch(console.error)\n .finally(() => {\n this.fireEvent(\"tagSaved\");\n this.setMode(this.self().modes.DISPLAY);\n saveButton.setFetching(false);\n });\n } else {\n let newTag = null;\n tagsStore.postTag(data)\n .then(tag => {\n newTag = tag;\n return tagsStore.fetchAccessRights(tag);\n })\n .then(() => this.setTag(newTag))\n .catch(console.error)\n .finally(() => {\n this.fireEvent(\"tagSaved\");\n this.setMode(this.self().modes.DISPLAY);\n saveButton.setFetching(false);\n });\n }\n }\n }, this);\n cancelButton.addListener(\"execute\", () => {\n if (this.isPropertyInitialized(\"id\")) {\n this.__validationManager.reset();\n this.setMode(this.self().modes.DISPLAY);\n } else {\n this.fireEvent(\"cancelNewTag\");\n }\n }, this);\n return buttonContainer;\n },\n /**\n * Generates and returns the color input (edit mode)\n */\n __colorPicker: function() {\n const container = new qx.ui.container.Composite(new qx.ui.layout.VBox());\n container.add(new qx.ui.basic.Label(this.tr(\"Color\")).set({\n buddy: this.getChildControl(\"color-input\")\n }));\n const innerContainer = new qx.ui.container.Composite(new qx.ui.layout.HBox());\n const refreshButton = this.getChildControl(\"color-button\");\n const colorInput = this.getChildControl(\"color-input\");\n innerContainer.add(refreshButton);\n innerContainer.add(colorInput);\n container.add(innerContainer);\n return container;\n },\n /**\n * Creates an object containing the updated tag info\n */\n __serializeData: function() {\n const name = this.getChildControl(\"name-input\").getValue();\n const description = this.getChildControl(\"description-input\").getValue();\n const color = this.getChildControl(\"color-input\").getValue();\n return {\n name: name.trim(),\n description: description ? description.trim() : \"\",\n color: color,\n };\n },\n __applyMode: function() {\n this.__renderLayout();\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * Button to toggle the selection of one tag\n */\nqx.Class.define(\"osparc.form.tag.TagToggleButton\", {\n extend: qx.ui.form.ToggleButton,\n include: osparc.filter.MFilterable,\n implement: osparc.filter.IFilterable,\n\n construct: function(tag, value) {\n this.base(arguments);\n this._setLayout(new qx.ui.layout.HBox(8).set({\n alignY: \"middle\"\n }));\n this.set({\n minHeight: 35,\n appearance: \"tagbutton\"\n });\n this.setIcon(\"@FontAwesome5Solid/square/14\");\n this.getChildControl(\"icon\").setTextColor(tag.getColor());\n if (tag.getDescription()) {\n this.setLabel(tag.getName() + \" : \" + tag.getDescription());\n } else {\n this.setLabel(tag.getName());\n }\n this.getChildControl(\"check\");\n\n this.setValue(value ? true : false); // eslint-disable-line no-unneeded-ternary\n },\n\n properties: {\n fetching: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n event: \"changeFetching\",\n apply: \"_applyFetching\"\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"label\":\n control = new qx.ui.basic.Label(this.getLabel()).set({\n allowStretchX: true\n });\n control.set({\n textColor: \"text\",\n anonymous: true,\n rich: this.getRich()\n });\n if (this.getLabel() == null || this.getShow() === \"icon\") {\n control.exclude();\n }\n this._add(control, {\n flex: 1\n });\n break;\n case \"check\":\n control = new qx.ui.basic.Image();\n control.setAnonymous(true);\n this._add(control);\n this.bind(\"value\", control, \"visibility\", {\n converter: value => value ? \"visible\" : \"hidden\"\n });\n this.bind(\"fetching\", control, \"source\", {\n converter: isFetching =>\n isFetching ?\n \"@FontAwesome5Solid/circle-notch/14\" :\n \"@FontAwesome5Solid/check/14\"\n });\n break;\n }\n return control || this.base(arguments, id);\n },\n\n _applyFetching: function(isFetching) {\n const check = this.getChildControl(\"check\");\n if (isFetching) {\n check.show();\n check.getContentElement().addClass(\"rotate\");\n } else {\n check.setVisibility(this.getValue() ? \"visible\" : \"hidden\");\n check.getContentElement().removeClass(\"rotate\");\n }\n },\n\n _filter: function() {\n this.exclude();\n },\n\n _unfilter: function() {\n this.show();\n },\n\n _shouldApplyFilter: function(data) {\n if (data.name) {\n // data.name comes lowercased\n if (!this.getLabel().toLowerCase().includes(data.name)) {\n return true;\n }\n }\n return false;\n },\n\n _shouldReactToFilter: function(data) {\n if (data.name && data.name.length > 1) {\n return true;\n }\n return false;\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * GitHub-like tag.\n * It has a message and a background color.\n */\nqx.Class.define(\"osparc.ui.basic.Tag\", {\n extend: qx.ui.basic.Label,\n /**\n * Constructor for the Tag element.\n * @param {osparc.data.model.Tag} tag Short text to be shown on the tag\n * @param {String} [filterGroupId] If present, clicking on the tab will dispatch a bus message with the\n * id ``GroupIdTagsTrigger`` to be subscribed by a filter.\n */\n construct: function(tag, filterGroupId) {\n this.base(arguments);\n\n if (tag) {\n tag.bind(\"name\", this, \"value\");\n tag.bind(\"color\", this, \"color\");\n }\n this.setFont(\"text-11\");\n\n if (filterGroupId) {\n this.setCursor(\"pointer\");\n this.addListener(\"tap\", e => {\n e.stopPropagation();\n qx.event.message.Bus.dispatchByName(osparc.utils.Utils.capitalize(filterGroupId, \"tags\", \"trigger\"), this.getValue());\n }, this);\n // Stop propagation of the pointer event in case the tag is inside a button that we don't want to trigger\n this.addListener(\"pointerdown\", e => e.stopPropagation());\n }\n },\n properties: {\n color: {\n check: \"Color\",\n apply: \"_applyColor\"\n },\n appearance: {\n init: \"tag\",\n refine: true\n }\n },\n members: {\n _applyColor: function(color) {\n this.setBackgroundColor(color);\n // Set the right color for the font\n const textColor = osparc.utils.Utils.getContrastedBinaryColor(color);\n this.setTextColor(textColor);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * View that shows template publishing sharing options:\n * - Private\n * - My organizations\n * - Product everyone\n */\n\nqx.Class.define(\"osparc.share.PublishTemplate\", {\n extend: qx.ui.core.Widget,\n\n /**\n * @param studyData {Object} Object containing part or the entire serialized Study Data\n */\n construct: function(studyData) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this.__potentialTemplateData = osparc.data.model.Study.deepCloneStudyObject(studyData);\n\n this.__selectedCollabs = new qx.ui.container.Composite(new qx.ui.layout.HBox());\n this.__updateAccessRights();\n\n this.__buildLayout();\n },\n\n members: {\n __potentialTemplateData: null,\n __selectedCollabs: null,\n\n __buildLayout: function() {\n // mark it us template, so that testers can share it with product everyone\n this.__potentialTemplateData[\"resourceType\"] = \"template\";\n const addCollaborators = new osparc.share.AddCollaborators(this.__potentialTemplateData, true);\n addCollaborators.getChildControl(\"intro-text\").set({\n value: this.tr(\"Make the \") + osparc.product.Utils.getTemplateAlias() + this.tr(\" also accessible to:\"),\n font: \"text-14\"\n });\n addCollaborators.getChildControl(\"share-with\").setLabel(this.tr(\"Publish for...\"));\n this._add(addCollaborators);\n\n this._add(this.__selectedCollabs);\n\n addCollaborators.addListener(\"addCollaborators\", e => {\n const gids = e.getData();\n if (gids.length) {\n const potentialCollaborators = osparc.store.Groups.getInstance().getPotentialCollaborators(false, true)\n const currentGids = this.getSelectedGroups();\n gids.forEach(gid => {\n if (gid in potentialCollaborators && !currentGids.includes(gid)) {\n const collabButton = new qx.ui.toolbar.Button(potentialCollaborators[gid].getLabel(), \"@MaterialIcons/close/12\");\n collabButton.gid = gid;\n this.__selectedCollabs.add(collabButton);\n collabButton.addListener(\"execute\", () => {\n this.__selectedCollabs.remove(collabButton);\n this.__updateAccessRights();\n });\n }\n });\n this.__updateAccessRights();\n }\n }, this);\n },\n\n __updateAccessRights: function() {\n // these \"accessRights\" are only used for repopulating potential collaborators in the AddCollaborators -> NewCollaboratorsManager\n const myGroupId = osparc.auth.Data.getInstance().getGroupId();\n this.__potentialTemplateData[\"accessRights\"] = {};\n this.__potentialTemplateData[\"accessRights\"][myGroupId] = osparc.share.CollaboratorsStudy.getOwnerAccessRight();\n this.getSelectedGroups().forEach(gid => this.__potentialTemplateData[\"accessRights\"][gid] = osparc.share.CollaboratorsStudy.getViewerAccessRight());\n },\n\n getSelectedGroups: function() {\n const groupIDs = [];\n this.__selectedCollabs.getChildren().forEach(selectedCollab => groupIDs.push(selectedCollab.gid));\n return groupIDs;\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Andreas Ecker (ecker)\n\n************************************************************************ */\n\n/**\n * A menubar button\n */\nqx.Class.define(\"qx.ui.menubar.Button\",\n{\n extend : qx.ui.form.MenuButton,\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n construct : function(label, icon, menu)\n {\n this.base(arguments, label, icon, menu);\n\n this.removeListener(\"keydown\", this._onKeyDown);\n this.removeListener(\"keyup\", this._onKeyUp);\n },\n\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n appearance :\n {\n refine : true,\n init : \"menubar-button\"\n },\n\n show :\n {\n refine : true,\n init : \"inherit\"\n },\n\n focusable :\n {\n refine : true,\n init : false\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n /*\n ---------------------------------------------------------------------------\n HELPER METHODS\n ---------------------------------------------------------------------------\n */\n\n /**\n * Inspects the parent chain to find the MenuBar\n *\n * @return {qx.ui.menubar.MenuBar} MenuBar instance or null
.\n */\n getMenuBar : function()\n {\n var parent = this;\n while (parent)\n {\n /* this method is also used by toolbar.MenuButton, so we need to check\n for a ToolBar instance. */\n if (parent instanceof qx.ui.toolbar.ToolBar) {\n return parent;\n }\n\n parent = parent.getLayoutParent();\n }\n\n return null;\n },\n\n\n // overridden\n open : function(selectFirst) {\n this.base(arguments, selectFirst);\n\n var menubar = this.getMenuBar();\n if (menubar) {\n menubar._setAllowMenuOpenHover(true);\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n EVENT LISTENERS\n ---------------------------------------------------------------------------\n */\n\n /**\n * Listener for visibility property changes of the attached menu\n *\n * @param e {qx.event.type.Data} Property change event\n */\n _onMenuChange : function(e)\n {\n var menu = this.getMenu();\n var menubar = this.getMenuBar();\n\n if (menu.isVisible())\n {\n this.addState(\"pressed\");\n\n // Sync with open menu property\n if (menubar) {\n menubar.setOpenMenu(menu);\n }\n }\n else\n {\n this.removeState(\"pressed\");\n\n // Sync with open menu property\n if (menubar && menubar.getOpenMenu() == menu) {\n menubar.resetOpenMenu();\n menubar._setAllowMenuOpenHover(false);\n }\n }\n },\n\n // overridden\n _onPointerUp : function(e)\n {\n this.base(arguments, e);\n\n // Set state 'pressed' to visualize that the menu is open.\n var menu = this.getMenu();\n if (menu && menu.isVisible() && !this.hasState(\"pressed\")) {\n this.addState(\"pressed\");\n }\n },\n\n /**\n * Event listener for pointerover event\n *\n * @param e {qx.event.type.Pointer} pointerover event object\n */\n _onPointerOver : function(e)\n {\n // Add hovered state\n this.addState(\"hovered\");\n\n // Open submenu\n if (this.getMenu() && e.getPointerType() == \"mouse\")\n {\n var menubar = this.getMenuBar();\n\n if (menubar && menubar._isAllowMenuOpenHover())\n {\n // Hide all open menus\n qx.ui.menu.Manager.getInstance().hideAll();\n\n // Set it again, because hideAll remove it.\n menubar._setAllowMenuOpenHover(true);\n\n // Then show the attached menu\n if (this.isEnabled()) {\n this.open();\n }\n }\n }\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2019 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * Container for GridButtons and ListButtons (CardBase, FolderButtonBase and WorkspaceButtonBase), with some convenient methods.\n */\nqx.Class.define(\"osparc.dashboard.CardContainer\", {\n extend: qx.ui.container.Composite,\n\n construct: function() {\n const spacing = osparc.dashboard.GridButtonBase.SPACING;\n const layout = new qx.ui.layout.Flow(spacing, spacing);\n this.base(arguments, layout);\n },\n\n events: {\n \"changeSelection\": \"qx.event.type.Data\",\n \"changeVisibility\": \"qx.event.type.Data\"\n },\n\n statics: {\n isValidCard: function(widget) {\n return (\n widget instanceof osparc.dashboard.CardBase ||\n widget instanceof osparc.dashboard.FolderButtonBase ||\n widget instanceof osparc.dashboard.WorkspaceButtonBase\n );\n },\n },\n\n members: {\n __lastSelectedIdx: null,\n\n // overridden\n add: function(child, options) {\n if (this.self().isValidCard(child)) {\n if (osparc.dashboard.ResourceContainerManager.cardExists(this, child)) {\n return;\n }\n this.base(arguments, child, options);\n child.addListener(\"changeSelected\", () => this.fireDataEvent(\"changeSelection\", this.getSelection()), this);\n child.addListener(\"changeVisibility\", () => this.fireDataEvent(\"changeVisibility\", this.__getVisibles()), this);\n } else {\n console.error(\"CardContainer only allows CardBase as its children.\");\n }\n },\n\n /**\n * Resets the selection so no toggle button is checked.\n */\n resetSelection: function() {\n this.getChildren().map(button => button.setSelected(false));\n this.__lastSelectedIdx = null;\n this.fireDataEvent(\"changeSelection\", this.getSelection());\n },\n\n /**\n * Returns an array that contains all buttons that are checked.\n */\n getSelection: function() {\n return this.getChildren().filter(button => button.getSelected());\n },\n\n /**\n * Returns an array that contains all visible buttons.\n */\n __getVisibles: function() {\n return this.getChildren().filter(button => button.isVisible());\n },\n\n /**\n * Sets the given button's select prop to true (checks it) and unchecks all other buttons. If the given button is not present,\n * every button in the container will get a unselected (unchecked).\n * @param {qx.ui.form.CardBase} child Button that will be checked\n */\n selectOne: function(child) {\n this.getChildren().map(button => button.setSelected(button === child));\n this.setLastSelectedIndex(this.getIndex(child));\n },\n\n /**\n * Gets the index in the container of the given button.\n * @param {qx.ui.form.CardBase} child Button that will be checked\n */\n getIndex: function(child) {\n return this.getChildren().findIndex(button => button === child);\n },\n\n getLastSelectedIndex: function() {\n return this.__lastSelectedIdx;\n },\n\n setLastSelectedIndex: function(idx) {\n if (idx >= 0 && idx < this.getChildren().length) {\n this.__lastSelectedIdx = idx;\n }\n },\n\n setLastSelectedItem: function(item) {\n this.setLastSelectedIndex(this.getIndex(item));\n },\n\n areMoreResourcesRequired: function(loadingResourcesBtn) {\n if (this.nextRequest !== null && loadingResourcesBtn && osparc.utils.Utils.isWidgetOnScreen(loadingResourcesBtn)) {\n return true;\n }\n return false;\n },\n\n removeCard: function(key) {\n const cards = this.getChildren();\n for (let i=0; i expanded ? this.tr(\"Show less\") : this.tr(\"Show all\")\n });\n showAllButton.addListener(\"execute\", () => this.setExpanded(!this.isExpanded()));\n },\n\n properties: {\n groupId: {\n check: \"String\",\n init: null,\n nullable: false\n },\n\n headerLabel: {\n check: \"String\",\n apply: \"__updateHeaderLabel\"\n },\n\n headerIcon: {\n check: \"String\",\n apply: \"__updateHeaderIcon\"\n },\n\n headerColor: {\n check: \"String\",\n apply: \"__updateHeaderColor\"\n },\n\n expanded: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n event: \"changeExpanded\",\n apply: \"__applyExpanded\"\n }\n },\n\n members: {\n __showAllButton: null,\n __contentContainer: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"header-bar\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox());\n this._addAt(control, 0);\n break;\n case \"header\": {\n control = new qx.ui.basic.Atom().set({\n font: \"text-14\",\n gap: 10,\n padding: 10,\n paddingBottom: 5,\n allowGrowX: false\n });\n control.getChildControl(\"icon\").set({\n scale: true,\n allowGrowX: true,\n allowGrowY: true,\n allowShrinkX: true,\n allowShrinkY: true,\n maxWidth: 32,\n maxHeight: 32\n });\n control.getChildControl(\"label\").set({\n rich: true,\n wrap: true\n })\n control.getContentElement().setStyles({\n \"border-top-left-radius\": \"4px\",\n \"border-top-right-radius\": \"4px\"\n });\n const headerBar = this.getChildControl(\"header-bar\");\n headerBar.addAt(control, 0);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __createContentContainer: function() {\n let contentContainer = null;\n const expanded = this.isExpanded();\n const showAllBtn = this.__showAllButton;\n if (expanded) {\n contentContainer = new osparc.dashboard.CardContainer();\n showAllBtn.show();\n } else {\n const spacing = osparc.dashboard.GridButtonBase.SPACING;\n contentContainer = new osparc.widget.SlideBar(spacing);\n contentContainer.setButtonsWidth(30);\n\n // show showAllBtn only if slidebar is full\n const buttonBackward = contentContainer.getChildControl(\"button-backward\");\n const buttonForward = contentContainer.getChildControl(\"button-forward\");\n buttonBackward.bind(\"visibility\", showAllBtn, \"visibility\", {\n converter: visibility => (visibility === \"visible\" || buttonForward.isVisible()) ? \"visible\" : \"excluded\"\n });\n buttonForward.bind(\"visibility\", showAllBtn, \"visibility\", {\n converter: visibility => (visibility === \"visible\" || buttonBackward.isVisible()) ? \"visible\" : \"excluded\"\n });\n }\n contentContainer.set({\n padding: 5,\n allowGrowX: false\n });\n this._addAt(contentContainer, 1, {\n flex: 1\n });\n return contentContainer;\n },\n\n __updateHeaderLabel: function(label) {\n const atom = this.getChildControl(\"header\");\n atom.setLabel(label);\n },\n\n __updateHeaderIcon: function(icon) {\n const atom = this.getChildControl(\"header\");\n atom.setIcon(icon);\n },\n\n __updateHeaderColor: function(color) {\n const atom = this.getChildControl(\"header\");\n atom.getChildControl(\"icon\").setTextColor(color);\n },\n\n __applyExpanded: function() {\n const children = this.__contentContainer.getChildren();\n this._remove(this.__contentContainer);\n\n this.__contentContainer = this.__createContentContainer();\n for (let i=children.length-1; i>=0; i--) {\n this.add(children[i], 0);\n }\n },\n\n getContentContainer: function() {\n return this.__contentContainer;\n },\n\n // overridden\n add: function(child, idx) {\n if (osparc.dashboard.CardContainer.isValidCard(child)) {\n const container = this.getContentContainer();\n if (osparc.dashboard.ResourceContainerManager.cardExists(container, child)) {\n return;\n }\n child.addListener(\"changeVisibility\", () => this.__childVisibilityChanged(), this);\n if (idx === undefined) {\n container.add(child);\n } else {\n container.addAt(child, idx);\n }\n this.__childVisibilityChanged();\n } else {\n console.error(\"CardContainer only allows CardBase as its children.\");\n }\n },\n\n getCards: function() {\n return this.__contentContainer.getChildren();\n },\n\n removeCard: function(key) {\n const cards = this.getCards();\n for (let i=0; i child.isVisible());\n this.set({\n visibility: anyVis ? \"visible\" : \"excluded\"\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget used for displaying a Workspace in the Study Browser\n *\n */\n\nqx.Class.define(\"osparc.dashboard.WorkspaceButtonItem\", {\n extend: osparc.dashboard.WorkspaceButtonBase,\n\n /**\n * @param workspace {osparc.data.model.Workspace}\n */\n construct: function(workspace) {\n this.base(arguments);\n\n this.set({\n appearance: \"pb-listitem\"\n });\n\n this.addListener(\"tap\", this.__itemSelected, this);\n\n this.setPriority(osparc.dashboard.CardBase.CARD_PRIORITY.ITEM);\n\n this.set({\n workspace: workspace\n });\n },\n\n events: {\n \"workspaceSelected\": \"qx.event.type.Data\",\n \"workspaceUpdated\": \"qx.event.type.Data\",\n \"trashWorkspaceRequested\": \"qx.event.type.Data\",\n \"untrashWorkspaceRequested\": \"qx.event.type.Data\",\n \"deleteWorkspaceRequested\": \"qx.event.type.Data\",\n },\n\n properties: {\n workspace: {\n check: \"osparc.data.model.Workspace\",\n nullable: false,\n init: null,\n apply: \"__applyWorkspace\"\n },\n\n workspaceId: {\n check: \"Number\",\n nullable: false\n },\n\n title: {\n check: \"String\",\n nullable: true,\n apply: \"__applyTitle\"\n },\n\n description: {\n check: \"String\",\n nullable: true,\n apply: \"__applyDescription\"\n },\n\n myAccessRights: {\n check: \"Object\",\n nullable: true,\n apply: \"__applyMyAccessRights\"\n },\n\n accessRights: {\n check: \"Object\",\n nullable: true,\n apply: \"__applyAccessRights\"\n },\n\n modifiedAt: {\n check: \"Date\",\n nullable: true,\n apply: \"__applyModifiedAt\"\n },\n\n trashedAt: {\n check: \"Date\",\n nullable: true,\n apply: \"__applyTrashedAt\"\n },\n\n trashedBy: {\n check: \"Number\",\n nullable: true,\n apply: \"__applyTrashedBy\"\n },\n },\n\n statics: {\n MENU_BTN_DIMENSIONS: 24\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n let layout;\n switch (id) {\n case \"shared-icon\":\n control = new qx.ui.basic.Image().set({\n alignY: \"middle\",\n allowGrowX: false,\n allowShrinkX: false\n });\n layout = this.getChildControl(\"header\");\n layout.addAt(control, osparc.dashboard.WorkspaceButtonBase.HPOS.SHARED);\n break;\n case \"menu-button\":\n control = new qx.ui.form.MenuButton().set({\n appearance: \"form-button-outlined\",\n minWidth: this.self().MENU_BTN_DIMENSIONS,\n minHeight: this.self().MENU_BTN_DIMENSIONS,\n width: this.self().MENU_BTN_DIMENSIONS,\n height: this.self().MENU_BTN_DIMENSIONS,\n padding: [0, 8, 0, 8],\n alignX: \"center\",\n alignY: \"middle\",\n icon: \"@FontAwesome5Solid/ellipsis-v/14\",\n focusable: false\n });\n // make it circular\n control.getContentElement().setStyles({\n \"border-radius\": `${this.self().MENU_BTN_DIMENSIONS / 2}px`\n });\n osparc.utils.Utils.setIdToWidget(control, \"workspaceItemMenuButton\");\n layout = this.getChildControl(\"header\");\n layout.addAt(control, osparc.dashboard.WorkspaceButtonBase.HPOS.MENU);\n break;\n case \"date-by\":\n control = new osparc.ui.basic.DateAndBy();\n layout = this.getChildControl(\"footer\");\n layout.addAt(control, osparc.dashboard.WorkspaceButtonBase.FPOS.DATE);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __applyWorkspace: function(workspace) {\n this.set({\n cardKey: \"workspace-\" + workspace.getWorkspaceId()\n });\n workspace.bind(\"workspaceId\", this, \"workspaceId\");\n workspace.bind(\"name\", this, \"title\");\n workspace.bind(\"description\", this, \"description\");\n workspace.bind(\"thumbnail\", this, \"thumbnail\", {\n converter: thumbnail => thumbnail ? thumbnail : osparc.store.Workspaces.iconPath(-1)\n });\n workspace.bind(\"accessRights\", this, \"accessRights\");\n workspace.bind(\"modifiedAt\", this, \"modifiedAt\");\n workspace.bind(\"trashedAt\", this, \"trashedAt\");\n workspace.bind(\"trashedBy\", this, \"trashedBy\");\n workspace.bind(\"myAccessRights\", this, \"myAccessRights\");\n\n osparc.utils.Utils.setIdToWidget(this, \"workspaceItem_\" + workspace.getWorkspaceId());\n },\n\n __applyTitle: function(value) {\n const label = this.getChildControl(\"title\");\n label.setValue(value);\n this.__updateTooltip();\n },\n\n __applyDescription: function() {\n this.__updateTooltip();\n },\n\n __applyMyAccessRights: function(value) {\n if (value && value[\"delete\"]) {\n const menuButton = this.getChildControl(\"menu-button\");\n menuButton.setVisibility(\"visible\");\n\n const menu = new qx.ui.menu.Menu().set({\n appearance: \"menu-wider\",\n position: \"bottom-right\",\n });\n\n const studyBrowserContext = osparc.store.Store.getInstance().getStudyBrowserContext();\n if (\n studyBrowserContext === \"search\" ||\n studyBrowserContext === \"workspaces\"\n ) {\n const editButton = new qx.ui.menu.Button(this.tr(\"Edit...\"), \"@FontAwesome5Solid/pencil-alt/12\");\n editButton.addListener(\"execute\", () => {\n const workspace = this.getWorkspace();\n const workspaceEditor = new osparc.editor.WorkspaceEditor(workspace);\n const title = this.tr(\"Edit Workspace\");\n const win = osparc.ui.window.Window.popUpInWindow(workspaceEditor, title, 300, 150);\n workspaceEditor.addListener(\"workspaceUpdated\", () => {\n win.close();\n this.fireDataEvent(\"workspaceUpdated\", workspace.getWorkspaceId());\n });\n workspaceEditor.addListener(\"cancel\", () => win.close());\n });\n menu.add(editButton);\n\n const shareButton = new qx.ui.menu.Button(this.tr(\"Share...\"), \"@FontAwesome5Solid/share-alt/12\");\n shareButton.addListener(\"execute\", () => this.__openShareWith(), this);\n menu.add(shareButton);\n\n menu.addSeparator();\n\n const trashButton = new qx.ui.menu.Button(this.tr(\"Delete\"), \"@FontAwesome5Solid/trash/12\");\n trashButton.addListener(\"execute\", () => this.__trashWorkspaceRequested(), this);\n menu.add(trashButton);\n } else if (studyBrowserContext === \"trash\") {\n const restoreButton = new qx.ui.menu.Button(this.tr(\"Restore\"), \"@MaterialIcons/restore_from_trash/16\");\n restoreButton.addListener(\"execute\", () => this.fireDataEvent(\"untrashWorkspaceRequested\", this.getWorkspace()), this);\n menu.add(restoreButton);\n\n menu.addSeparator();\n\n const deleteButton = new qx.ui.menu.Button(this.tr(\"Delete permanently\"), \"@FontAwesome5Solid/trash/12\");\n osparc.utils.Utils.setIdToWidget(deleteButton, \"deleteWorkspaceMenuItem\");\n deleteButton.addListener(\"execute\", () => this.__deleteWorkspaceRequested(), this);\n menu.add(deleteButton);\n }\n menuButton.setMenu(menu);\n }\n },\n\n __applyAccessRights: function(value) {\n if (value && Object.keys(value).length) {\n const shareIcon = this.getChildControl(\"shared-icon\");\n shareIcon.addListener(\"tap\", e => {\n e.stopPropagation();\n this.__openShareWith();\n }, this);\n shareIcon.addListener(\"pointerdown\", e => e.stopPropagation());\n osparc.dashboard.CardBase.populateShareIcon(shareIcon, value);\n }\n },\n\n __applyModifiedAt: function(value) {\n if (value) {\n const dateBy = this.getChildControl(\"date-by\");\n dateBy.set({\n date: value,\n toolTipText: this.tr(\"Last modified\"),\n })\n }\n },\n\n __applyTrashedAt: function(value) {\n if (value && value.getTime() !== new Date(0).getTime()) {\n const dateBy = this.getChildControl(\"date-by\");\n dateBy.set({\n date: value,\n toolTipText: this.tr(\"Deleted\"),\n });\n }\n },\n\n __applyTrashedBy: function(gid) {\n if (gid) {\n const dateBy = this.getChildControl(\"date-by\");\n dateBy.setGroupId(gid);\n }\n },\n\n __updateTooltip: function() {\n const toolTipText = this.getTitle() + (this.getDescription() ? \"
\" + this.getDescription() : \"\");\n const title = this.getChildControl(\"title\");\n title.set({\n toolTipText\n })\n },\n\n __itemSelected: function() {\n const studyBrowserContext = osparc.store.Store.getInstance().getStudyBrowserContext();\n // do not allow selecting workspace\n if (studyBrowserContext !== \"trash\") {\n this.fireDataEvent(\"workspaceSelected\", this.getWorkspaceId());\n }\n },\n\n __openShareWith: function() {\n const permissionsView = new osparc.share.CollaboratorsWorkspace(this.getWorkspace());\n const title = this.tr(\"Share Workspace\");\n osparc.ui.window.Window.popUpInWindow(permissionsView, title, 500, 400);\n permissionsView.addListener(\"updateAccessRights\", () => this.__applyAccessRights(this.getWorkspace().getAccessRights()), this);\n },\n\n __trashWorkspaceRequested: function() {\n const trashDays = osparc.store.StaticInfo.getInstance().getTrashRetentionDays();\n let msg = this.tr(\"Are you sure you want to delete the Workspace and all its content?\");\n msg += \"
\" + this.tr(\"It will be permanently deleted after \") + trashDays + \" days.\";\n const confirmationWin = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Delete\"),\n confirmText: this.tr(\"Delete\"),\n confirmAction: \"delete\"\n });\n confirmationWin.center();\n confirmationWin.open();\n confirmationWin.addListener(\"close\", () => {\n if (confirmationWin.getConfirmed()) {\n this.fireDataEvent(\"trashWorkspaceRequested\", this.getWorkspaceId());\n }\n }, this);\n },\n\n __deleteWorkspaceRequested: function() {\n let msg = this.tr(\"Are you sure you want to delete\") + \" \" + this.getTitle() + \"?\";\n msg += \"
\" + this.tr(\"All the content of the workspace will be deleted.\");\n const confirmationWin = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Delete Workspace\"),\n confirmText: this.tr(\"Delete permanently\"),\n confirmAction: \"delete\"\n });\n osparc.utils.Utils.setIdToWidget(confirmationWin.getConfirmButton(), \"confirmDeleteWorkspaceButton\");\n confirmationWin.center();\n confirmationWin.open();\n confirmationWin.addListener(\"close\", () => {\n if (confirmationWin.getConfirmed()) {\n this.fireDataEvent(\"deleteWorkspaceRequested\", this.getWorkspaceId());\n }\n }, this);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget used for displaying a Folder in the Study Browser\n *\n */\n\nqx.Class.define(\"osparc.dashboard.FolderButtonItem\", {\n extend: osparc.dashboard.FolderButtonBase,\n\n /**\n * @param folder {osparc.data.model.Folder}\n */\n construct: function(folder) {\n this.base(arguments);\n\n this.set({\n appearance: \"pb-study\"\n });\n\n this.addListener(\"tap\", this.__itemSelected, this);\n\n this.setPriority(osparc.dashboard.CardBase.CARD_PRIORITY.ITEM);\n\n this.set({\n folder: folder\n });\n },\n\n events: {\n \"folderSelected\": \"qx.event.type.Data\",\n \"folderUpdated\": \"qx.event.type.Data\",\n \"moveFolderToRequested\": \"qx.event.type.Data\",\n \"trashFolderRequested\": \"qx.event.type.Data\",\n \"untrashFolderRequested\": \"qx.event.type.Data\",\n \"deleteFolderRequested\": \"qx.event.type.Data\",\n \"changeContext\": \"qx.event.type.Data\",\n \"studyToFolderRequested\": \"qx.event.type.Data\",\n \"folderToFolderRequested\": \"qx.event.type.Data\",\n },\n\n properties: {\n folder: {\n check: \"osparc.data.model.Folder\",\n nullable: false,\n init: null,\n apply: \"__applyFolder\"\n },\n\n workspaceId: {\n check: \"Number\",\n nullable: true,\n apply: \"__applyWorkspaceId\"\n },\n\n folderId: {\n check: \"Number\",\n nullable: false\n },\n\n parentFolderId: {\n check: \"Number\",\n nullable: true,\n init: true\n },\n\n title: {\n check: \"String\",\n nullable: true,\n apply: \"__applyTitle\"\n },\n\n lastModified: {\n check: \"Date\",\n nullable: true,\n apply: \"__applyLastModified\"\n },\n\n trashedAt: {\n check: \"Date\",\n nullable: true,\n apply: \"__applyTrashedAt\"\n },\n\n trashedBy: {\n check: \"Number\",\n nullable: true,\n apply: \"__applyTrashedBy\"\n },\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"icon\": {\n control = new osparc.dashboard.FolderWithSharedIcon().set({\n anonymous: true,\n height: 40,\n padding: 5\n });\n this._add(control, osparc.dashboard.FolderButtonBase.POS.ICON);\n break;\n }\n case \"title\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\",\n });\n this._add(control, osparc.dashboard.FolderButtonBase.POS.TITLE);\n break;\n case \"date-by\":\n control = new osparc.ui.basic.DateAndBy();\n this._add(control, osparc.dashboard.FolderButtonBase.POS.SUBTITLE);\n break;\n case \"menu-button\": {\n control = new qx.ui.form.MenuButton().set({\n appearance: \"form-button-outlined\",\n padding: [0, 8],\n maxWidth: osparc.dashboard.ListButtonItem.MENU_BTN_DIMENSIONS,\n maxHeight: osparc.dashboard.ListButtonItem.MENU_BTN_DIMENSIONS,\n icon: \"@FontAwesome5Solid/ellipsis-v/14\",\n focusable: false\n });\n // make it circular\n control.getContentElement().setStyles({\n \"border-radius\": `${osparc.dashboard.ListButtonItem.MENU_BTN_DIMENSIONS / 2}px`\n });\n osparc.utils.Utils.setIdToWidget(control, \"folderItemMenuButton\");\n this._add(control, osparc.dashboard.FolderButtonBase.POS.MENU);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __applyFolder: function(folder) {\n this.getChildControl(\"icon\");\n this.set({\n cardKey: \"folder-\" + folder.getFolderId()\n });\n folder.bind(\"workspaceId\", this, \"workspaceId\");\n folder.bind(\"folderId\", this, \"folderId\");\n folder.bind(\"parentFolderId\", this, \"parentFolderId\");\n folder.bind(\"name\", this, \"title\");\n folder.bind(\"lastModified\", this, \"lastModified\");\n folder.bind(\"trashedAt\", this, \"trashedAt\");\n folder.bind(\"trashedBy\", this, \"trashedBy\");\n\n osparc.utils.Utils.setIdToWidget(this, \"folderItem_\" + folder.getFolderId());\n\n this.__addMenuButton();\n\n this.__attachDragHandlers();\n this.__attachDropHandlers();\n },\n\n __attachDragHandlers: function() {\n this.setDraggable(true);\n\n this.addListener(\"dragstart\", e => {\n const folderOrigin = this.getFolder();\n osparc.dashboard.DragDropHelpers.moveFolder.dragStart(e, this, folderOrigin);\n });\n\n this.addListener(\"dragend\", () => {\n osparc.dashboard.DragDropHelpers.dragEnd(this);\n });\n },\n\n __attachDropHandlers: function() {\n this.setDroppable(true);\n\n this.addListener(\"dragover\", e => {\n const folderDest = this.getFolder();\n if (e.supportsType(\"osparc-moveStudy\")) {\n osparc.dashboard.DragDropHelpers.moveStudy.dragOver(e, this, folderDest.getWorkspaceId(), folderDest.getFolderId());\n } else if (e.supportsType(\"osparc-moveFolder\")) {\n osparc.dashboard.DragDropHelpers.moveFolder.dragOver(e, this, folderDest.getWorkspaceId(), folderDest.getFolderId());\n }\n });\n\n this.addListener(\"dragleave\", () => {\n osparc.dashboard.DragDropHelpers.dragLeave(this);\n });\n\n this.addListener(\"dragend\", () => {\n osparc.dashboard.DragDropHelpers.dragLeave(this);\n });\n\n this.addListener(\"drop\", e => {\n const folderDest = this.getFolder();\n if (e.supportsType(\"osparc-moveStudy\")) {\n const studyToFolderData = osparc.dashboard.DragDropHelpers.moveStudy.drop(e, this, folderDest.getWorkspaceId(), folderDest.getFolderId());\n this.fireDataEvent(\"studyToFolderRequested\", studyToFolderData);\n } else if (e.supportsType(\"osparc-moveFolder\")) {\n const folderToFolderData = osparc.dashboard.DragDropHelpers.moveFolder.drop(e, this, folderDest.getWorkspaceId(), folderDest.getFolderId());\n this.fireDataEvent(\"folderToFolderRequested\", folderToFolderData);\n }\n });\n },\n\n __applyWorkspaceId: function(workspaceId) {\n const workspace = osparc.store.Workspaces.getInstance().getWorkspace(workspaceId);\n const accessRights = workspace ? workspace.getAccessRights() : {};\n if (accessRights && Object.keys(accessRights).length) {\n const shareIcon = this.getChildControl(\"icon\").getChildControl(\"shared-icon\");\n // if it's not shared don't show the share icon\n shareIcon.addListener(\"changeSource\", e => {\n const newSource = e.getData();\n shareIcon.set({\n visibility: newSource.includes(osparc.dashboard.CardBase.SHARE_ICON) ? \"hidden\" : \"visible\"\n });\n });\n osparc.dashboard.CardBase.populateShareIcon(shareIcon, accessRights);\n }\n },\n\n __applyTitle: function(value) {\n const label = this.getChildControl(\"title\");\n label.set({\n value,\n toolTipText: value,\n });\n },\n\n __applyLastModified: function(value) {\n if (value) {\n const dateBy = this.getChildControl(\"date-by\");\n dateBy.set({\n date: value,\n toolTipText: this.tr(\"Last modified\"),\n })\n }\n },\n\n __applyTrashedAt: function(value) {\n if (value && value.getTime() !== new Date(0).getTime()) {\n const dateBy = this.getChildControl(\"date-by\");\n dateBy.set({\n date: value,\n toolTipText: this.tr(\"Deleted\"),\n });\n }\n },\n\n __applyTrashedBy: function(gid) {\n if (gid) {\n const dateBy = this.getChildControl(\"date-by\");\n dateBy.setGroupId(gid);\n }\n },\n\n __addMenuButton: function() {\n const menuButton = this.getChildControl(\"menu-button\");\n menuButton.setVisibility(\"visible\");\n\n const menu = new qx.ui.menu.Menu().set({\n appearance: \"menu-wider\",\n position: \"bottom-right\",\n });\n\n const studyBrowserContext = osparc.store.Store.getInstance().getStudyBrowserContext();\n if (\n studyBrowserContext === \"search\" ||\n studyBrowserContext === \"studiesAndFolders\"\n ) {\n const editButton = new qx.ui.menu.Button(this.tr(\"Rename...\"), \"@FontAwesome5Solid/pencil-alt/12\");\n editButton.addListener(\"execute\", () => this.__editFolder(), this);\n menu.add(editButton);\n\n if (studyBrowserContext === \"search\") {\n const openLocationButton = new qx.ui.menu.Button(this.tr(\"Open location\"), \"@FontAwesome5Solid/external-link-alt/12\");\n openLocationButton.addListener(\"execute\", () => {\n const folder = this.getFolder();\n this.fireDataEvent(\"changeContext\", {\n context: \"studiesAndFolders\",\n workspaceId: folder.getWorkspaceId(),\n folderId: folder.getParentFolderId(),\n });\n }, this);\n menu.add(openLocationButton);\n }\n\n const moveToButton = new qx.ui.menu.Button(this.tr(\"Move to...\"), \"@FontAwesome5Solid/folder/12\");\n moveToButton.addListener(\"execute\", () => this.fireDataEvent(\"moveFolderToRequested\", this.getFolderId()), this);\n osparc.utils.Utils.setIdToWidget(moveToButton, \"moveFolderMenuItem\");\n menu.add(moveToButton);\n\n menu.addSeparator();\n\n const trashButton = new qx.ui.menu.Button(this.tr(\"Delete\"), \"@FontAwesome5Solid/trash/12\");\n trashButton.addListener(\"execute\", () => this.fireDataEvent(\"trashFolderRequested\", this.getFolderId()), this);\n menu.add(trashButton);\n } else if (studyBrowserContext === \"trash\") {\n const restoreButton = new qx.ui.menu.Button(this.tr(\"Restore\"), \"@MaterialIcons/restore_from_trash/16\");\n restoreButton.addListener(\"execute\", () => this.fireDataEvent(\"untrashFolderRequested\", this.getFolder()), this);\n menu.add(restoreButton);\n\n menu.addSeparator();\n\n const deleteButton = new qx.ui.menu.Button(this.tr(\"Delete\"), \"@FontAwesome5Solid/trash/12\");\n osparc.utils.Utils.setIdToWidget(deleteButton, \"deleteFolderMenuItem\");\n deleteButton.addListener(\"execute\", () => this.__deleteFolderRequested(), this);\n menu.add(deleteButton);\n }\n\n menuButton.setMenu(menu);\n },\n\n __itemSelected: function() {\n const studyBrowserContext = osparc.store.Store.getInstance().getStudyBrowserContext();\n // do not allow selecting workspace\n if (studyBrowserContext !== \"trash\") {\n this.fireDataEvent(\"folderSelected\", this.getFolderId());\n }\n },\n\n __editFolder: function() {\n const folder = this.getFolder();\n const newFolder = false;\n const folderEditor = new osparc.editor.FolderEditor(newFolder).set({\n label: folder.getName(),\n });\n const title = this.tr(\"Edit Folder\");\n const win = osparc.ui.window.Window.popUpInWindow(folderEditor, title, 300, 120);\n folderEditor.addListener(\"updateFolder\", () => {\n const newName = folderEditor.getLabel();\n const updateData = {\n \"name\": newName,\n \"parentFolderId\": folder.getParentFolderId(),\n };\n osparc.store.Folders.getInstance().putFolder(this.getFolderId(), updateData)\n .then(() => {\n folder.set({\n name: newName,\n });\n this.fireDataEvent(\"folderUpdated\", folder.getFolderId());\n })\n .catch(err => console.error(err));\n win.close();\n });\n folderEditor.addListener(\"cancel\", () => win.close());\n },\n\n __deleteFolderRequested: function() {\n const msg = this.tr(\"Are you sure you want to delete\") + \" \" + this.getTitle() + \"?\";\n const confirmationWin = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Delete Folder\"),\n confirmText: this.tr(\"Delete permanently\"),\n confirmAction: \"delete\"\n });\n osparc.utils.Utils.setIdToWidget(confirmationWin.getConfirmButton(), \"confirmDeleteFolderButton\");\n confirmationWin.center();\n confirmationWin.open();\n confirmationWin.addListener(\"close\", () => {\n if (confirmationWin.getConfirmed()) {\n this.fireDataEvent(\"deleteFolderRequested\", this.getFolderId());\n }\n }, this);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.WorkspacesAndFoldersTree\", {\n extend: qx.ui.tree.VirtualTree,\n\n construct: function() {\n const treeName = \"WorkspacesAndFoldersTree\";\n const rootData = {\n label: treeName,\n children: [],\n loaded: true,\n };\n const rootModel = qx.data.marshal.Json.createModel(rootData, true);\n\n this.__models = [];\n\n this.base(arguments, rootModel, \"label\", \"children\");\n\n this.set({\n openMode: \"dbltap\",\n decorator: \"no-border\",\n font: \"text-14\",\n hideRoot: true,\n contentPadding: 0,\n padding: 0,\n });\n\n this.__addMyWorkspace(rootModel);\n this.__addSharedWorkspaces(rootModel);\n\n this.__initTree();\n\n // preselect \"My Workspace\"\n this.contextChanged(\"studiesAndFolders\");\n\n osparc.store.Folders.getInstance().addListener(\"folderAdded\", e => {\n const folder = e.getData();\n this.__folderAdded(folder);\n }, this);\n\n osparc.store.Folders.getInstance().addListener(\"folderRemoved\", e => {\n const folder = e.getData();\n this.__folderRemoved(folder);\n }, this);\n\n osparc.store.Workspaces.getInstance().addListener(\"workspaceAdded\", e => {\n const workspace = e.getData();\n this.__addWorkspace(workspace);\n }, this);\n\n osparc.store.Workspaces.getInstance().addListener(\"workspaceRemoved\", e => {\n const workspace = e.getData();\n this.__workspaceRemoved(workspace);\n }, this);\n\n this.getSelection().addListener(\"change\", () => {\n const selection = this.getSelection();\n if (selection.getLength() > 0) {\n const item = selection.getItem(0);\n const workspaceId = item.getWorkspaceId();\n const folderId = item.getFolderId();\n this.fireDataEvent(\"locationChanged\", {\n workspaceId,\n folderId,\n });\n }\n }, this);\n },\n\n events: {\n \"openChanged\": \"qx.event.type.Event\",\n \"locationChanged\": \"qx.event.type.Data\",\n \"studyToFolderRequested\": \"qx.event.type.Data\",\n \"folderToFolderRequested\": \"qx.event.type.Data\",\n },\n\n properties: {\n currentWorkspaceId: {\n check: \"Number\",\n nullable: true,\n init: null,\n },\n\n currentFolderId: {\n check: \"Number\",\n nullable: true,\n init: null,\n },\n },\n\n members: {\n __models: null,\n\n __initTree: function() {\n const that = this;\n this.setDelegate({\n createItem: () => new osparc.dashboard.WorkspacesAndFoldersTreeItem(),\n bindItem: (c, item, id) => {\n c.bindDefaultProperties(item, id);\n c.bindProperty(\"\", \"open\", {\n converter(value, _model, _source, target) {\n const isOpen = target.isOpen();\n if (isOpen) {\n // eslint-disable-next-line no-underscore-dangle\n that.__populateFolder(value, value.getWorkspaceId(), value.getFolderId())\n .then(folderModels => {\n // load next level too\n folderModels.forEach(folderModel => {\n // eslint-disable-next-line no-underscore-dangle\n that.__populateFolder(folderModel, folderModel.getWorkspaceId(), folderModel.getFolderId());\n })\n });\n }\n that.fireEvent(\"openChanged\");\n return isOpen;\n },\n }, item, id);\n },\n configureItem: item => {\n item.addListener(\"changeModel\", e => {\n const model = e.getData();\n osparc.utils.Utils.setIdToWidget(item, `workspacesAndFoldersTreeItem_${model.getWorkspaceId()}_${model.getFolderId()}`);\n });\n [\n \"studyToFolderRequested\",\n \"folderToFolderRequested\",\n ].forEach(ev => {\n item.addListener(ev, e => this.fireDataEvent(ev, e.getData()));\n });\n }\n });\n\n this.setIconPath(\"icon\");\n this.setIconOptions({\n converter(value) {\n if (value === \"shared\") {\n return osparc.store.Workspaces.iconPath(18);\n } else if (value === \"home\") {\n return \"@FontAwesome5Solid/home/16\";\n }\n return \"@FontAwesome5Solid/folder/16\";\n },\n });\n },\n\n __createItemData: function(label, icon, workspaceId, folderId) {\n return {\n label,\n icon,\n workspaceId,\n folderId,\n loaded: false,\n children: [{\n label: \"Loading...\",\n }],\n };\n },\n\n __addMyWorkspace: function(rootModel) {\n const workspaceId = null;\n const folderId = null;\n const myWorkspaceData = this.__createItemData(\n \"My Workspace\",\n \"home\",\n workspaceId,\n folderId,\n );\n const myWorkspaceModel = qx.data.marshal.Json.createModel(myWorkspaceData, true);\n this.__models.push(myWorkspaceModel);\n rootModel.getChildren().append(myWorkspaceModel);\n\n // load next level too\n this.__populateFolder(myWorkspaceModel, workspaceId, folderId);\n },\n\n __addSharedWorkspaces: function(rootModel) {\n const workspaceId = -1;\n const folderId = null;\n const sharedWorkspaceData = this.__createItemData(\n \"Shared Workspaces\",\n \"shared\",\n workspaceId,\n folderId,\n );\n const sharedWorkspaceModel = qx.data.marshal.Json.createModel(sharedWorkspaceData, true);\n this.__models.push(sharedWorkspaceModel);\n rootModel.getChildren().append(sharedWorkspaceModel);\n\n osparc.store.Workspaces.getInstance().fetchWorkspaces()\n .then(workspaces => {\n sharedWorkspaceModel.setLoaded(true);\n sharedWorkspaceModel.getChildren().removeAll();\n workspaces.forEach(workspace => {\n this.__addWorkspace(workspace);\n });\n })\n .catch(console.error);\n },\n\n __addWorkspace: function(workspace) {\n const workspaceId = workspace.getWorkspaceId();\n const folderId = null;\n const workspaceData = this.__createItemData(\n \"\",\n \"shared\",\n workspaceId,\n folderId,\n );\n const workspaceModel = qx.data.marshal.Json.createModel(workspaceData, true);\n this.__models.push(workspaceModel);\n workspace.bind(\"name\", workspaceModel, \"label\");\n\n const sharedWorkspaceModel = this.__getModel(-1, null);\n sharedWorkspaceModel.getChildren().append(workspaceModel);\n sharedWorkspaceModel.getChildren().sort(((a, b) => {\n return a.getLabel().localeCompare(b.getLabel());\n }));\n\n // load next level too\n this.__populateFolder(workspaceModel, workspace.getWorkspaceId(), null);\n },\n\n __workspaceRemoved: function(workspace) {\n // remove it from the tree\n const sharedWorkspaceModel = this.__getModel(-1, null);\n const idx = sharedWorkspaceModel.getChildren().toArray().findIndex(w => workspace.getWorkspaceId() === w.getWorkspaceId());\n if (idx > -1) {\n sharedWorkspaceModel.getChildren().removeAt(idx);\n }\n\n // remove it from the cached models\n const modelFound = this.__getModel(workspace.getWorkspaceId(), null);\n if (modelFound) {\n const index = this.__models.indexOf(modelFound);\n if (index > -1) { // only splice array when item is found\n this.__models.splice(index, 1); // 2nd parameter means remove one item only\n }\n }\n },\n\n __addFolder: function(folder, parentModel) {\n const workspaceId = folder.getWorkspaceId();\n const folderData = this.__createItemData(\n \"\",\n workspaceId ? \"shared\" : \"folder\",\n workspaceId,\n folder.getFolderId(),\n );\n const folderModel = qx.data.marshal.Json.createModel(folderData, true);\n this.__models.push(folderModel);\n folder.bind(\"name\", folderModel, \"label\");\n parentModel.getChildren().append(folderModel);\n parentModel.getChildren().sort(((a, b) => {\n return a.getLabel().localeCompare(b.getLabel());\n }));\n return folderModel;\n },\n\n __populateFolder: function(model, workspaceId, folderId) {\n if (model.getLoaded()) {\n return new Promise(resolve => resolve(model.getChildren()));\n }\n return osparc.store.Folders.getInstance().fetchFolders(folderId, workspaceId)\n .then(folders => {\n model.setLoaded(true);\n model.getChildren().removeAll();\n const newFolderModels = [];\n folders.forEach(folder => {\n newFolderModels.push(this.__addFolder(folder, model));\n });\n return newFolderModels;\n });\n },\n\n __getModel: function(workspaceId, folderId) {\n return this.__models.find(mdl => mdl.getWorkspaceId() === workspaceId && mdl.getFolderId() === folderId);\n },\n\n __folderAdded: function(folder) {\n const parentModel = this.__getModel(folder.getWorkspaceId(), folder.getParentFolderId());\n if (parentModel) {\n this.__addFolder(folder, parentModel);\n }\n },\n\n __folderRemoved: function(folder) {\n // eslint-disable-next-line no-negated-condition\n const parentModel = this.__getModel(folder.getWorkspaceId(), folder.getParentFolderId());\n if (parentModel) {\n const idx = parentModel.getChildren().toArray().findIndex(c => \"getWorkspaceId\" in c && folder.getWorkspaceId() === c.getWorkspaceId() && folder.getFolderId() === c.getFolderId());\n if (idx > -1) {\n parentModel.getChildren().removeAt(idx);\n }\n }\n\n // remove it from the cached models\n const modelFound = this.__getModel(folder.getWorkspaceId(), folder.getFolderId());\n if (modelFound) {\n const index = this.__models.indexOf(modelFound);\n if (index > -1) { // only splice array when item is found\n this.__models.splice(index, 1); // 2nd parameter means remove one item only\n }\n }\n },\n\n contextChanged: function(context) {\n const selection = this.getSelection();\n if (selection) {\n selection.removeAll();\n }\n if (context === \"studiesAndFolders\" || context === \"workspaces\") {\n const workspaceId = context === \"workspaces\" ? -1 : this.getCurrentWorkspaceId();\n const folderId = this.getCurrentFolderId();\n const locationModel = this.__getModel(workspaceId, folderId);\n if (locationModel) {\n selection.push(locationModel);\n }\n }\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.SlideBase\", {\n extend: qx.ui.core.Widget,\n type: \"abstract\",\n\n construct: function(title) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n if (title) {\n const label = osparc.product.quickStart.Utils.createTitle(title);\n this._add(label);\n }\n\n this._populateCard();\n },\n\n members: {\n /**\n * @abstract\n */\n _populateCard: function() {\n throw new Error(\"Abstract method called!\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.tis.Welcome\", {\n extend: osparc.product.quickStart.SlideBase,\n\n construct: function() {\n const title = this.tr(\"Quick Start Guide\");\n this.base(arguments, title);\n },\n\n members: {\n _populateCard: function() {\n const welcomeText = this.tr(\"Welcome onboard \") + osparc.utils.Utils.capitalize(osparc.auth.Data.getInstance().getFriendlyUsername()) + \",\";\n const welcome = osparc.product.quickStart.Utils.createLabel(welcomeText);\n this._add(welcome);\n\n const introText = this.tr(\"\\\n This quick tutorial gives a basic overview of how the TI Planning Tool works and how to navigate through the interface.
\\\n We will focus on two main aspects, how to:
\\\n - Use the platform
\\\n - Get started with a New Plan
\\\n \");\n const intro = osparc.product.quickStart.Utils.createLabel(introText);\n this._add(intro);\n\n this._add(new qx.ui.core.Spacer(null, 50));\n\n const logo = new osparc.ui.basic.Logo().set({\n width: 260,\n height: 110\n });\n this._add(logo);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.tis.Dashboard\", {\n extend: osparc.product.quickStart.SlideBase,\n\n construct: function() {\n const title = this.tr(\"Dashboard\");\n this.base(arguments, title);\n },\n\n members: {\n _populateCard: function() {\n const introText = this.tr(\"\\\n The Dashboard is your private hub which contains all of your Plans as well as Plans that have been shared with you. \\\n From the Dashboard you are able to open your Plan or create a New Plan from scratch.\\\n \");\n const intro = osparc.product.quickStart.Utils.createLabel(introText);\n this._add(intro);\n\n const image = new qx.ui.basic.Image(\"https://itisfoundation.github.io/ti-planning-tool-manual/assets/quickguide/dashboard.png\");\n osparc.utils.Utils.forceRatioAfterLoad(image, \"width\", osparc.product.quickStart.SlidesBase.CONTENT_WIDTH);\n osparc.utils.Utils.openImageOnTap(image);\n this._add(image);\n\n const newPlanText = this.tr(\"\\\n 1) New Plan: by clicking on this card a new study will be created and open.\\\n The planning process will be presented in three successive steps that will be described more in detail in the following steps.\\\n \");\n const newPlan = osparc.product.quickStart.Utils.createLabel(newPlanText);\n this._add(newPlan);\n\n const otherPlansText = this.tr(\"\\\n 2) The other cards are TI Plans that were already created by you or shared with you. You can reopen them to do further analysis \\\n or by clicking three dots, on the top right corner, you can share, delete or check the details and metadata.\\\n \");\n const otherPlans = osparc.product.quickStart.Utils.createLabel(otherPlansText);\n this._add(otherPlans);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.tis.ElectrodeSelector\", {\n extend: osparc.product.quickStart.SlideBase,\n\n construct: function() {\n const title = this.tr(\"Electrode Selector\");\n this.base(arguments, title);\n },\n\n members: {\n _populateCard: function() {\n const text1 = this.tr(\"\\\n After pressing New Plan, three panels will be shown.\\\n \");\n const label1 = osparc.product.quickStart.Utils.createLabel(text1);\n this._add(label1);\n\n const text2 = this.tr(\"\\\n In a first step, the relevant species, stimulation target, electrode shapes, electrode dimensions and \\\n potential electrode locations (currently required to narrow down the huge exposure configuration search space) are selected.\\\n \");\n const label2 = osparc.product.quickStart.Utils.createLabel(text2);\n this._add(label2);\n\n const image = new qx.ui.basic.Image(\"https://itisfoundation.github.io/ti-planning-tool-manual/assets/quickguide/electrode_selector.gif\");\n osparc.utils.Utils.forceRatioAfterLoad(image, \"width\", osparc.product.quickStart.SlidesBase.CONTENT_WIDTH);\n osparc.utils.Utils.openImageOnTap(image);\n this._add(image);\n\n const text4 = this.tr(\"\\\n After finishing the set up, the big button on the top right will turn blue and by clicking on it you will submit the configuration.\\\n \");\n const label4 = osparc.product.quickStart.Utils.createLabel(text4);\n this._add(label4);\n\n const text5 = this.tr(\"\\\n Now the Arrow that says 'Next' can be pushed and the optimization will immediately start.\\\n \");\n const label5 = osparc.product.quickStart.Utils.createLabel(text5);\n this._add(label5);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.tis.PostPro\", {\n extend: osparc.product.quickStart.SlideBase,\n\n construct: function() {\n const title = this.tr(\"Post Processing\");\n this.base(arguments, title);\n },\n\n members: {\n _populateCard: function() {\n const text1 = this.tr(\"\\\n Based on extensive sweeping/optimization, a series of highly performing exposure parameters are proposed for the \\\n user to interactively explore, using predefined quantification metrics and visualizations. Identified \\\n conditions-of-interest can be documented and added to a report.\\\n \");\n const label1 = osparc.product.quickStart.Utils.createLabel(text1);\n this._add(label1);\n\n const text2 = this.tr(\"\\\n These metrics are reported in the Post Processing analysis environment for each electrode pair in the combination in \\\n a sorted tabular form that can be used to inspect the stimulation performances. By clicking on each pair, slice views \\\n of the maximum amplitude modulation (MAP) within the head are produced.
\\\n Pressing the `Load` button on the right, the selected configuration will be loaded.\\\n \");\n const label2 = osparc.product.quickStart.Utils.createLabel(text2);\n this._add(label2);\n\n const image1 = new qx.ui.basic.Image(\"https://itisfoundation.github.io/ti-planning-tool-manual/assets/quickguide/postpro_gui_1.gif\");\n osparc.utils.Utils.forceRatioAfterLoad(image1, \"width\", osparc.product.quickStart.SlidesBase.CONTENT_WIDTH);\n osparc.utils.Utils.openImageOnTap(image1);\n this._add(image1);\n\n const text3 = this.tr(\"\\\n Alternatively, slice views of the maximum interferential E-field can also be visualized and synchronous with the MAP slices \\\n to assess safety-related aspects (e.g., field intensity in proximity of the electrodes). These maps can be edited, thresholded, \\\n and saved offline for further inspection and analysis.
\\\n An isosurface of the TI stimulation distribution for the selected configuration can also be visualized within the head anatomy for inspection.\\\n \");\n const label3 = osparc.product.quickStart.Utils.createLabel(text3);\n this._add(label3);\n\n const image2 = new qx.ui.basic.Image(\"https://itisfoundation.github.io/ti-planning-tool-manual/assets/quickguide/postpro_gui_2.gif\");\n osparc.utils.Utils.forceRatioAfterLoad(image2, \"width\", osparc.product.quickStart.SlidesBase.CONTENT_WIDTH);\n osparc.utils.Utils.openImageOnTap(image2);\n this._add(image2);\n\n const text4 = this.tr(\"\\\n At the end of the optimization procedure, you can automatically generate a report.
\\\n It includes a summary of all the performance metrics calculated for each electrode pair combination, and a detailed performance report \\\n of the optimized electrode configuration. The report includes electrode placement, current intensities, performance metrics, TI and maximum \\\n high-frequency field distributions, cumulative dose histograms and all the graphs generated in the post-pro analysis tab.\\\n \");\n const label4 = osparc.product.quickStart.Utils.createLabel(text4);\n this._add(label4);\n\n const image3 = new qx.ui.basic.Image(\"https://itisfoundation.github.io/ti-planning-tool-manual/assets/quickguide/postpro_gui_3.gif\");\n osparc.utils.Utils.forceRatioAfterLoad(image3, \"width\", osparc.product.quickStart.SlidesBase.CONTENT_WIDTH);\n osparc.utils.Utils.openImageOnTap(image3);\n this._add(image3);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.tis.S4LPostPro\", {\n extend: osparc.product.quickStart.SlideBase,\n\n construct: function() {\n let title = \"\";\n if (osparc.product.Utils.isProduct(\"tiplite\")) {\n const notAvailableText = this.tr(\"Not available in\");\n title += ` (${notAvailableText} ${osparc.store.StaticInfo.getInstance().getDisplayName()})
`;\n }\n title += this.tr(\"Sim4Life Post Processing\");\n this.base(arguments, title);\n },\n\n members: {\n _populateCard: function() {\n if (osparc.product.Utils.isProduct(\"tiplite\")) {\n this.setEnabled(false);\n }\n const text1 = this.tr(\"\\\n Finally, and optionally, exposure conditions-of-interest can be visualized and analyzed freely, using the web-version of the \\\n Sim4Life (ZMT Zurich MedTech AG) computational life sciences platform.\\\n \");\n const label1 = osparc.product.quickStart.Utils.createLabel(text1);\n this._add(label1);\n\n const image = new qx.ui.basic.Image(\"https://itisfoundation.github.io/ti-planning-tool-manual/assets/quickguide/postpro_s4l.gif\");\n osparc.utils.Utils.forceRatioAfterLoad(image, \"width\", osparc.product.quickStart.SlidesBase.CONTENT_WIDTH);\n osparc.utils.Utils.openImageOnTap(image);\n this._add(image);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.tis.MoreInformation\", {\n extend: osparc.product.quickStart.SlideBase,\n\n construct: function() {\n const title = this.tr(\"For more information:\");\n this.base(arguments, title);\n },\n\n members: {\n _populateCard: function() {\n osparc.product.quickStart.tis.Slides.footerLinks().forEach(footerItem => {\n this._add(footerItem);\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.s4llite.Welcome\", {\n extend: osparc.product.quickStart.SlideBase,\n\n construct: function() {\n const title = this.tr(\"Quick Start Guide\");\n this.base(arguments, title);\n },\n\n members: {\n _populateCard: function() {\n const welcomeText = this.tr(\"Welcome onboard \") + osparc.utils.Utils.capitalize(osparc.auth.Data.getInstance().getFriendlyUsername()) + \",\";\n const welcome = osparc.product.quickStart.Utils.createLabel(welcomeText);\n this._add(welcome);\n\n const introText = this.tr(\"\\\n This quick user’s guide gives a short introduction to Sim4Life.lite. We will show:
\\\n - how to get started with a new project,
\\\n - how to get started from an existing tutorial project
\\\n - how to open Sim4Life desktop simulation projects in Sim4Life.lite,
\\\n - Sim4Life.lite features, limitations and user interface
\\\n
\\\n For more specific technical information, please refer to the Dashboard Manual and the Sim4Life.lite Manual.\\\n \");\n const intro = osparc.product.quickStart.Utils.createLabel(introText);\n this._add(intro);\n\n this._add(new qx.ui.core.Spacer(null, 50));\n\n const logo = new osparc.ui.basic.Logo().set({\n width: 260,\n height: 110\n });\n this._add(logo);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.s4llite.Dashboard\", {\n extend: osparc.product.quickStart.SlideBase,\n\n construct: function() {\n const title = this.tr(\"Dashboard - Projects & Tutorials\");\n this.base(arguments, title);\n },\n\n members: {\n _populateCard: function() {\n const introText = this.tr(\"\\\n The Dashboard is the place where Projects and Tutorials can be accessed and organized.\\\n \");\n const intro = osparc.product.quickStart.Utils.createLabel(introText);\n this._add(intro);\n\n const dashboardProjects = new qx.ui.basic.Image(\"https://raw.githubusercontent.com/ZurichMedTech/s4l-lite-manual/main/assets/dashboard/projects.png\").set({\n alignX: \"center\",\n scale: true,\n width: 637,\n height: 301\n });\n this._add(dashboardProjects);\n\n const newProjectText = this.tr(\"\\\n 1) Start Sim4Life.lite: Click the + Start Sim4Life.lite button to create a new project. This will start the user interface of Sim4Life.lite.\\\n \");\n const newProject = osparc.product.quickStart.Utils.createLabel(newProjectText);\n this._add(newProject);\n\n const otherProjectsText = this.tr(\"\\\n 2) Other cards: Each card represents an existing project (own projects, or projects shared by other users) that can be accessed and managed. \\\n Click on the card to open the project. Click the “three dots” in the upper right corner of the card to perform operations such as rename, share, delete.\\\n \");\n const otherProjects = osparc.product.quickStart.Utils.createLabel(otherProjectsText);\n this._add(otherProjects);\n\n const otherProjects2Text = this.tr(\"\\\n 3) TUTORIALS: A set of pre-built read-only tutorial projects with results is available to all Sim4Life.lite users. When a tutorial is selected, a \\\n copy is automatically created and added to the user’s Projects tab. This new copy is editable and can be shared.\\\n \");\n const otherProjects2 = osparc.product.quickStart.Utils.createLabel(otherProjects2Text);\n this._add(otherProjects2);\n\n const dashboardTutorials = new qx.ui.basic.Image(\"https://raw.githubusercontent.com/ZurichMedTech/s4l-lite-manual/main/assets/opensmash.gif\").set({\n alignX: \"center\",\n scale: true,\n width: 627,\n height: 311\n });\n this._add(dashboardTutorials);\n\n const importProjectsText = this.tr(\"\\\n 4) To open an existing desktop project in Sim4Life.lite: \\\n - Click the + Start Sim4Life.lite button to create a new project.
\\\n - Click the menu and select “File Browser…”.
\\\n - Click “Upload File” for the .smash project and select the file from your desktop. Repeat the same step, but this \\\n time select “Upload Folder” and then select the result folder from your desktop. Close the window
\\\n - Click the Menu again and click “Open” to select the file you just uploaded.
\\\n \");\n const importProjects = osparc.product.quickStart.Utils.createLabel(importProjectsText);\n this._add(importProjects);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.s4llite.S4LLiteSpecs\", {\n extend: osparc.product.quickStart.SlideBase,\n\n construct: function() {\n const title = this.tr(\"Sim4Life.lite: Features and Limitations\");\n this.base(arguments, title);\n },\n\n members: {\n _populateCard: function() {\n const introText = this.tr(\"\\\n Sim4Life.lite is a powerful web-based simulation platform that allows you to model and analyze real-world phenomena and to \\\n design complex technical devices in a validated environment. Sim4Life.lite has been created specifically for students to \\\n facilitate their understanding of computational modeling and simulations for various topics, ranging from wireless communication \\\n to medical applications. The access to Sim4Life.lite is available free of charge to students enrolled at registered universities.\\\n \");\n const intro = osparc.product.quickStart.Utils.createLabel(introText);\n this._add(intro);\n\n const featuresText = this.tr(\"\\\n Sim4Life.lite offers
\\\n - Framework (GUI, Modeling, Postprocessing)
\\\n - 3D modeling environment (based on the ACIS toolkit) and CAD translators
\\\n - Postprocessing and visualization of the simulation results (2D and 3D viewers, 2D planar slice, volume rendering, streamlines, surface fields on arbitrary 3D structures, radiation and far-field data)
\\\n - No restrictions on number of modeling objects
\\\n - Solvers & Tissue Models:
\\\n - P-EM-FDTD: Electromagnetics Full-Wave Solver
\\\n - P-EM-QS: Quasi-Static Electromagnetics Solver
\\\n - P-Thermal: Thermodynamic Solver
\\\n - P-Acoustics: Acoustics Solver
\\\n - T-Neuro: Neuronal Tissue Models
\\\n - Computational anatomical model Yoon-sun, the first Korean model of the IT’IS Virtual Population
\\\n - Material database
\\\n - Python and Jupyter Notebook scripting\\\n \");\n const features = osparc.product.quickStart.Utils.createLabel(featuresText);\n this._add(features);\n\n const limitationsText = this.tr(\"\\\n Limitations
\\\n The following limitations apply:
\\\n - Grid size of each simulation is limited to a maximum of 20 million grid cells
\\\n - High-Performance Computing is not supported:
\\\n - GPU acceleration is not available
\\\n - MPI multicore acceleration is not available
\\\n - 3rd-party tools are not available (e.g., MUSAIK, SYSSIM, IMAnalytics, etc…)
\\\n - Additional ViP models cannot be added
\\\n - 30 minutes idle time before logout
\\\n - Hardware resource limits
\\\n - 3 CPUs
\\\n - 3 GB of GPU RAM
\\\n - 5 GB disk space
\\\n - 16 GB RAM
\\\n \");\n const limitations = osparc.product.quickStart.Utils.createLabel(limitationsText);\n this._add(limitations);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.quickStart.s4llite.S4LLiteUI\", {\n extend: osparc.product.quickStart.SlideBase,\n\n construct: function() {\n const title = this.tr(\"Sim4Life.lite\");\n this.base(arguments, title);\n },\n\n members: {\n _populateCard: function() {\n const introText = this.tr(\"\\\n To check the Sim4Life.lite manual, please open a project and access the documentation via Help in the menu as shown below. Enjoy!\\\n \");\n const intro = osparc.product.quickStart.Utils.createLabel(introText);\n this._add(intro);\n\n const manualGif = new qx.ui.basic.Image(\"https://zurichmedtech.github.io/s4l-lite-manual/assets/s4l-docs.gif\").set({\n alignX: \"center\",\n scale: true,\n width: 626,\n height: 392\n });\n this._add(manualGif);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.tours.ListItem\", {\n extend: qx.ui.core.Widget,\n\n construct: function(tour) {\n this.base(arguments);\n\n const layout = new qx.ui.layout.Grid(5, 5);\n layout.setColumnFlex(0, 1);\n\n this._setLayout(layout);\n\n this.set({\n backgroundColor: \"material-button-background\",\n cursor: \"pointer\",\n allowGrowX: true,\n padding: 10\n });\n\n const titleLabel = new qx.ui.basic.Label(tour.name).set({\n font: \"text-14\",\n rich: true\n });\n this._add(titleLabel, {\n row: 0,\n column: 0\n });\n if (tour.description) {\n const descriptionLabel = new qx.ui.basic.Label(tour.description).set({\n font: \"text-13\",\n rich: true\n });\n this._add(descriptionLabel, {\n row: 1,\n column: 0\n });\n }\n const image = new qx.ui.basic.Image(\"@FontAwesome5Solid/arrow-right/14\").set({\n alignY: \"middle\"\n });\n this._add(image, {\n row: 0,\n column: 1,\n rowSpan: 2\n });\n\n this.addListener(\"pointerover\", () => this.setBackgroundColor(\"material-button-background-hovered\"), this);\n this.addListener(\"pointerout\", () => this.setBackgroundColor(\"material-button-background\"), this);\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2009 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Fabian Jakobs (fjakobs)\n\n************************************************************************ */\n\n/**\n * Timer, which accelerates after each interval. The initial delay and the\n * interval time can be set using the properties {@link #firstInterval}\n * and {@link #interval}. The {@link #interval} events will be fired with\n * decreasing interval times while the timer is running, until the {@link #minimum}\n * is reached. The {@link #decrease} property sets the amount of milliseconds\n * which will decreased after every firing.\n *\n * This class is e.g. used in the {@link qx.ui.form.RepeatButton} and\n * {@link qx.ui.form.HoverButton} widgets.\n * \n * NOTE: Instances of this class must be disposed of after use\n *\n */\nqx.Class.define(\"qx.event.AcceleratingTimer\",\n{\n extend : qx.core.Object,\n implement : [ qx.core.IDisposable ],\n\n construct : function()\n {\n this.base(arguments);\n\n this.__timer = new qx.event.Timer(this.getInterval());\n this.__timer.addListener(\"interval\", this._onInterval, this);\n },\n\n\n events :\n {\n /** This event if fired each time the interval time has elapsed */\n \"interval\" : \"qx.event.type.Event\"\n },\n\n\n properties :\n {\n /**\n * Interval used after the first run of the timer. Usually a smaller value\n * than the \"firstInterval\" property value to get a faster reaction.\n */\n interval :\n {\n check : \"Integer\",\n init : 100\n },\n\n /**\n * Interval used for the first run of the timer. Usually a greater value\n * than the \"interval\" property value to a little delayed reaction at the first\n * time.\n */\n firstInterval :\n {\n check : \"Integer\",\n init : 500\n },\n\n /** This configures the minimum value for the timer interval. */\n minimum :\n {\n check : \"Integer\",\n init : 20\n },\n\n /** Decrease of the timer on each interval (for the next interval) until minTimer reached. */\n decrease :\n {\n check : \"Integer\",\n init : 2\n }\n },\n\n\n members :\n {\n __timer : null,\n __currentInterval : null,\n\n /**\n * Reset and start the timer.\n */\n start : function()\n {\n this.__timer.setInterval(this.getFirstInterval());\n this.__timer.start();\n },\n\n\n /**\n * Stop the timer\n */\n stop : function()\n {\n this.__timer.stop();\n this.__currentInterval = null;\n },\n\n\n /**\n * Interval event handler\n */\n _onInterval : function()\n {\n this.__timer.stop();\n\n if (this.__currentInterval == null) {\n this.__currentInterval = this.getInterval();\n }\n\n this.__currentInterval = Math.max(\n this.getMinimum(),\n this.__currentInterval - this.getDecrease()\n );\n\n this.__timer.setInterval(this.__currentInterval);\n this.__timer.start();\n\n this.fireEvent(\"interval\");\n }\n },\n\n\n destruct : function() {\n this._disposeObjects(\"__timer\");\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2023 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\nqx.Class.define(\"osparc.desktop.credits.BuyCreditsInput\", {\n extend: qx.ui.core.Widget,\n\n construct(pricePerCredit, currencySymbol = \"$\") {\n this.base(arguments);\n\n if (isNaN(pricePerCredit)) {\n return;\n }\n\n this.__pricePerCredit = pricePerCredit;\n this.__currencySymbol = currencySymbol;\n this._setLayout(new qx.ui.layout.HBox(25).set({\n alignX: \"center\"\n }));\n this._render();\n },\n\n events: {\n \"input\": \"qx.event.type.Data\"\n },\n\n members: {\n __pricePerCredit: null,\n __currencySymbol: null,\n __priceInput: null,\n __amountInput: null,\n __totalInput: null,\n\n _render: function() {\n this._removeAll();\n\n const [priceContainer, priceInput] = this.__getInputAndLabel(this.tr(\"Credit Price\"), {\n readOnly: true,\n value: this.__pricePerCredit + this.__currencySymbol,\n paddingLeft: 0,\n paddingRight: 0\n });\n this._add(priceContainer);\n this.__priceInput = priceInput;\n\n const [amountContainer, amountInput] = this.__getSpinnerAndLabel(this.tr(\"Credit Amount\"));\n this.__amountInput = amountInput;\n this._add(amountContainer);\n\n const [totalContainer, totalInput] = this.__getInputAndLabel(this.tr(\"Total\"), {\n readOnly: true,\n value: \"-\",\n paddingLeft: 0,\n paddingRight: 0\n });\n this.__totalInput = totalInput;\n const amountChanged = value => {\n totalInput.setValue(value ? 1 * (value * this.__pricePerCredit).toFixed(2) + this.__currencySymbol : \"-\");\n this.fireDataEvent(\"input\", this.getValues());\n }\n amountInput.getChildControl(\"textfield\").addListener(\"input\", e => amountChanged(e.getData()));\n amountInput.addListener(\"changeValue\", e => amountChanged(e.getData()));\n this._add(totalContainer);\n\n osparc.store.Store.getInstance().getMinimumAmount()\n .then(minimum => {\n amountInput.set({\n maximum: 100000,\n minimum: Math.ceil(minimum/this.__pricePerCredit),\n value: Math.ceil(minimum/this.__pricePerCredit)\n });\n });\n },\n\n __getInputAndLabel: function(labelText, inputProps) {\n const container = new qx.ui.container.Composite(new qx.ui.layout.VBox(5).set({\n alignX: \"center\"\n }));\n const input = new qx.ui.form.TextField().set({\n appearance: \"appmotion-buy-credits-input\",\n textAlign: \"center\",\n width: 100,\n ...inputProps\n });\n const label = new qx.ui.basic.Label(labelText);\n container.add(input);\n container.add(label);\n return [container, input];\n },\n\n __getSpinnerAndLabel: function(labelText, inputProps) {\n const container = new qx.ui.container.Composite(new qx.ui.layout.VBox(5).set({\n alignX: \"center\"\n }));\n const input = new qx.ui.form.Spinner().set({\n appearance: \"appmotion-buy-credits-spinner\",\n width: 110,\n ...inputProps\n });\n input.getChildControl(\"textfield\").set({\n font: \"text-18\",\n textAlign: \"center\"\n });\n const label = new qx.ui.basic.Label(labelText);\n container.add(input);\n container.add(label);\n return [container, input];\n },\n\n getValues: function() {\n return {\n osparcCredits: this.__amountInput.getValue(),\n amountDollars: parseFloat(this.__totalInput.getValue().split(this.__currencySymbol)[0])\n }\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2023 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\nqx.Class.define(\"osparc.form.AppMotionSelect\", {\n extend: qx.ui.form.SelectBox,\n construct: function() {\n this.base(arguments);\n this.set({\n appearance: \"appmotion-buy-credits-select\"\n });\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Fabian Jakobs (fjakobs)\n\n************************************************************************ */\n\n/**\n * Generic escaping and unescaping of DOM strings.\n *\n * {@link qx.bom.String} for (un)escaping of HTML strings.\n * {@link qx.xml.String} for (un)escaping of XML strings.\n */\nqx.Bootstrap.define(\"qx.util.StringEscape\",\n{\n statics :\n {\n /**\n * generic escaping method\n *\n * @param str {String} string to escape\n * @param charCodeToEntities {Map} entity to charcode map\n * @return {String} escaped string\n */\n escape : function(str, charCodeToEntities)\n {\n var entity, result = \"\";\n\n for (var i=0, l=str.length; i 0x7F) {\n entity = \"\" + code + \";\";\n } else {\n entity = chr;\n }\n }\n\n result += entity;\n }\n\n return result;\n },\n\n\n /**\n * generic unescaping method\n *\n * @param str {String} string to unescape\n * @param entitiesToCharCode {Map} charcode to entity map\n * @return {String} unescaped string\n */\n unescape : function(str, entitiesToCharCode)\n {\n return str.replace(/&[#\\w]+;/gi, function(entity)\n {\n var chr = entity;\n var entity = entity.substring(1, entity.length - 1);\n var code = entitiesToCharCode[entity];\n\n if (code) {\n chr = String.fromCharCode(code);\n }\n else\n {\n if (entity.charAt(0) == '#')\n {\n if (entity.charAt(1).toUpperCase() == 'X')\n {\n code = entity.substring(2);\n\n // match hex number\n if (code.match(/^[0-9A-Fa-f]+$/gi)) {\n chr = String.fromCharCode(parseInt(code, 16));\n }\n }\n else\n {\n code = entity.substring(1);\n\n // match integer\n if (code.match(/^\\d+$/gi)) {\n chr = String.fromCharCode(parseInt(code, 10));\n }\n }\n }\n }\n\n return chr;\n });\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2025 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Odei Maiz (odeimaiz)\n */\n\nqx.Class.define(\"osparc.filter.SearchingCollaborators\", {\n extend: qx.ui.basic.Atom,\n\n construct: function() {\n this.base(arguments);\n\n this.set({\n label: this.tr(\"Searching...\"),\n icon: \"@FontAwesome5Solid/circle-notch/14\",\n appearance: \"tagbutton\",\n gap: 10,\n });\n\n this.getChildControl(\"icon\").getContentElement().addClass(\"rotate\");\n this.getChildControl(\"label\").setTextColor(\"text\");\n },\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2023 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Odei Maiz (odeimaiz)\n */\n\n/**\n * Button to toggle the selection of one collaborator\n */\nqx.Class.define(\"osparc.filter.CollaboratorToggleButton\", {\n extend: qx.ui.form.ToggleButton,\n include: osparc.filter.MFilterable,\n implement: osparc.filter.IFilterable,\n\n construct: function(collaborator) {\n this.base(arguments);\n this._setLayout(new qx.ui.layout.HBox(8).set({\n alignY: \"middle\"\n }));\n this.set({\n minHeight: 30,\n appearance: \"tagbutton\"\n });\n\n let label = collaborator.getLabel();\n if (\"getEmail\" in collaborator && collaborator.getEmail()) {\n label += ` (${collaborator.getEmail()})`;\n }\n this.setLabel(label);\n\n if (collaborator.getDescription()) {\n const ttt = collaborator.getLabel() + \"
\" + collaborator.getDescription();\n this.setToolTipText(ttt);\n }\n\n let iconPath = null;\n switch (collaborator[\"collabType\"]) {\n case 0:\n iconPath = \"@FontAwesome5Solid/globe/14\";\n break;\n case 1:\n iconPath = \"@FontAwesome5Solid/users/14\";\n break;\n case 2:\n iconPath = \"@FontAwesome5Solid/user/14\";\n break;\n }\n this.setIcon(iconPath);\n\n this.getChildControl(\"check\");\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"label\":\n control = new qx.ui.basic.Label(this.getLabel()).set({\n allowStretchX: true\n });\n control.setAnonymous(true);\n control.setRich(this.getRich());\n this._add(control, {\n flex: 1\n });\n if (this.getLabel() == null || this.getShow() === \"icon\") {\n control.exclude();\n }\n break;\n case \"check\":\n control = new qx.ui.basic.Image(\"@FontAwesome5Solid/check/14\");\n control.setAnonymous(true);\n this._add(control);\n this.bind(\"value\", control, \"visibility\", {\n converter: value => value ? \"visible\" : \"hidden\"\n });\n break;\n }\n return control || this.base(arguments, id);\n },\n\n _filter: function() {\n this.exclude();\n },\n\n _unfilter: function() {\n this.show();\n },\n\n __filterText: function(text) {\n const checks = [\n this.getLabel(),\n this.getToolTipText()\n ];\n if (text) {\n const includesSome = checks.some(check => (check !== null) && check.toLowerCase().trim().includes(text.toLowerCase()));\n return !includesSome;\n }\n return false;\n },\n\n _shouldApplyFilter: function(data) {\n if (data.name) {\n // data.name comes lowercased\n return this.__filterText(data.name);\n }\n return false;\n },\n\n _shouldReactToFilter: function(data) {\n if (data.name && data.name.length > 1) {\n return true;\n }\n return false;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.organizations.OrganizationsList\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n const studiesLabel = osparc.product.Utils.getStudyAlias({plural: true});\n const msg = this.tr(\"\\\n An organization is a group of users who can share \") + studiesLabel + this.tr(\" and other resources.
\\\n Here you can see the list of organizations you belong to, create new organizations, \\\n or manage the membership by setting up the access rights of each member in the organization \\\n if you are a manager or administrator.\");\n const intro = new qx.ui.basic.Label().set({\n value: msg,\n alignX: \"left\",\n rich: true,\n font: \"text-13\"\n });\n this._add(intro);\n\n const rolesLayout = osparc.data.Roles.createRolesOrgInfo();\n const orgsFilter = this.__getOrganizationsFilter();\n orgsFilter.setPaddingRight(10);\n osparc.data.Roles.replaceSpacerWithWidget(rolesLayout, orgsFilter);\n this._add(rolesLayout);\n\n this._add(this.__getOrganizationsList(), {\n flex: 1\n });\n\n if (osparc.data.Permissions.getInstance().canDo(\"user.organizations.create\")) {\n this._add(this.__getCreateOrganizationSection());\n }\n\n this.reloadOrganizations();\n },\n\n events: {\n \"organizationSelected\": \"qx.event.type.Data\"\n },\n\n properties: {\n organizationsLoaded: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n event: \"changeOrganizationsLoaded\"\n }\n },\n\n statics: {\n sortOrganizations: function(a, b) {\n const sorted = osparc.share.Collaborators.sortByAccessRights(a.getAccessRights(), b.getAccessRights());\n if (sorted !== 0) {\n return sorted;\n }\n return a.getLabel().localeCompare(b.getLabel());\n }\n },\n\n members: {\n __orgsUIList: null,\n __orgsModel: null,\n\n getOrgModel: function(orgId) {\n let org = null;\n this.__orgsModel.forEach(orgModel => {\n if (orgModel.getGroupId() === parseInt(orgId)) {\n org = orgModel;\n }\n });\n return org;\n },\n\n __getCreateOrganizationSection: function() {\n const createOrgBtn = new qx.ui.form.Button().set({\n appearance: \"form-button\",\n label: this.tr(\"New Organization\"),\n alignX: \"center\",\n icon: \"@FontAwesome5Solid/plus/14\",\n allowGrowX: false\n });\n createOrgBtn.addListener(\"execute\", function() {\n const title = this.tr(\"New Organization\");\n const orgEditor = new osparc.editor.OrganizationEditor();\n const win = osparc.ui.window.Window.popUpInWindow(orgEditor, title, 400, 200);\n orgEditor.addListener(\"createOrg\", () => {\n this.__createOrganization(win, orgEditor.getChildControl(\"create\"), orgEditor);\n });\n orgEditor.addListener(\"cancel\", () => win.close());\n }, this);\n return createOrgBtn;\n },\n\n __getOrganizationsFilter: function() {\n const filter = new osparc.filter.TextFilter(\"text\", \"organizationsList\").set({\n allowStretchX: true,\n margin: [0, 10, 5, 10]\n });\n return filter;\n },\n\n __getOrganizationsList: function() {\n const orgsUIList = this.__orgsUIList = new qx.ui.form.List().set({\n decorator: \"no-border\",\n spacing: 3,\n height: 150,\n width: 150\n });\n osparc.utils.Utils.setIdToWidget(orgsUIList, \"organizationsList\");\n orgsUIList.addListener(\"changeSelection\", e => this.__organizationSelected(e.getData()), this);\n\n const orgsModel = this.__orgsModel = new qx.data.Array();\n const orgsCtrl = new qx.data.controller.List(orgsModel, orgsUIList, \"label\");\n orgsCtrl.setDelegate({\n createItem: () => new osparc.ui.list.OrganizationListItem(),\n bindItem: (ctrl, item, id) => {\n ctrl.bindProperty(\"groupId\", \"key\", null, item, id);\n ctrl.bindProperty(\"groupId\", \"model\", null, item, id);\n ctrl.bindProperty(\"thumbnail\", \"thumbnail\", null, item, id);\n ctrl.bindProperty(\"label\", \"title\", null, item, id);\n ctrl.bindProperty(\"description\", \"subtitle\", null, item, id);\n ctrl.bindProperty(\"groupMembers\", \"groupMembers\", null, item, id);\n ctrl.bindProperty(\"accessRights\", \"accessRights\", null, item, id);\n },\n configureItem: item => {\n item.subscribeToFilterGroup(\"organizationsList\");\n osparc.utils.Utils.setIdToWidget(item, \"organizationListItem\");\n const thumbnail = item.getChildControl(\"thumbnail\");\n thumbnail.getContentElement()\n .setStyles({\n \"border-radius\": \"16px\"\n });\n\n item.addListener(\"openEditOrganization\", e => {\n const orgKey = e.getData();\n this.__openEditOrganization(orgKey);\n });\n\n item.addListener(\"deleteOrganization\", e => {\n const orgKey = e.getData();\n this.__deleteOrganization(orgKey);\n });\n }\n });\n\n const scrollContainer = new qx.ui.container.Scroll();\n scrollContainer.add(orgsUIList);\n\n return scrollContainer;\n },\n\n __organizationSelected: function(data) {\n if (data && data.length) {\n const org = data[0];\n this.fireDataEvent(\"organizationSelected\", org.getModel());\n }\n },\n\n reloadOrganizations: function(orgId) {\n this.__orgsUIList.resetSelection();\n const orgsModel = this.__orgsModel;\n orgsModel.removeAll();\n\n const groupsStore = osparc.store.Groups.getInstance();\n const orgs = Object.values(groupsStore.getOrganizations());\n orgs.sort(this.self().sortOrganizations);\n orgs.forEach(org => orgsModel.append(org));\n this.setOrganizationsLoaded(true);\n if (orgId) {\n this.fireDataEvent(\"organizationSelected\", orgId);\n }\n },\n\n __openEditOrganization: function(orgId) {\n const org = this.getOrgModel(orgId);\n if (org === null) {\n return;\n }\n\n const title = this.tr(\"Organization Details Editor\");\n const orgEditor = new osparc.editor.OrganizationEditor(org);\n const win = osparc.ui.window.Window.popUpInWindow(orgEditor, title, 400, 200);\n orgEditor.addListener(\"updateOrg\", () => {\n this.__updateOrganization(win, orgEditor.getChildControl(\"save\"), orgEditor);\n });\n orgEditor.addListener(\"cancel\", () => win.close());\n },\n\n __deleteOrganization: function(orgKey) {\n let org = null;\n this.__orgsModel.forEach(orgModel => {\n if (orgModel.getGroupId() === parseInt(orgKey)) {\n org = orgModel;\n }\n });\n if (org === null) {\n return;\n }\n\n const name = org.getLabel();\n const msg = this.tr(\"Are you sure you want to delete \") + name + \"?\";\n const win = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Delete Organization\"),\n confirmText: this.tr(\"Delete\"),\n confirmAction: \"delete\"\n });\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n const groupsStore = osparc.store.Groups.getInstance(orgKey);\n groupsStore.deleteOrganization(orgKey)\n .then(() => {\n this.reloadOrganizations();\n })\n .catch(err => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong deleting \") + name, \"ERROR\");\n console.error(err);\n })\n .finally(() => {\n win.close();\n });\n }\n }, this);\n },\n\n __createOrganization: function(win, button, orgEditor) {\n const name = orgEditor.getLabel();\n const description = orgEditor.getDescription();\n const thumbnail = orgEditor.getThumbnail();\n const groupsStore = osparc.store.Groups.getInstance();\n groupsStore.postOrganization(name, description, thumbnail)\n .then(org => {\n osparc.FlashMessenger.getInstance().logAs(name + this.tr(\" successfully created\"));\n button.setFetching(false);\n // open it\n this.reloadOrganizations(org.getGroupId());\n })\n .catch(err => {\n const errorMessage = err[\"message\"] || this.tr(\"Something went wrong creating \") + name;\n osparc.FlashMessenger.getInstance().logAs(errorMessage, \"ERROR\");\n button.setFetching(false);\n console.error(err);\n })\n .finally(() => {\n win.close();\n });\n },\n\n __updateOrganization: function(win, button, orgEditor) {\n const groupId = orgEditor.getGid();\n const name = orgEditor.getLabel();\n const description = orgEditor.getDescription();\n const thumbnail = orgEditor.getThumbnail();\n osparc.store.Groups.getInstance().patchOrganization(groupId, name, description, thumbnail)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(name + this.tr(\" successfully edited\"));\n button.setFetching(false);\n win.close();\n })\n .catch(err => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong editing \") + name, \"ERROR\");\n button.setFetching(false);\n console.error(err);\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.organizations.OrganizationDetails\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(5));\n\n this._add(this.__getTitleLayout());\n this._add(this.__getTabs(), {\n flex: 1\n });\n },\n\n events: {\n \"backToOrganizations\": \"qx.event.type.Event\"\n },\n\n members: {\n __orgModel: null,\n __titleLayout: null,\n __organizationListItem: null,\n __membersList: null,\n __templatesList: null,\n __servicesList: null,\n\n setCurrentOrg: function(organization) {\n if (organization === null) {\n return;\n }\n this.__orgModel = organization;\n\n const organizationListItem = this.__addOrganizationListItem();\n organization.bind(\"groupId\", organizationListItem, \"key\");\n organization.bind(\"groupId\", organizationListItem, \"model\");\n organization.bind(\"thumbnail\", organizationListItem, \"thumbnail\");\n organization.bind(\"label\", organizationListItem, \"title\");\n organization.bind(\"description\", organizationListItem, \"subtitle\");\n organization.bind(\"groupMembers\", organizationListItem, \"groupMembers\");\n organization.bind(\"accessRights\", organizationListItem, \"accessRights\");\n organizationListItem.updateNMembers();\n [\n \"memberAdded\",\n \"memberRemoved\",\n ].forEach(ev => organization.addListener(ev, () => organizationListItem.updateNMembers()));\n\n // set orgModel to the tab views\n this.__membersList.setCurrentOrg(organization);\n this.__templatesList.setCurrentOrg(organization);\n this.__servicesList.setCurrentOrg(organization);\n },\n\n __getTitleLayout: function() {\n const titleLayout = this.__titleLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n\n const prevBtn = new qx.ui.form.Button().set({\n toolTipText: this.tr(\"Back to Organizations list\"),\n icon: \"@FontAwesome5Solid/arrow-left/20\",\n backgroundColor: \"transparent\"\n });\n prevBtn.addListener(\"execute\", () => this.fireEvent(\"backToOrganizations\"));\n titleLayout.add(prevBtn);\n\n this.__addOrganizationListItem();\n\n return titleLayout;\n },\n\n __addOrganizationListItem: function() {\n if (this.__organizationListItem) {\n this.__titleLayout.remove(this.__organizationListItem);\n }\n const organizationListItem = this.__organizationListItem = new osparc.ui.list.OrganizationListItem();\n organizationListItem.getChildControl(\"options\").exclude();\n organizationListItem.setShowDeleteButton(false);\n organizationListItem.addListener(\"openEditOrganization\", () => this.__openEditOrganization());\n this.__titleLayout.add(organizationListItem, {\n flex: 1\n });\n return organizationListItem;\n },\n\n __openEditOrganization: function() {\n const org = this.__orgModel;\n const title = this.tr(\"Organization Details Editor\");\n const orgEditor = new osparc.editor.OrganizationEditor(org);\n const win = osparc.ui.window.Window.popUpInWindow(orgEditor, title, 400, 200);\n orgEditor.addListener(\"updateOrg\", () => {\n this.__updateOrganization(win, orgEditor.getChildControl(\"save\"), orgEditor);\n });\n orgEditor.addListener(\"cancel\", () => win.close());\n },\n\n __updateOrganization: function(win, button, orgEditor) {\n const groupId = orgEditor.getGid();\n const name = orgEditor.getLabel();\n const description = orgEditor.getDescription();\n const thumbnail = orgEditor.getThumbnail();\n osparc.store.Groups.getInstance().patchOrganization(groupId, name, description, thumbnail)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(name + this.tr(\" successfully edited\"));\n button.setFetching(false);\n win.close();\n })\n .catch(err => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong editing \") + name, \"ERROR\");\n button.setFetching(false);\n console.error(err);\n });\n },\n\n __createTabPage: function(label, icon) {\n const tabPage = new qx.ui.tabview.Page().set({\n layout: new qx.ui.layout.VBox()\n });\n if (label) {\n tabPage.setLabel(label);\n }\n if (icon) {\n tabPage.setIcon(icon);\n }\n tabPage.getChildControl(\"button\").set({\n font: \"text-13\"\n });\n return tabPage;\n },\n\n __getTabs: function() {\n const tabView = new qx.ui.tabview.TabView().set({\n contentPadding: 10\n });\n\n const membersListPage = this.__createTabPage(this.tr(\"Members\"), \"@FontAwesome5Solid/users/14\");\n const membersList = this.__membersList = new osparc.desktop.organizations.MembersList();\n membersListPage.add(membersList, {\n flex: 1\n });\n tabView.add(membersListPage);\n\n const templatesText = osparc.product.Utils.getTemplateAlias({\n plural: true,\n firstUpperCase: true\n });\n const templatesListPage = this.__createTabPage(templatesText, \"@FontAwesome5Solid/copy/14\");\n const templatesList = this.__templatesList = new osparc.desktop.organizations.TemplatesList();\n templatesListPage.add(templatesList, {\n flex: 1\n });\n tabView.add(templatesListPage);\n\n const servicesListPage = this.__createTabPage(this.tr(\"Services\"), \"@FontAwesome5Solid/cogs/14\");\n const servicesList = this.__servicesList = new osparc.desktop.organizations.ServicesList();\n servicesListPage.add(servicesList, {\n flex: 1\n });\n tabView.add(servicesListPage);\n\n return tabView;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.notification.Notification\", {\n extend: qx.core.Object,\n\n construct: function(notificationObj) {\n this.base(arguments);\n\n this.set({\n id: notificationObj.id,\n resourceId: notificationObj.resource_id ? notificationObj.resource_id : null,\n category: notificationObj.category,\n actionablePath: notificationObj.actionable_path,\n title: notificationObj.title,\n text: notificationObj.text,\n userFromId: notificationObj.user_from_id ? notificationObj.user_from_id : null,\n date: new Date(notificationObj.date),\n read: [\"true\", \"True\", true].includes(notificationObj.read)\n });\n },\n\n properties: {\n id: {\n check: \"String\",\n init: null,\n nullable: false,\n event: \"changeId\"\n },\n\n resourceId: {\n check: \"String\",\n init: null,\n nullable: true,\n event: \"changeResourceId\"\n },\n\n category: {\n check: [\n \"NEW_ORGANIZATION\",\n \"STUDY_SHARED\",\n \"TEMPLATE_SHARED\",\n \"ANNOTATION_NOTE\",\n \"WALLET_SHARED\"\n ],\n init: null,\n nullable: false,\n event: \"changeCategory\"\n },\n\n actionablePath: {\n check: \"String\",\n init: null,\n nullable: false,\n event: \"changeActionablePath\"\n },\n\n title: {\n check: \"String\",\n init: null,\n nullable: false,\n event: \"changeTitle\"\n },\n\n text: {\n check: \"String\",\n init: null,\n nullable: false,\n event: \"changeText\"\n },\n\n userFromId: {\n check: \"Number\",\n init: null,\n nullable: true,\n event: \"changeUserFromId\"\n },\n\n date: {\n check: \"Date\",\n init: null,\n nullable: false,\n event: \"changeDate\"\n },\n\n read: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n event: \"changeRead\"\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.credits.CreditsPerService\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(5));\n },\n\n properties: {\n daysRange: {\n check: [1, 7, 30],\n nullable: false,\n init: null,\n apply: \"__populateList\"\n }\n },\n\n members: {\n __populateList: function(nDays) {\n this._removeAll();\n\n const store = osparc.store.Store.getInstance();\n const contextWallet = store.getContextWallet();\n if (!contextWallet) {\n return;\n }\n const walletId = contextWallet.getWalletId();\n const loadingImage = new qx.ui.basic.Image(\"@FontAwesome5Solid/circle-notch/26\").set({\n alignX: \"center\",\n padding: 6\n });\n loadingImage.getContentElement().addClass(\"rotate\");\n this._add(loadingImage);\n\n const params = {\n \"url\": {\n walletId,\n \"timePeriod\": nDays\n }\n };\n osparc.data.Resources.fetch(\"resourceUsage\", \"getUsagePerService\", params)\n .then(entries => {\n this._removeAll();\n if (entries && entries.length) {\n let totalCredits = 0;\n let totalHours = 0;\n entries.forEach(entry => {\n totalHours += entry[\"running_time_in_hours\"]\n totalCredits+= parseFloat(entry[\"osparc_credits\"])\n });\n let datas = [];\n entries.forEach(entry => {\n datas.push({\n service: entry[\"service_key\"],\n credits: -1*parseFloat(entry[\"osparc_credits\"]),\n hours: entry[\"running_time_in_hours\"],\n percentageHours: totalHours ? 100*entry[\"running_time_in_hours\"]/totalHours : 0,\n percentageCredits: totalCredits ? 100*parseFloat(entry[\"osparc_credits\"])/totalCredits : 0,\n });\n });\n datas.sort((a, b) => {\n if (b.credits !== a.credits) {\n return b.credits - a.credits;\n }\n return b.hours - a.hours;\n });\n // top 5 services\n datas = datas.slice(0, 5);\n datas.forEach(data => {\n const uiEntry = new osparc.desktop.credits.CreditsServiceListItem(data.service, data.credits, data.hours, totalCredits === 0 ? data.percentageHours : data.percentageCredits);\n this._add(uiEntry);\n });\n } else {\n const nothingFound = new qx.ui.basic.Label(this.tr(\"No usage found\")).set({\n font: \"text-14\",\n padding: 20,\n });\n this._add(nothingFound);\n }\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.notification.NotificationUI\", {\n extend: qx.ui.core.Widget,\n\n construct: function(notification) {\n this.base(arguments);\n\n this.set({\n margin: 4,\n maxWidth: this.self().MAX_WIDTH,\n padding: this.self().PADDING,\n cursor: \"pointer\"\n });\n\n const layout = new qx.ui.layout.Grid(10, 3);\n layout.setColumnAlign(0, \"center\", \"middle\");\n layout.setColumnAlign(1, \"left\", \"middle\");\n layout.setColumnFlex(1, 1);\n this._setLayout(layout);\n\n if (notification) {\n this.setNotification(notification);\n }\n\n this.addListener(\"tap\", () => this.__notificationTapped());\n },\n\n events: {\n \"notificationTapped\": \"qx.event.type.Event\"\n },\n\n properties: {\n notification: {\n check: \"osparc.notification.Notification\",\n init: null,\n nullable: false,\n apply: \"__applyNotification\"\n }\n },\n\n statics: {\n MAX_WIDTH: 300,\n PADDING: 10\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"icon\":\n control = new qx.ui.basic.Image().set({\n source: \"@FontAwesome5Solid/paw/14\",\n alignX: \"center\",\n alignY: \"middle\",\n minWidth: 18\n });\n this._add(control, {\n row: 0,\n column: 0,\n rowSpan: 3\n });\n break;\n case \"title\":\n control = new qx.ui.basic.Label().set({\n font: \"text-13\",\n rich: true,\n wrap: true\n });\n this._add(control, {\n row: 0,\n column: 1\n });\n break;\n case \"text\":\n control = new qx.ui.basic.Label().set({\n font: \"text-12\",\n rich: true,\n wrap: true\n });\n this._add(control, {\n row: 1,\n column: 1\n });\n break;\n case \"date\":\n control = new qx.ui.basic.Label().set({\n font: \"text-11\",\n rich: true,\n wrap: true\n });\n this._add(control, {\n row: 2,\n column: 1\n });\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __applyNotification: function(notification) {\n let resourceId = null;\n if (notification.getResourceId()) {\n resourceId = notification.getResourceId();\n } else if (notification.getActionablePath()) {\n // extract it from the actionable path\n const actionablePath = notification.getActionablePath();\n resourceId = actionablePath.split(\"/\")[1];\n }\n const userFromId = notification.getUserFromId();\n\n const icon = this.getChildControl(\"icon\");\n const titleLabel = this.getChildControl(\"title\");\n titleLabel.setValue(notification.getTitle());\n const descriptionLabel = this.getChildControl(\"text\");\n descriptionLabel.setValue(notification.getText());\n\n switch (notification.getCategory()) {\n case \"NEW_ORGANIZATION\":\n icon.setSource(\"@FontAwesome5Solid/users/14\");\n if (resourceId) {\n const org = osparc.store.Groups.getInstance().getOrganization(resourceId);\n if (org) {\n descriptionLabel.setValue(\"You're now member of '\" + org.getLabel() + \"'\")\n } else {\n this.setEnabled(false);\n }\n }\n break;\n case \"STUDY_SHARED\":\n icon.setSource(\"@FontAwesome5Solid/file/14\");\n if (resourceId) {\n const params = {\n url: {\n \"studyId\": resourceId\n }\n };\n osparc.data.Resources.getOne(\"studies\", params)\n .then(study => {\n const studyAlias = osparc.product.Utils.getStudyAlias({\n firstUpperCase: true\n });\n titleLabel.setValue(`${studyAlias} '${study[\"name\"]}'`);\n })\n .catch(() => this.setEnabled(false));\n }\n if (userFromId) {\n const user = osparc.store.Groups.getInstance().getUserByUserId(userFromId);\n if (user) {\n descriptionLabel.setValue(\"was shared by \" + user.getLabel());\n }\n }\n break;\n case \"TEMPLATE_SHARED\":\n icon.setSource(\"@FontAwesome5Solid/copy/14\");\n if (resourceId) {\n const template = osparc.store.Store.getInstance().getTemplate(resourceId);\n if (template) {\n const templateAlias = osparc.product.Utils.getTemplateAlias({\n firstUpperCase: true\n });\n titleLabel.setValue(`${templateAlias} '${template[\"name\"]}'`);\n } else {\n this.setEnabled(false);\n }\n }\n if (userFromId) {\n const user = osparc.store.Groups.getInstance().getUserByUserId(userFromId);\n if (user) {\n descriptionLabel.setValue(\"was shared by \" + user.getLabel());\n }\n }\n break;\n case \"ANNOTATION_NOTE\":\n icon.setSource(\"@FontAwesome5Solid/file/14\");\n if (resourceId) {\n const params = {\n url: {\n \"studyId\": resourceId\n }\n };\n osparc.data.Resources.getOne(\"studies\", params)\n .then(study => titleLabel.setValue(`Note added in '${study[\"name\"]}'`))\n .catch(() => this.setEnabled(false));\n }\n if (userFromId) {\n const user = osparc.store.Groups.getInstance().getUserByUserId(userFromId);\n if (user) {\n descriptionLabel.setValue(\"was added by \" + user.getLabel());\n }\n }\n break;\n case \"WALLET_SHARED\":\n icon.setSource(\"@MaterialIcons/account_balance_wallet/14\");\n break;\n }\n\n const date = this.getChildControl(\"date\");\n notification.bind(\"date\", date, \"value\", {\n converter: value => {\n if (value) {\n return osparc.utils.Utils.formatDateAndTime(new Date(value));\n }\n return \"\";\n }\n });\n\n const highlight = mouseOn => {\n this.set({\n backgroundColor: mouseOn ? \"strong-main\" : \"transparent\"\n })\n };\n this.addListener(\"mouseover\", () => highlight(true));\n this.addListener(\"mouseout\", () => highlight(false));\n highlight(false);\n },\n\n __notificationTapped: function() {\n const notification = this.getNotification();\n if (!notification) {\n return;\n }\n\n this.fireEvent(\"notificationTapped\");\n osparc.notification.Notifications.markAsRead(notification);\n this.__openActionablePath(notification);\n },\n\n __openActionablePath: function(notification) {\n const actionablePath = notification.getActionablePath();\n const items = actionablePath.split(\"/\");\n const resourceId = items.pop();\n const category = notification.getCategory();\n switch (category) {\n case \"NEW_ORGANIZATION\":\n this.__openOrganizationDetails(parseInt(resourceId));\n break;\n case \"TEMPLATE_SHARED\":\n case \"STUDY_SHARED\":\n case \"ANNOTATION_NOTE\":\n this.__openStudyDetails(resourceId, notification);\n break;\n case \"WALLET_SHARED\": {\n const walletsEnabled = osparc.desktop.credits.Utils.areWalletsEnabled();\n if (walletsEnabled) {\n this.__openWalletDetails(parseInt(resourceId));\n }\n break;\n }\n }\n },\n\n __openOrganizationDetails: function(orgId) {\n // make sure org is available\n const org = osparc.store.Groups.getInstance().getOrganization(orgId)\n if (org) {\n const orgsWindow = osparc.desktop.organizations.OrganizationsWindow.openWindow();\n orgsWindow.openOrganizationDetails(orgId);\n } else {\n const msg = this.tr(\"You don't have access anymore\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"WARNING\");\n }\n },\n\n __openStudyDetails: function(studyId, notification) {\n const params = {\n url: {\n \"studyId\": studyId\n }\n };\n osparc.data.Resources.getOne(\"studies\", params)\n .then(studyData => {\n if (studyData) {\n const studyDataCopy = osparc.data.model.Study.deepCloneStudyObject(studyData);\n studyDataCopy[\"resourceType\"] = notification.getCategory() === \"TEMPLATE_SHARED\" ? \"template\" : \"study\";\n const resourceDetails = new osparc.dashboard.ResourceDetails(studyDataCopy);\n const win = osparc.dashboard.ResourceDetails.popUpInWindow(resourceDetails);\n resourceDetails.addListener(\"openStudy\", () => {\n if (notification.getCategory() === \"STUDY_SHARED\") {\n const openCB = () => win.close();\n osparc.dashboard.ResourceBrowserBase.startStudyById(studyId, openCB);\n }\n });\n }\n })\n .catch(err => {\n console.error(err);\n const msg = this.tr(\"You don't have access anymore\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"WARNING\");\n });\n },\n\n __openWalletDetails: function(walletId) {\n const wallet = osparc.desktop.credits.Utils.getWallet(walletId);\n if (wallet) {\n const myAccountWindow = osparc.desktop.credits.BillingCenterWindow.openWindow();\n if (myAccountWindow.openWallets()) {\n const msg = this.tr(\"Do you want to make it the default Credit Account?\");\n const win = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Default Credit Account\"),\n confirmAction: \"create\"\n });\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n const preferenceSettings = osparc.Preferences.getInstance();\n preferenceSettings.requestChangePreferredWalletId(walletId);\n }\n }, this);\n }\n } else {\n const msg = this.tr(\"You don't have access anymore\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"WARNING\");\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.desktop.preferences.pages.GeneralPage\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(15));\n\n if (osparc.desktop.credits.Utils.areWalletsEnabled()) {\n this.__addCreditsIndicatorSettings();\n }\n\n const preferences = osparc.Preferences.getInstance();\n if (preferences.getLowDiskSpaceThreshold()) {\n this.__addLowDiskSpaceSetting();\n }\n\n if (osparc.desktop.credits.Utils.areWalletsEnabled()) {\n this.__addInactivitySetting();\n }\n\n // this.__addJobConcurrencySetting();\n\n if (osparc.product.Utils.isS4LProduct() || osparc.product.Utils.isProduct(\"s4llite\")) {\n this.__addS4LUserPrivacySettings();\n }\n },\n\n members: {\n __addCreditsIndicatorSettings: function() {\n const box = osparc.ui.window.TabbedView.createSectionBox(this.tr(\"Credits Indicator\"));\n\n const form = new qx.ui.form.Form();\n\n const preferencesSettings = osparc.Preferences.getInstance();\n\n const walletIndicatorVisibilitySB = new qx.ui.form.SelectBox().set({\n allowGrowX: false\n });\n [{\n id: \"always\",\n label: \"Always\"\n }, {\n id: \"warning\",\n label: \"Warning\"\n }].forEach(options => {\n const lItem = new qx.ui.form.ListItem(options.label, null, options.id);\n walletIndicatorVisibilitySB.add(lItem);\n });\n const value = preferencesSettings.getWalletIndicatorVisibility();\n walletIndicatorVisibilitySB.getSelectables().forEach(selectable => {\n if (selectable.getModel() === value) {\n walletIndicatorVisibilitySB.setSelection([selectable]);\n }\n });\n walletIndicatorVisibilitySB.addListener(\"changeValue\", e => {\n const selectable = e.getData();\n osparc.Preferences.patchPreferenceField(\"walletIndicatorVisibility\", walletIndicatorVisibilitySB, selectable.getModel());\n });\n form.add(walletIndicatorVisibilitySB, this.tr(\"Show indicator\"));\n\n const creditsWarningThresholdField = new qx.ui.form.Spinner().set({\n minimum: 50,\n maximum: 10000,\n singleStep: 10,\n allowGrowX: false\n });\n preferencesSettings.bind(\"creditsWarningThreshold\", creditsWarningThresholdField, \"value\");\n creditsWarningThresholdField.addListener(\"changeValue\", e => osparc.Preferences.patchPreferenceField(\"creditsWarningThreshold\", creditsWarningThresholdField, e.getData()));\n form.add(creditsWarningThresholdField, this.tr(\"Show warning when credits below\"));\n\n box.add(new qx.ui.form.renderer.Single(form));\n\n this._add(box);\n },\n\n __addInactivitySetting: function() {\n const box = osparc.ui.window.TabbedView.createSectionBox(this.tr(\"Automatic Shutdown of Idle Instances\"));\n\n const label = osparc.ui.window.TabbedView.createHelpLabel(this.tr(\"Enter 0 to disable this function\"), \"text-13-italic\");\n box.add(label);\n\n const form = new qx.ui.form.Form();\n const inactivitySpinner = new qx.ui.form.Spinner().set({\n minimum: 0,\n maximum: Number.MAX_SAFE_INTEGER,\n singleStep: 1,\n allowGrowX: false\n });\n const preferences = osparc.Preferences.getInstance();\n preferences.bind(\"userInactivityThreshold\", inactivitySpinner, \"value\", {\n converter: value => Math.round(value / 60) // Stored in seconds, displayed in minutes\n });\n inactivitySpinner.addListener(\"changeValue\", e => osparc.Preferences.patchPreferenceField(\"userInactivityThreshold\", inactivitySpinner, e.getData() * 60));\n form.add(inactivitySpinner, this.tr(\"Idle time before closing (in minutes)\"));\n\n box.add(new qx.ui.form.renderer.Single(form));\n\n this._add(box);\n },\n\n __addJobConcurrencySetting: function() {\n const box = osparc.ui.window.TabbedView.createSectionBox(this.tr(\"Job Concurrency\"));\n const form = new qx.ui.form.Form();\n const jobConcurrencySpinner = new qx.ui.form.Spinner().set({\n minimum: 1,\n maximum: 10,\n singleStep: 1,\n allowGrowX: false,\n enabled: false\n });\n const preferences = osparc.Preferences.getInstance();\n preferences.bind(\"jobConcurrencyLimit\", jobConcurrencySpinner, \"value\");\n jobConcurrencySpinner.addListener(\"changeValue\", e => osparc.Preferences.patchPreferenceField(\"jobConcurrencyLimit\", jobConcurrencySpinner, e.getData()));\n form.add(jobConcurrencySpinner, this.tr(\"Maximum number of concurrent jobs\"));\n box.add(new qx.ui.form.renderer.Single(form));\n this._add(box);\n },\n\n __addLowDiskSpaceSetting: function() {\n const box = osparc.ui.window.TabbedView.createSectionBox(this.tr(\"Low Disk Space Threshold\"));\n const label = osparc.ui.window.TabbedView.createHelpLabel(this.tr(\"Set the warning Threshold for Low Disk Space availability\"), \"text-13-italic\");\n box.add(label);\n const form = new qx.ui.form.Form();\n const diskUsageSpinner = new qx.ui.form.Spinner().set({\n minimum: 1,\n maximum: 10000,\n singleStep: 1,\n allowGrowX: false,\n enabled: true\n });\n const preferences = osparc.Preferences.getInstance();\n preferences.bind(\"lowDiskSpaceThreshold\", diskUsageSpinner, \"value\");\n\n diskUsageSpinner.addListener(\"changeValue\", e => osparc.Preferences.patchPreferenceField(\"lowDiskSpaceThreshold\", diskUsageSpinner, e.getData()));\n form.add(diskUsageSpinner, this.tr(\"Threshold (in GB)\"));\n box.add(new qx.ui.form.renderer.Single(form));\n this._add(box);\n },\n\n __addS4LUserPrivacySettings: function() {\n const box = osparc.ui.window.TabbedView.createSectionBox(\"Privacy Settings\");\n\n const label = osparc.ui.window.TabbedView.createHelpLabel(this.tr(\"Help us improve Sim4Life user experience\"), \"text-13-italic\");\n box.add(label);\n\n const preferencesSettings = osparc.Preferences.getInstance();\n\n const cbAllowMetricsCollection = new qx.ui.form.CheckBox(this.tr(\"Share usage data\"));\n preferencesSettings.bind(\"allowMetricsCollection\", cbAllowMetricsCollection, \"value\");\n cbAllowMetricsCollection.addListener(\"changeValue\", e => osparc.Preferences.patchPreferenceField(\"allowMetricsCollection\", cbAllowMetricsCollection, e.getData()));\n box.add(cbAllowMetricsCollection);\n\n this._add(box);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Confirmations in preferences dialog\n */\n\nqx.Class.define(\"osparc.desktop.preferences.pages.ConfirmationsPage\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(15));\n\n const confirmationSettings = this.__createConfirmationsSettings();\n this._add(confirmationSettings);\n\n if (osparc.product.Utils.showPreferencesExperimental()) {\n const experimentalSettings = this.__createExperimentalSettings();\n this._add(experimentalSettings);\n }\n },\n\n members: {\n __createConfirmationsSettings: function() {\n // layout\n const label = osparc.ui.window.TabbedView.createHelpLabel(this.tr(\"Ask for confirmation for the following actions:\"));\n this._add(label);\n\n this._add(new qx.ui.core.Spacer(null, 10));\n\n const preferencesSettings = osparc.Preferences.getInstance();\n\n const box = new qx.ui.container.Composite(new qx.ui.layout.VBox(10)).set({\n paddingLeft: 10\n });\n\n const cbConfirmBackToDashboard = new qx.ui.form.CheckBox(this.tr(\"Go back to the Dashboard\"));\n preferencesSettings.bind(\"confirmBackToDashboard\", cbConfirmBackToDashboard, \"value\");\n cbConfirmBackToDashboard.addListener(\"changeValue\", e => osparc.Preferences.patchPreferenceField(\"confirmBackToDashboard\", cbConfirmBackToDashboard, e.getData()));\n box.add(cbConfirmBackToDashboard);\n\n const studyAlias = osparc.product.Utils.getStudyAlias({firstUpperCase: true});\n const cbConfirmDeleteStudy = new qx.ui.form.CheckBox(this.tr(\"Delete a \") + studyAlias);\n preferencesSettings.bind(\"confirmDeleteStudy\", cbConfirmDeleteStudy, \"value\");\n cbConfirmDeleteStudy.addListener(\"changeValue\", e => {\n if (e.getData()) {\n osparc.Preferences.patchPreferenceField(\"confirmDeleteStudy\", cbConfirmDeleteStudy, true);\n } else {\n const msg = this.tr(\"Warning: deleting a \") + studyAlias + this.tr(\" cannot be undone\");\n const win = new osparc.ui.window.Confirmation(msg).set({\n confirmText: this.tr(\"Understood\"),\n confirmAction: \"delete\"\n });\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n osparc.Preferences.patchPreferenceField(\"confirmDeleteStudy\", cbConfirmDeleteStudy, false);\n } else {\n cbConfirmDeleteStudy.setValue(true);\n }\n }, this);\n }\n }, this);\n box.add(cbConfirmDeleteStudy);\n\n if (!(\n osparc.product.Utils.isProduct(\"tis\") ||\n osparc.product.Utils.isProduct(\"tiplite\") ||\n osparc.product.Utils.isProduct(\"s4llite\")\n )) {\n const cbConfirmDeleteNode = new qx.ui.form.CheckBox(this.tr(\"Delete a Node\"));\n preferencesSettings.bind(\"confirmDeleteNode\", cbConfirmDeleteNode, \"value\");\n cbConfirmDeleteNode.addListener(\"changeValue\", e => {\n if (e.getData()) {\n osparc.Preferences.patchPreferenceField(\"confirmDeleteNode\", cbConfirmDeleteNode, true);\n } else {\n const msg = this.tr(\"Warning: deleting a node cannot be undone\");\n const win = new osparc.ui.window.Confirmation(msg).set({\n confirmText: this.tr(\"Understood\"),\n confirmAction: \"delete\"\n });\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n osparc.Preferences.patchPreferenceField(\"confirmDeleteNode\", cbConfirmDeleteNode, false);\n } else {\n cbConfirmDeleteNode.setValue(true);\n }\n }, this);\n }\n }, this);\n box.add(cbConfirmDeleteNode);\n\n const cbConfirmStopNode = new qx.ui.form.CheckBox(this.tr(\"Stop Node\"));\n preferencesSettings.bind(\"confirmStopNode\", cbConfirmStopNode, \"value\");\n cbConfirmStopNode.addListener(\"changeValue\", e => osparc.Preferences.patchPreferenceField(\"confirmStopNode\", cbConfirmStopNode, e.getData()));\n box.add(cbConfirmStopNode);\n\n const cbSnapNodeToGrid = new qx.ui.form.CheckBox(this.tr(\"Snap Node to Grid\"));\n preferencesSettings.bind(\"snapNodeToGrid\", cbSnapNodeToGrid, \"value\");\n cbSnapNodeToGrid.addListener(\"changeValue\", e => osparc.Preferences.patchPreferenceField(\"snapNodeToGrid\", cbSnapNodeToGrid, e.getData()));\n box.add(cbSnapNodeToGrid);\n }\n\n return box;\n },\n\n __createExperimentalSettings: function() {\n // layout\n const box = osparc.ui.window.TabbedView.createSectionBox(\"Experimental preferences\");\n\n const label = osparc.ui.window.TabbedView.createHelpLabel(this.tr(\n \"This is a list of experimental preferences\"\n ));\n box.add(label);\n\n const preferencesSettings = osparc.Preferences.getInstance();\n\n const cbAutoPorts = new qx.ui.form.CheckBox(this.tr(\"Connect ports automatically\"));\n preferencesSettings.bind(\"autoConnectPorts\", cbAutoPorts, \"value\");\n cbAutoPorts.addListener(\"changeValue\", e => osparc.Preferences.patchPreferenceField(\"autoConnectPorts\", cbAutoPorts, e.getData()));\n box.add(cbAutoPorts);\n\n return box;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Tokens page\n * - access token\n */\n\nqx.Class.define(\"osparc.desktop.preferences.pages.TokensPage\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(15));\n\n this._add(this.__createAPIKeysSection());\n this._add(this.__createTokensSection());\n\n this.__rebuildAPIKeysList();\n this.__rebuildTokensList();\n },\n\n members: {\n __apiKeysList: null,\n __validTokensGB: null,\n __supportedExternalsGB: null,\n __requestAPIKeyBtn: null,\n\n __createAPIKeysSection: function() {\n // layout\n const box = osparc.ui.window.TabbedView.createSectionBox(this.tr(\"API Keys\"));\n\n const label = osparc.ui.window.TabbedView.createHelpLabel(this.tr(\n \"List API keys associated to your account.\"\n ));\n box.add(label);\n\n const apiKeysList = this.__apiKeysList = new qx.ui.container.Composite(new qx.ui.layout.VBox(8));\n box.add(apiKeysList);\n\n const requestAPIKeyBtn = this.__requestAPIKeyBtn = new osparc.ui.form.FetchButton().set({\n appearance: \"strong-button\",\n label: this.tr(\"New API Key\"),\n icon: \"@FontAwesome5Solid/plus/14\",\n allowGrowX: false\n });\n requestAPIKeyBtn.addListener(\"execute\", () => {\n this.__requestAPIKey();\n }, this);\n box.add(requestAPIKeyBtn);\n\n return box;\n },\n\n __requestAPIKey: function() {\n if (!osparc.data.Permissions.getInstance().canDo(\"user.apikey.create\", true)) {\n return;\n }\n\n const createAPIKeyWindow = new osparc.desktop.preferences.window.CreateAPIKey();\n createAPIKeyWindow.addListener(\"finished\", e => {\n const formData = e.getData();\n const params = {\n data: {\n \"displayName\": formData[\"name\"]\n }\n };\n if (formData[\"expiration\"]) {\n const seconds = parseInt((new Date(formData[\"expiration\"]).getTime() - new Date().getTime()) / 1000);\n params.data[\"expiration\"] = seconds\n }\n createAPIKeyWindow.close();\n this.__requestAPIKeyBtn.setFetching(true);\n osparc.data.Resources.fetch(\"apiKeys\", \"post\", params)\n .then(data => {\n this.__rebuildAPIKeysList();\n\n const key = data[\"apiKey\"];\n const secret = data[\"apiSecret\"];\n const baseUrl = data[\"apiBaseUrl\"];\n const showAPIKeyWindow = new osparc.desktop.preferences.window.ShowAPIKey(key, secret, baseUrl);\n showAPIKeyWindow.center();\n showAPIKeyWindow.open();\n })\n .catch(err => {\n const errorMsg = err.message || this.tr(\"Cannot create API Key\");\n osparc.FlashMessenger.getInstance().logAs(errorMsg, \"ERROR\");\n console.error(err);\n })\n .finally(() => this.__requestAPIKeyBtn.setFetching(false));\n }, this);\n createAPIKeyWindow.open();\n },\n\n __rebuildAPIKeysList: function() {\n this.__apiKeysList.removeAll();\n osparc.data.Resources.get(\"apiKeys\")\n .then(apiKeys => {\n apiKeys.forEach(apiKey => {\n const apiKeyForm = this.__createAPIKeyEntry(apiKey);\n this.__apiKeysList.add(apiKeyForm);\n });\n })\n .catch(err => console.error(err));\n },\n\n __createAPIKeyEntry: function(apiKey) {\n const grid = this.__createValidEntryLayout();\n\n const nameLabel = new qx.ui.basic.Label(apiKey[\"displayName\"]);\n grid.add(nameLabel, {\n row: 0,\n column: 0\n });\n\n const delAPIKeyBtn = new qx.ui.form.Button(null, \"@FontAwesome5Solid/trash/14\");\n delAPIKeyBtn.addListener(\"execute\", () => this.__deleteAPIKey(apiKey[\"id\"]), this);\n grid.add(delAPIKeyBtn, {\n row: 0,\n column: 1\n });\n\n return grid;\n },\n\n __deleteAPIKey: function(apiKeyId) {\n if (!osparc.data.Permissions.getInstance().canDo(\"user.apikey.delete\", true)) {\n return;\n }\n\n const msg = this.tr(\"Do you want to delete the API key?\");\n const win = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Delete API key\"),\n confirmText: this.tr(\"Delete\"),\n confirmAction: \"delete\"\n });\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n const params = {\n url: {\n \"apiKeyId\": apiKeyId\n }\n };\n osparc.data.Resources.fetch(\"apiKeys\", \"delete\", params)\n .then(() => this.__rebuildAPIKeysList())\n .catch(err => {\n const errorMsg = err.message || this.tr(\"Cannot delete API Key\");\n osparc.FlashMessenger.getInstance().logAs(errorMsg, \"ERROR\");\n console.error(err)\n });\n }\n }, this);\n },\n\n __supportedExternalServices: function() {\n const supportedServices = [{\n name: \"pennsieve-datcore\",\n label: \"DAT-Core\",\n link: \"https://app.pennsieve.io\",\n logo: \"osparc/blackfynn-logo.png\"\n }];\n return supportedServices;\n },\n\n __createTokensSection: function() {\n // layout\n const box = osparc.ui.window.TabbedView.createSectionBox(this.tr(\"External Service Tokens\"));\n\n const label = osparc.ui.window.TabbedView.createHelpLabel(this.tr(\"Enter the API tokens to access external services.\"));\n box.add(label);\n\n const validTokensGB = this.__validTokensGB = osparc.ui.window.TabbedView.createSectionBox(this.tr(\"Existing Tokens\"));\n box.add(validTokensGB);\n\n const supportedExternalsGB = this.__supportedExternalsGB = osparc.ui.window.TabbedView.createSectionBox(this.tr(\"Supported services\")).set({\n layout: new qx.ui.layout.Flow(5, 5)\n });\n box.add(supportedExternalsGB);\n\n return box;\n },\n\n __rebuildTokensList: function() {\n this.__validTokensGB.exclude();\n this.__supportedExternalsGB.exclude();\n osparc.data.Resources.get(\"tokens\")\n .then(tokensList => {\n this.__validTokensGB.removeAll();\n this.__supportedExternalsGB.removeAll();\n\n const supportedExternalServices = osparc.utils.Utils.deepCloneObject(this.__supportedExternalServices());\n\n tokensList.forEach(token => {\n const tokenForm = this.__createTokenEntry(token);\n this.__validTokensGB.add(tokenForm);\n const idx = supportedExternalServices.findIndex(srv => srv.name === token.service);\n if (idx > -1) {\n supportedExternalServices.splice(idx, 1);\n }\n });\n\n supportedExternalServices.forEach(srv => {\n const btn = new qx.ui.form.Button(srv.label, srv.logo).set({\n iconPosition: \"top\",\n width: 80,\n height: 80\n });\n btn.getChildControl(\"icon\").set({\n scale: true,\n maxWidth: 50,\n maxHeight: 50\n });\n btn.addListener(\"execute\", () => {\n const newTokenForm = this.__createNewTokenForm(srv);\n const form = new qx.ui.form.renderer.Single(newTokenForm);\n const win = osparc.ui.window.Window.popUpInWindow(form, srv.label, 350, 200);\n newTokenForm.addListener(\"added\", () => {\n this.__rebuildTokensList();\n win.close();\n });\n }, this);\n this.__supportedExternalsGB.add(btn);\n });\n\n if (tokensList.length) {\n this.__validTokensGB.show();\n }\n if (supportedExternalServices.length) {\n this.__supportedExternalsGB.show();\n }\n })\n .catch(err => console.error(err));\n },\n\n __createTokenEntry: function(token) {\n const grid = this.__createValidEntryLayout();\n\n const service = token[\"service\"];\n const nameLabel = new qx.ui.basic.Label(service);\n grid.add(nameLabel, {\n row: 0,\n column: 0\n });\n\n if (\"keyLabel\" in token) {\n const label = token[\"keyLabel\"];\n const nameVal = new qx.ui.basic.Label(label);\n grid.add(nameVal, {\n row: 0,\n column: 1\n });\n }\n\n const delTokenBtn = new qx.ui.form.Button().set({\n appearance: \"danger-button\",\n icon: \"@FontAwesome5Solid/trash/14\"\n });\n delTokenBtn.addListener(\"execute\", e => {\n this.__deleteToken(service);\n }, this);\n grid.add(delTokenBtn, {\n row: 0,\n column: 2\n });\n\n return grid;\n },\n\n __deleteToken: function(service) {\n if (!osparc.data.Permissions.getInstance().canDo(\"user.token.delete\", true)) {\n return;\n }\n\n const msg = this.tr(\"Do you want to delete the Token?\");\n const win = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Delete Token\"),\n confirmText: this.tr(\"Delete\"),\n confirmAction: \"delete\"\n });\n win.center();\n win.open();\n win.addListener(\"close\", () => {\n if (win.getConfirmed()) {\n const params = {\n url: {\n service\n }\n };\n osparc.data.Resources.fetch(\"tokens\", \"delete\", params)\n .then(() => this.__rebuildTokensList())\n .catch(err => console.error(err));\n }\n }, this);\n },\n\n __createValidEntryLayout: function() {\n const height = 20;\n const gr = new qx.ui.layout.Grid(10, 3);\n gr.setColumnFlex(0, 1);\n gr.setRowHeight(0, height); // Link\n gr.setRowHeight(1, height); // Token entry\n const grid = new qx.ui.container.Composite(gr);\n return grid;\n },\n\n __createNewTokenForm: function(supportedExternalServices) {\n const form = new qx.ui.form.Form();\n\n form.addGroupHeader(\"Add new service API tokens\");\n\n const newTokenService = new qx.ui.form.TextField();\n newTokenService.set({\n value: supportedExternalServices[\"name\"],\n readOnly: true\n });\n form.add(newTokenService, this.tr(\"Service\"));\n\n const newTokenKey = new qx.ui.form.TextField();\n newTokenKey.set({\n placeholder: this.tr(\"Input your token key\")\n });\n form.add(newTokenKey, this.tr(\"Key\"));\n\n const newTokenSecret = new qx.ui.form.TextField();\n newTokenSecret.set({\n placeholder: this.tr(\"Input your token secret\")\n });\n form.add(newTokenSecret, this.tr(\"Secret\"));\n\n const addTokenBtn = new osparc.ui.form.FetchButton(this.tr(\"Add\"));\n addTokenBtn.addListener(\"execute\", e => {\n if (!osparc.data.Permissions.getInstance().canDo(\"user.token.create\", true)) {\n return;\n }\n const params = {\n data: {\n \"service\": newTokenService.getValue(),\n \"token_key\": newTokenKey.getValue(),\n \"token_secret\": newTokenSecret.getValue()\n }\n };\n addTokenBtn.setFetching(true);\n osparc.data.Resources.fetch(\"tokens\", \"post\", params)\n .then(() => form.fireEvent(\"added\"))\n .catch(err => console.error(err))\n .finally(() => addTokenBtn.setFetching(false));\n }, this);\n form.addButton(addTokenBtn);\n\n return form;\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * Preferences page for managing the user's tags.\n */\nqx.Class.define(\"osparc.desktop.preferences.pages.TagsPage\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(15));\n\n const studiesLabel = osparc.product.Utils.getStudyAlias({plural: true});\n const studyLabel = osparc.product.Utils.getStudyAlias();\n const msg = this.tr(\"\\\n Tags help you organize the \") + studiesLabel + this.tr(\" in the Dashboard by categorizing topics, making it easier to search and filter. \\\n Once the tags are created, they can be assigned to the \") + studyLabel + this.tr(\" via 'More options...' on the \") + studyLabel + this.tr(\" cards.\");\n const intro = osparc.ui.window.TabbedView.createHelpLabel(msg);\n this._add(intro);\n\n this._add(new qx.ui.core.Spacer(null, 10));\n\n this.__renderLayout();\n },\n\n members: {\n __tagsContainer: null,\n\n __renderLayout: async function() {\n // Tags\n this.__tagsContainer = new qx.ui.container.Composite(new qx.ui.layout.VBox(10));\n this.__tagsContainer.set({\n paddingLeft: 10\n });\n const tagContainerScroll = new qx.ui.container.Scroll(this.__tagsContainer);\n this._add(tagContainerScroll, {\n flex: 1\n });\n\n const tags = osparc.store.Tags.getInstance().getTags();\n for (const tag of tags) {\n await osparc.store.Tags.getInstance().fetchAccessRights(tag);\n }\n const tagItems = tags.map(tag => new osparc.form.tag.TagItem().set({tag}));\n tagItems.forEach(tagItem => {\n this.__tagsContainer.add(tagItem);\n this.__attachTagItemEvents(tagItem);\n });\n\n // New tag Button\n const addTagButton = new qx.ui.form.Button().set({\n appearance: \"form-button-outlined\",\n label: this.tr(\"New Tag\"),\n icon: \"@FontAwesome5Solid/plus/14\"\n });\n osparc.utils.Utils.setIdToWidget(addTagButton, \"addTagBtn\");\n addTagButton.addListener(\"execute\", () => {\n const newItem = new osparc.form.tag.TagItem().set({\n mode: osparc.form.tag.TagItem.modes.EDIT\n });\n this.__tagsContainer.add(newItem);\n this.__attachTagItemEvents(newItem);\n\n // scroll down\n const height = tagContainerScroll.getSizeHint().height;\n tagContainerScroll.scrollToY(height);\n });\n\n // New tag button\n const buttonContainer = new qx.ui.container.Composite(new qx.ui.layout.HBox().set({\n alignX: \"center\"\n }));\n buttonContainer.add(addTagButton);\n this._add(buttonContainer);\n },\n\n __attachTagItemEvents: function(tagItem) {\n tagItem.addListener(\"cancelNewTag\", e => this.__tagsContainer.remove(e.getTarget()), this);\n tagItem.addListener(\"deleteTag\", e => this.__tagsContainer.remove(e.getTarget()));\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.navigation.MiniProfileMenuButton\", {\n extend: qx.ui.menu.Button,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox());\n this._add(osparc.desktop.account.MyAccount.createMiniProfileView());\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2021 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Odei Maiz (odeimaiz)\n */\n\n/**\n * Switch button for controlling the theme\n */\n\nqx.Class.define(\"osparc.ui.switch.ThemeSwitcherMenuBtn\", {\n extend: qx.ui.menu.Button,\n\n construct: function() {\n this.base(arguments);\n\n if (!osparc.ui.switch.ThemeSwitcher.isSwitchUseful()) {\n this.setVisibility(\"excluded\");\n return;\n }\n\n osparc.ui.switch.ThemeSwitcher.bindLabelToTheme(this);\n osparc.ui.switch.ThemeSwitcher.bindIconToTheme(this, 14);\n this.addListener(\"execute\", () => osparc.ui.switch.ThemeSwitcher.switchTheme());\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.admin.AdminCenterWindow\", {\n extend: osparc.ui.window.TabbedWindow,\n\n construct: function() {\n this.base(arguments, \"admin-center\", this.tr(\"Admin Center\"));\n\n const width = 800;\n const height = 600;\n this.set({\n width: width,\n height: height,\n });\n\n const adminCenter = new osparc.admin.AdminCenter();\n this._setTabbedView(adminCenter);\n },\n\n statics: {\n openWindow: function() {\n const accountWindow = new osparc.admin.AdminCenterWindow();\n accountWindow.center();\n accountWindow.open();\n return accountWindow;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.po.POCenterWindow\", {\n extend: osparc.ui.window.TabbedWindow,\n\n construct: function() {\n this.base(arguments, \"po-center\", this.tr(\"PO Center\"));\n\n const width = 800;\n const height = 600;\n this.set({\n width,\n height\n });\n\n const poCenter = new osparc.po.POCenter();\n this._setTabbedView(poCenter);\n },\n\n statics: {\n openWindow: function() {\n const accountWindow = new osparc.po.POCenterWindow();\n accountWindow.center();\n accountWindow.open();\n return accountWindow;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.tester.TesterCenterWindow\", {\n extend: osparc.ui.window.TabbedWindow,\n\n construct: function() {\n this.base(arguments, \"tester-center\", this.tr(\"Tester Center\"));\n\n const width = 800;\n const maxHeight = 800;\n this.set({\n width,\n maxHeight,\n });\n\n const testerCenter = new osparc.tester.TesterCenter();\n this._setTabbedView(testerCenter);\n },\n\n statics: {\n openWindow: function() {\n const accountWindow = new osparc.tester.TesterCenterWindow();\n accountWindow.center();\n accountWindow.open();\n return accountWindow;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.product.AboutProduct\", {\n extend: osparc.ui.window.Window,\n type: \"singleton\",\n\n construct: function() {\n this.base(arguments, this.tr(\"About Product\"));\n\n const displayName = osparc.store.StaticInfo.getInstance().getDisplayName();\n this.setCaption(this.tr(\"About \") + displayName);\n\n this.set({\n layout: new qx.ui.layout.VBox(10),\n width: this.self().WIDTH,\n contentPadding: this.self().PADDING,\n showMaximize: false,\n showMinimize: false,\n resizable: true,\n centerOnAppear: true,\n clickAwayClose: true,\n modal: true\n });\n\n this.__buildLayout();\n },\n\n statics: {\n WIDTH: 500,\n PADDING: 15\n },\n\n members: {\n __buildLayout: function() {\n switch (osparc.product.Utils.getProductName()) {\n case \"s4l\":\n case \"s4lacad\":\n this.__buildS4LLayout();\n break;\n case \"s4llite\":\n this.__buildS4LLiteLayout();\n break;\n case \"tis\":\n case \"tiplite\":\n this.__buildTIPLayout();\n break;\n default: {\n const noInfoText = this.tr(\"Information not available\");\n const noInfoLabel = osparc.product.quickStart.Utils.createLabel(noInfoText);\n this.add(noInfoLabel);\n break;\n }\n }\n },\n\n __buildS4LLayout: function() {\n const licenseUrl = osparc.store.Support.getLicenseURL();\n const text = this.tr(`\n Sim4Life.web is a native implementation of the most advanced simulation platform, Sim4Life, in the cloud. \\\n The platform empowers users to simulate, analyze, and predict complex, multifaceted, and dynamic biological interactions within the full anatomical complexity of the human body. \\\n It provides the ability to set up and run complex simulations directly within any browser, utilizing cloud technology.\n
\n Sim4Life.web makes use of technologies developed by our research partner for the o2S2PARC platform, the IT’IS Foundation, and co-funded by the U.S. National Institutes of Health’s SPARC initiative.\\\n
\n For more information about Sim4Life, please visit ${osparc.utils.Utils.createHTMLLink(\"sim4life.swiss\", \"https://sim4life.swiss/\")}.\n
\n To review license agreements, click ${osparc.utils.Utils.createHTMLLink(\"here\", licenseUrl)}.\n
\n Send us an email ${this.__getMailTo()}\n `);\n\n const label = osparc.product.quickStart.Utils.createLabel(text);\n this.add(label);\n },\n\n __buildS4LLiteLayout: function() {\n // https://zurichmedtech.github.io/s4l-lite-manual/#/docs/what_is_s4l_lite\n const introText = \"Sim4Life.lite is a powerful web-based simulation platform that allows you to model and analyze real-world phenomena and to design complex technical devices in a validated environment. With its intuitive interface and advanced tools, Sim4Life.lite makes it easy to develop your simulation project, wherever you are.\";\n\n const licenseUrl = \"https://zurichmedtech.github.io/s4l-lite-manual/#/docs/licensing/copyright_Sim4Life\";\n const licenseText = `Click ${osparc.utils.Utils.createHTMLLink(\"here\", licenseUrl)} to read the license agreements.`;\n\n // more info ZMT website\n const moreInfoUrl = \"https://zmt.swiss/\";\n const moreInfoText = `For more information about Sim4Life.lite, visit ${osparc.utils.Utils.createHTMLLink(\"our website\", moreInfoUrl)}.`;\n\n const emailText = `Send us an email ${this.__getMailTo()}`;\n\n [\n introText,\n licenseText,\n moreInfoText,\n emailText,\n ].forEach(text => {\n const label = osparc.product.quickStart.Utils.createLabel(text);\n this.add(label);\n });\n\n this.__addCopyright();\n },\n\n __buildTIPLayout: function() {\n const licenseUrl = osparc.store.Support.getLicenseURL();\n const text = this.tr(`\n TIP (TI Planning Tool) is an innovative online platform designed to optimize targeted neurostimulation protocols using \\\n temporal interference (TI) stimulation. Developed by IT'IS Foundation, TIP simplifies the complex process of planning deep \\\n brain stimulation.\n
\n Powered by o2S2PARC technology, TIP utilizes sophisticated electromagnetic simulations, detailed anatomical head models, \\\n and automated optimization to generate comprehensive reports with quantitative and visual information. This tool is \\\n invaluable for neuroscientists and brain stimulation experts, especially those with limited computational modeling experience, \\\n enabling them to create effective and safe stimulation protocols for their research. \\\n
\n For more information about TIP, please visit ${osparc.utils.Utils.createHTMLLink(\"itis.swiss\", \"https://itis.swiss/tools-and-systems/ti-planning/overview\")}.\n
\n To review license agreements, click ${osparc.utils.Utils.createHTMLLink(\"here\", licenseUrl)}.\n
\n Send us an email ${this.__getMailTo()}\n `);\n\n const label = osparc.product.quickStart.Utils.createLabel(text);\n this.add(label);\n },\n\n __getMailTo: function() {\n const supportEmail = osparc.store.VendorInfo.getInstance().getSupportEmail();\n const productName = osparc.store.StaticInfo.getInstance().getDisplayName();\n return osparc.store.Support.mailToLink(supportEmail, \"Support \" + productName, false);\n },\n\n __addCopyright: function() {\n const copyrightLink = new osparc.ui.basic.LinkLabel().set({\n font: \"link-label-14\"\n });\n const vendor = osparc.store.VendorInfo.getInstance().getVendor();\n if (vendor && \"url\" in vendor && \"copyright\" in vendor) {\n copyrightLink.set({\n value: vendor.copyright,\n url: vendor.url\n });\n }\n this.add(copyrightLink);\n },\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2009 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Fabian Jakobs (fjakobs)\n\n************************************************************************ */\n\n/**\n * The HoverButton is an {@link qx.ui.basic.Atom}, which fires repeatedly\n * execute events while the pointer is over the widget.\n *\n * The rate at which the execute event is fired accelerates is the pointer keeps\n * inside of the widget. The initial delay and the interval time can be set using\n * the properties {@link #firstInterval} and {@link #interval}. The\n * {@link #execute} events will be fired in a shorter amount of time if the pointer\n * remains over the widget, until the min {@link #minTimer} is reached.\n * The {@link #timerDecrease} property sets the amount of milliseconds which will\n * decreased after every firing.\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * var button = new qx.ui.form.HoverButton(\"Hello World\");\n *\n * button.addListener(\"execute\", function(e) {\n * alert(\"Button is hovered\");\n * }, this);\n *\n * this.getRoot.add(button);\n *
\n *\n * This example creates a button with the label \"Hello World\" and attaches an\n * event listener to the {@link #execute} event.\n *\n * *External Documentation*\n *\n * \n * Documentation of this widget in the qooxdoo manual.\n */\nqx.Class.define(\"qx.ui.form.HoverButton\",\n{\n extend : qx.ui.basic.Atom,\n include : [qx.ui.core.MExecutable],\n implement : [qx.ui.form.IExecutable],\n\n /**\n * @param label {String} Label to use\n * @param icon {String?null} Icon to use\n */\n construct : function(label, icon)\n {\n this.base(arguments, label, icon);\n\n this.addListener(\"pointerover\", this._onPointerOver, this);\n this.addListener(\"pointerout\", this._onPointerOut, this);\n\n this.__timer = new qx.event.AcceleratingTimer();\n this.__timer.addListener(\"interval\", this._onInterval, this);\n },\n\n\n properties :\n {\n // overridden\n appearance :\n {\n refine : true,\n init : \"hover-button\"\n },\n\n /**\n * Interval used after the first run of the timer. Usually a smaller value\n * than the \"firstInterval\" property value to get a faster reaction.\n */\n interval :\n {\n check : \"Integer\",\n init : 80\n },\n\n /**\n * Interval used for the first run of the timer. Usually a greater value\n * than the \"interval\" property value to a little delayed reaction at the first\n * time.\n */\n firstInterval :\n {\n check : \"Integer\",\n init : 200\n },\n\n /** This configures the minimum value for the timer interval. */\n minTimer :\n {\n check : \"Integer\",\n init : 20\n },\n\n /** Decrease of the timer on each interval (for the next interval) until minTimer reached. */\n timerDecrease :\n {\n check : \"Integer\",\n init : 2\n }\n },\n\n\n members :\n {\n __timer : null,\n\n\n /**\n * Start timer on pointer over\n *\n * @param e {qx.event.type.Pointer} The pointer event\n */\n _onPointerOver : function(e)\n {\n if (!this.isEnabled() || e.getTarget() !== this) {\n return;\n }\n\n this.__timer.set({\n interval: this.getInterval(),\n firstInterval: this.getFirstInterval(),\n minimum: this.getMinTimer(),\n decrease: this.getTimerDecrease()\n }).start();\n\n this.addState(\"hovered\");\n },\n\n\n /**\n * Stop timer on pointer out\n *\n * @param e {qx.event.type.Pointer} The pointer event\n */\n _onPointerOut : function(e)\n {\n this.__timer.stop();\n this.removeState(\"hovered\");\n\n if (!this.isEnabled() || e.getTarget() !== this) {\n return;\n }\n },\n\n\n /**\n * Fire execute event on timer interval event\n */\n _onInterval : function()\n {\n if (this.isEnabled())\n {\n this.execute();\n } else {\n this.__timer.stop();\n }\n }\n },\n\n\n destruct : function() {\n this._disposeObjects(\"__timer\");\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.ui.list.ListItemWithMenu\", {\n extend: osparc.ui.list.ListItem,\n type: \"abstract\",\n\n properties: {\n accessRights: {\n check: \"Object\",\n apply: \"_applyAccessRights\",\n event: \"changeAccessRights\",\n nullable: true\n },\n\n showOptions: {\n check: \"Boolean\",\n apply: \"__applyShowOptions\",\n event: \"changeShowOptions\",\n nullable: true\n },\n\n options: {\n check: \"Array\",\n nullable: true,\n event: \"changeOptions\",\n apply: \"__applyOptions\"\n }\n },\n\n statics: {\n ICON_SIZE: 24\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"options\": {\n const iconSize = this.self().ICON_SIZE;\n control = new qx.ui.form.MenuButton().set({\n maxWidth: iconSize,\n maxHeight: iconSize,\n alignX: \"center\",\n alignY: \"middle\",\n icon: \"@FontAwesome5Solid/ellipsis-v/\"+(iconSize-11),\n focusable: false\n });\n this._add(control, {\n row: 0,\n column: 3,\n rowSpan: 2\n });\n break;\n }\n }\n\n return control || this.base(arguments, id);\n },\n\n _applyAccessRights: function(value) {\n const optionsMenu = this.getChildControl(\"options\");\n optionsMenu.hide();\n\n if (value === null) {\n return;\n }\n\n this._setRole();\n\n this._getInfoButton();\n\n this.__applyOptions();\n },\n\n _setRole: function() {\n const accessRights = this.getAccessRights();\n const role = this.getChildControl(\"role\");\n if (\n \"getDelete\" in accessRights && accessRights.getDelete() ||\n \"delete\" in accessRights && accessRights[\"delete\"]\n ) {\n role.setValue(osparc.data.Roles.ORG[3].label);\n } else if (\n \"getWrite\" in accessRights && accessRights.getWrite() ||\n \"write\" in accessRights && accessRights[\"write\"]\n ) {\n role.setValue(osparc.data.Roles.ORG[2].label);\n } else if (\n (\"getRead\" in accessRights && accessRights.getRead()) ||\n (\"getExecute\" in accessRights && accessRights.getExecute()) ||\n (\"read\" in accessRights && accessRights[\"read\"]) ||\n (\"execute\" in accessRights && accessRights[\"execute\"])\n ) {\n role.setValue(osparc.data.Roles.ORG[1].label);\n } else {\n role.setValue(osparc.data.Roles.ORG[0].label);\n }\n },\n\n _getInfoButton: function() {\n return null;\n },\n\n _getOptionsMenu: function() {\n return null;\n },\n\n __applyShowOptions: function(value) {\n const optionsMenu = this.getChildControl(\"options\");\n optionsMenu.setVisibility(value ? \"visible\" : \"hidden\");\n },\n\n __applyOptions: function() {\n const menu = this._getOptionsMenu();\n if (menu && menu.getChildren() && menu.getChildren().length) {\n const optionsMenu = this.getChildControl(\"options\");\n optionsMenu.setMenu(menu);\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.wallets.WalletListItem\", {\n extend: osparc.ui.list.ListItemWithMenu,\n\n construct: function() {\n this.base(arguments);\n\n const creditsCol = 7;\n const layout = this._getLayout();\n layout.setSpacingX(10);\n layout.setColumnWidth(creditsCol, 110);\n layout.setColumnAlign(creditsCol, \"right\", \"middle\");\n\n this.__buildLayout();\n },\n\n properties: {\n appearance: {\n refine : true,\n init : \"none\"\n },\n\n creditsAvailable: {\n check: \"Number\",\n nullable: false,\n apply: \"__applyCreditsAvailable\"\n },\n\n status: {\n check: [\"ACTIVE\", \"INACTIVE\"],\n init: null,\n nullable: false,\n apply: \"__applyStatus\"\n },\n\n preferredWallet: {\n check: \"Boolean\",\n init: null,\n nullable: false,\n apply: \"__applyPreferredWallet\"\n },\n\n autoRecharge: {\n check: \"Object\",\n nullable: true,\n event: \"changeAutoRecharge\"\n }\n },\n\n events: {\n \"openShareWallet\": \"qx.event.type.Data\",\n \"openEditWallet\": \"qx.event.type.Data\",\n \"buyCredits\": \"qx.event.type.Data\",\n \"toggleFavourite\": \"qx.event.type.Data\"\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"thumbnail\":\n control = null\n break\n case \"title\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\"\n });\n control.bind(\"value\", control, \"toolTipText\");\n this._add(control, {\n row: 0,\n column: 0,\n colSpan: 2\n });\n break;\n case \"subtitle\":\n control = new qx.ui.basic.Label().set({\n font: \"text-13\",\n rich: true\n });\n this._add(control, {\n row: 1,\n column: 0,\n colSpan: 2\n });\n break;\n case \"credits-indicator\":\n control = new osparc.desktop.credits.CreditsIndicator().set({\n allowStretchY: false\n });\n control.getChildControl(\"credits-text\").set({\n alignX: \"right\"\n });\n this._add(control, {\n row: 0,\n column: 7,\n rowSpan: 2\n });\n break;\n case \"status-button\":\n control = new qx.ui.form.Button().set({\n maxHeight: 30,\n width: 62,\n alignX: \"center\",\n alignY: \"middle\",\n enabled: false\n });\n control.addListener(\"execute\", () => {\n const walletId = this.getKey();\n const store = osparc.store.Store.getInstance();\n const found = store.getWallets().find(wallet => wallet.getWalletId() === parseInt(walletId));\n if (found) {\n // switch status\n const newStatus = found.getStatus() === \"ACTIVE\" ? \"INACTIVE\" : \"ACTIVE\";\n const params = {\n url: {\n \"walletId\": walletId\n },\n data: {\n \"name\": found.getName(),\n \"description\": found.getDescription(),\n \"thumbnail\": found.getThumbnail(),\n \"status\": newStatus\n }\n };\n osparc.data.Resources.fetch(\"wallets\", \"put\", params)\n .then(() => found.setStatus(newStatus))\n .catch(err => {\n console.error(err);\n const msg = err.message || (this.tr(\"Something went wrong updating the state\"));\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n });\n }\n }, this);\n this._add(control, {\n row: 0,\n column: 4,\n rowSpan: 2\n });\n break;\n case \"favourite-button\":\n control = new qx.ui.form.Button().set({\n iconPosition: \"right\",\n width: 110, // make Primary and Secondary buttons same width\n maxHeight: 30,\n alignY: \"middle\"\n });\n control.addListener(\"execute\", () => this.fireDataEvent(\"toggleFavourite\", {\n walletId: this.getKey()\n }), this);\n this._add(control, {\n row: 0,\n column: 8,\n rowSpan: 2\n });\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n __buildLayout() {\n this._removeAll();\n\n this.__autorechargeBtn = new qx.ui.form.ToggleButton(this.tr(\"Auto-recharge\")).set({\n maxHeight: 30,\n alignX: \"center\",\n alignY: \"middle\",\n focusable: false\n });\n osparc.utils.Utils.setIdToWidget(this.__autorechargeBtn, \"autorechargeBtn\");\n this.__autorechargeBtn.addListener(\"execute\", () => {\n const autorecharge = new osparc.desktop.credits.AutoRecharge(this.getKey());\n const win = osparc.ui.window.Window.popUpInWindow(autorecharge, \"Auto-recharge\", 400, 550).set({\n resizable: false,\n movable: false\n });\n autorecharge.addListener(\"close\", () => win.close());\n autorecharge.addListener(\"addNewPaymentMethod\", () => {\n win.close()\n const billingCenter = osparc.desktop.credits.BillingCenterWindow.openWindow()\n billingCenter.openPaymentMethods()\n })\n // Revert default execute action (toggle the buttons's value)\n this.__autorechargeBtn.toggleValue();\n });\n this.bind(\"autoRecharge\", this.__autorechargeBtn, \"value\", {\n converter: ar => ar ? ar.enabled : false\n });\n this.__autorechargeBtn.bind(\"value\", this.__autorechargeBtn, \"label\", {\n converter: value => value ? this.tr(\"Auto-recharge: ON\") : this.tr(\"Auto-recharge: OFF\")\n });\n this._add(this.__autorechargeBtn, {\n // Takes the status button place for the moment\n row: 0,\n column: 5,\n rowSpan: 2\n });\n\n this.__shareButton = new qx.ui.form.Button(null, \"@FontAwesome5Solid/users/14\").set({\n maxHeight: 30,\n alignX: \"center\",\n alignY: \"middle\",\n focusable: false,\n visibility: this.__canIWrite() ? \"visible\" : \"excluded\",\n });\n this.__shareButton.addListener(\"execute\", () => this.fireDataEvent(\"openShareWallet\", this.getKey()));\n this._add(this.__shareButton, {\n row: 0,\n column: 4,\n rowSpan: 2\n });\n },\n\n __applyCreditsAvailable: function(creditsAvailable) {\n if (creditsAvailable !== null) {\n const creditsIndicator = this.getChildControl(\"credits-indicator\");\n creditsIndicator.setCreditsAvailable(creditsAvailable);\n }\n },\n\n __canIWrite: function() {\n const myGid = osparc.auth.Data.getInstance().getGroupId();\n const accessRightss = this.getAccessRights();\n const found = accessRightss && accessRightss.find(ar => ar[\"gid\"] === myGid);\n if (found) {\n return found[\"write\"];\n }\n return false;\n },\n\n // overridden\n _applyAccessRights: function(accessRights) {\n this.__buildLayout();\n this.base(arguments, accessRights);\n const buyBtn = new qx.ui.form.Button().set({\n label: this.tr(\"Buy Credits\"),\n icon: \"@FontAwesome5Solid/dollar-sign/16\",\n maxHeight: 30,\n alignY: \"middle\",\n visibility: this.__canIWrite() ? \"visible\" : \"excluded\",\n });\n osparc.utils.Utils.setIdToWidget(buyBtn, \"buyCreditsBtn\");\n this.bind(\"accessRights\", buyBtn, \"enabled\", {\n converter: aR => {\n const myAr = osparc.data.model.Wallet.getMyAccessRights(aR);\n return Boolean(myAr && myAr.write);\n }\n });\n buyBtn.addListener(\"execute\", () => this.fireDataEvent(\"buyCredits\", {\n walletId: this.getKey()\n }), this);\n this._add(buyBtn, {\n row: 0,\n column: 6,\n rowSpan: 2\n });\n this.__autorechargeBtn.setVisibility(this.__canIWrite() ? \"visible\" : \"excluded\");\n },\n\n // overridden\n _setRole: function() {\n const accessRightss = this.getAccessRights();\n const myGid = osparc.auth.Data.getInstance().getGroupId();\n const found = accessRightss && accessRightss.find(ar => ar[\"gid\"] === myGid);\n if (found) {\n const role = this.getChildControl(\"role\");\n if (found[\"write\"]) {\n role.setValue(osparc.data.Roles.WALLET[2].label);\n } else if (found[\"read\"]) {\n role.setValue(osparc.data.Roles.WALLET[1].label);\n }\n }\n },\n\n // overridden\n _getOptionsMenu: function() {\n let menu = null;\n const accessRightss = this.getAccessRights();\n const myGid = osparc.auth.Data.getInstance().getGroupId();\n const found = accessRightss && accessRightss.find(ar => ar[\"gid\"] === myGid);\n if (found && found[\"write\"]) {\n const optionsMenu = this.getChildControl(\"options\");\n optionsMenu.show();\n\n menu = new qx.ui.menu.Menu().set({\n position: \"bottom-right\"\n });\n const editWalletButton = new qx.ui.menu.Button(this.tr(\"Edit details...\"));\n editWalletButton.addListener(\"execute\", () => this.fireDataEvent(\"openEditWallet\", this.getKey()));\n menu.add(editWalletButton);\n }\n return menu;\n },\n\n // overridden\n _applyThumbnail: function(value) {\n },\n\n __applyStatus: function(status) {\n if (status) {\n const statusButton = this.getChildControl(\"status-button\");\n statusButton.set({\n icon: status === \"ACTIVE\" ? \"@FontAwesome5Solid/toggle-on/16\" : \"@FontAwesome5Solid/toggle-off/16\",\n label: status === \"ACTIVE\" ? this.tr(\"ON\") : this.tr(\"OFF\"),\n toolTipText: status === \"ACTIVE\" ? this.tr(\"Credit Account enabled\") : this.tr(\"Credit Account blocked\"),\n enabled: this.__canIWrite(),\n visibility: \"excluded\" // excluded until the backed implements it\n });\n }\n },\n\n __applyPreferredWallet: function(isPreferredWallet) {\n const favouriteButton = this.getChildControl(\"favourite-button\");\n favouriteButton.setBackgroundColor(\"transparent\");\n const favouriteButtonIcon = favouriteButton.getChildControl(\"icon\");\n if (isPreferredWallet) {\n favouriteButton.set({\n toolTipText: this.tr(\"Currently being used\"),\n icon: \"@FontAwesome5Solid/check-circle/20\"\n });\n favouriteButtonIcon.setTextColor(\"strong-main\");\n } else {\n favouriteButton.set({\n toolTipText: this.tr(\"Switch to this Credit Account\"),\n icon: \"@FontAwesome5Solid/circle/20\"\n });\n favouriteButtonIcon.setTextColor(\"text\");\n }\n },\n\n excludeShareButton: function() {\n if (this.__shareButton) {\n this.__shareButton.exclude()\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.wallets.WalletEditor\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(8));\n\n this.__validator = new qx.ui.form.validation.Manager();\n\n this.__buildLayout()\n },\n\n properties: {\n walletId: {\n check: \"Number\",\n init: 0,\n nullable: false,\n event: \"changeWalletId\"\n },\n\n name: {\n check: \"String\",\n init: \"\",\n nullable: false,\n event: \"changeName\"\n },\n\n description: {\n check: \"String\",\n init: \"\",\n nullable: true,\n event: \"changeDescription\"\n },\n\n isFetching: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n event: \"changeIsFetching\"\n }\n },\n\n events: {\n \"updateWallet\": \"qx.event.type.Event\",\n \"cancel\": \"qx.event.type.Event\"\n },\n\n members: {\n __buildLayout: function() {\n this._removeAll()\n this._add(new qx.ui.basic.Label(this.tr(\"Title\")).set({\n font: \"text-14\"\n }));\n const title = new qx.ui.form.TextField().set({\n font: \"text-14\",\n backgroundColor: \"background-main\",\n placeholder: this.tr(\"Title\"),\n height: 35,\n required: true\n });\n this.bind(\"name\", title, \"value\");\n title.bind(\"value\", this, \"name\");\n this._add(title);\n this.__validator.add(title)\n\n this._add(new qx.ui.basic.Label(this.tr(\"Description\")).set({\n font: \"text-14\",\n marginTop: 10\n }));\n const description = new qx.ui.form.TextArea().set({\n font: \"text-14\",\n placeholder: this.tr(\"Description\"),\n autoSize: true,\n minHeight: 70,\n maxHeight: 140\n });\n this.bind(\"description\", description, \"value\");\n description.bind(\"value\", this, \"description\");\n this._add(description);\n\n const buttons = new qx.ui.container.Composite(new qx.ui.layout.HBox(8).set({\n alignX: \"right\"\n }));\n const cancelButton = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"form-button-text\"\n });\n cancelButton.addListener(\"execute\", () => this.fireEvent(\"cancel\"), this);\n buttons.addAt(cancelButton, 0);\n\n const saveButton = new osparc.ui.form.FetchButton(this.tr(\"Save\")).set({\n appearance: \"form-button\"\n });\n saveButton.addListener(\"execute\", () => {\n if (this.__validator.validate()) {\n this.fireEvent(\"updateWallet\");\n }\n }, this);\n this.bind(\"isFetching\", saveButton, \"fetching\")\n buttons.addAt(saveButton, 1);\n this._add(buttons);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.wallets.MembersList\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this._add(this.__createIntroText());\n this._add(this.__getMemberInvitation());\n this._add(this.__getRolesToolbar());\n this._add(this.__getMembersFilter());\n this._add(this.__getMembersList(), {\n flex: 1\n });\n },\n\n statics: {\n getNoReadAccess: function() {\n return {\n \"read\": false,\n \"write\": false,\n \"delete\": false\n };\n },\n\n getReadAccess: function() {\n return {\n \"read\": true,\n \"write\": false,\n \"delete\": false\n };\n },\n\n getWriteAccess: function() {\n return {\n \"read\": true,\n \"write\": true,\n \"delete\": false\n };\n },\n\n getDeleteAccess: function() {\n return {\n \"read\": true,\n \"write\": true,\n \"delete\": true\n };\n },\n\n sortWalletMembers: function(a, b) {\n const sorted = osparc.share.Collaborators.sortByAccessRights(a[\"accessRights\"], b[\"accessRights\"]);\n if (sorted !== 0) {\n return sorted;\n }\n if ((\"label\" in a) && (\"label\" in b)) {\n return a[\"label\"].localeCompare(b[\"label\"]);\n }\n return 0;\n }\n },\n\n members: {\n __currentModel: null,\n __memberInvitation: null,\n __membersModel: null,\n\n setWallet: function(model) {\n if (model === null) {\n return;\n }\n\n this.__currentModel = model;\n\n this.__memberInvitation.setVisibility(this.__canIWrite() ? \"visible\" : \"excluded\");\n\n this.__reloadWalletMembers();\n },\n\n __canIWrite: function() {\n const wallet = this.__currentModel;\n if (wallet) {\n const myAccessRights = wallet.getMyAccessRights();\n if (myAccessRights) {\n return myAccessRights[\"write\"];\n }\n }\n return false;\n },\n\n __createIntroText: function() {\n const msg = this.tr(\"Only Accountants of an Organization can share a wallet with other users.\");\n const intro = new qx.ui.basic.Label().set({\n value: msg,\n alignX: \"left\",\n rich: true,\n font: \"text-13\"\n });\n return intro;\n },\n\n __getMemberInvitation: function() {\n const vBox = this.__memberInvitation = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n vBox.exclude();\n\n const addMemberBtn = new qx.ui.form.Button(this.tr(\"Add Members...\")).set({\n appearance: \"strong-button\",\n allowGrowX: false\n });\n addMemberBtn.addListener(\"execute\", () => {\n const serializedData = this.__currentModel.serialize();\n serializedData[\"resourceType\"] = \"wallet\";\n const showOrganizations = false;\n const collaboratorsManager = new osparc.share.NewCollaboratorsManager(serializedData, showOrganizations);\n collaboratorsManager.addListener(\"addCollaborators\", e => {\n const cb = () => collaboratorsManager.close();\n this.__addMembers(e.getData(), cb);\n }, this);\n }, this);\n vBox.add(addMemberBtn);\n\n return vBox;\n },\n\n __getRolesToolbar: function() {\n return osparc.data.Roles.createRolesWalletInfo();\n },\n\n __getMembersFilter: function() {\n const filter = new osparc.filter.TextFilter(\"text\", \"walletMembersList\").set({\n allowStretchX: true,\n margin: [0, 10, 5, 10]\n });\n return filter;\n },\n\n __getMembersList: function() {\n const membersUIList = new qx.ui.form.List().set({\n decorator: \"no-border\",\n spacing: 3,\n width: 150\n });\n\n const membersModel = this.__membersModel = new qx.data.Array();\n const membersCtrl = new qx.data.controller.List(membersModel, membersUIList, \"name\");\n membersCtrl.setDelegate({\n createItem: () => new osparc.desktop.wallets.MemberListItem(),\n bindItem: (ctrl, item, id) => {\n ctrl.bindProperty(\"userId\", \"model\", null, item, id);\n ctrl.bindProperty(\"userId\", \"key\", null, item, id);\n ctrl.bindProperty(\"groupId\", \"gid\", null, item, id);\n ctrl.bindProperty(\"thumbnail\", \"thumbnail\", null, item, id);\n ctrl.bindProperty(\"label\", \"title\", null, item, id);\n ctrl.bindProperty(\"description\", \"subtitleMD\", null, item, id);\n ctrl.bindProperty(\"accessRights\", \"accessRights\", null, item, id);\n ctrl.bindProperty(\"options\", \"options\", null, item, id);\n ctrl.bindProperty(\"showOptions\", \"showOptions\", null, item, id);\n },\n configureItem: item => {\n item.subscribeToFilterGroup(\"walletMembersList\");\n item.getChildControl(\"thumbnail\").getContentElement()\n .setStyles({\n \"border-radius\": \"16px\"\n });\n item.addListener(\"promoteToAccountant\", e => {\n const listedMember = e.getData();\n this.__promoteToAccountant(listedMember);\n });\n item.addListener(\"demoteToMember\", e => {\n const listedMember = e.getData();\n this.__demoteToMember(listedMember);\n });\n item.addListener(\"removeMember\", e => {\n const listedMember = e.getData();\n this.__deleteMember(listedMember);\n });\n }\n });\n\n return membersUIList;\n },\n\n __reloadWalletMembers: async function() {\n const membersModel = this.__membersModel;\n membersModel.removeAll();\n\n const wallet = this.__currentModel;\n if (wallet === null) {\n return;\n }\n\n const myGroupId = osparc.auth.Data.getInstance().getGroupId();\n const membersList = [];\n const canIWrite = wallet.getMyAccessRights()[\"write\"];\n const accessRightss = wallet.getAccessRights();\n const usersStore = osparc.store.Users.getInstance();\n for (let i=0; i membersModel.append(qx.data.marshal.Json.createModel(member)));\n },\n\n __addMembers: function(gids, cb) {\n if (gids.length === 0) {\n return;\n }\n const wallet = this.__currentModel;\n if (wallet === null) {\n return;\n }\n\n const promises = [];\n gids.forEach(gid => {\n const params = {\n url: {\n \"walletId\": wallet.getWalletId(),\n \"groupId\": gid\n },\n data: this.self().getReadAccess()\n };\n promises.push(osparc.data.Resources.fetch(\"wallets\", \"postAccessRights\", params));\n });\n Promise.all(promises)\n .then(() => {\n osparc.store.Store.getInstance().reloadWalletAccessRights(wallet)\n .then(() => {\n this.__reloadWalletMembers();\n if (cb) {\n cb();\n }\n });\n\n // push 'WALLET_SHARED' notification\n const potentialCollaborators = osparc.store.Groups.getInstance().getPotentialCollaborators();\n gids.forEach(gid => {\n if (gid in potentialCollaborators && \"getUserId\" in potentialCollaborators[gid]) {\n // it's a user, not an organization\n const uid = potentialCollaborators[gid].getUserId();\n osparc.notification.Notifications.postNewWallet(uid, wallet.getWalletId());\n }\n });\n });\n },\n\n __promoteToAccountant: function(listedMember) {\n const wallet = this.__currentModel;\n if (wallet === null) {\n return;\n }\n\n const params = {\n url: {\n \"walletId\": wallet.getWalletId(),\n \"groupId\": listedMember[\"gid\"],\n },\n data: this.self().getWriteAccess()\n };\n osparc.data.Resources.fetch(\"wallets\", \"putAccessRights\", params)\n .then(() => {\n osparc.store.Store.getInstance().reloadWalletAccessRights(wallet)\n .then(() => this.__reloadWalletMembers());\n });\n },\n\n __demoteToMember: function(listedMember) {\n const wallet = this.__currentModel;\n if (wallet === null) {\n return;\n }\n\n const params = {\n url: {\n \"walletId\": wallet.getWalletId(),\n \"groupId\": listedMember[\"gid\"],\n },\n data: this.self().getReadAccess()\n };\n osparc.data.Resources.fetch(\"wallets\", \"putAccessRights\", params)\n .then(() => {\n osparc.store.Store.getInstance().reloadWalletAccessRights(wallet)\n .then(() => this.__reloadWalletMembers());\n });\n },\n\n __deleteMember: function(listedMember) {\n const wallet = this.__currentModel;\n if (wallet === null) {\n return;\n }\n\n const params = {\n url: {\n \"walletId\": wallet.getWalletId(),\n \"groupId\": listedMember[\"gid\"],\n }\n };\n osparc.data.Resources.fetch(\"wallets\", \"deleteAccessRights\", params)\n .then(() => {\n osparc.store.Store.getInstance().reloadWalletAccessRights(wallet)\n .then(() => this.__reloadWalletMembers());\n });\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2009 Derrell Lipman\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Derrell Lipman (derrell)\n\n************************************************************************ */\n\n/**\n * Interface for a column menu item corresponding to a table column.\n */\nqx.Interface.define(\"qx.ui.table.IColumnMenuItem\",\n{\n properties :\n {\n /**\n * Whether the table column associated with this menu item is visible\n * Should be of type {Boolean}!\n */\n columnVisible : { }\n },\n\n events :\n {\n /**\n * Dispatched when a column changes visibility state. The event data is a\n * boolean indicating whether the table column associated with this menu\n * item is now visible.\n */\n changeColumnVisible : \"qx.event.type.Data\"\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2024 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\nconst SERVER_MAX_LIMIT = 49\n\nqx.Class.define(\"osparc.desktop.credits.TransactionsTableModel\", {\n extend: qx.ui.table.model.Remote,\n\n construct() {\n this.base(arguments)\n this.setColumns([\n qx.locale.Manager.tr(\"Date\"),\n qx.locale.Manager.tr(\"Price USD\"),\n qx.locale.Manager.tr(\"Credits\"),\n qx.locale.Manager.tr(\"Status\"),\n qx.locale.Manager.tr(\"Comment\"),\n qx.locale.Manager.tr(\"Invoice\")\n ], [\n \"date\",\n \"price\",\n \"credits\",\n \"status\",\n \"comment\",\n \"invoice\"\n ])\n this.setColumnSortable(0, false)\n this.setColumnSortable(1, false)\n this.setColumnSortable(2, false)\n this.setColumnSortable(3, false)\n this.setColumnSortable(4, false)\n this.setColumnSortable(5, false)\n },\n\n properties: {\n walletId: {\n check: \"Number\",\n nullable: false\n },\n filters: {\n check: \"Object\",\n init: null\n },\n isFetching: {\n check: \"Boolean\",\n init: false,\n event: \"changeFetching\"\n }\n },\n\n members: {\n // overridden\n _loadRowCount() {\n const params = {\n url: {\n limit: 1,\n offset: 0\n }\n };\n const options = {\n resolveWResponse: true\n };\n osparc.data.Resources.fetch(\"payments\", \"get\", params, options)\n .then(({ data: resp }) => {\n this._onRowCountLoaded(resp[\"_meta\"].total)\n })\n .catch(() => {\n this._onRowCountLoaded(null)\n })\n },\n // overridden\n _loadRowData(firstRow, qxLastRow) {\n this.setIsFetching(true)\n // Please Qloocloox don't ask for more rows than there are\n const lastRow = Math.min(qxLastRow, this._rowCount - 1)\n const getFetchPromise = (offset, limit=SERVER_MAX_LIMIT) => {\n return osparc.data.Resources.fetch(\"payments\", \"get\", {\n url: {\n limit,\n offset\n }\n })\n .then(({ data: rawData }) => {\n const data = []\n rawData.forEach(rawRow => {\n data.push({\n date: osparc.utils.Utils.formatDateAndTime(new Date(rawRow.createdAt)),\n price: rawRow.priceDollars ? parseFloat(rawRow.priceDollars).toFixed(2) : 0,\n credits: rawRow.osparcCredits ? parseFloat(rawRow.osparcCredits).toFixed(2) * 1 : 0,\n status: this.__addColorTag(rawRow.completedStatus),\n comment: rawRow.comment,\n invoice: rawRow.invoiceUrl ? this.__createPdfIconWithLink(rawRow.walletId, rawRow.paymentId) : \"\"\n })\n })\n return data\n })\n }\n // Divides the model row request into several server requests to comply with the number of rows server limit\n const reqLimit = lastRow - firstRow + 1 // Number of requested rows\n const nRequests = Math.ceil(reqLimit / SERVER_MAX_LIMIT)\n if (nRequests > 1) {\n let requests = []\n for (let i=firstRow; i <= lastRow; i += SERVER_MAX_LIMIT) {\n requests.push(getFetchPromise(i, i > lastRow - SERVER_MAX_LIMIT + 1 ? reqLimit % SERVER_MAX_LIMIT : SERVER_MAX_LIMIT))\n }\n Promise.all(requests)\n .then(responses => {\n this._onRowDataLoaded(responses.flat())\n })\n .catch(err => {\n console.error(err)\n this._onRowDataLoaded(null)\n })\n .finally(() => this.setIsFetching(false))\n } else {\n getFetchPromise(firstRow, reqLimit)\n .then(data => {\n this._onRowDataLoaded(data)\n })\n .catch(err => {\n console.error(err)\n this._onRowDataLoaded(null)\n })\n .finally(() => this.setIsFetching(false))\n }\n },\n __getLevelColor: function(status) {\n const colorManager = qx.theme.manager.Color.getInstance();\n let logLevel = null;\n switch (status) {\n case \"SUCCESS\":\n logLevel = \"info\";\n break;\n case \"PENDING\":\n logLevel = \"warning\";\n break;\n case \"CANCELED\":\n case \"FAILED\":\n logLevel = \"error\";\n break;\n default:\n console.error(\"completedStatus unknown\");\n break;\n }\n return colorManager.resolve(`logger-${logLevel}-message`);\n },\n __addColorTag: function(status) {\n return `${osparc.utils.Utils.onlyFirstsUp(status)}`;\n },\n\n __createPdfIconWithLink: function(walletId, paymentId) {\n const urlParams = {\n walletId,\n paymentId\n };\n const req = osparc.data.Resources.getInstance().replaceUrlParams(\"payments\", \"invoiceLink\", urlParams);\n return `
`;\n }\n }\n})\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2007 OpenHex SPRL, http://www.openhex.org\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Gaetan de Menten (ged)\n\n************************************************************************ */\n\n/**\n * Specific data cell renderer for numbers.\n */\nqx.Class.define(\"qx.ui.table.cellrenderer.Number\",\n{\n extend : qx.ui.table.cellrenderer.Conditional,\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n /**\n * NumberFormat used to format data. If the numberFormat contains a\n * prefix and/or postfix containing characters which needs to be escaped,\n * those need to be given to the numberFormat in their escaped form\n * because no escaping happens at the cellrenderer level.\n */\n numberFormat :\n {\n check : \"qx.util.format.NumberFormat\",\n init : null,\n nullable : true\n }\n },\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n _getContentHtml : function(cellInfo)\n {\n var nf = this.getNumberFormat();\n\n if (nf)\n {\n if (cellInfo.value || cellInfo.value == 0) {\n // I don't think we need to escape the resulting string, as I\n // don't know of any decimal or separator which use a character\n // which needs escaping. It is much more plausible to have a\n // prefix, postfix containing such characters but those can be\n // (should be) added in their escaped form to the number format.\n return nf.format(cellInfo.value);\n } else {\n return \"\";\n }\n }\n else\n {\n return cellInfo.value == 0 ? \"0\" : (cellInfo.value || \"\");\n }\n },\n\n\n // overridden\n _getCellClass : function(cellInfo) {\n return \"qooxdoo-table-cell qooxdoo-table-cell-right\";\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2019 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\nqx.Class.define(\"osparc.ui.table.cellrenderer.StringWithTooltip\", {\n extend: qx.ui.table.cellrenderer.Default,\n members: {\n // overridden\n _getCellAttributes(cellInfo) {\n const attrs = this.base(arguments, cellInfo)\n return `${attrs} title=\"${cellInfo.value}\"`\n }\n }\n})\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Martin Wittemann (martinwittemann)\n\n************************************************************************ */\n\n/**\n * A *date field* is like a combo box with the date as popup. As button to\n * open the calendar a calendar icon is shown at the right to the textfield.\n *\n * To be conform with all form widgets, the {@link qx.ui.form.IForm} interface\n * is implemented.\n *\n * The following example creates a date field and sets the current\n * date as selected.\n *\n * \n * var dateField = new qx.ui.form.DateField();\n * this.getRoot().add(dateField, {top: 20, left: 20});\n * dateField.setValue(new Date());\n *
\n *\n * @childControl list {qx.ui.control.DateChooser} date chooser component\n * @childControl popup {qx.ui.popup.Popup} popup which shows the list control\n * @childControl textfield {qx.ui.form.TextField} text field for manual date entry\n * @childControl button {qx.ui.form.Button} button that opens the list control\n */\nqx.Class.define(\"qx.ui.form.DateField\",\n{\n extend : qx.ui.core.Widget,\n include : [\n qx.ui.core.MRemoteChildrenHandling,\n qx.ui.form.MForm\n ],\n implement : [\n qx.ui.form.IForm,\n qx.ui.form.IDateForm\n ],\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n construct : function()\n {\n this.base(arguments);\n\n // set the layout\n var layout = new qx.ui.layout.HBox();\n this._setLayout(layout);\n layout.setAlignY(\"middle\");\n\n // text field\n var textField = this._createChildControl(\"textfield\");\n this._createChildControl(\"button\");\n\n // register listeners\n this.addListener(\"tap\", this._onTap, this);\n this.addListener(\"blur\", this._onBlur, this);\n\n // forward the focusin and focusout events to the textfield. The textfield\n // is not focusable so the events need to be forwarded manually.\n this.addListener(\"focusin\", function(e) {\n textField.fireNonBubblingEvent(\"focusin\", qx.event.type.Focus);\n }, this);\n\n this.addListener(\"focusout\", function(e) {\n textField.fireNonBubblingEvent(\"focusout\", qx.event.type.Focus);\n }, this);\n\n // initializes the DateField with the default format\n this._setDefaultDateFormat();\n\n // adds a locale change listener\n this._addLocaleChangeListener();\n },\n\n\n\n\n /*\n *****************************************************************************\n EVENTS\n *****************************************************************************\n */\n\n events :\n {\n /** Whenever the value is changed this event is fired\n *\n * Event data: The new text value of the field.\n */\n \"changeValue\" : \"qx.event.type.Data\"\n },\n\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n\n /** The formatter, which converts the selected date to a string. **/\n dateFormat :\n {\n check : \"qx.util.format.DateFormat\",\n apply : \"_applyDateFormat\"\n },\n\n /**\n * String value which will be shown as a hint if the field is all of:\n * unset, unfocused and enabled. Set to null to not show a placeholder\n * text.\n */\n placeholder :\n {\n check : \"String\",\n nullable : true,\n apply : \"_applyPlaceholder\"\n },\n\n // overridden\n appearance :\n {\n refine : true,\n init : \"datefield\"\n },\n\n // overridden\n focusable :\n {\n refine : true,\n init : true\n },\n\n // overridden\n width :\n {\n refine : true,\n init : 120\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n statics :\n {\n __dateFormat : null,\n __formatter : null,\n\n /**\n * Get the shared default date formatter\n *\n * @return {qx.util.format.DateFormat} The shared date formatter\n */\n getDefaultDateFormatter : function()\n {\n var format = qx.locale.Date.getDateFormat(\"medium\").toString();\n\n if (format == this.__dateFormat) {\n return this.__formatter;\n }\n\n if (this.__formatter) {\n this.__formatter.dispose();\n }\n\n this.__formatter = new qx.util.format.DateFormat(format, qx.locale.Manager.getInstance().getLocale());\n this.__dateFormat = format;\n\n return this.__formatter;\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n __localeListenerId : null,\n\n\n /**\n * @lint ignoreReferenceField(_forwardStates)\n */\n _forwardStates : {\n focused : true,\n invalid : true\n },\n\n\n /*\n ---------------------------------------------------------------------------\n PROTECTED METHODS\n ---------------------------------------------------------------------------\n */\n /**\n * Sets the default date format which is returned by\n * {@link #getDefaultDateFormatter}. You can override this method to\n * define your own default format.\n */\n _setDefaultDateFormat : function() {\n this.setDateFormat(qx.ui.form.DateField.getDefaultDateFormatter());\n },\n\n\n /**\n * Checks for \"qx.dynlocale\" and adds a listener to the locale changes.\n * On every change, {@link #_setDefaultDateFormat} is called to reinitialize\n * the format. You can easily override that method to prevent that behavior.\n */\n _addLocaleChangeListener : function() {\n // listen for locale changes\n if (qx.core.Environment.get(\"qx.dynlocale\"))\n {\n this.__localeListenerId =\n qx.locale.Manager.getInstance().addListener(\"changeLocale\", function() {\n this._setDefaultDateFormat();\n }, this);\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n PUBLIC METHODS\n ---------------------------------------------------------------------------\n */\n\n\n /**\n * This method sets the date, which will be formatted according to\n * #dateFormat to the date field. It will also select the date in the\n * calendar popup.\n *\n * @param value {Date} The date to set.\n */\n setValue : function(value)\n {\n // set the date to the textfield\n var textField = this.getChildControl(\"textfield\");\n textField.setValue(this.getDateFormat().format(value));\n\n // set the date in the datechooser\n var dateChooser = this.getChildControl(\"list\");\n dateChooser.setValue(value);\n },\n\n\n /**\n * Returns the current set date, parsed from the input-field\n * corresponding to the {@link #dateFormat}.\n * If the given text could not be parsed, null
will be returned.\n *\n * @return {Date} The currently set date.\n */\n getValue : function()\n {\n // get the value of the textfield\n var textfieldValue = this.getChildControl(\"textfield\").getValue();\n\n // return the parsed date\n try {\n if (textfieldValue == null || textfieldValue.length == 0) {\n return null;\n }\n return this.getDateFormat().parse(textfieldValue);\n } catch (ex) {\n return null;\n }\n },\n\n\n /**\n * Resets the DateField. The textfield will be empty and the datechooser\n * will also have no selection.\n */\n resetValue: function()\n {\n // set the date to the textfield\n var textField = this.getChildControl(\"textfield\");\n textField.setValue(\"\");\n\n // set the date in the datechooser\n var dateChooser = this.getChildControl(\"list\");\n dateChooser.setValue(null);\n },\n\n\n /*\n ---------------------------------------------------------------------------\n LIST STUFF\n ---------------------------------------------------------------------------\n */\n\n /**\n * Shows the date chooser popup.\n */\n open : function()\n {\n var popup = this.getChildControl(\"popup\");\n\n popup.placeToWidget(this, true);\n popup.show();\n },\n\n\n /**\n * Hides the date chooser popup.\n */\n close : function() {\n this.getChildControl(\"popup\").hide();\n },\n\n\n /**\n * Toggles the date chooser popup visibility.\n */\n toggle : function()\n {\n var isListOpen = this.getChildControl(\"popup\").isVisible();\n if (isListOpen) {\n this.close();\n } else {\n this.open();\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n PROPERTY APPLY METHODS\n ---------------------------------------------------------------------------\n */\n\n // property apply routine\n _applyDateFormat : function(value, old)\n {\n // if old is undefined or null do nothing\n if (!old) {\n return;\n }\n\n // get the date with the old date format\n try\n {\n var textfield = this.getChildControl(\"textfield\");\n var dateStr = textfield.getValue();\n if (dateStr != null) {\n var currentDate = old.parse(dateStr);\n textfield.setValue(value.format(currentDate));\n }\n }\n catch (ex) {\n // do nothing if the former date could not be parsed\n }\n },\n\n\n // property apply routine\n _applyPlaceholder : function(value, old) {\n this.getChildControl(\"textfield\").setPlaceholder(value);\n },\n\n\n /*\n ---------------------------------------------------------------------------\n WIDGET API\n ---------------------------------------------------------------------------\n */\n\n // overridden\n _createChildControlImpl : function(id, hash)\n {\n var control;\n\n switch(id)\n {\n case \"textfield\":\n control = new qx.ui.form.TextField();\n control.setFocusable(false);\n control.addState(\"inner\");\n control.addListener(\"changeValue\", this._onTextFieldChangeValue, this);\n control.addListener(\"blur\", this.close, this);\n this._add(control, {flex: 1});\n break;\n\n case \"button\":\n control = new qx.ui.form.Button();\n control.setFocusable(false);\n control.setKeepActive(true);\n control.addState(\"inner\");\n control.addListener(\"execute\", this.toggle, this);\n this._add(control);\n break;\n\n case \"list\":\n control = new qx.ui.control.DateChooser();\n control.setFocusable(false);\n control.setKeepFocus(true);\n control.addListener(\"execute\", this._onChangeDate, this);\n break;\n\n case \"popup\":\n control = new qx.ui.popup.Popup(new qx.ui.layout.VBox);\n control.setAutoHide(false);\n control.add(this.getChildControl(\"list\"));\n control.addListener(\"pointerup\", this._onChangeDate, this);\n control.addListener(\"changeVisibility\", this._onPopupChangeVisibility, this);\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n EVENT LISTENERS\n ---------------------------------------------------------------------------\n */\n\n /**\n * Handler method which handles the tap on the calender popup.\n *\n * @param e {qx.event.type.Pointer} The pointer event.\n */\n _onChangeDate : function(e)\n {\n var textField = this.getChildControl(\"textfield\");\n\n var selectedDate = this.getChildControl(\"list\").getValue();\n\n textField.setValue(this.getDateFormat().format(selectedDate));\n this.close();\n },\n\n\n /**\n * Toggles the popup's visibility.\n *\n * @param e {qx.event.type.Pointer} Pointer tap event\n */\n _onTap : function(e) {\n this.close();\n },\n\n\n /**\n * Handler for the blur event of the current widget.\n *\n * @param e {qx.event.type.Focus} The blur event.\n */\n _onBlur : function(e) {\n this.close();\n },\n\n\n /**\n * Handler method which handles the key press. It forwards all key event\n * to the opened date chooser except the escape key event. Escape closes\n * the popup.\n * If the list is cloned, all key events will not be processed further.\n *\n * @param e {qx.event.type.KeySequence} Keypress event\n */\n _onKeyPress : function(e)\n {\n // get the key identifier\n var iden = e.getKeyIdentifier();\n if (iden == \"Down\" && e.isAltPressed())\n {\n this.toggle();\n e.stopPropagation();\n return;\n }\n\n // if the popup is closed, ignore all\n var popup = this.getChildControl(\"popup\");\n if (popup.getVisibility() == \"hidden\") {\n return;\n }\n\n // hide the list always on escape\n if (iden == \"Escape\")\n {\n this.close();\n e.stopPropagation();\n return;\n }\n\n // Stop navigation keys when popup is open\n if (iden === \"Left\" || iden === \"Right\" || iden === \"Down\" || iden === \"Up\") {\n e.preventDefault();\n }\n\n // forward the rest of the events to the date chooser\n this.getChildControl(\"list\").handleKeyPress(e);\n },\n\n\n /**\n * Redirects changeVisibility event from the list to this widget.\n *\n * @param e {qx.event.type.Data} Property change event\n */\n _onPopupChangeVisibility : function(e)\n {\n e.getData() == \"visible\" ? this.addState(\"popupOpen\") : this.removeState(\"popupOpen\");\n\n // Synchronize the chooser with the current value on every\n // opening of the popup. This is needed when the value has been\n // modified and not saved yet (e.g. no blur)\n var popup = this.getChildControl(\"popup\");\n if (popup.isVisible())\n {\n var chooser = this.getChildControl(\"list\");\n var date = this.getValue();\n chooser.setValue(date);\n }\n },\n\n\n /**\n * Reacts on value changes of the text field and syncs the\n * value to the combobox.\n *\n * @param e {qx.event.type.Data} Change event\n */\n _onTextFieldChangeValue : function(e)\n {\n // Apply to popup\n var date = this.getValue();\n if (date != null)\n {\n var list = this.getChildControl(\"list\");\n list.setValue(date);\n }\n\n // Fire event\n this.fireDataEvent(\"changeValue\", this.getValue());\n },\n\n\n /**\n * Checks if the textfield of the DateField is empty.\n *\n * @return {Boolean} True, if the textfield of the DateField is empty.\n */\n isEmpty: function()\n {\n var value = this.getChildControl(\"textfield\").getValue();\n return value == null || value == \"\";\n },\n\n // overridden\n focus : function()\n {\n this.base(arguments);\n this.getChildControl(\"textfield\").getFocusElement().focus();\n }\n },\n\n\n destruct : function() {\n // listen for locale changes\n if (qx.core.Environment.get(\"qx.dynlocale\"))\n {\n if (this.__localeListenerId) {\n qx.locale.Manager.getInstance().removeListenerById(this.__localeListenerId);\n }\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2024 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n * Odei Maiz (odeimaiz)\n */\n\n\nqx.Class.define(\"osparc.desktop.credits.UsageTableModel\", {\n extend: qx.ui.table.model.Remote,\n\n construct(walletId, filters) {\n this.base(arguments);\n\n const usageCols = osparc.desktop.credits.UsageTable.COLS;\n const colLabels = Object.values(usageCols).map(col => col.label);\n const colIDs = Object.values(usageCols).map(col => col.id);\n\n this.setColumns(colLabels, colIDs);\n this.setWalletId(walletId)\n if (filters) {\n this.setFilters(filters)\n }\n this.setSortColumnIndexWithoutSortingData(usageCols.START.column);\n this.setSortAscendingWithoutSortingData(false)\n this.setColumnSortable(usageCols.DURATION.column, false);\n },\n\n properties: {\n walletId: {\n check: \"Number\",\n nullable: true\n },\n filters: {\n check: \"Object\",\n init: null\n },\n isFetching: {\n check: \"Boolean\",\n init: false,\n event: \"changeFetching\"\n },\n orderBy: {\n check: \"Object\",\n init: {\n field: \"started_at\",\n direction: \"desc\"\n }\n }\n },\n\n statics: {\n SERVER_MAX_LIMIT: 49,\n COLUMN_ID_TO_DB_COLUMN_MAP: {\n 0: \"root_parent_project_name\",\n 1: \"node_name\",\n 2: \"service_key\",\n 3: \"started_at\",\n // 4: (not used) SORTING BY DURATION\n 5: \"service_run_status\",\n 6: \"credit_cost\",\n 7: \"user_email\",\n 8: \"projects_tags\",\n }\n },\n\n members: {\n // overridden\n sortByColumn(columnIndex, ascending) {\n this.setOrderBy({\n field: this.self().COLUMN_ID_TO_DB_COLUMN_MAP[columnIndex],\n direction: ascending ? \"asc\" : \"desc\"\n })\n this.base(arguments, columnIndex, ascending)\n },\n\n // overridden\n _loadRowCount() {\n const endpoint = this.getWalletId() == null ? \"get\" : \"getWithWalletFiltered\"\n const params = {\n url: {\n walletId: this.getWalletId(),\n limit: 1,\n offset: 0,\n filters: this.getFilters() ?\n JSON.stringify({\n \"started_at\": this.getFilters()\n }) :\n null,\n orderBy: JSON.stringify(this.getOrderBy())\n }\n };\n const options = {\n resolveWResponse: true\n };\n osparc.data.Resources.fetch(\"resourceUsage\", endpoint, params, options)\n .then(resp => {\n this._onRowCountLoaded(resp[\"_meta\"].total)\n })\n .catch(() => {\n this._onRowCountLoaded(null)\n })\n },\n\n // overridden\n _loadRowData(firstRow, qxLastRow) {\n this.setIsFetching(true)\n // Please Qloocloox don't ask for more rows than there are\n const lastRow = Math.min(qxLastRow, this._rowCount - 1)\n // Returns a request promise with given offset and limit\n const getFetchPromise = (offset, limit=this.self().SERVER_MAX_LIMIT) => {\n const endpoint = this.getWalletId() == null ? \"get\" : \"getWithWalletFiltered\"\n return osparc.data.Resources.fetch(\"resourceUsage\", endpoint, {\n url: {\n walletId: this.getWalletId(),\n limit,\n offset,\n filters: this.getFilters() ?\n JSON.stringify({\n \"started_at\": this.getFilters()\n }) :\n null,\n orderBy: JSON.stringify(this.getOrderBy())\n }\n })\n .then(rawData => {\n const data = []\n const usageCols = osparc.desktop.credits.UsageTable.COLS;\n rawData.forEach(rawRow => {\n let service = \"\"\n if (rawRow[\"service_key\"]) {\n const serviceName = rawRow[\"service_key\"].split(\"/\").pop()\n service = `${serviceName}:${rawRow[\"service_version\"]}`\n }\n let start = \"\"\n let duration = \"\"\n if (rawRow[\"started_at\"]) {\n start = osparc.utils.Utils.formatDateAndTime(new Date(rawRow[\"started_at\"]))\n if (rawRow[\"stopped_at\"]) {\n duration = osparc.utils.Utils.formatMsToHHMMSS(new Date(rawRow[\"stopped_at\"]) - new Date(rawRow[\"started_at\"]))\n }\n }\n data.push({\n // root_parent_project is the same as project if it has no parent\n [usageCols.PROJECT.id]: rawRow[\"root_parent_project_name\"] || rawRow[\"root_parent_project_id\"] || rawRow[\"project_name\"] || rawRow[\"project_id\"],\n [usageCols.NODE.id]: rawRow[\"node_name\"] || rawRow[\"node_id\"],\n [usageCols.SERVICE.id]: service,\n [usageCols.START.id]: start,\n [usageCols.DURATION.id]: duration,\n [usageCols.STATUS.id]: qx.lang.String.firstUp(rawRow[\"service_run_status\"].toLowerCase()),\n [usageCols.COST.id]: rawRow[\"credit_cost\"] ? parseFloat(rawRow[\"credit_cost\"]).toFixed(2) : \"\",\n [usageCols.USER.id]: rawRow[\"user_email\"],\n [usageCols.TAGS.id]: rawRow[\"project_tags\"],\n })\n })\n return data\n })\n }\n // Divides the model row request into several server requests to comply with the number of rows server limit\n const reqLimit = lastRow - firstRow + 1 // Number of requested rows\n const nRequests = Math.ceil(reqLimit / this.self().SERVER_MAX_LIMIT)\n if (nRequests > 1) {\n let requests = []\n for (let i=firstRow; i <= lastRow; i += this.self().SERVER_MAX_LIMIT) {\n requests.push(getFetchPromise(i, i > lastRow - this.self().SERVER_MAX_LIMIT + 1 ? reqLimit % this.self().SERVER_MAX_LIMIT : this.self().SERVER_MAX_LIMIT))\n }\n Promise.all(requests)\n .then(responses => {\n this._onRowDataLoaded(responses.flat())\n })\n .catch(err => {\n console.error(err)\n this._onRowDataLoaded(null)\n })\n .finally(() => this.setIsFetching(false))\n } else {\n getFetchPromise(firstRow, reqLimit)\n .then(data => {\n this._onRowDataLoaded(data)\n })\n .catch(err => {\n console.error(err)\n this._onRowDataLoaded(null)\n })\n .finally(() => this.setIsFetching(false))\n }\n }\n }\n})\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2025 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.desktop.credits.PurchasesTableModel\", {\n extend: qx.ui.table.model.Remote,\n\n construct(walletId, filters) {\n this.base(arguments);\n\n const purchasesCols = osparc.desktop.credits.PurchasesTable.COLS;\n const colLabels = Object.values(purchasesCols).map(col => col.label);\n const colIDs = Object.values(purchasesCols).map(col => col.id);\n\n this.setColumns(colLabels, colIDs);\n this.setWalletId(walletId);\n if (filters) {\n this.setFilters(filters);\n }\n this.setSortColumnIndexWithoutSortingData(purchasesCols.START.column);\n this.setSortAscendingWithoutSortingData(false);\n },\n\n properties: {\n walletId: {\n check: \"Number\",\n nullable: true\n },\n\n filters: {\n check: \"Object\",\n init: null\n },\n\n isFetching: {\n check: \"Boolean\",\n init: false,\n event: \"changeFetching\"\n },\n\n orderBy: {\n check: \"Object\",\n init: {\n field: \"startAt\",\n direction: \"desc\"\n }\n },\n },\n\n statics: {\n SERVER_MAX_LIMIT: 49,\n COLUMN_ID_TO_DB_COLUMN_MAP: {\n 0: \"startAt\",\n },\n },\n\n members: {\n // overridden\n sortByColumn(columnIndex, ascending) {\n this.setOrderBy({\n field: this.self().COLUMN_ID_TO_DB_COLUMN_MAP[columnIndex],\n direction: ascending ? \"asc\" : \"desc\"\n })\n this.base(arguments, columnIndex, ascending);\n },\n\n // overridden\n _loadRowCount() {\n const walletId = this.getWalletId();\n const urlParams = {\n offset: 0,\n limit: 1,\n filters: this.getFilters() ?\n JSON.stringify({\n \"startAt\": this.getFilters()\n }) :\n null,\n orderBy: JSON.stringify(this.getOrderBy()),\n };\n const options = {\n resolveWResponse: true\n };\n osparc.store.LicensedItems.getInstance().getPurchasedLicensedItems(walletId, urlParams, options)\n .then(resp => this._onRowCountLoaded(resp[\"_meta\"].total))\n .catch(() => this._onRowCountLoaded(null));\n },\n\n // overridden\n _loadRowData(firstRow, qxLastRow) {\n this.setIsFetching(true);\n\n const lastRow = Math.min(qxLastRow, this._rowCount - 1);\n // Returns a request promise with given offset and limit\n const getFetchPromise = (offset, limit=this.self().SERVER_MAX_LIMIT) => {\n const walletId = this.getWalletId();\n const urlParams = {\n limit,\n offset,\n filters: this.getFilters() ?\n JSON.stringify({\n \"started_at\": this.getFilters()\n }) :\n null,\n orderBy: JSON.stringify(this.getOrderBy())\n };\n const licensedItemsStore = osparc.store.LicensedItems.getInstance();\n return Promise.all([\n licensedItemsStore.getLicensedItems(),\n licensedItemsStore.getPurchasedLicensedItems(walletId, urlParams),\n ])\n .then(values => {\n const licensedItems = values[0];\n const purchasesItems = values[1];\n\n const data = [];\n const purchasesCols = osparc.desktop.credits.PurchasesTable.COLS;\n purchasesItems.forEach(purchasesItem => {\n const licensedItemId = purchasesItem[\"licensedItemId\"];\n const licensedItem = licensedItems[licensedItemId];\n data.push({\n [purchasesCols.PURCHASE_ID.id]: purchasesItem[\"licensedItemPurchaseId\"],\n [purchasesCols.ITEM_ID.id]: licensedItemId,\n [purchasesCols.ITEM_LABEL.id]: licensedItem ? licensedItem.getDisplayName() : \"unknown model\",\n [purchasesCols.START.id]: osparc.utils.Utils.formatDateAndTime(new Date(purchasesItem[\"startAt\"])),\n [purchasesCols.END.id]: osparc.utils.Utils.formatDateAndTime(new Date(purchasesItem[\"expireAt\"])),\n [purchasesCols.SEATS.id]: purchasesItem[\"numOfSeats\"],\n [purchasesCols.COST.id]: purchasesItem[\"pricingUnitCost\"] ? (\"-\" + parseFloat(purchasesItem[\"pricingUnitCost\"]).toFixed(2)) : \"\", // show it negative\n [purchasesCols.USER.id]: purchasesItem[\"userEmail\"],\n });\n });\n return data;\n });\n };\n\n // Divides the model row request into several server requests to comply with the number of rows server limit\n const reqLimit = lastRow - firstRow + 1; // Number of requested rows\n const nRequests = Math.ceil(reqLimit / this.self().SERVER_MAX_LIMIT);\n if (nRequests > 1) {\n const requests = [];\n for (let i=firstRow; i <= lastRow; i += this.self().SERVER_MAX_LIMIT) {\n requests.push(getFetchPromise(i, i > lastRow - this.self().SERVER_MAX_LIMIT + 1 ? reqLimit % this.self().SERVER_MAX_LIMIT : this.self().SERVER_MAX_LIMIT))\n }\n Promise.all(requests)\n .then(responses => this._onRowDataLoaded(responses.flat()))\n .catch(err => {\n console.error(err);\n this._onRowDataLoaded(null);\n })\n .finally(() => this.setIsFetching(false));\n } else {\n getFetchPromise(firstRow, reqLimit)\n .then(data => this._onRowDataLoaded(data))\n .catch(err => {\n console.error(err)\n this._onRowDataLoaded(null);\n })\n .finally(() => this.setIsFetching(false));\n }\n }\n }\n})\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2025 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n\nqx.Class.define(\"osparc.desktop.credits.CheckoutsTableModel\", {\n extend: qx.ui.table.model.Remote,\n\n construct(walletId, filters) {\n this.base(arguments);\n\n const checkoutsCols = osparc.desktop.credits.CheckoutsTable.COLS;\n const colLabels = Object.values(checkoutsCols).map(col => col.label);\n const colIDs = Object.values(checkoutsCols).map(col => col.id);\n\n this.setColumns(colLabels, colIDs);\n this.setWalletId(walletId);\n if (filters) {\n this.setFilters(filters);\n }\n this.setSortColumnIndexWithoutSortingData(checkoutsCols.START.column);\n this.setSortAscendingWithoutSortingData(false);\n this.setColumnSortable(checkoutsCols.DURATION.column, false);\n },\n\n properties: {\n walletId: {\n check: \"Number\",\n nullable: true\n },\n\n filters: {\n check: \"Object\",\n init: null\n },\n\n isFetching: {\n check: \"Boolean\",\n init: false,\n event: \"changeFetching\"\n },\n\n orderBy: {\n check: \"Object\",\n init: {\n field: \"startAt\",\n direction: \"desc\"\n }\n },\n },\n\n statics: {\n SERVER_MAX_LIMIT: 49,\n COLUMN_ID_TO_DB_COLUMN_MAP: {\n 0: \"startAt\",\n },\n },\n\n members: {\n // overridden\n sortByColumn(columnIndex, ascending) {\n this.setOrderBy({\n field: this.self().COLUMN_ID_TO_DB_COLUMN_MAP[columnIndex],\n direction: ascending ? \"asc\" : \"desc\"\n })\n this.base(arguments, columnIndex, ascending);\n },\n\n // overridden\n _loadRowCount() {\n const walletId = this.getWalletId();\n const urlParams = {\n offset: 0,\n limit: 1,\n filters: this.getFilters() ?\n JSON.stringify({\n \"startAt\": this.getFilters()\n }) :\n null,\n orderBy: JSON.stringify(this.getOrderBy()),\n };\n const options = {\n resolveWResponse: true\n };\n osparc.store.LicensedItems.getInstance().getCheckedOutLicensedItems(walletId, urlParams, options)\n .then(resp => this._onRowCountLoaded(resp[\"_meta\"].total))\n .catch(() => this._onRowCountLoaded(null));\n },\n\n // overridden\n _loadRowData(firstRow, qxLastRow) {\n this.setIsFetching(true);\n\n const lastRow = Math.min(qxLastRow, this._rowCount - 1);\n // Returns a request promise with given offset and limit\n const getFetchPromise = (offset, limit=this.self().SERVER_MAX_LIMIT) => {\n const walletId = this.getWalletId();\n const urlParams = {\n limit,\n offset,\n filters: this.getFilters() ?\n JSON.stringify({\n \"started_at\": this.getFilters()\n }) :\n null,\n orderBy: JSON.stringify(this.getOrderBy())\n };\n const licensedItemsStore = osparc.store.LicensedItems.getInstance();\n return Promise.all([\n licensedItemsStore.getLicensedItems(),\n licensedItemsStore.getCheckedOutLicensedItems(walletId, urlParams),\n ])\n .then(values => {\n const licensedItems = values[0];\n const checkoutsItems = values[1];\n\n const data = [];\n const checkoutsCols = osparc.desktop.credits.CheckoutsTable.COLS;\n checkoutsItems.forEach(checkoutsItem => {\n const licensedItemId = checkoutsItem[\"licensedItemId\"];\n const licensedItem = licensedItems[licensedItemId];\n let start = \"\";\n let duration = \"\";\n if (checkoutsItem[\"startedAt\"]) {\n start = osparc.utils.Utils.formatDateAndTime(new Date(checkoutsItem[\"startedAt\"]));\n if (checkoutsItem[\"stoppedAt\"]) {\n duration = osparc.utils.Utils.formatMsToHHMMSS(new Date(checkoutsItem[\"stoppedAt\"]) - new Date(checkoutsItem[\"startedAt\"]));\n }\n }\n data.push({\n [checkoutsCols.CHECKOUT_ID.id]: checkoutsItem[\"licensedItemCheckoutId\"],\n [checkoutsCols.ITEM_ID.id]: licensedItemId,\n [checkoutsCols.ITEM_LABEL.id]: licensedItem ? licensedItem.getDisplayName() : \"unknown model\",\n [checkoutsCols.START.id]: start,\n [checkoutsCols.DURATION.id]: duration,\n [checkoutsCols.SEATS.id]: checkoutsItem[\"numOfSeats\"],\n [checkoutsCols.USER.id]: checkoutsItem[\"userEmail\"],\n });\n });\n return data;\n });\n };\n\n // Divides the model row request into several server requests to comply with the number of rows server limit\n const reqLimit = lastRow - firstRow + 1; // Number of requested rows\n const nRequests = Math.ceil(reqLimit / this.self().SERVER_MAX_LIMIT);\n if (nRequests > 1) {\n const requests = [];\n for (let i=firstRow; i <= lastRow; i += this.self().SERVER_MAX_LIMIT) {\n requests.push(getFetchPromise(i, i > lastRow - this.self().SERVER_MAX_LIMIT + 1 ? reqLimit % this.self().SERVER_MAX_LIMIT : this.self().SERVER_MAX_LIMIT))\n }\n Promise.all(requests)\n .then(responses => this._onRowDataLoaded(responses.flat()))\n .catch(err => {\n console.error(err);\n this._onRowDataLoaded(null);\n })\n .finally(() => this.setIsFetching(false));\n } else {\n getFetchPromise(firstRow, reqLimit)\n .then(data => this._onRowDataLoaded(data))\n .catch(err => {\n console.error(err)\n this._onRowDataLoaded(null);\n })\n .finally(() => this.setIsFetching(false));\n }\n }\n }\n})\n","// DiskUsageManager (singleton)\n// construct() { listen to socket }\n// subscribe(id, cb) { keeps a map of callbacks. one array of callbacks per id }\n// socketHandler(updatedId) { search the map and call all corresponding callbacks }\n/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Julian Querido (jsaq007)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.workbench.DiskUsageController\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n construct: function() {\n this.__prevDiskUsageStateList = [];\n this.base(arguments);\n\n this.__socket = osparc.wrapper.WebSocket.getInstance().getSocket();\n if (!this.__socket) {\n console.error(\"Invalid WebSocket object obtained from source\");\n }\n this.__socket.on(\"serviceDiskUsage\", data => {\n if (data[\"node_id\"] && this.__callbacks[data[\"node_id\"]]) {\n // notify\n this.__evaluateDisplayMessage(data);\n this.__callbacks[data[\"node_id\"]].forEach(cb => {\n cb(data);\n })\n }\n });\n this.__callbacks = {};\n },\n\n\n members: {\n __socket: null,\n __callbacks: null,\n __lowDiskThreshold: null,\n __prevDiskUsageStateList: null,\n __diskUsage: null,\n\n subscribe: function(nodeId, callback) {\n if (this.__callbacks[nodeId]) {\n this.__callbacks[nodeId].push(callback);\n } else {\n this.__callbacks[nodeId] = [callback];\n }\n },\n\n unsubscribe: function(nodeId, callback) {\n if (this.__callbacks[nodeId]) {\n this.__callbacks[nodeId] = this.__callbacks[nodeId].filter(cb => cb !== callback)\n }\n },\n\n __getWarningLevel: function(freeSpace) {\n const lowDiskSpacePreferencesSettings = osparc.Preferences.getInstance();\n this.__lowDiskThreshold = lowDiskSpacePreferencesSettings.getLowDiskSpaceThreshold();\n const warningSize = osparc.utils.Utils.gBToBytes(this.__lowDiskThreshold); // 5 GB Default\n const criticalSize = osparc.utils.Utils.gBToBytes(0.01); // 0 GB\n let warningLevel;\n if (freeSpace <= criticalSize) {\n warningLevel = \"CRITICAL\"\n } else if (freeSpace <= warningSize) {\n warningLevel = \"WARNING\"\n } else {\n warningLevel = \"NORMAL\"\n }\n return warningLevel\n },\n\n __evaluateDisplayMessage: function(data) {\n const id = data[\"node_id\"];\n if (!this.__callbacks[id]) {\n return;\n }\n\n function isMatchingNodeId({nodeId}) {\n return nodeId === id;\n }\n function shouldDisplayMessage(prevDiskUsageState, warningLevel) {\n return prevDiskUsageState && prevDiskUsageState.nodeId === id && prevDiskUsageState.state !== warningLevel\n }\n\n let prevDiskUsageState = this.__prevDiskUsageStateList.find(isMatchingNodeId);\n if (prevDiskUsageState === undefined) {\n // Initialize it\n this.__prevDiskUsageStateList.push({\n nodeId: id,\n state: \"NORMAL\"\n })\n }\n\n const store = osparc.store.Store.getInstance();\n const currentStudy = store.getCurrentStudy();\n if (!currentStudy) {\n return;\n }\n\n const node = currentStudy.getWorkbench().getNode(id);\n const nodeName = node ? node.getLabel() : null;\n if (nodeName === null) {\n return;\n }\n\n const diskHostUsage = data.usage[\"HOST\"]\n let freeSpace = osparc.utils.Utils.bytesToSize(diskHostUsage.free);\n let warningLevel = this.__getWarningLevel(diskHostUsage.free);\n\n if (\"STATES_VOLUMES\" in data.usage) {\n const diskVolsUsage = data.usage[\"STATES_VOLUMES\"];\n if (diskVolsUsage[\"used_percent\"] > diskHostUsage[\"used_percent\"]) {\n // \"STATES_VOLUMES\" is more critical so it takes over\n freeSpace = osparc.utils.Utils.bytesToSize(diskVolsUsage.free);\n warningLevel = this.__getWarningLevel(diskVolsUsage.free);\n }\n }\n\n const objIndex = this.__prevDiskUsageStateList.findIndex((obj => obj.nodeId === id));\n let message;\n switch (warningLevel) {\n case \"CRITICAL\":\n if (shouldDisplayMessage(prevDiskUsageState, warningLevel)) {\n message = qx.locale.Manager.tr(`Out of Disk Space on \"Service Filesystem\" for ${nodeName}
The volume Service Filesystem has only ${freeSpace} disk space remaining. You can free up disk space by removing unused files in your service. Alternatively, you can run your service with a pricing plan that supports your storage requirements.`);\n osparc.FlashMessenger.getInstance().logAs(message, \"ERROR\");\n this.__prevDiskUsageStateList[objIndex].state = warningLevel;\n }\n break;\n case \"WARNING\":\n if (shouldDisplayMessage(prevDiskUsageState, warningLevel)) {\n message = qx.locale.Manager.tr(`Low Disk Space on \"Service Filesystem\" for ${nodeName}
The volume Service Filesystem has only ${freeSpace} disk space remaining. You can free up disk space by removing unused files in your service. Alternatively, you can run your service with a pricing plan that supports your storage requirements.`);\n osparc.FlashMessenger.getInstance().logAs(message, \"WARNING\");\n this.__prevDiskUsageStateList[objIndex].state = warningLevel;\n }\n break;\n default:\n this.__prevDiskUsageStateList[objIndex].state = \"NORMAL\";\n break;\n }\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.vipMarket.Market\", {\n extend: osparc.ui.window.TabbedView,\n\n construct: function(openCategory) {\n this.base(arguments);\n\n const miniWallet = osparc.desktop.credits.BillingCenter.createMiniWalletView().set({\n paddingRight: 10,\n minWidth: 150,\n });\n this.addWidgetToTabs(miniWallet);\n\n const store = osparc.store.Store.getInstance();\n const contextWallet = store.getContextWallet();\n if (!contextWallet) {\n return;\n }\n\n this.__reqOpenCategory = openCategory;\n this.__populateCategories();\n },\n\n events: {\n \"importMessageSent\": \"qx.event.type.Event\",\n },\n\n properties: {\n openBy: {\n check: \"String\",\n init: null,\n nullable: true,\n event: \"changeOpenBy\",\n },\n },\n\n members: {\n __reqOpenCategory: null,\n __myModelsCategoryMarket: null,\n __myModelsCategoryButton: null,\n\n __populateCategories: function() {\n const store = osparc.store.Store.getInstance();\n const contextWallet = store.getContextWallet();\n\n const walletId = contextWallet.getWalletId();\n const licensedItemsStore = osparc.store.LicensedItems.getInstance();\n Promise.all([\n licensedItemsStore.getLicensedItems(),\n licensedItemsStore.getPurchasedLicensedItems(walletId),\n ])\n .then(async values => {\n const licensedItems = values[0];\n const purchasedItems = values[1];\n osparc.data.model.LicensedItem.addSeatsFromPurchases(licensedItems, purchasedItems);\n const categories = [];\n const availableCategory = {\n categoryId: \"availableModels\",\n label: this.tr(\"My Models\"),\n icon: \"osparc/market/RentedModels.svg\",\n items: [],\n };\n categories.push(availableCategory);\n let openCategory = null;\n Object.values(licensedItems).forEach(licensedItem => {\n if (licensedItem.getSeats().length) {\n availableCategory[\"items\"].push(licensedItem);\n if (!this.__reqOpenCategory) {\n openCategory = availableCategory[\"categoryId\"];\n }\n }\n if (licensedItem && licensedItem.getCategoryId()) {\n const categoryId = licensedItem.getCategoryId();\n let category = categories.find(cat => cat[\"categoryId\"] === categoryId);\n if (!category) {\n category = {\n categoryId,\n label: licensedItem.getCategoryDisplay() || \"Category\",\n icon: licensedItem.getCategoryIcon(),\n items: [],\n };\n if (!openCategory) {\n openCategory = categoryId;\n }\n categories.push(category);\n }\n category[\"items\"].push(licensedItem);\n }\n });\n\n await this.__addFreeItems();\n\n categories.forEach(category => {\n this.__buildViPMarketPage(category, category[\"items\"]);\n });\n\n if (openCategory) {\n this.__openCategory(openCategory);\n }\n });\n },\n\n __addFreeItems: function() {\n const licensedItemsStore = osparc.store.LicensedItems.getInstance();\n return licensedItemsStore.getLicensedItems()\n .then(async licensedItems => {\n this.__freeItems = [];\n const licensedItemsArr = Object.values(licensedItems);\n for (const licensedItem of licensedItemsArr) {\n const pricingUnits = await osparc.store.Pricing.getInstance().fetchPricingUnits(licensedItem.getPricingPlanId());\n if (pricingUnits.length === 1 && pricingUnits[0].getCost() === 0) {\n this.__freeItems.push(licensedItem);\n }\n }\n if (!this.__reqOpenCategory && this.__freeItems.length) {\n this.__openCategory(\"availableModels\");\n }\n this.__repopulateMyModelsCategory();\n });\n },\n\n __buildViPMarketPage: function(marketTabInfo, licensedItems = []) {\n const vipMarketView = new osparc.vipMarket.VipMarket(licensedItems);\n vipMarketView.set({\n category: marketTabInfo[\"categoryId\"],\n });\n this.bind(\"openBy\", vipMarketView, \"openBy\");\n vipMarketView.addListener(\"modelPurchased\", () => this.__repopulateMyModelsCategory());\n vipMarketView.addListener(\"importMessageSent\", () => this.fireEvent(\"importMessageSent\"));\n const page = this.addTab(marketTabInfo[\"label\"], marketTabInfo[\"icon\"], vipMarketView);\n page.category = marketTabInfo[\"categoryId\"];\n if (page.category === \"availableModels\") {\n this.__myModelsCategoryMarket = vipMarketView;\n this.__myModelsCategoryButton = page.getChildControl(\"button\");\n this.__myModelsCategoryButton.setVisibility(licensedItems.length ? \"visible\" : \"excluded\");\n }\n return page;\n },\n\n __repopulateMyModelsCategory: function() {\n const store = osparc.store.Store.getInstance();\n const contextWallet = store.getContextWallet();\n const walletId = contextWallet.getWalletId();\n const licensedItemsStore = osparc.store.LicensedItems.getInstance();\n Promise.all([\n licensedItemsStore.getLicensedItems(),\n licensedItemsStore.getPurchasedLicensedItems(walletId),\n ])\n .then(values => {\n const licensedItems = values[0];\n const purchasedItems = values[1];\n osparc.data.model.LicensedItem.addSeatsFromPurchases(licensedItems, purchasedItems);\n let items = [];\n Object.values(licensedItems).forEach(licensedItem => {\n if (licensedItem.getSeats().length) {\n items.push(licensedItem);\n }\n });\n items = items.concat(this.__freeItems);\n this.__myModelsCategoryButton.setVisibility(items.length ? \"visible\" : \"excluded\");\n this.__myModelsCategoryMarket.setLicensedItems(items);\n });\n },\n\n __openCategory: function(category) {\n const viewFound = this.getChildControl(\"tabs-view\").getChildren().find(view => view.category === category);\n if (viewFound) {\n this._openPage(viewFound);\n return true;\n }\n return false;\n },\n\n sendCloseMessage: function() {\n const store = osparc.store.Store.getInstance();\n const currentStudy = store.getCurrentStudy();\n const nodeId = this.getOpenBy();\n if (currentStudy && nodeId) {\n const msg = {\n \"type\": \"closeMarket\",\n };\n currentStudy.sendMessageToIframe(nodeId, msg);\n }\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.editor.WorkspaceEditor\", {\n extend: qx.ui.core.Widget,\n\n construct: function(workspace) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(8));\n\n if (!workspace) {\n this.getChildControl(\"intro-text\");\n }\n\n const manager = this.__validator = new qx.ui.form.validation.Manager();\n const title = this.getChildControl(\"title\");\n title.setRequired(true);\n manager.add(title);\n this.getChildControl(\"description\");\n this.getChildControl(\"thumbnail\");\n this.getChildControl(\"cancel\");\n this.getChildControl(\"save\");\n if (workspace) {\n // editing\n this.setWorkspace(workspace);\n } else {\n // creating\n this.__creatingWorkspace = true;\n this.__createWorkspace()\n .then(newWorkspace => {\n this.setWorkspace(newWorkspace);\n this.fireDataEvent(\"workspaceCreated\");\n this.getChildControl(\"sharing\");\n });\n }\n\n this.addListener(\"appear\", this.__onAppear, this);\n },\n\n properties: {\n workspace: {\n check: \"osparc.data.model.Workspace\",\n init: null,\n nullable: false,\n apply: \"__applyWorkspace\"\n },\n\n label: {\n check: \"String\",\n init: \"\",\n nullable: false,\n event: \"changeLabel\"\n },\n\n description: {\n check: \"String\",\n init: \"\",\n nullable: false,\n event: \"changeDescription\"\n },\n\n thumbnail: {\n check: \"String\",\n init: \"\",\n nullable: false,\n event: \"changeThumbnail\"\n },\n },\n\n events: {\n \"workspaceCreated\": \"qx.event.type.Event\",\n \"workspaceDeleted\": \"qx.event.type.Event\",\n \"workspaceUpdated\": \"qx.event.type.Event\",\n \"updateAccessRights\": \"qx.event.type.Event\",\n \"cancel\": \"qx.event.type.Event\"\n },\n\n statics: {\n POS: {\n INTRO: 0,\n TITLE: 1,\n DESCRIPTION: 2,\n THUMBNAIL: 3,\n SHARING: 4,\n BUTTONS: 5,\n }\n },\n\n members: {\n __creatingWorkspace: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"intro-text\": {\n const studies = osparc.product.Utils.getStudyAlias({ plural: true });\n const text = this.tr(`A Shared Workspace is the context where all the ${studies} and folders are shared among its members.`);\n control = new qx.ui.basic.Label(text).set({\n font: \"text-14\",\n rich: true,\n wrap: true\n });\n this._addAt(control, this.self().POS.INTRO);\n break;\n }\n case \"title\": {\n control = new qx.ui.form.TextField().set({\n font: \"text-14\",\n backgroundColor: \"background-main\",\n placeholder: this.tr(\"Title\"),\n height: 30,\n });\n osparc.utils.Utils.setIdToWidget(control, \"workspaceEditorTitle\");\n this.bind(\"label\", control, \"value\");\n control.bind(\"value\", this, \"label\");\n this._addAt(control, this.self().POS.TITLE);\n break;\n }\n case \"description\": {\n control = new qx.ui.form.TextField().set({\n font: \"text-14\",\n placeholder: this.tr(\"Description\"),\n height: 30,\n });\n this.bind(\"description\", control, \"value\");\n control.bind(\"value\", this, \"description\");\n this._addAt(control, this.self().POS.DESCRIPTION);\n break;\n }\n case \"thumbnail\": {\n control = new qx.ui.form.TextField().set({\n font: \"text-14\",\n placeholder: this.tr(\"Thumbnail\"),\n height: 30,\n });\n this.bind(\"thumbnail\", control, \"value\");\n control.bind(\"value\", this, \"thumbnail\");\n this._addAt(control, this.self().POS.THUMBNAIL);\n break;\n }\n case \"sharing\": {\n control = new osparc.share.CollaboratorsWorkspace(this.getWorkspace());\n control.addListener(\"updateAccessRights\", () => this.fireDataEvent(\"updateAccessRights\", this.getWorkspace().getWorkspaceId()), this);\n this._addAt(control, this.self().POS.SHARING);\n break;\n }\n case \"buttons-layout\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(8).set({\n alignX: \"right\"\n }));\n this._addAt(control, this.self().POS.BUTTONS);\n break;\n }\n case \"save\": {\n const buttons = this.getChildControl(\"buttons-layout\");\n control = new osparc.ui.form.FetchButton(this.tr(\"Save\")).set({\n appearance: \"form-button\"\n });\n osparc.utils.Utils.setIdToWidget(control, \"workspaceEditorSave\");\n control.addListener(\"execute\", () => this.__saveWorkspace(control), this);\n buttons.addAt(control, 1);\n break;\n }\n case \"cancel\": {\n const buttons = this.getChildControl(\"buttons-layout\");\n control = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"form-button-text\"\n });\n control.addListener(\"execute\", () => this.cancel(), this);\n buttons.addAt(control, 0);\n break;\n }\n }\n\n return control || this.base(arguments, id);\n },\n\n __applyWorkspace: function(workspace) {\n this.set({\n label: workspace.getName(),\n description: workspace.getDescription(),\n thumbnail: workspace.getThumbnail(),\n });\n },\n\n __createWorkspace: function() {\n const workspaceStore = osparc.store.Workspaces.getInstance();\n const workspaces = workspaceStore.getWorkspaces();\n const existingNames = workspaces.map(workspace => workspace.getName());\n const defaultName = osparc.utils.Utils.getUniqueName(\"New Workspace\", existingNames)\n const newWorkspaceData = {\n name: this.getLabel() || defaultName,\n description: this.getDescription(),\n thumbnail: this.getThumbnail(),\n };\n return workspaceStore.postWorkspace(newWorkspaceData)\n },\n\n __saveWorkspace: function(editButton) {\n if (this.__validator.validate()) {\n editButton.setFetching(true);\n const updateData = {\n name: this.getLabel(),\n description: this.getDescription(),\n thumbnail: this.getThumbnail(),\n };\n osparc.store.Workspaces.getInstance().putWorkspace(this.getWorkspace().getWorkspaceId(), updateData)\n .then(() => this.fireEvent(\"workspaceUpdated\"))\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n })\n .finally(() => editButton.setFetching(false));\n }\n },\n\n cancel: function() {\n if (this.__creatingWorkspace) {\n osparc.store.Workspaces.getInstance().deleteWorkspace(this.getWorkspace().getWorkspaceId())\n .then(() => this.fireEvent(\"workspaceDeleted\"))\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n });\n }\n this.fireEvent(\"cancel\");\n },\n\n __onAppear: function() {\n const title = this.getChildControl(\"title\");\n title.focus();\n title.activate();\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.editor.FolderEditor\", {\n extend: qx.ui.core.Widget,\n\n construct: function(newFolder = true) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(8));\n\n const manager = this.__validator = new qx.ui.form.validation.Manager();\n const title = this.getChildControl(\"title\");\n title.setRequired(true);\n manager.add(title);\n this.__doButton = newFolder ? this.getChildControl(\"create\") : this.getChildControl(\"save\");\n\n this.addListener(\"appear\", this.__onAppear, this);\n },\n\n properties: {\n label: {\n check: \"String\",\n init: \"\",\n nullable: false,\n event: \"changeLabel\"\n }\n },\n\n events: {\n \"createFolder\": \"qx.event.type.Event\",\n \"updateFolder\": \"qx.event.type.Event\",\n \"cancel\": \"qx.event.type.Event\"\n },\n\n members: {\n __doButton: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"title\": {\n control = new qx.ui.form.TextField().set({\n font: \"text-14\",\n backgroundColor: \"background-main\",\n placeholder: this.tr(\"Title\"),\n height: 27\n });\n osparc.utils.Utils.setIdToWidget(control, \"folderEditorTitle\");\n this.bind(\"label\", control, \"value\");\n control.bind(\"value\", this, \"label\");\n this._add(control);\n break;\n }\n case \"create\": {\n const buttons = this.getChildControl(\"buttonsLayout\");\n control = new osparc.ui.form.FetchButton(this.tr(\"Create\")).set({\n appearance: \"form-button\"\n });\n control.addListener(\"execute\", () => {\n const title = this.getChildControl(\"title\");\n title.blur();\n if (this.__validator.validate()) {\n control.setFetching(true);\n this.fireEvent(\"createFolder\");\n }\n }, this);\n osparc.utils.Utils.setIdToWidget(control, \"folderEditorCreate\");\n buttons.addAt(control, 1);\n break;\n }\n case \"save\": {\n const buttons = this.getChildControl(\"buttonsLayout\");\n control = new osparc.ui.form.FetchButton(this.tr(\"Save\")).set({\n appearance: \"form-button\"\n });\n control.addListener(\"execute\", () => {\n const title = this.getChildControl(\"title\");\n title.blur();\n if (this.__validator.validate()) {\n control.setFetching(true);\n this.fireEvent(\"updateFolder\");\n }\n }, this);\n osparc.utils.Utils.setIdToWidget(control, \"folderEditorSave\");\n buttons.addAt(control, 1);\n break;\n }\n case \"buttonsLayout\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(8).set({\n alignX: \"right\"\n }));\n const cancelButton = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"form-button-text\"\n });\n cancelButton.addListener(\"execute\", () => this.fireEvent(\"cancel\"), this);\n control.addAt(cancelButton, 0);\n this._add(control);\n break;\n }\n }\n\n return control || this.base(arguments, id);\n },\n\n __onAppear: function() {\n const title = this.getChildControl(\"title\");\n title.focus();\n title.activate();\n\n const command = new qx.ui.command.Command(\"Enter\");\n this.__doButton.setCommand(command);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.DragWidget\", {\n extend: qx.ui.core.Widget,\n type: \"singleton\",\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.HBox(10).set({\n alignY: \"middle\",\n }));\n\n this.set({\n appearance: \"strong-ui\",\n opacity: 0.9,\n padding: 10,\n zIndex: 1000,\n decorator: \"rounded\",\n visibility: \"excluded\",\n });\n\n const root = qx.core.Init.getApplication().getRoot();\n root.add(this);\n\n this.initDropAllowed();\n },\n\n properties: {\n dropAllowed: {\n check: \"Boolean\",\n nullable: false,\n init: null,\n apply: \"__dropAllowed\",\n },\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"allowed-icon\":\n control = new qx.ui.basic.Image();\n this._add(control);\n break;\n case \"dragged-resource\":\n control = new qx.ui.basic.Atom().set({\n font: \"text-14\",\n });\n this._add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __dropAllowed: function(allowed) {\n this.getChildControl(\"allowed-icon\").set({\n source: allowed ? \"@FontAwesome5Solid/check/14\" : \"@FontAwesome5Solid/times/14\",\n textColor: allowed ? \"white\" : \"danger-red\",\n });\n },\n\n __onMouseMoveDragging: function(e) {\n if (this.getContentElement()) {\n // place it next to the \"dragdrop-own-cursor\" indicator\n const domEl = this.getContentElement().getDomElement();\n domEl.style.left = `${e.pageX + 15}px`;\n domEl.style.top = `${e.pageY + 5}px`;\n }\n },\n\n start: function() {\n this.show();\n document.addEventListener(\"mousemove\", this.__onMouseMoveDragging.bind(this), false);\n\n const cursor = qx.ui.core.DragDropCursor.getInstance();\n cursor.setAppearance(\"dragdrop-no-cursor\");\n },\n\n end: function() {\n this.exclude();\n document.removeEventListener(\"mousemove\", this.__onMouseMoveDragging.bind(this), false);\n\n const cursor = qx.ui.core.DragDropCursor.getInstance();\n cursor.setAppearance(\"dragdrop-cursor\");\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2025 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n Supports:\n \"categories\": [{\n \"id\": \"string\", // required\n \"title\": \"string\", // required\n \"description\": \"string\" // optional\n }],\n \"resources\": [{\n \"resourceType\": \"study\", // it will start an empty study\n \"title\": \"string\", // required\n \"icon\": \"fontAwesome inner link | url\", // optional\n \"newStudyLabel\": \"string\", // optional\n \"idToWidget\": \"string\" // optional\n }, {\n \"resourceType\": \"template\", // it will create a study from the template\n \"expectedTemplateLabel\": \"string\", // required\n \"title\": \"string\", // required\n \"icon\": \"fontAwesome inner link | url\", // optional\n \"newStudyLabel\": \"string\", // optional\n \"category\": \"categories.id\", // optional\n \"idToWidget\": \"string\" // optional\n }, {\n \"resourceType\": \"service\", // it will create a study from the service\n \"expectedKey\": \"service.key\", // required\n \"title\": \"string\", // required\n \"icon\": \"fontAwesome inner link | url\", // optional\n \"newStudyLabel\": \"string\", // optional\n \"category\": \"categories.id\", // optional\n \"idToWidget\": \"string\" // optional\n }, {\n \"resourceType\": \"service\", // it will create a study from the service\n \"myMostUsed\": 2, // required\n \"category\": \"categories.id\", // optional\n }, {\n \"showDisabled\": true, // it will show a disabled button on the defined item\n \"title\": \"string\", // required\n \"icon\": \"fontAwesome inner link | url\", // optional\n \"reason\": \"string\", // optional\n \"newStudyLabel\": \"string\", // optional\n \"category\": \"categories.id\", // optional\n \"idToWidget\": \"string\" // optional\n }]\n */\nqx.Class.define(\"osparc.dashboard.NewPlusMenu\", {\n extend: qx.ui.menu.Menu,\n\n construct: function() {\n this.base(arguments);\n\n this.set({\n appearance: \"menu-wider\",\n position: \"bottom-left\",\n spacingX: 20,\n });\n\n osparc.utils.Utils.setIdToWidget(this, \"newPlusMenu\");\n\n this.getContentElement().setStyles({\n \"border-color\": qx.theme.manager.Color.getInstance().resolve(\"strong-main\"),\n });\n\n this.__categoryHeaders = [];\n\n this.__addItems();\n },\n\n events: {\n \"createFolder\": \"qx.event.type.Data\",\n \"newEmptyStudyClicked\": \"qx.event.type.Data\",\n \"newStudyFromTemplateClicked\": \"qx.event.type.Data\",\n \"newStudyFromServiceClicked\": \"qx.event.type.Data\",\n },\n\n statics: {\n createMenuButton: function(icon, title, infoText) {\n title = osparc.utils.Utils.replaceTokens(\n title,\n \"replace_me_product_name\",\n osparc.store.StaticInfo.getInstance().getDisplayName()\n );\n title = title.replace(/
/g, \" \");\n const menuButton = new qx.ui.menu.Button().set({\n icon: icon || null,\n label: title,\n font: \"text-16\",\n allowGrowX: true,\n });\n menuButton.getChildControl(\"icon\").set({\n alignX: \"center\",\n });\n menuButton.getChildControl(\"label\").set({\n rich: true,\n marginRight: 20,\n });\n if (infoText) {\n infoText = osparc.utils.Utils.replaceTokens(\n infoText,\n \"replace_me_product_name\",\n osparc.store.StaticInfo.getInstance().getDisplayName()\n );\n const infoHint = new osparc.ui.hint.InfoHint(infoText).set({\n source: osparc.ui.hint.InfoHint.INFO_ICON + \"/16\",\n });\n // where the shortcut is supposed to go\n // eslint-disable-next-line no-underscore-dangle\n menuButton._add(infoHint, {column: 2});\n }\n return menuButton;\n },\n\n createHeader: function(icon, label, infoText) {\n return this.createMenuButton(icon, label, infoText).set({\n anonymous: true,\n cursor: \"default\",\n font: \"text-14\",\n textColor: \"text-darker\",\n });\n },\n },\n\n members: {\n __categoryHeaders: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"new-folder\":\n control = this.self().createMenuButton(\n osparc.dashboard.CardBase.NEW_ICON + \"16\",\n this.tr(\"New Folder\"),\n );\n osparc.utils.Utils.setIdToWidget(control, \"newFolderButton\");\n control.addListener(\"tap\", () => this.__createNewFolder());\n this.add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __addItems: async function() {\n this.getChildControl(\"new-folder\");\n this.addSeparator();\n await this.__addNewStudyItems();\n },\n\n __addNewStudyItems: async function() {\n const plusButtonConfig = osparc.store.Products.getInstance().getPlusButtonUiConfig();\n if (plusButtonConfig) {\n await osparc.data.Resources.get(\"templates\")\n .then(templates => {\n if (plusButtonConfig[\"categories\"]) {\n this.__addCategories(plusButtonConfig[\"categories\"]);\n }\n plusButtonConfig[\"resources\"].forEach(newStudyData => {\n if (newStudyData[\"showDisabled\"]) {\n this.__addDisabledButton(newStudyData);\n } else if (newStudyData[\"resourceType\"] === \"study\") {\n this.__addEmptyStudyButton(newStudyData);\n } else if (newStudyData[\"resourceType\"] === \"template\") {\n this.__addFromTemplateButton(newStudyData, templates);\n } else if (newStudyData[\"resourceType\"] === \"service\") {\n this.__addFromServiceButton(newStudyData);\n }\n });\n });\n }\n },\n\n __getLastIdxFromCategory: function(categoryId) {\n for (let i=this.getChildren().length-1; i>=0; i--) {\n const child = this.getChildren()[i];\n if (child && child[\"categoryId\"] && child[\"categoryId\"] === categoryId) {\n return i;\n }\n }\n return null;\n },\n\n __addCategories: function(categories) {\n categories.forEach(category => {\n const categoryHeader = this.self().createHeader(null, category[\"title\"], category[\"description\"]);\n categoryHeader[\"categoryId\"] = category[\"id\"];\n if (this.__categoryHeaders.length) {\n // add spacing between categories\n categoryHeader.setMarginTop(10);\n }\n this.__categoryHeaders.push(categoryHeader);\n this.add(categoryHeader);\n });\n },\n\n __addIcon: function(menuButton, resourceInfo, resourceMetadata) {\n let source = null;\n if (resourceInfo && resourceInfo[\"icon\"]) {\n source = resourceInfo[\"icon\"];\n } else {\n source = osparc.utils.Utils.getIconFromResource(resourceMetadata);\n }\n\n if (source) {\n const thumbnail = new osparc.ui.basic.Thumbnail(source, 24, 24).set({\n minHeight: 24,\n minWidth: 24,\n });\n thumbnail.getChildControl(\"image\").set({\n anonymous: true,\n decorator: \"rounded\",\n });\n // eslint-disable-next-line no-underscore-dangle\n menuButton._add(thumbnail, {column: 0});\n }\n },\n\n __addFromResourceButton: function(menuButton, category) {\n let idx = null;\n if (category) {\n idx = this.__getLastIdxFromCategory(category);\n }\n if (idx) {\n menuButton[\"categoryId\"] = category;\n this.addAt(menuButton, idx+1);\n } else {\n this.add(menuButton);\n }\n },\n\n __addDisabledButton: function(newStudyData) {\n const menuButton = this.self().createMenuButton(null, newStudyData[\"title\"], newStudyData[\"reason\"]);\n osparc.utils.Utils.setIdToWidget(menuButton, newStudyData[\"idToWidget\"]);\n menuButton.setEnabled(false);\n\n this.__addIcon(menuButton, newStudyData);\n this.__addFromResourceButton(menuButton, newStudyData[\"category\"]);\n },\n\n __addEmptyStudyButton: function(newStudyData) {\n const menuButton = this.self().createMenuButton(null, newStudyData[\"title\"]);\n osparc.utils.Utils.setIdToWidget(menuButton, newStudyData[\"idToWidget\"]);\n\n menuButton.addListener(\"tap\", () => {\n this.fireDataEvent(\"newEmptyStudyClicked\", {\n newStudyLabel: newStudyData[\"newStudyLabel\"],\n });\n });\n\n this.__addIcon(menuButton, newStudyData);\n this.__addFromResourceButton(menuButton, newStudyData[\"category\"]);\n },\n\n __addFromTemplateButton: function(newStudyData, templates) {\n const menuButton = this.self().createMenuButton(null, newStudyData[\"title\"]);\n osparc.utils.Utils.setIdToWidget(menuButton, newStudyData[\"idToWidget\"]);\n // disable it until found in templates store\n menuButton.setEnabled(false);\n\n let templateMetadata = templates.find(t => t.name === newStudyData[\"expectedTemplateLabel\"]);\n if (templateMetadata) {\n menuButton.setEnabled(true);\n menuButton.addListener(\"tap\", () => {\n this.fireDataEvent(\"newStudyFromTemplateClicked\", {\n templateData: templateMetadata,\n newStudyLabel: newStudyData[\"newStudyLabel\"],\n });\n });\n this.__addIcon(menuButton, newStudyData, templateMetadata);\n this.__addFromResourceButton(menuButton, newStudyData[\"category\"]);\n }\n },\n\n __addFromServiceButton: function(newStudyData) {\n const addListenerToButton = (menuButton, latestMetadata) => {\n menuButton.addListener(\"tap\", () => {\n this.fireDataEvent(\"newStudyFromServiceClicked\", {\n serviceMetadata: latestMetadata,\n newStudyLabel: newStudyData[\"newStudyLabel\"],\n });\n });\n\n const cb = e => {\n this.hide();\n // so that is not consumed by the menu button itself\n e.stopPropagation();\n latestMetadata[\"resourceType\"] = \"service\";\n const resourceDetails = new osparc.dashboard.ResourceDetails(latestMetadata);\n osparc.dashboard.ResourceDetails.popUpInWindow(resourceDetails);\n }\n const infoButton = new osparc.ui.basic.IconButton(osparc.ui.hint.InfoHint.INFO_ICON + \"/16\", cb);\n // where the shortcut is supposed to go\n // eslint-disable-next-line no-underscore-dangle\n menuButton._add(infoButton, {column: 2});\n };\n\n if (\"expectedKey\" in newStudyData) {\n const menuButton = this.self().createMenuButton(null, newStudyData[\"title\"]);\n osparc.utils.Utils.setIdToWidget(menuButton, newStudyData[\"idToWidget\"]);\n // disable it until found in services store\n menuButton.setEnabled(false);\n\n const key = newStudyData[\"expectedKey\"];\n // Include deprecated versions, they should all be updatable to a non deprecated version\n const versions = osparc.service.Utils.getVersions(key, false);\n if (versions.length && newStudyData) {\n // scale to latest compatible\n const latestVersion = versions[0];\n const latestCompatible = osparc.service.Utils.getLatestCompatible(key, latestVersion);\n osparc.store.Services.getService(latestCompatible[\"key\"], latestCompatible[\"version\"])\n .then(latestMetadata => {\n // make sure this one is not deprecated\n if (osparc.service.Utils.isDeprecated(latestMetadata)) {\n return;\n }\n menuButton.setEnabled(true);\n this.__addIcon(menuButton, newStudyData, latestMetadata);\n this.__addFromResourceButton(menuButton, newStudyData[\"category\"]);\n addListenerToButton(menuButton, latestMetadata);\n });\n }\n } else if (\"myMostUsed\" in newStudyData) {\n const excludeFrontend = true;\n const excludeDeprecated = true\n osparc.store.Services.getServicesLatestList(excludeFrontend, excludeDeprecated)\n .then(servicesList => {\n osparc.service.Utils.sortObjectsBasedOn(servicesList, {\n \"sort\": \"hits\",\n \"order\": \"down\"\n });\n for (let i=0; i 0) {\n const menuButton = new qx.ui.menu.Button().set({\n label: latestMetadata[\"name\"],\n font: \"text-16\",\n allowGrowX: true,\n });\n this.__addIcon(menuButton, null, latestMetadata);\n this.__addFromResourceButton(menuButton, newStudyData[\"category\"]);\n addListenerToButton(menuButton, latestMetadata);\n }\n }\n });\n }\n },\n\n __createNewFolder: function() {\n const newFolder = true;\n const folderEditor = new osparc.editor.FolderEditor(newFolder);\n const title = this.tr(\"New Folder\");\n const win = osparc.ui.window.Window.popUpInWindow(folderEditor, title, 300, 120);\n folderEditor.addListener(\"createFolder\", () => {\n const name = folderEditor.getLabel();\n this.fireDataEvent(\"createFolder\", {\n name,\n });\n win.close();\n });\n folderEditor.addListener(\"cancel\", () => win.close());\n },\n },\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.ContextBreadcrumbs\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.HBox(5).set({\n alignY: \"middle\"\n }));\n\n osparc.store.Store.getInstance().addListener(\"changeStudyBrowserContext\", () => this.__rebuild(), this);\n },\n\n events: {\n \"locationChanged\": \"qx.event.type.Data\",\n },\n\n properties: {\n currentWorkspaceId: {\n check: \"Number\",\n nullable: true,\n init: null,\n event: \"changeCurrentWorkspaceId\",\n apply: \"__rebuild\"\n },\n\n currentFolderId: {\n check: \"Number\",\n nullable: true,\n init: null,\n event: \"changeCurrentFolderId\",\n apply: \"__rebuild\"\n }\n },\n\n members: {\n __rebuild: function() {\n this._removeAll();\n\n const currentContext = osparc.store.Store.getInstance().getStudyBrowserContext();\n if (currentContext !== \"studiesAndFolders\") {\n return;\n }\n\n if (this.getCurrentFolderId()) {\n const currentFolder = osparc.store.Folders.getInstance().getFolder(this.getCurrentFolderId());\n this.__createUpstreamButtons(currentFolder);\n }\n\n const currentFolderButton = this.__createCurrentFolderButton();\n if (currentFolderButton) {\n this._add(currentFolderButton);\n }\n },\n\n __createUpstreamButtons: function(childFolder) {\n if (childFolder) {\n const parentFolder = osparc.store.Folders.getInstance().getFolder(childFolder.getParentFolderId());\n if (parentFolder) {\n this._addAt(this.__createArrow(), 0);\n const upstreamButton = this.__createFolderButton(parentFolder);\n if (upstreamButton) {\n this._addAt(upstreamButton, 0);\n }\n this.__createUpstreamButtons(parentFolder);\n } else {\n this._addAt(this.__createArrow(), 0);\n }\n }\n },\n\n __createCurrentFolderButton: function() {\n const currentFolder = osparc.store.Folders.getInstance().getFolder(this.getCurrentFolderId());\n return this.__createFolderButton(currentFolder);\n },\n\n __changeFolder: function(folderId) {\n const workspaceId = this.getCurrentWorkspaceId();\n this.set({\n currentWorkspaceId: workspaceId,\n currentFolderId: folderId,\n });\n this.fireDataEvent(\"locationChanged\", {\n workspaceId,\n folderId,\n });\n },\n\n __createFolderButton: function(folder) {\n if (folder) {\n const folderButton = new qx.ui.form.Button(folder.getName()).set({\n maxWidth: 200\n });\n folder.bind(\"name\", folderButton, \"label\");\n folderButton.addListener(\"execute\", () => {\n const folderId = folder ? folder.getFolderId() : null;\n this.__changeFolder(folderId);\n }, this);\n folderButton.set({\n backgroundColor: \"transparent\",\n textColor: \"text\",\n gap: 5\n });\n return folderButton;\n }\n return null;\n },\n\n __createArrow: function() {\n return new qx.ui.basic.Label(\"/\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.WorkbenchToolbar\", {\n extend: osparc.desktop.Toolbar,\n\n events: {\n \"zoomIn\": \"qx.event.type.Event\",\n \"zoomOut\": \"qx.event.type.Event\",\n \"zoomReset\": \"qx.event.type.Event\"\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"start-stop-btns\":\n control = new osparc.desktop.StartStopButtons();\n this._add(control);\n break;\n case \"zoom-btns\": {\n control = new osparc.desktop.ZoomButtons();\n [\n \"zoomIn\",\n \"zoomOut\",\n \"zoomReset\"\n ].forEach(signalName => {\n control.addListener(signalName, () => {\n this.fireEvent(signalName);\n }, this);\n });\n this._add(control);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n // overridden\n _buildLayout: function() {\n this.getChildControl(\"start-stop-btns\");\n\n this._add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n\n this._createChildControl(\"zoom-btns\");\n },\n\n // overridden\n _populateNodesNavigationLayout: function() {\n return;\n },\n\n // overridden\n _applyStudy: function(study) {\n this.base(arguments, study);\n\n if (study) {\n this.getChildControl(\"start-stop-btns\").setStudy(study);\n }\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2009 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * David Perez Carmona (david-perez)\n * Jonathan Weiß (jonathan_rass)\n\n************************************************************************ */\n\n/**\n * A cell event instance contains all data for pointer events related to cells in\n * a pane.\n **/\nqx.Class.define(\"qx.ui.virtual.core.CellEvent\",\n{\n extend : qx.event.type.Pointer,\n\n\n properties :\n {\n /** The table row of the event target. */\n row :\n {\n check : \"Integer\",\n nullable: true\n },\n\n /** The table column of the event target. */\n column :\n {\n check : \"Integer\",\n nullable: true\n }\n },\n\n\n members :\n {\n /**\n * Initialize the event.\n *\n * @param scroller {qx.ui.table.pane.Scroller} The tables pane scroller.\n * @param me {qx.event.type.Pointer} The original pointer event.\n * @param row {Integer?null} The cell's row index.\n * @param column {Integer?null} The cell's column index.\n */\n init : function(scroller, me, row, column)\n {\n me.clone(this);\n this.setBubbles(false);\n\n this.setRow(row);\n this.setColumn(column);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Tobias Oetiker (oetiker)\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * VirtualTreeItem used mainly by NodesTree\n *\n * It consists of an entry icon, label and Node id\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * tree.setDelegate({\n * createItem: () => new osparc.widget.NodeTreeItem(),\n * bindItem: (c, item, id) => {\n * c.bindDefaultProperties(item, id);\n * c.bindProperty(\"label\", \"label\", null, item, id);\n * c.bindProperty(\"nodeId\", \"nodeId\", null, item, id);\n * }\n * });\n *
\n */\n\nqx.Class.define(\"osparc.widget.NodeTreeItem\", {\n extend: qx.ui.tree.VirtualTreeItem,\n\n construct: function() {\n this.base(arguments);\n\n this.set({\n indent: 5,\n textColor: \"text\",\n allowGrowX: true,\n alignY: \"middle\",\n decorator: \"rounded\",\n });\n\n this.__setNotHoveredStyle();\n this.__attachEventHandlers();\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n init: null,\n nullable: false,\n apply: \"__applyStudy\",\n event: \"changeStudy\"\n },\n\n node: {\n check: \"osparc.data.model.Node\",\n init: null,\n nullable: false,\n apply: \"__applyNode\",\n event: \"changeNode\"\n },\n\n id: {\n check: \"String\",\n init: null,\n nullable: false,\n event: \"changeId\"\n },\n\n iconColor: {\n check: \"String\",\n init: null,\n nullable: true,\n event: \"changeIconColor\",\n apply: \"__applyIconColor\"\n },\n\n simpleNode: {\n check: \"Boolean\",\n nullable: true,\n init: false,\n event: \"changeSimpleNode\"\n }\n },\n\n events: {\n \"fullscreenNode\": \"qx.event.type.Data\",\n \"renameNode\": \"qx.event.type.Data\",\n \"infoNode\": \"qx.event.type.Data\",\n \"deleteNode\": \"qx.event.type.Data\"\n },\n\n members: {\n __optionsMenu: null,\n\n __applyStudy: function(study) {\n const label = this.getChildControl(\"label\");\n osparc.utils.Utils.setKeyToWidget(label, \"root\");\n\n study.bind(\"name\", this, \"toolTipText\");\n\n this.getChildControl(\"delete-button\").exclude();\n },\n\n __applyNode: function(node) {\n const label = this.getChildControl(\"label\");\n osparc.utils.Utils.setKeyToWidget(label, node.getNodeId());\n\n node.bind(\"label\", this, \"toolTipText\");\n\n if (node.isDynamic()) {\n this.getChildControl(\"fullscreen-button\").show();\n\n const startButton = this.getChildControl(\"start-button\");\n node.attachHandlersToStartButton(startButton);\n\n const stopButton = this.getChildControl(\"stop-button\");\n node.attachHandlersToStopButton(stopButton);\n }\n\n const markerBtn = this.getChildControl(\"marker-button\");\n markerBtn.show();\n node.bind(\"marker\", markerBtn, \"label\", {\n converter: val => val ? this.tr(\"Remove Marker\") : this.tr(\"Add Marker\")\n });\n\n const marker = this.getChildControl(\"marker\");\n const updateMarker = () => {\n node.bind(\"marker\", marker, \"visibility\", {\n converter: val => val ? \"visible\" : \"excluded\"\n });\n if (node.getMarker()) {\n node.getMarker().bind(\"color\", marker, \"textColor\");\n }\n };\n node.addListener(\"changeMarker\", () => updateMarker());\n updateMarker();\n\n const deleteBtn = this.getChildControl(\"delete-button\");\n node.getStudy().bind(\"pipelineRunning\", deleteBtn, \"enabled\", {\n converter: running => !running\n });\n },\n\n __applyIconColor: function(textColor) {\n this.getChildControl(\"icon\").set({\n textColor\n });\n },\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"buttons\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox().set({\n alignY: \"middle\"\n }));\n control.exclude();\n this.addWidget(control);\n break;\n }\n case \"fullscreen-button\": {\n control = new qx.ui.form.Button().set({\n icon: \"@MaterialIcons/fullscreen/12\",\n backgroundColor: \"transparent\",\n toolTipText: this.tr(\"Full Screen\"),\n alignY: \"middle\",\n visibility: \"excluded\"\n });\n control.addListener(\"execute\", () => this.fireDataEvent(\"fullscreenNode\", this.getId()));\n const part = this.getChildControl(\"buttons\");\n part.add(control);\n break;\n }\n case \"options-menu-button\": {\n const optionsMenu = this.__optionsMenu = new qx.ui.menu.Menu().set({\n position: \"bottom-right\"\n });\n control = new qx.ui.form.MenuButton().set({\n menu: optionsMenu,\n icon: \"@FontAwesome5Solid/ellipsis-v/8\",\n allowGrowX: false,\n alignY: \"middle\"\n });\n const part = this.getChildControl(\"buttons\");\n part.add(control);\n break;\n }\n case \"start-button\": {\n control = new qx.ui.menu.Button().set({\n backgroundColor: \"background-main\",\n label: this.tr(\"Start\"),\n icon: \"@FontAwesome5Solid/play/10\",\n visibility: \"excluded\"\n });\n const optionsMenu = this.getChildControl(\"options-menu-button\");\n optionsMenu.getMenu().add(control);\n break;\n }\n case \"stop-button\": {\n control = new qx.ui.menu.Button().set({\n backgroundColor: \"background-main\",\n label: this.tr(\"Stop\"),\n icon: \"@FontAwesome5Solid/stop/10\",\n visibility: \"excluded\"\n });\n const optionsMenu = this.getChildControl(\"options-menu-button\");\n optionsMenu.getMenu().add(control);\n break;\n }\n case \"rename-button\": {\n control = new qx.ui.menu.Button().set({\n label: this.tr(\"Rename\"),\n icon: \"@FontAwesome5Solid/i-cursor/10\"\n });\n control.getChildControl(\"shortcut\").setValue(\"F2\");\n control.addListener(\"execute\", () => this.fireDataEvent(\"renameNode\", this.getId()));\n const optionsMenu = this.getChildControl(\"options-menu-button\");\n optionsMenu.getMenu().add(control);\n break;\n }\n case \"marker-button\": {\n control = new qx.ui.menu.Button().set({\n icon: \"@FontAwesome5Solid/bookmark/10\",\n visibility: \"excluded\"\n });\n control.addListener(\"execute\", () => this.getNode().toggleMarker());\n const optionsMenu = this.getChildControl(\"options-menu-button\");\n optionsMenu.getMenu().add(control);\n break;\n }\n case \"info-button\": {\n control = new qx.ui.menu.Button().set({\n label: this.tr(\"Information...\"),\n icon: \"@FontAwesome5Solid/info/10\"\n });\n control.getChildControl(\"shortcut\").setValue(\"I\");\n control.addListener(\"execute\", () => this.fireDataEvent(\"infoNode\", this.getId()));\n const optionsMenu = this.getChildControl(\"options-menu-button\");\n optionsMenu.getMenu().add(control);\n break;\n }\n case \"delete-button\": {\n control = new qx.ui.menu.Button().set({\n label: this.tr(\"Delete\"),\n icon: \"@FontAwesome5Solid/trash/10\"\n });\n control.getChildControl(\"shortcut\").setValue(\"Del\");\n control.addListener(\"execute\", () => this.fireDataEvent(\"deleteNode\", this.getId()));\n const optionsMenu = this.getChildControl(\"options-menu-button\");\n optionsMenu.getMenu().add(control);\n break;\n }\n case \"node-id\": {\n control = new qx.ui.basic.Label().set({\n maxWidth: 70,\n alignY: \"middle\",\n cursor: \"copy\"\n });\n control.addListener(\"tap\", () => osparc.utils.Utils.copyTextToClipboard(this.getId()));\n this.bind(\"id\", control, \"value\", {\n converter: value => value && value.substring(0, 8)\n });\n const permissions = osparc.data.Permissions.getInstance();\n permissions.bind(\"role\", control, \"visibility\", {\n converter: () => !this.isSimpleNode() && permissions.canDo(\"study.nodestree.uuid.read\") ? \"visible\" : \"excluded\"\n });\n this.bind(\"simpleNode\", control, \"visibility\", {\n converter: simpleNode => !simpleNode && permissions.canDo(\"study.nodestree.uuid.read\") ? \"visible\" : \"excluded\"\n });\n this.addWidget(control);\n break;\n }\n case \"marker\":\n control = new qx.ui.basic.Image().set({\n source: \"@FontAwesome5Solid/bookmark/12\",\n padding: 4,\n visibility: \"excluded\"\n });\n this.addWidget(control);\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n _addWidgets: function() {\n // Here's our indentation and tree-lines\n this.addOpenButton();\n\n // The standard tree icon follows\n this.addIcon();\n this.getChildControl(\"icon\").set({\n alignX: \"center\",\n alignY: \"middle\",\n width: 22\n });\n\n // The label\n this.addLabel();\n const label = this.getChildControl(\"label\");\n osparc.utils.Utils.setIdToWidget(label, \"nodeTreeItem\");\n label.set({\n allowGrowX: true,\n allowShrinkX: true,\n // override the one set in osparc-theme\n paddingTop: 0\n });\n label.setLayoutProperties({\n flex: 1\n });\n\n this.getChildControl(\"fullscreen-button\");\n this.getChildControl(\"start-button\");\n this.getChildControl(\"stop-button\");\n this.getChildControl(\"rename-button\");\n this.getChildControl(\"marker-button\");\n this.getChildControl(\"info-button\");\n this.getChildControl(\"delete-button\");\n this.getChildControl(\"node-id\");\n this.getChildControl(\"marker\");\n },\n\n __attachEventHandlers: function() {\n this.addListener(\"mouseover\", () => {\n if (this.isSimpleNode()) {\n return;\n }\n this.getChildControl(\"buttons\").show();\n this.__setHoveredStyle();\n });\n this.addListener(\"mouseout\", () => {\n if (this.isSimpleNode()) {\n return;\n }\n if (this.__optionsMenu.isVisible()) {\n const hideButtonsIfMouseOut = event => {\n if (osparc.utils.Utils.isMouseOnElement(this.__optionsMenu, event, 5)) {\n return;\n }\n document.removeEventListener(\"mousemove\", hideButtonsIfMouseOut);\n this.getChildControl(\"buttons\").exclude();\n this.__optionsMenu.exclude();\n };\n document.addEventListener(\"mousemove\", hideButtonsIfMouseOut);\n } else {\n this.getChildControl(\"buttons\").exclude();\n }\n this.__setNotHoveredStyle();\n });\n },\n\n __setHoveredStyle: function() {\n osparc.utils.Utils.addBorder(this, 1, qx.theme.manager.Color.getInstance().resolve(\"background-selected-dark\"));\n },\n\n __setNotHoveredStyle: function() {\n osparc.utils.Utils.hideBorder(this);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Collection of static methods for converting data coming from the webserver into suitable\n * data for the frontend.\n */\n\nqx.Class.define(\"osparc.data.Converters\", {\n type: \"static\",\n\n statics: {\n __mergeFileTreeChildren: function(one, two) {\n let newDir = true;\n for (let i=0; i {\n if (a[\"label\"] > b[\"label\"]) {\n return 1;\n }\n if (a[\"label\"] < b[\"label\"]) {\n return -1;\n }\n return 0;\n });\n children.forEach(child => {\n if (\"children\" in child) {\n this.sortFiles(child[\"children\"]);\n }\n });\n }\n },\n\n sortModelByLabel: function(model) {\n model.getChildren().sort((a, b) => {\n if (a.getLabel() > b.getLabel()) {\n return 1;\n }\n if (a.getLabel() < b.getLabel()) {\n return -1;\n }\n return 0;\n });\n },\n\n fromDSMToVirtualTreeModel: function(datasetId, files) {\n let children = [];\n for (let i=0; i\n * tree.setDelegate({\n * createItem: () => new osparc.file.FileTreeItem(),\n * bindItem: (c, item, id) => {\n * c.bindDefaultProperties(item, id);\n * c.bindProperty(\"fileId\", \"fileId\", null, item, id);\n * c.bindProperty(\"location\", \"location\", null, item, id);\n * c.bindProperty(\"path\", \"path\", null, item, id);\n * c.bindProperty(\"size\", \"size\", null, item, id);\n * }\n * });\n * \n */\n\nqx.Class.define(\"osparc.file.FileTreeItem\", {\n extend: qx.ui.tree.VirtualTreeItem,\n\n construct: function() {\n this.base(arguments);\n\n this.set({\n indent: 12, // defaults to 19,\n decorator: \"rounded\",\n });\n\n // create a date format like \"Oct. 19, 2018 11:31 AM\"\n this._dateFormat = new qx.util.format.DateFormat(\n qx.locale.Date.getDateFormat(\"medium\") + \" \" +\n qx.locale.Date.getTimeFormat(\"short\")\n );\n },\n\n properties: {\n location: {\n check: \"String\",\n event: \"changePath\",\n nullable: true\n },\n\n path: {\n check: \"String\",\n event: \"changePath\",\n nullable: true\n },\n\n pathLabel: {\n check: \"Array\",\n event: \"changePathLabel\",\n nullable: true\n },\n\n itemId: {\n check: \"String\",\n event: \"changeItemId\",\n apply: \"__applyItemId\",\n nullable: true\n },\n\n isDataset: {\n check: \"Boolean\",\n event: \"changeIsDataset\",\n init: false,\n nullable: false\n },\n\n datasetId: {\n check: \"String\",\n event: \"changeDatasetId\",\n nullable: true\n },\n\n loaded: {\n check: \"Boolean\",\n event: \"changeLoaded\",\n init: true,\n nullable: false\n },\n\n fileId: {\n check: \"String\",\n event: \"changeFileId\",\n nullable: true\n },\n\n lastModified: {\n check: \"String\",\n event: \"changeLastModified\",\n nullable: true\n },\n\n size: {\n check: \"String\",\n event: \"changeSize\",\n nullable: true\n }\n },\n\n members: { // eslint-disable-line qx-rules/no-refs-in-members\n _dateFormat: null,\n\n // overridden\n _addWidgets: function() {\n // Here's our indentation and tree-lines\n this.addSpacer();\n this.addOpenButton();\n\n // The standard tree icon follows\n this.addIcon();\n\n // The label\n this.addLabel();\n\n // All else should be right justified\n this.addWidget(new qx.ui.core.Spacer(), {\n flex: 1\n });\n\n // Add lastModified\n const lastModifiedWidget = new qx.ui.basic.Label().set({\n maxWidth: 140,\n textAlign: \"right\"\n });\n let that = this;\n this.bind(\"lastModified\", lastModifiedWidget, \"value\", {\n converter: function(value) {\n if (value === null) {\n return \"\";\n }\n const date = new Date(value);\n return that._dateFormat.format(date); // eslint-disable-line no-underscore-dangle\n }\n });\n this.addWidget(lastModifiedWidget);\n\n // Add size\n const sizeWidget = new qx.ui.basic.Label().set({\n maxWidth: 70,\n textAlign: \"right\"\n });\n this.bind(\"size\", sizeWidget, \"value\", {\n converter: function(value) {\n if (value === null) {\n return \"\";\n }\n return osparc.utils.Utils.bytesToSize(value);\n }\n });\n this.addWidget(sizeWidget);\n },\n\n __applyItemId: function(value, old) {\n osparc.utils.Utils.setIdToWidget(this, \"fileTreeItem_\" + value);\n },\n\n // override\n _applyIcon: function(value, old) {\n this.base(arguments, value, old);\n const icon = this.getChildControl(\"icon\", true);\n if (icon && value === \"@FontAwesome5Solid/circle-notch/12\") {\n icon.setPadding(0);\n icon.setMarginRight(4);\n icon.getContentElement().addClass(\"rotate\");\n } else {\n icon.resetPadding();\n icon.resetMargin();\n icon.getContentElement().removeClass(\"rotate\");\n }\n }\n },\n\n destruct: function() {\n this._dateFormat.dispose();\n this._dateFormat = null;\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.ui.form.ContentSchemaArray\", {\n extend: qx.ui.form.TextField,\n\n construct: function(contentSchema) {\n this.base(arguments);\n\n if (contentSchema) {\n this.setContentSchema(contentSchema);\n }\n },\n\n properties: {\n contentSchema: {\n check: \"Object\",\n init: null,\n nullable: true,\n apply: \"__applyContentSchema\"\n },\n\n validator: {\n check: \"qx.ui.form.validation.Manager\",\n init: null,\n nullable: true\n }\n },\n\n statics: {\n addArrayBrackets: function(label) {\n if (label.charAt(0) !== \"[\") {\n label = \"[\" + label;\n }\n if (label.charAt(label.length-1) !== \"]\") {\n label += \"]\";\n }\n return label;\n }\n },\n\n members: {\n // overrriden\n getValue: function() {\n let value = this.base(arguments);\n if (value === null) {\n value = \"\";\n }\n const cSchema = this.getContentSchema();\n if (cSchema) {\n if (cSchema.type === \"array\") {\n value = this.self().addArrayBrackets(value);\n }\n }\n return value;\n },\n\n // overrriden\n setValue: function(value) {\n const cSchema = this.getContentSchema();\n if (cSchema) {\n if (cSchema.type === \"array\") {\n if (Array.isArray(value)) {\n value = JSON.stringify(value);\n }\n value = this.self().addArrayBrackets(value);\n }\n }\n this.base(arguments, value);\n },\n\n __applyContentSchema: function(contentSchema) {\n const isValidatable = Object.keys(contentSchema).some(r => [\"items\", \"minItems\", \"maxItems\"].indexOf(r) >= 0);\n if (isValidatable) {\n const validator = osparc.ui.form.ContentSchemaHelper.createArrayValidator(this, contentSchema);\n this.setValidator(validator);\n }\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Andreas Ecker (ecker)\n * Martin Wittemann (martinwittemann)\n * Jonathan Weiß (jonathan_rass)\n\n************************************************************************ */\n\n/**\n * A *spinner* is a control that allows you to adjust a numerical value,\n * typically within an allowed range. An obvious example would be to specify the\n * month of a year as a number in the range 1 - 12.\n *\n * To do so, a spinner encompasses a field to display the current value (a\n * textfield) and controls such as up and down buttons to change that value. The\n * current value can also be changed by editing the display field directly, or\n * using mouse wheel and cursor keys.\n *\n * An optional {@link #numberFormat} property allows you to control the format of\n * how a value can be entered and will be displayed.\n *\n * A brief, but non-trivial example:\n *\n * \n * var s = new qx.ui.form.Spinner();\n * s.set({\n * maximum: 3000,\n * minimum: -3000\n * });\n * var nf = new qx.util.format.NumberFormat();\n * nf.setMaximumFractionDigits(2);\n * s.setNumberFormat(nf);\n *
\n *\n * A spinner instance without any further properties specified in the\n * constructor or a subsequent *set* command will appear with default\n * values and behaviour.\n *\n * @childControl textfield {qx.ui.form.TextField} holds the current value of the spinner\n * @childControl upbutton {qx.ui.form.Button} button to increase the value\n * @childControl downbutton {qx.ui.form.Button} button to decrease the value\n *\n */\nqx.Class.define(\"qx.ui.form.Spinner\",\n{\n extend : qx.ui.core.Widget,\n implement : [\n qx.ui.form.INumberForm,\n qx.ui.form.IRange,\n qx.ui.form.IForm\n ],\n include : [\n qx.ui.core.MContentPadding,\n qx.ui.form.MForm\n ],\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param min {Number} Minimum value\n * @param value {Number} Current value\n * @param max {Number} Maximum value\n */\n construct : function(min, value, max)\n {\n this.base(arguments);\n\n // MAIN LAYOUT\n var layout = new qx.ui.layout.Grid();\n layout.setColumnFlex(0, 1);\n layout.setRowFlex(0,1);\n layout.setRowFlex(1,1);\n this._setLayout(layout);\n\n // EVENTS\n this.addListener(\"keydown\", this._onKeyDown, this);\n this.addListener(\"keyup\", this._onKeyUp, this);\n this.addListener(\"roll\", this._onRoll, this);\n\n if (qx.core.Environment.get(\"qx.dynlocale\")) {\n qx.locale.Manager.getInstance().addListener(\"changeLocale\", this._onChangeLocale, this);\n }\n\n // CREATE CONTROLS\n var textField = this._createChildControl(\"textfield\");\n this._createChildControl(\"upbutton\");\n this._createChildControl(\"downbutton\");\n\n // INITIALIZATION\n if (min != null) {\n this.setMinimum(min);\n }\n\n if (max != null) {\n this.setMaximum(max);\n }\n\n if (value !== undefined) {\n this.setValue(value);\n } else {\n this.initValue();\n }\n\n // forward the focusin and focusout events to the textfield. The textfield\n // is not focusable so the events need to be forwarded manually.\n this.addListener(\"focusin\", function(e) {\n textField.fireNonBubblingEvent(\"focusin\", qx.event.type.Focus);\n }, this);\n\n this.addListener(\"focusout\", function(e) {\n textField.fireNonBubblingEvent(\"focusout\", qx.event.type.Focus);\n }, this);\n },\n\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties:\n {\n // overridden\n appearance:\n {\n refine : true,\n init : \"spinner\"\n },\n\n // overridden\n focusable :\n {\n refine : true,\n init : true\n },\n\n /** The amount to increment on each event (keypress or pointerdown) */\n singleStep:\n {\n check : \"Number\",\n init : 1\n },\n\n /** The amount to increment on each pageup/pagedown keypress */\n pageStep:\n {\n check : \"Number\",\n init : 10\n },\n\n /** minimal value of the Range object */\n minimum:\n {\n check : \"Number\",\n apply : \"_applyMinimum\",\n init : 0,\n event: \"changeMinimum\"\n },\n\n /** The value of the spinner. */\n value:\n {\n check : \"this._checkValue(value)\",\n nullable : true,\n apply : \"_applyValue\",\n init : 0,\n event : \"changeValue\"\n },\n\n /** maximal value of the Range object */\n maximum:\n {\n check : \"Number\",\n apply : \"_applyMaximum\",\n init : 100,\n event: \"changeMaximum\"\n },\n\n /** whether the value should wrap around */\n wrap:\n {\n check : \"Boolean\",\n init : false,\n apply : \"_applyWrap\"\n },\n\n /** Controls whether the textfield of the spinner is editable or not */\n editable :\n {\n check : \"Boolean\",\n init : true,\n apply : \"_applyEditable\"\n },\n\n /** Controls the display of the number in the textfield */\n numberFormat :\n {\n check : \"qx.util.format.NumberFormat\",\n apply : \"_applyNumberFormat\",\n nullable : true\n },\n\n // overridden\n allowShrinkY :\n {\n refine : true,\n init : false\n }\n },\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n /** Saved last value in case invalid text is entered */\n __lastValidValue : null,\n\n /** Whether the page-up button has been pressed */\n __pageUpMode : false,\n\n /** Whether the page-down button has been pressed */\n __pageDownMode : false,\n\n\n /*\n ---------------------------------------------------------------------------\n WIDGET INTERNALS\n ---------------------------------------------------------------------------\n */\n\n // overridden\n _createChildControlImpl : function(id, hash)\n {\n var control;\n\n switch(id)\n {\n case \"textfield\":\n control = new qx.ui.form.TextField();\n control.setFilter(this._getFilterRegExp());\n control.addState(\"inner\");\n control.setWidth(40);\n control.setFocusable(false);\n control.addListener(\"changeValue\", this._onTextChange, this);\n\n this._add(control, {column: 0, row: 0, rowSpan: 2});\n break;\n\n case \"upbutton\":\n control = new qx.ui.form.RepeatButton();\n control.addState(\"inner\");\n control.setFocusable(false);\n control.addListener(\"execute\", this._countUp, this);\n this._add(control, {column: 1, row: 0});\n break;\n\n case \"downbutton\":\n control = new qx.ui.form.RepeatButton();\n control.addState(\"inner\");\n control.setFocusable(false);\n control.addListener(\"execute\", this._countDown, this);\n this._add(control, {column:1, row: 1});\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n\n /**\n * Returns the regular expression used as the text field's filter\n *\n * @return {RegExp} The filter RegExp.\n */\n _getFilterRegExp : function()\n {\n var decimalSeparator, groupSeparator, locale;\n\n if (this.getNumberFormat() !== null) {\n locale = this.getNumberFormat().getLocale();\n } else {\n locale = qx.locale.Manager.getInstance().getLocale();\n }\n\n decimalSeparator = qx.locale.Number.getDecimalSeparator(locale);\n groupSeparator = qx.locale.Number.getGroupSeparator(locale);\n\n var prefix = \"\";\n var postfix = \"\";\n if (this.getNumberFormat() !== null) {\n prefix = this.getNumberFormat().getPrefix() || \"\";\n postfix = this.getNumberFormat().getPostfix() || \"\";\n }\n\n var filterRegExp = new RegExp(\"[0-9\" +\n qx.lang.String.escapeRegexpChars(decimalSeparator) +\n qx.lang.String.escapeRegexpChars(groupSeparator) +\n qx.lang.String.escapeRegexpChars(prefix) +\n qx.lang.String.escapeRegexpChars(postfix) +\n \"\\-]\"\n );\n\n return filterRegExp;\n },\n\n\n // overridden\n /**\n * @lint ignoreReferenceField(_forwardStates)\n */\n _forwardStates : {\n focused : true,\n invalid : true\n },\n\n\n // overridden\n tabFocus : function()\n {\n var field = this.getChildControl(\"textfield\");\n\n field.getFocusElement().focus();\n field.selectAllText();\n },\n\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n APPLY METHODS\n ---------------------------------------------------------------------------\n */\n\n /**\n * Apply routine for the minimum property.\n *\n * It sets the value of the spinner to the maximum of the current spinner\n * value and the given min property value.\n *\n * @param value {Number} The new value of the min property\n * @param old {Number} The old value of the min property\n */\n _applyMinimum : function(value, old)\n {\n if (this.getMaximum() < value) {\n this.setMaximum(value);\n }\n\n if (this.getValue() < value) {\n this.setValue(value);\n } else {\n this._updateButtons();\n }\n },\n\n\n /**\n * Apply routine for the maximum property.\n *\n * It sets the value of the spinner to the minimum of the current spinner\n * value and the given max property value.\n *\n * @param value {Number} The new value of the max property\n * @param old {Number} The old value of the max property\n */\n _applyMaximum : function(value, old)\n {\n if (this.getMinimum() > value) {\n this.setMinimum(value);\n }\n\n if (this.getValue() > value) {\n this.setValue(value);\n } else {\n this._updateButtons();\n }\n },\n\n\n // overridden\n _applyEnabled : function(value, old)\n {\n this.base(arguments, value, old);\n\n this._updateButtons();\n },\n\n\n /**\n * Check whether the value being applied is allowed.\n *\n * If you override this to change the allowed type, you will also\n * want to override {@link #_applyValue}, {@link #_applyMinimum},\n * {@link #_applyMaximum}, {@link #_countUp}, {@link #_countDown}, and\n * {@link #_onTextChange} methods as those cater specifically to numeric\n * values.\n *\n * @param value {var}\n * The value being set\n * @return {Boolean}\n * true if the value is allowed;\n * false> otherwise.\n */\n _checkValue : function(value) {\n return typeof value === \"number\" && value >= this.getMinimum() && value <= this.getMaximum();\n },\n\n\n /**\n * Apply routine for the value property.\n *\n * It disables / enables the buttons and handles the wrap around.\n *\n * @param value {Number} The new value of the spinner\n * @param old {Number} The former value of the spinner\n */\n _applyValue: function(value, old)\n {\n var textField = this.getChildControl(\"textfield\");\n\n this._updateButtons();\n\n // save the last valid value of the spinner\n this.__lastValidValue = value;\n\n // write the value of the spinner to the textfield\n if (value !== null) {\n if (this.getNumberFormat()) {\n textField.setValue(this.getNumberFormat().format(value));\n } else {\n textField.setValue(value + \"\");\n }\n } else {\n textField.setValue(\"\");\n }\n },\n\n\n /**\n * Apply routine for the editable property.
\n * It sets the textfield of the spinner to not read only.\n *\n * @param value {Boolean} The new value of the editable property\n * @param old {Boolean} The former value of the editable property\n */\n _applyEditable : function(value, old)\n {\n var textField = this.getChildControl(\"textfield\");\n\n if (textField) {\n textField.setReadOnly(!value);\n }\n },\n\n\n /**\n * Apply routine for the wrap property.
\n * Enables all buttons if the wrapping is enabled.\n *\n * @param value {Boolean} The new value of the wrap property\n * @param old {Boolean} The former value of the wrap property\n */\n _applyWrap : function(value, old)\n {\n this._updateButtons();\n },\n\n\n /**\n * Apply routine for the numberFormat property.
\n * When setting a number format, the display of the\n * value in the text-field will be changed immediately.\n *\n * @param value {Boolean} The new value of the numberFormat property\n * @param old {Boolean} The former value of the numberFormat property\n */\n _applyNumberFormat : function(value, old) {\n var textField = this.getChildControl(\"textfield\");\n textField.setFilter(this._getFilterRegExp());\n\n if (old) {\n old.removeListener(\"changeNumberFormat\", this._onChangeNumberFormat, this);\n }\n\n var numberFormat = this.getNumberFormat();\n if (numberFormat !== null) {\n numberFormat.addListener(\"changeNumberFormat\", this._onChangeNumberFormat, this);\n }\n\n this._applyValue(this.__lastValidValue, undefined);\n },\n\n /**\n * Returns the element, to which the content padding should be applied.\n *\n * @return {qx.ui.core.Widget} The content padding target.\n */\n _getContentPaddingTarget : function() {\n return this.getChildControl(\"textfield\");\n },\n\n /**\n * Checks the min and max values, disables / enables the\n * buttons and handles the wrap around.\n */\n _updateButtons : function() {\n var upButton = this.getChildControl(\"upbutton\");\n var downButton = this.getChildControl(\"downbutton\");\n var value = this.getValue();\n\n if (!this.getEnabled())\n {\n // If Spinner is disabled -> disable buttons\n upButton.setEnabled(false);\n downButton.setEnabled(false);\n }\n else\n {\n if (this.getWrap())\n {\n // If wraped -> always enable buttons\n upButton.setEnabled(true);\n downButton.setEnabled(true);\n }\n else\n {\n // check max value\n if (value !== null && value < this.getMaximum()) {\n upButton.setEnabled(true);\n } else {\n upButton.setEnabled(false);\n }\n\n // check min value\n if (value !== null && value > this.getMinimum()) {\n downButton.setEnabled(true);\n } else {\n downButton.setEnabled(false);\n }\n }\n }\n },\n\n /*\n ---------------------------------------------------------------------------\n KEY EVENT-HANDLING\n ---------------------------------------------------------------------------\n */\n\n /**\n * Callback for \"keyDown\" event.
\n * Controls the interval mode (\"single\" or \"page\")\n * and the interval increase by detecting \"Up\"/\"Down\"\n * and \"PageUp\"/\"PageDown\" keys.
\n * The corresponding button will be pressed.\n *\n * @param e {qx.event.type.KeySequence} keyDown event\n */\n _onKeyDown: function(e)\n {\n switch(e.getKeyIdentifier())\n {\n case \"PageUp\":\n // mark that the spinner is in page mode and process further\n this.__pageUpMode = true;\n\n case \"Up\":\n this.getChildControl(\"upbutton\").press();\n break;\n\n case \"PageDown\":\n // mark that the spinner is in page mode and process further\n this.__pageDownMode = true;\n\n case \"Down\":\n this.getChildControl(\"downbutton\").press();\n break;\n\n default:\n // Do not stop unused events\n return;\n }\n\n e.stopPropagation();\n e.preventDefault();\n },\n\n\n /**\n * Callback for \"keyUp\" event.
\n * Detecting \"Up\"/\"Down\" and \"PageUp\"/\"PageDown\" keys.
\n * Releases the button and disabled the page mode, if necessary.\n *\n * @param e {qx.event.type.KeySequence} keyUp event\n */\n _onKeyUp: function(e)\n {\n switch(e.getKeyIdentifier())\n {\n case \"PageUp\":\n this.getChildControl(\"upbutton\").release();\n this.__pageUpMode = false;\n break;\n\n case \"Up\":\n this.getChildControl(\"upbutton\").release();\n break;\n\n case \"PageDown\":\n this.getChildControl(\"downbutton\").release();\n this.__pageDownMode = false;\n break;\n\n case \"Down\":\n this.getChildControl(\"downbutton\").release();\n break;\n }\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n OTHER EVENT HANDLERS\n ---------------------------------------------------------------------------\n */\n\n /**\n * Callback method for the \"roll\" event.
\n * Increments or decrements the value of the spinner.\n *\n * @param e {qx.event.type.Roll} roll event\n */\n _onRoll: function(e)\n {\n // only wheel\n if (e.getPointerType() != \"wheel\") {\n return;\n }\n var delta = e.getDelta().y;\n if (delta < 0) {\n this._countUp();\n } else if (delta > 0) {\n this._countDown();\n }\n\n e.stop();\n },\n\n\n /**\n * Callback method for the \"change\" event of the textfield.\n *\n * @param e {qx.event.type.Event} text change event or blur event\n */\n _onTextChange : function(e)\n {\n var textField = this.getChildControl(\"textfield\");\n var value;\n\n // if a number format is set\n if (this.getNumberFormat())\n {\n // try to parse the current number using the number format\n try {\n value = this.getNumberFormat().parse(textField.getValue());\n } catch(ex) {\n // otherwise, process further\n }\n }\n\n if (value === undefined)\n {\n // try to parse the number as a float\n value = parseFloat(textField.getValue());\n }\n\n // if the result is a number\n if (!isNaN(value))\n {\n // Fix value if invalid\n if (value > this.getMaximum()) {\n value = this.getMaximum();\n } else if (value < this.getMinimum()) {\n value = this.getMinimum();\n }\n\n // If value is the same than before, call directly _applyValue()\n if (value === this.__lastValidValue) {\n this._applyValue(this.__lastValidValue);\n } else {\n this.setValue(value);\n }\n }\n else\n {\n // otherwise, reset the last valid value\n this._applyValue(this.__lastValidValue, undefined);\n }\n },\n\n\n /**\n * Callback method for the locale Manager's \"changeLocale\" event.\n *\n * @param ev {qx.event.type.Event} locale change event\n */\n\n _onChangeLocale : function(ev)\n {\n if (this.getNumberFormat() !== null) {\n this.setNumberFormat(this.getNumberFormat());\n var textfield = this.getChildControl(\"textfield\");\n textfield.setFilter(this._getFilterRegExp());\n textfield.setValue(this.getNumberFormat().format(this.getValue()));\n }\n },\n\n\n /**\n * Callback method for the number format's \"changeNumberFormat\" event.\n *\n * @param ev {qx.event.type.Event} number format change event\n */\n _onChangeNumberFormat : function(ev) {\n var textfield = this.getChildControl(\"textfield\");\n textfield.setFilter(this._getFilterRegExp());\n textfield.setValue(this.getNumberFormat().format(this.getValue()));\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n INTERVAL HANDLING\n ---------------------------------------------------------------------------\n */\n\n /**\n * Checks if the spinner is in page mode and counts either the single\n * or page Step up.\n *\n */\n _countUp: function()\n {\n if (this.__pageUpMode) {\n var newValue = this.getValue() + this.getPageStep();\n } else {\n var newValue = this.getValue() + this.getSingleStep();\n }\n\n // handle the case where wrapping is enabled\n if (this.getWrap())\n {\n if (newValue > this.getMaximum())\n {\n var diff = this.getMaximum() - newValue;\n newValue = this.getMinimum() - diff - 1;\n }\n }\n\n this.gotoValue(newValue);\n },\n\n\n /**\n * Checks if the spinner is in page mode and counts either the single\n * or page Step down.\n *\n */\n _countDown: function()\n {\n if (this.__pageDownMode) {\n var newValue = this.getValue() - this.getPageStep();\n } else {\n var newValue = this.getValue() - this.getSingleStep();\n }\n\n // handle the case where wrapping is enabled\n if (this.getWrap())\n {\n if (newValue < this.getMinimum())\n {\n var diff = this.getMinimum() + newValue;\n newValue = this.getMaximum() + diff + 1;\n }\n }\n\n this.gotoValue(newValue);\n },\n\n\n /**\n * Normalizes the incoming value to be in the valid range and\n * applies it to the {@link #value} afterwards.\n *\n * @param value {Number} Any number\n * @return {Number} The normalized number\n */\n gotoValue : function(value) {\n return this.setValue(Math.min(this.getMaximum(), Math.max(this.getMinimum(), value)));\n },\n\n // overridden\n focus : function()\n {\n this.base(arguments);\n this.getChildControl(\"textfield\").getFocusElement().focus();\n }\n },\n\n\n destruct : function()\n {\n var nf = this.getNumberFormat();\n if (nf) {\n nf.removeListener(\"changeNumberFormat\", this._onChangeNumberFormat, this);\n }\n\n if (qx.core.Environment.get(\"qx.dynlocale\")) {\n qx.locale.Manager.getInstance().removeListener(\"changeLocale\", this._onChangeLocale, this);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.node.ServiceOptionsView\", {\n extend: qx.ui.core.Widget,\n type: \"abstract\",\n\n construct: function(node) {\n this.base();\n\n this._setLayout(new qx.ui.layout.VBox(5));\n\n if (node) {\n this.setNode(node);\n }\n },\n\n properties: {\n node: {\n check: \"osparc.data.model.Node\",\n init: null,\n nullable: false,\n apply: \"_applyNode\"\n }\n },\n\n /**\n * @abstract\n */\n members: {\n _applyNode: function(node) {\n if (node.isComputational()) {\n node.getStatus().bind(\"running\", this, \"enabled\", {\n converter: () => !osparc.data.model.NodeStatus.isComputationalRunning(node)\n });\n }\n\n if (node.isDynamic()) {\n node.getStatus().bind(\"interactive\", this, \"enabled\", {\n converter: state => state === \"idle\"\n });\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.node.TierSelectionView\", {\n extend: osparc.node.ServiceOptionsView,\n\n events: {\n \"tierChanged\": \"qx.event.type.Event\"\n },\n\n members: {\n _applyNode: function(node) {\n this.__populateLayout();\n\n this.base(arguments, node);\n },\n\n __populateLayout: function() {\n this._removeAll();\n\n this._add(new qx.ui.basic.Label(this.tr(\"Tiers\")).set({\n font: \"text-14\"\n }));\n\n const tiersLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n this._add(tiersLayout);\n\n const tierBox = new qx.ui.form.SelectBox().set({\n allowGrowX: false,\n allowGrowY: false\n });\n tiersLayout.add(tierBox);\n\n const node = this.getNode();\n osparc.store.Pricing.getInstance().fetchPricingPlansService(node.getKey(), node.getVersion())\n .then(pricingPlans => {\n if (pricingPlans && \"pricingUnits\" in pricingPlans && pricingPlans[\"pricingUnits\"].length) {\n const pricingUnits = pricingPlans[\"pricingUnits\"].map(pricingUnitData => {\n const pricingUnit = new osparc.data.model.PricingUnit(pricingUnitData);\n return pricingUnit;\n });\n pricingUnits.forEach(pricingUnit => {\n const tItem = new qx.ui.form.ListItem(pricingUnit.getName(), null, pricingUnit.getPricingUnitId());\n tierBox.add(tItem);\n });\n const studyId = node.getStudy().getUuid();\n const nodeId = node.getNodeId();\n const unitParams = {\n url: {\n studyId,\n nodeId\n }\n };\n osparc.data.Resources.fetch(\"studies\", \"getPricingUnit\", unitParams)\n .then(preselectedPricingUnit => {\n if (preselectedPricingUnit && preselectedPricingUnit[\"pricingUnitId\"]) {\n const tierFound = tierBox.getSelectables().find(t => t.getModel() === preselectedPricingUnit[\"pricingUnitId\"]);\n if (tierFound) {\n tierBox.setSelection([tierFound]);\n } else {\n console.error(\"Tier not found\");\n }\n }\n })\n .finally(() => {\n const pUnitUIs = [];\n pricingUnits.forEach(pricingUnit => {\n const pUnitUI = new osparc.study.PricingUnitTier(pricingUnit).set({\n showEditButton: false,\n });\n pUnitUI.getChildControl(\"name\").exclude();\n pUnitUI.exclude();\n tiersLayout.add(pUnitUI);\n pUnitUIs.push(pUnitUI);\n });\n const showSelectedTier = pricingUnitId => {\n pUnitUIs.forEach(pUnitUI => pUnitUI.exclude());\n if (pricingUnitId) {\n const pUnitFound = pUnitUIs.find(pUnitUI => pUnitUI.getUnitData().getPricingUnitId() === pricingUnitId)\n if (pUnitFound) {\n pUnitFound.show();\n }\n }\n }\n showSelectedTier(tierBox.getSelection() && tierBox.getSelection()[0].getModel());\n tierBox.addListener(\"changeSelection\", e => {\n const selection = e.getData();\n if (selection.length) {\n tierBox.setEnabled(false);\n const selectedUnitId = selection[0].getModel();\n osparc.study.NodePricingUnits.patchPricingUnitSelection(studyId, nodeId, pricingPlans[\"pricingPlanId\"], selectedUnitId)\n .finally(() => {\n tierBox.setEnabled(true);\n showSelectedTier(selectedUnitId);\n });\n }\n }, this);\n });\n }\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.node.LifeCycleView\", {\n extend: osparc.node.ServiceOptionsView,\n\n members: {\n _applyNode: function(node) {\n if (node.isUpdatable() || node.isDeprecated() || node.isRetired()) {\n this.__populateLayout();\n }\n\n this.base(arguments, node);\n },\n\n __populateLayout: function() {\n this._removeAll();\n\n this.__addTitle();\n this.__addChip();\n this.__addDeprecationDate();\n\n if (this.getNode().isUpdatable()) {\n this.__addAutoUpdatableSection();\n } else {\n this.__addNonAutoUpdatableSection();\n }\n },\n\n __addTitle: function() {\n this._add(new qx.ui.basic.Label(this.tr(\"Update Service\")).set({\n font: \"text-14\"\n }));\n },\n\n __addChip: function() {\n const node = this.getNode();\n\n let chip = null;\n if (node.isRetired()) {\n chip = osparc.service.StatusUI.createServiceRetiredChip();\n } else if (node.isDeprecated()) {\n chip = osparc.service.StatusUI.createServiceDeprecatedChip();\n }\n if (chip) {\n this._add(chip);\n }\n },\n\n __addDeprecationDate: function() {\n const node = this.getNode();\n\n if (node.isDeprecated()) {\n const deprecateDateLabel = new qx.ui.basic.Label(osparc.service.Utils.getDeprecationDateText(node.getMetaData())).set({\n rich: true\n });\n this._add(deprecateDateLabel);\n }\n },\n\n __addAutoUpdatableSection: function() {\n this.__addAutoUpdatableInstructions();\n this.__addAutoUpdateButtonsSection();\n },\n\n __addAutoUpdatableInstructions: function() {\n const node = this.getNode();\n\n let instructionsMsg = null;\n if (node.isRetired()) {\n instructionsMsg = osparc.service.Utils.RETIRED_AUTOUPDATABLE_INSTRUCTIONS;\n } else if (node.isUpdatable() || node.isDeprecated()) {\n instructionsMsg = osparc.service.Utils.DEPRECATED_AUTOUPDATABLE_INSTRUCTIONS;\n }\n if (instructionsMsg) {\n const instructionsLabel = new qx.ui.basic.Label(instructionsMsg).set({\n rich: true\n });\n this._add(instructionsLabel);\n }\n },\n\n __addAutoUpdateButtonsSection: function() {\n const node = this.getNode();\n\n const buttonsLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n\n const updateButton = new osparc.ui.form.FetchButton().set({\n label: this.tr(\"Update\"),\n icon: \"@MaterialIcons/update/14\",\n backgroundColor: \"strong-main\"\n });\n const isUpdatable = this.getNode().isUpdatable();\n node.getStatus().bind(\"interactive\", updateButton, \"enabled\", {\n converter: state => [\"idle\", \"failed\", \"deprecated\", \"retired\"].includes(state) && isUpdatable\n });\n updateButton.addListener(\"execute\", () => {\n updateButton.setFetching(true);\n const latestCompatible = osparc.service.Utils.getLatestCompatible(node.getKey(), node.getVersion());\n if (node.getKey() !== latestCompatible[\"key\"]) {\n node.setKey(latestCompatible[\"key\"]);\n }\n if (node.getVersion() !== latestCompatible[\"version\"]) {\n node.setVersion(latestCompatible[\"version\"]);\n }\n node.fireEvent(\"updateStudyDocument\");\n setTimeout(() => {\n updateButton.setFetching(false);\n node.requestStartNode();\n }, osparc.desktop.StudyEditor.AUTO_SAVE_INTERVAL);\n });\n\n buttonsLayout.add(updateButton);\n\n this._add(buttonsLayout);\n },\n\n __addNonAutoUpdatableSection: function() {\n const node = this.getNode();\n\n let instructionsMsg = null;\n if (node.isRetired()) {\n instructionsMsg = osparc.service.Utils.RETIRED_DYNAMIC_INSTRUCTIONS;\n } else if (node.isUpdatable() || node.isDeprecated()) {\n instructionsMsg = osparc.service.Utils.DEPRECATED_DYNAMIC_INSTRUCTIONS;\n }\n if (instructionsMsg) {\n const instructionsLabel = new qx.ui.basic.Label(instructionsMsg).set({\n rich: true\n });\n this._add(instructionsLabel);\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.node.BootOptionsView\", {\n extend: osparc.node.ServiceOptionsView,\n\n members: {\n _applyNode: function(node) {\n if (node.hasBootModes()) {\n this.__populateLayout();\n }\n\n this.base(arguments, node);\n },\n\n __populateLayout: function() {\n this._removeAll();\n\n this._add(new qx.ui.basic.Label(this.tr(\"Boot Options\")).set({\n font: \"text-14\"\n }));\n\n const node = this.getNode();\n\n const buttonsLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(10));\n\n const nodeMetadata = node.getMetaData();\n const workbenchData = node.getWorkbench().serialize();\n const nodeId = node.getNodeId();\n const bootModeSB = osparc.data.model.Node.getBootModesSelectBox(nodeMetadata, workbenchData, nodeId);\n node.getStatus().bind(\"interactive\", bootModeSB, \"enabled\", {\n converter: interactive => interactive === \"idle\"\n });\n bootModeSB.addListener(\"changeSelection\", e => {\n const selection = e.getData();\n if (selection.length) {\n buttonsLayout.setEnabled(false);\n const newBootModeId = selection[0].bootModeId;\n node.setBootOptions({\n \"boot_mode\": newBootModeId\n });\n node.fireEvent(\"updateStudyDocument\");\n setTimeout(() => {\n buttonsLayout.setEnabled(true);\n node.requestStartNode();\n }, osparc.desktop.StudyEditor.AUTO_SAVE_INTERVAL);\n }\n }, this);\n buttonsLayout.add(bootModeSB);\n\n this._add(buttonsLayout);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.node.UpdateResourceLimitsView\", {\n extend: osparc.node.ServiceOptionsView,\n\n members: {\n __resourceFields: null,\n __saveBtn: null,\n\n _applyNode: function(node) {\n this.__populateLayout();\n\n this.base(arguments, node);\n },\n\n __populateLayout: function() {\n this.__resourceFields = [];\n this._removeAll();\n\n this._add(new qx.ui.basic.Label(this.tr(\"Resource Limits\")).set({\n font: \"text-14\"\n }));\n\n const resourcesLayout = osparc.info.ServiceUtils.createResourcesInfo();\n const title = resourcesLayout.getChildren()[0];\n title.exclude();\n resourcesLayout.exclude();\n this._add(resourcesLayout);\n\n const node = this.getNode();\n const params = {\n url: {\n studyId: node.getStudy().getUuid(),\n nodeId: node.getNodeId()\n }\n };\n osparc.data.Resources.get(\"nodesInStudyResources\", params)\n .then(serviceResources => {\n resourcesLayout.show();\n const gridLayout = resourcesLayout.getChildren()[1];\n let row = 1;\n Object.entries(serviceResources).forEach(([imageName, imageInfo]) => {\n gridLayout.add(new qx.ui.basic.Label(imageName).set({\n font: \"text-13\"\n }), {\n row,\n column: 0\n });\n if (\"resources\" in imageInfo) {\n const resourcesInfo = imageInfo[\"resources\"];\n Object.keys(resourcesInfo).forEach(resourceKey => {\n if (resourceKey === \"VRAM\") {\n return;\n }\n let column = 1;\n const resourceInfo = resourcesInfo[resourceKey];\n let label = resourceKey;\n if (resourceKey === \"RAM\") {\n label += \" (GiB)\";\n }\n const resourceKeyTitle = new qx.ui.basic.Label(label).set({\n font: \"text-13\"\n });\n gridLayout.add(resourceKeyTitle, {\n row,\n column\n });\n column++;\n Object.keys(osparc.info.ServiceUtils.RESOURCES_INFO).forEach(resourceInfoKey => {\n if (resourceInfoKey in resourceInfo) {\n let value = resourceInfo[resourceInfoKey];\n if (resourceKey === \"RAM\") {\n value = osparc.utils.Utils.bytesToGiB(value);\n }\n const spinner = new qx.ui.form.Spinner(0, value, 512).set({\n singleStep: 1.0\n });\n const nf = new qx.util.format.NumberFormat();\n nf.setMinimumFractionDigits(2);\n nf.setMaximumFractionDigits(2);\n spinner.setNumberFormat(nf);\n\n spinner.imageName = imageName;\n spinner.resourceKey = resourceKey;\n this.__resourceFields.push(spinner);\n gridLayout.add(spinner, {\n row,\n column\n });\n column++;\n }\n });\n row++;\n });\n }\n });\n\n const buttonsLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n this._add(buttonsLayout);\n\n const resetBtn = new qx.ui.form.Button(this.tr(\"Reset\"));\n resetBtn.addListener(\"execute\", () => this.__populateLayout(), this);\n buttonsLayout.add(resetBtn);\n\n const saveBtn = this.__saveBtn = new osparc.ui.form.FetchButton(this.tr(\"Save\")).set({\n center: true,\n appearance: \"strong-button\"\n });\n saveBtn.addListener(\"execute\", () => this.__saveValues(serviceResources), this);\n buttonsLayout.add(saveBtn);\n })\n .catch(err => console.error(err));\n\n return resourcesLayout;\n },\n\n __saveValues: function(serviceResources) {\n this.__saveBtn.setFetching(true);\n const updatedResources = osparc.utils.Utils.deepCloneObject(serviceResources);\n this.__resourceFields.forEach(resourceField => {\n if (\n resourceField.imageName in updatedResources &&\n resourceField.resourceKey in updatedResources[resourceField.imageName].resources\n ) {\n let value = resourceField.getValue();\n if (resourceField.resourceKey === \"RAM\") {\n value = osparc.utils.Utils.giBToBytes(value);\n }\n updatedResources[resourceField.imageName].resources[resourceField.resourceKey][\"limit\"] = value;\n }\n });\n const node = this.getNode();\n const params = {\n url: {\n studyId: node.getStudy().getUuid(),\n nodeId: node.getNodeId()\n },\n data: updatedResources\n };\n osparc.data.Resources.fetch(\"nodesInStudyResources\", \"put\", params)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Limits successfully updated\"));\n })\n .catch(err => {\n console.error(err);\n const msg = err.message || this.tr(\"Something went wrong updating the limits\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n })\n .finally(() => {\n this.__saveBtn.setFetching(false);\n this.__populateLayout();\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.node.StartStopButton\", {\n extend: qx.ui.core.Widget,\n\n construct: function(node) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.HBox(5));\n\n if (node) {\n this.setNode(node);\n }\n },\n\n properties: {\n node: {\n check: \"osparc.data.model.Node\",\n init: null,\n nullable: false,\n event: \"changeNode\",\n apply: \"__applyNode\"\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"start-button\":\n control = new qx.ui.form.Button().set({\n label: this.tr(\"Start\"),\n icon: \"@FontAwesome5Solid/play/14\",\n allowGrowX: false,\n enabled: false\n });\n control.addListener(\"execute\", () => this.fireEvent(\"startPressed\"));\n this._add(control);\n break;\n case \"stop-button\":\n control = new qx.ui.form.Button().set({\n label: this.tr(\"Stop\"),\n icon: \"@FontAwesome5Solid/stop/14\",\n allowGrowX: false,\n enabled: false\n });\n control.addListener(\"execute\", () => this.fireEvent(\"stopPressed\"));\n this._add(control);\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n __applyNode: function(node) {\n if (node && node.isDynamic()) {\n const startButton = this.getChildControl(\"start-button\");\n node.attachHandlersToStartButton(startButton);\n\n const stopButton = this.getChildControl(\"stop-button\");\n node.attachHandlersToStopButton(stopButton);\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n *\n */\n\nqx.Class.define(\"osparc.navigation.BreadcrumbNavigation\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.HBox(0).set({\n alignY: \"middle\"\n }));\n },\n\n members: {\n /**\n * @abstract\n */\n populateButtons: function(nodesIds = []) {\n throw new Error(\"Abstract method called!\");\n },\n\n /**\n * @abstract\n */\n _createBtns: function(nodeId) {\n throw new Error(\"Abstract method called!\");\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n *\n */\n\nqx.Class.define(\"osparc.navigation.BreadcrumbsSlideshow\", {\n extend: osparc.navigation.BreadcrumbNavigation,\n\n events: {\n \"nodeSelectionRequested\": \"qx.event.type.Data\"\n },\n\n members: {\n populateButtons: function(nodesIds = []) {\n const btns = [];\n const study = osparc.store.Store.getInstance().getCurrentStudy();\n const slideshow = study.getUi().getSlideshow();\n if (nodesIds.length) {\n nodesIds.forEach(nodeId => {\n if (slideshow.getPosition(nodeId) === -1) {\n return;\n }\n const btn = this.__createBtn(nodeId);\n btns.push(btn);\n });\n this.__buttonsToBreadcrumb(btns, \"separator\");\n } else {\n this._removeAll();\n const label = new qx.ui.basic.Label();\n if (study.isPipelineEmpty()) {\n label.setValue(this.tr(\"Pipeline is empty\"));\n } else {\n label.setValue(this.tr(\"There are no visible nodes, enable some by editing the App Mode\"));\n }\n this._add(label);\n }\n },\n\n __buttonsToBreadcrumb: function(btns, shape = \"separator\") {\n this._removeAll();\n for (let i=0; i {\n if (shape === \"separator\" && (!leftBtn || !rightBtn)) {\n return;\n }\n breadcrumbSplitter.setLeftWidget(leftBtn);\n if (rightBtn) {\n breadcrumbSplitter.setRightWidget(rightBtn);\n }\n };\n if (breadcrumbSplitter.getReady()) {\n addLeftRightWidgets(thisBtn, nextBtn);\n } else {\n breadcrumbSplitter.addListenerOnce(\"SvgWidgetReady\", () => {\n addLeftRightWidgets(thisBtn, nextBtn);\n }, this);\n }\n this._add(breadcrumbSplitter);\n }\n },\n\n __createBtn: function(nodeId) {\n const btn = this.__createNodeBtn(nodeId);\n const study = osparc.store.Store.getInstance().getCurrentStudy();\n const slideshow = study.getUi().getSlideshow().getData();\n const node = study.getWorkbench().getNode(nodeId);\n if (node && nodeId in slideshow) {\n const pos = slideshow[nodeId].position;\n osparc.utils.Utils.setIdToWidget(btn, \"AppMode_StepBtn_\"+(pos+1));\n node.bind(\"label\", btn, \"label\", {\n converter: val => `${pos+1}: ${val}`\n });\n\n const statusIcon = new qx.ui.basic.Image();\n if (node.isFilePicker()) {\n osparc.service.StatusUI.setupFilePickerIcon(node, statusIcon);\n } else {\n const check = node.isDynamic() ? \"interactive\" : \"output\";\n node.getStatus().bind(check, statusIcon, \"source\", {\n converter: output => osparc.service.StatusUI.getIconSource(output),\n onUpdate: (_, target) => osparc.service.StatusUI.updateCircleAnimation(target)\n });\n node.getStatus().bind(check, statusIcon, \"textColor\", {\n converter: output => osparc.service.StatusUI.getColor(output)\n }, this);\n }\n // eslint-disable-next-line no-underscore-dangle\n btn._addAt(statusIcon, 0);\n\n const statusUI = new osparc.ui.basic.NodeStatusUI(node);\n const statusLabel = statusUI.getChildControl(\"label\");\n statusLabel.bind(\"value\", btn, \"toolTipText\", {\n converter: status => `${node.getLabel()} - ${status}`\n });\n }\n return btn;\n },\n\n __createNodeBtn: function(nodeId) {\n const btn = new qx.ui.form.Button().set({\n ...osparc.navigation.NavigationBar.BUTTON_OPTIONS,\n maxWidth: 200\n });\n osparc.utils.Utils.setIdToWidget(btn, \"appModeButton_\"+nodeId);\n btn.addListener(\"execute\", () => this.fireDataEvent(\"nodeSelectionRequested\", nodeId));\n btn.setAppearance(\"fab-button\");\n const updateCurrentNodeId = currentNodeId => {\n if (nodeId === currentNodeId) {\n btn.setAppearance(\"form-button\");\n } else {\n btn.setAppearance(\"fab-button\");\n }\n btn.setFont(\"text-14\");\n };\n const study = osparc.store.Store.getInstance().getCurrentStudy();\n updateCurrentNodeId(study.getUi().getCurrentNodeId());\n study.getUi().addListener(\"changeCurrentNodeId\", e => updateCurrentNodeId(e.getData()));\n\n return btn;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n *\n */\n\nqx.Class.define(\"osparc.navigation.BreadcrumbsSlideshowEdit\", {\n extend: osparc.navigation.BreadcrumbNavigation,\n\n events: {\n \"addServiceBetween\": \"qx.event.type.Data\",\n \"removeNode\": \"qx.event.type.Data\",\n \"showNode\": \"qx.event.type.Data\",\n \"hideNode\": \"qx.event.type.Data\"\n },\n\n members: {\n populateButtons: function(study) {\n this._removeAll();\n\n // for now, only linear pipelines\n if (!study.getWorkbench().isPipelineLinear()) {\n return;\n }\n const nodeIds = study.getWorkbench().getPipelineLinearSorted();\n if (nodeIds === null) {\n return;\n }\n\n let newServiceBtn = this.__createNewServiceBtn();\n newServiceBtn.leftNodeId = null;\n this._add(newServiceBtn);\n\n const slideshow = study.getUi().getSlideshow();\n let currentPos = 0;\n nodeIds.forEach((nodeId, i) => {\n if (slideshow.getPosition(nodeId) === -1) {\n return;\n }\n newServiceBtn.rightNodeId = nodeId;\n if (!study.getWorkbench().getNode(nodeId).hasInputs()) {\n newServiceBtn.exclude();\n }\n\n const btn = new qx.ui.toolbar.MenuButton().set({\n paddingLeft: 5,\n paddingRight: 5,\n marginLeft: 1,\n marginRight: 1\n });\n this._add(btn);\n\n const node = study.getWorkbench().getNode(nodeId);\n const nodeLabel = node.getLabel();\n const skipNode = slideshow.getPosition(nodeId) === -1;\n if (skipNode) {\n btn.set({\n label: nodeLabel,\n icon: \"@FontAwesome5Solid/eye-slash/14\"\n });\n } else {\n btn.set({\n label: currentPos+1 + \": \" + nodeLabel\n });\n }\n btn.nodeId = nodeId;\n btn.skipNode = skipNode;\n this.__addEditNodeMenu(btn, currentPos);\n\n newServiceBtn = this.__createNewServiceBtn();\n newServiceBtn.leftNodeId = nodeId;\n newServiceBtn.rightNodeId = null;\n // for now, plus buttons only at the beginning and end\n if ((i === nodeIds.length-1) && study.getWorkbench().getNode(nodeId).hasOutputs()) {\n this._add(newServiceBtn);\n }\n\n if (!skipNode) {\n currentPos++;\n }\n });\n },\n\n __createNewServiceBtn: function() {\n const newServiceBtn = new qx.ui.form.Button().set({\n ...osparc.navigation.NavigationBar.BUTTON_OPTIONS,\n icon: \"@FontAwesome5Solid/plus-circle/24\",\n backgroundColor: \"background-main-4\",\n textColor: \"ready-green\"\n });\n newServiceBtn.getContentElement()\n .setStyles({\n \"border-radius\": \"24px\"\n });\n newServiceBtn.addListener(\"execute\", () => {\n this.fireDataEvent(\"addServiceBetween\", {\n leftNodeId: newServiceBtn.leftNodeId,\n rightNodeId: newServiceBtn.rightNodeId\n });\n });\n return newServiceBtn;\n },\n\n __addEditNodeMenu: function(btn, currentPos) {\n const menu = new qx.ui.menu.Menu();\n\n if (btn.skipNode) {\n const showButton = new qx.ui.menu.Button(\"Show\", \"@FontAwesome5Solid/eye/14\");\n showButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"showNode\", {\n nodeId: btn.nodeId,\n desiredPos: currentPos\n });\n });\n menu.add(showButton);\n } else {\n const hideButton = new qx.ui.menu.Button(\"Hide\", \"@FontAwesome5Solid/eye-slash/14\");\n hideButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"hideNode\", btn.nodeId);\n });\n menu.add(hideButton);\n }\n\n const deleteButton = new qx.ui.menu.Button(\"Delete\", \"@FontAwesome5Solid/trash/14\").set({\n appearance: \"danger-button\"\n });\n deleteButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"removeNode\", btn.nodeId);\n });\n menu.add(deleteButton);\n\n btn.setMenu(menu);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n * Julian Querido (jsaq007)\n\n************************************************************************ */\n\n/**\n * The progress sequence of a dynamic service is as follows:\n *\n * [CLUSTER_UP_SCALING]\n * [SIDECARS_PULLING]\n * [SERVICE_OUTPUTS_PULLING, SERVICE_STATE_PULLING, SERVICE_IMAGES_PULLING] (notice the parallelism here)\n * [SERVICE_CONTAINERS_STARTING]\n * [SERVICE_INPUTS_PULLING] (when this happens, the frontend has already loaded the service and is displaying it to the user) I would still keep it as is, when we decide to make inputs pulling part of the boot sequence this will be helpful.\n *\n * This class provides different widgets that render the progress status\n *\n */\n\n\nqx.Class.define(\"osparc.data.model.NodeProgressSequence\", {\n extend: qx.core.Object,\n\n construct: function() {\n this.base(arguments);\n\n this.__initLayout();\n },\n\n properties: {\n overallProgress: {\n check: \"Number\",\n init: 0,\n nullable: false,\n apply: \"__applyOverallProgress\"\n },\n\n clusterUpScaling: {\n check: \"Object\",\n init: {\n progressLabel: qx.locale.Manager.tr(\"Waiting ...\"),\n value: 0\n },\n nullable: false,\n apply: \"__applyClusterUpScaling\"\n },\n\n sidecarPulling: {\n check: \"Object\",\n init: {\n progressLabel: qx.locale.Manager.tr(\"Waiting ...\"),\n value: 0\n },\n nullable: false,\n apply: \"__applySidecarPulling\"\n },\n\n outputsPulling: {\n check: \"Object\",\n init: {\n progressLabel: qx.locale.Manager.tr(\"Waiting ...\"),\n value: 0\n },\n nullable: false,\n apply: \"__applyOutputsPulling\"\n },\n\n statePulling: {\n check: \"Object\",\n init: {\n progressLabel: qx.locale.Manager.tr(\"Waiting ...\"),\n value: 0\n },\n nullable: false,\n apply: \"__applyStatePulling\"\n },\n\n imagesPulling: {\n check: \"Object\",\n init: {\n progressLabel: qx.locale.Manager.tr(\"Waiting ...\"),\n value: 0\n },\n nullable: false,\n apply: \"__applyImagesPulling\"\n },\n\n startingSoftware: {\n check: \"Object\",\n init: {\n progressLabel: qx.locale.Manager.tr(\"Waiting ...\"),\n value: 0\n },\n nullable: false,\n apply: \"__applyStartingSoftware\"\n },\n\n inputsPulling: {\n check: \"Object\",\n init: {\n progressLabel: qx.locale.Manager.tr(\"Waiting ...\"),\n value: 0\n },\n nullable: false,\n apply: \"__applyInputsPulling\"\n }\n },\n\n statics: {\n DISCLAIMER_TIME: 50000,\n\n createDisclaimerText: function() {\n const disclaimerText = new qx.ui.basic.Atom().set({\n label: qx.locale.Manager.tr(\"Please be patient, this process can take a few minutes ...\"),\n padding: [20, 10],\n gap: 15,\n icon: \"@FontAwesome5Solid/exclamation-triangle/16\",\n backgroundColor: \"disclaimer-bg\",\n textColor: \"info\",\n alignX: \"center\"\n });\n disclaimerText.getChildControl(\"icon\").set({\n textColor: \"info\"\n });\n return disclaimerText;\n },\n },\n\n members: {\n __mainLoadingPage: null,\n __overallProgressBar: null,\n __clusterUpScalingLayout: null,\n __pullingSidecarLayout: null,\n __pullingOutputsLayout: null,\n __pullingStateLayout: null,\n __pullingImagesLayout: null,\n __startingSoftwareLayout: null,\n __pullingInputsLayout: null,\n __disclaimerTimer: null,\n __disclaimerText: null,\n\n getDefaultStartValues: function() {\n return {\n progressLabel: qx.locale.Manager.tr(\"Waiting ...\"),\n value: 0\n }\n },\n\n getDefaultEndValues: function() {\n return {\n progressLabel: \"100%\",\n value: 1\n }\n },\n\n getWidgetForLoadingPage: function() {\n return this.__mainLoadingPage;\n },\n\n resetSequence: function() {\n if (this.__disclaimerTimer) {\n clearTimeout(this.__disclaimerTimer);\n }\n const defaultVals = this.getDefaultStartValues();\n this.setOverallProgress(0);\n this.setClusterUpScaling(defaultVals);\n this.setSidecarPulling(defaultVals);\n this.setOutputsPulling(defaultVals);\n this.setStatePulling(defaultVals);\n this.setImagesPulling(defaultVals);\n this.setStartingSoftware(defaultVals);\n this.setInputsPulling(defaultVals);\n },\n\n getProgress: function(report) {\n if (report.unit) {\n const attempt = (\"attempt\" in report && report[\"attempt\"] > 1) ? `(attempt ${report[\"attempt\"]}) ` : \"\";\n const current_value = osparc.utils.Utils.bytesToSize(report[\"actual_value\"], 1, false);\n const total_value = osparc.utils.Utils.bytesToSize(report[\"total\"], 1, false)\n return {\n progressLabel: `${attempt}${current_value} / ${total_value}`,\n value: report[\"actual_value\"] / report[\"total\"]\n }\n }\n const percentage = parseFloat((report[\"actual_value\"] / report[\"total\"] * 100).toFixed(2))\n return {\n progressLabel: `${percentage}%`,\n value: report[\"actual_value\"] / report[\"total\"]\n }\n },\n\n addProgressMessage: function(progressType, progressReport) {\n const progress = this.getProgress(progressReport);\n switch (progressType) {\n case \"CLUSTER_UP_SCALING\":\n this.setClusterUpScaling(progress);\n break;\n case \"SIDECARS_PULLING\":\n this.setSidecarPulling(progress);\n break;\n case \"SERVICE_OUTPUTS_PULLING\":\n this.setOutputsPulling(progress);\n break;\n case \"SERVICE_STATE_PULLING\":\n this.setStatePulling(progress);\n break;\n case \"SERVICE_IMAGES_PULLING\":\n this.setImagesPulling(progress);\n break;\n case \"SERVICE_CONTAINERS_STARTING\":\n this.setStartingSoftware(progress);\n break;\n case \"SERVICE_INPUTS_PULLING\":\n this.setInputsPulling(progress);\n break;\n }\n },\n\n __initLayout: function() {\n this.__mainLoadingPage = new qx.ui.container.Composite(new qx.ui.layout.VBox(8));\n\n const sequenceLoadingPage = new osparc.widget.ProgressSequence(qx.locale.Manager.tr(\"LOADING ...\"));\n const nTasks = 7;\n this.__overallProgressBar = sequenceLoadingPage.addOverallProgressBar(nTasks);\n this.__clusterUpScalingLayout = sequenceLoadingPage.addNewTask(qx.locale.Manager.tr(\"Provisioning resources ...\"));\n this.__pullingSidecarLayout = sequenceLoadingPage.addNewTask(qx.locale.Manager.tr(\"Setting up system software ...\"));\n this.__pullingOutputsLayout = sequenceLoadingPage.addNewTask(qx.locale.Manager.tr(\"Retrieving your output data ...\"));\n this.__pullingStateLayout = sequenceLoadingPage.addNewTask(qx.locale.Manager.tr(\"Retrieving your work ...\"));\n this.__pullingImagesLayout = sequenceLoadingPage.addNewTask(qx.locale.Manager.tr(\"Installing services ...\"));\n this.__startingSoftwareLayout = sequenceLoadingPage.addNewTask(qx.locale.Manager.tr(\"Starting services ...\"));\n this.__pullingInputsLayout = sequenceLoadingPage.addNewTask(qx.locale.Manager.tr(\"Retrieving your input data ...\"));\n this.__mainLoadingPage.addAt(sequenceLoadingPage, 0, {\n flex: 1\n });\n\n const disclaimerText = this.__disclaimerText = this.self().createDisclaimerText();\n disclaimerText.exclude();\n this.__mainLoadingPage.addAt(this.__disclaimerText, 1, {\n flex: 1\n });\n },\n\n __computeOverallProgress: function() {\n const overallProgress = this.getClusterUpScaling().value +\n this.getSidecarPulling().value +\n this.getOutputsPulling().value +\n this.getStatePulling().value +\n this.getImagesPulling().value +\n this.getInputsPulling().value;\n this.setOverallProgress(overallProgress)\n },\n\n __applyOverallProgress: function(value) {\n if (value > 0 && value < 6) {\n this.__disclaimerTimer = setTimeout(() => this.__disclaimerText.show(), this.self().DISCLAIMER_TIME);\n } else {\n this.__disclaimerText.exclude();\n }\n\n osparc.widget.ProgressSequence.progressUpdate(this.__overallProgressBar, value);\n },\n\n __applyClusterUpScaling: function(value) {\n osparc.widget.ProgressSequence.updateTaskProgress(this.__clusterUpScalingLayout, value);\n\n this.__computeOverallProgress();\n },\n\n __applySidecarPulling: function(value) {\n if (value.value > 0) {\n const defaultEndVals = this.getDefaultEndValues();\n this.setClusterUpScaling(defaultEndVals);\n }\n osparc.widget.ProgressSequence.updateTaskProgress(this.__pullingSidecarLayout, value);\n\n this.__computeOverallProgress();\n },\n\n __applyOutputsPulling: function(value) {\n if (value.value > 0) {\n const defaultEndVals = this.getDefaultEndValues();\n this.setSidecarPulling(defaultEndVals);\n }\n osparc.widget.ProgressSequence.updateTaskProgress(this.__pullingOutputsLayout, value);\n\n this.__computeOverallProgress();\n },\n\n __applyStatePulling: function(value) {\n if (value.value > 0) {\n const defaultEndVals = this.getDefaultEndValues();\n this.setSidecarPulling(defaultEndVals);\n }\n osparc.widget.ProgressSequence.updateTaskProgress(this.__pullingStateLayout, value);\n\n this.__computeOverallProgress();\n },\n\n __applyImagesPulling: function(value) {\n if (value.value > 0) {\n const defaultEndVals = this.getDefaultEndValues();\n this.setSidecarPulling(defaultEndVals);\n }\n osparc.widget.ProgressSequence.updateTaskProgress(this.__pullingImagesLayout, value);\n\n this.__computeOverallProgress();\n },\n\n __applyStartingSoftware: function(value) {\n if (value.value > 0) {\n const defaultEndVals = this.getDefaultEndValues();\n this.setSidecarPulling(defaultEndVals);\n }\n osparc.widget.ProgressSequence.updateTaskProgress(this.__startingSoftwareLayout, value);\n\n this.__computeOverallProgress();\n },\n\n __applyInputsPulling: function(value) {\n if (value.value > 0) {\n const defaultEndVals = this.getDefaultEndValues();\n this.setSidecarPulling(defaultEndVals);\n }\n osparc.widget.ProgressSequence.updateTaskProgress(this.__pullingInputsLayout, value);\n\n this.__computeOverallProgress();\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2019 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\nqx.Class.define(\"osparc.ui.basic.NodeStatusUI\", {\n extend: qx.ui.basic.Atom,\n\n construct: function(node) {\n this.base(arguments, this.tr(\"Idle\"), \"@FontAwesome5Solid/clock/12\");\n\n this.exclude();\n if (node) {\n this.setNode(node);\n }\n },\n\n properties: {\n appearance: {\n init: \"chip\",\n refine: true\n },\n\n node: {\n check: \"osparc.data.model.Node\",\n apply: \"__applyNode\",\n nullable: false,\n init: null\n }\n },\n\n members: {\n __applyNode: function(node) {\n this.show();\n if (node.isFilePicker()) {\n this.__setupFilePicker();\n } else if (node.isComputational()) {\n this.__setupComputational();\n } else if (node.isDynamic()) {\n this.__setupInteractive();\n } else {\n this.exclude();\n }\n node.bind(\"errors\", this, \"toolTipText\", {\n converter: errors => {\n let errorsText = \"\";\n if (errors) {\n errors.forEach(error => errorsText += error[\"msg\"] + \"
\");\n }\n return errorsText;\n }\n });\n },\n\n __setupComputational: function() {\n this.getNode().getStatus().bind(\"running\", this.getChildControl(\"label\"), \"value\", {\n converter: state => {\n if (state) {\n this.show();\n const labelValue = osparc.service.StatusUI.getLabelValue(state);\n return qx.lang.String.firstUp(labelValue.toLowerCase());\n }\n this.exclude();\n return null;\n },\n onUpdate: (source, target) => {\n const state = source.getRunning();\n target.setTextColor(osparc.service.StatusUI.getColor(state));\n }\n });\n\n this.getNode().getStatus().bind(\"running\", this.getChildControl(\"icon\"), \"source\", {\n converter: state => osparc.service.StatusUI.getIconSource(state),\n onUpdate: (source, target) => {\n target.show();\n const state = source.getRunning();\n switch (state) {\n case \"SUCCESS\":\n case \"FAILED\":\n case \"ABORTED\":\n osparc.utils.Utils.removeClass(this.getChildControl(\"icon\").getContentElement(), \"rotate\");\n target.setTextColor(osparc.service.StatusUI.getColor(state));\n return;\n case \"PUBLISHED\":\n case \"PENDING\":\n case \"WAITING_FOR_RESOURCES\":\n case \"WAITING_FOR_CLUSTER\":\n case \"STARTED\":\n case \"RETRY\":\n osparc.utils.Utils.addClass(this.getChildControl(\"icon\").getContentElement(), \"rotate\");\n target.setTextColor(osparc.service.StatusUI.getColor(state));\n return;\n case \"UNKNOWN\":\n case \"NOT_STARTED\":\n default:\n target.exclude();\n return;\n }\n }\n });\n },\n\n __setupInteractive: function() {\n this.getNode().getStatus().bind(\"interactive\", this.getChildControl(\"label\"), \"value\", {\n converter: state => osparc.service.StatusUI.getLabelValue(state),\n onUpdate: (source, target) => {\n const state = source.getInteractive();\n target.setTextColor(osparc.service.StatusUI.getColor(state));\n }\n });\n\n this.getNode().getStatus().bind(\"interactive\", this.getChildControl(\"icon\"), \"source\", {\n converter: state => osparc.service.StatusUI.getIconSource(state),\n onUpdate: (source, target) => {\n osparc.service.StatusUI.updateCircleAnimation(this.getChildControl(\"icon\"));\n const props = qx.util.PropertyUtil.getProperties(osparc.data.model.NodeStatus);\n const state = source.getInteractive();\n if (props[\"interactive\"][\"check\"].includes(state)) {\n target.setTextColor(osparc.service.StatusUI.getColor(state));\n } else {\n target.resetTextColor();\n }\n }\n });\n },\n\n __setupFilePicker: function() {\n osparc.service.StatusUI.setupFilePickerIcon(this.getNode(), this.getChildControl(\"icon\"));\n\n this.getNode().bind(\"outputs\", this.getChildControl(\"label\"), \"value\", {\n converter: outputs => {\n if (osparc.file.FilePicker.getOutput(outputs)) {\n let outputLabel = osparc.file.FilePicker.getOutputLabel(outputs);\n if (outputLabel === \"\" && osparc.file.FilePicker.isOutputDownloadLink(outputs)) {\n outputLabel = osparc.file.FilePicker.extractLabelFromLink(outputs);\n }\n return outputLabel;\n }\n return this.tr(\"Select a file\");\n }\n });\n\n this.getNode().getStatus().addListener(\"changeProgress\", e => {\n const progress = e.getData();\n if (progress > 0 && progress < 100) {\n this.getChildControl(\"label\").setValue(this.tr(\"Uploading...\"));\n }\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.widget.PreparingInputs\", {\n extend: qx.ui.core.Widget,\n\n construct: function(study) {\n this.base(arguments);\n\n osparc.utils.Utils.setIdToWidget(this, \"preparingInputsView\");\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n const text = this.tr(\"In order to move to this step, we need to prepare some inputs for you.
Here you can check the logs of the progress:\");\n const title = new qx.ui.basic.Label(text).set({\n font: \"text-14\",\n rich: true\n });\n this._add(title);\n\n const startStopButtons = new qx.ui.container.Composite(new qx.ui.layout.HBox(5)).set({\n marginLeft: 50\n });\n const runAllButton = this.__getRunAllButton();\n startStopButtons.add(runAllButton);\n const stopButton = this.__getStopButton();\n startStopButtons.add(stopButton);\n this._add(startStopButtons);\n\n const list = this.__monitoredNodesList = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n this._add(list);\n this.setMonitoredNodes([]);\n\n const loggerLayout = this.__loggerLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox());\n this._add(loggerLayout, {\n flex: 1\n });\n\n study.addListener(\"changePipelineRunning\", () => this.__updateRunButtonsStatus(study));\n this.__updateRunButtonsStatus(study);\n },\n\n properties: {\n monitoredNodes: {\n check: \"Array\",\n init: null,\n apply: \"__applyMonitoredNodes\",\n event: \"changeMonitoredNodes\"\n }\n },\n\n events: {\n \"changePreparingNodes\": \"qx.event.type.Data\",\n \"startPartialPipeline\": \"qx.event.type.Data\",\n \"stopPipeline\": \"qx.event.type.Event\"\n },\n\n members: {\n __monitoredNodesList: null,\n __runAllButton: null,\n __stopButton: null,\n\n __getRunAllButton: function() {\n const runAllButton = this.__runAllButton = new osparc.ui.form.FetchButton(this.tr(\"Run all\")).set({\n minWidth: 80,\n maxWidth: 80,\n alignX: \"center\"\n });\n runAllButton.addListener(\"execute\", () => {\n const monitoredNodes = this.getMonitoredNodes();\n if (monitoredNodes && monitoredNodes.length) {\n const moniteoredNodesIds = monitoredNodes.map(monitoredNode => monitoredNode.getNodeId());\n this.fireDataEvent(\"startPartialPipeline\", moniteoredNodesIds);\n }\n });\n return runAllButton;\n },\n\n __getStopButton: function() {\n const stopButton = this.__stopButton = new osparc.ui.form.FetchButton(this.tr(\"Stop\")).set({\n minWidth: 80,\n maxWidth: 80,\n alignX: \"center\"\n });\n stopButton.addListener(\"execute\", () => this.fireEvent(\"stopPipeline\"), this);\n return stopButton;\n },\n\n __updateRunButtonsStatus: function(study) {\n const isPipelineRunning = study.isPipelineRunning();\n this.__runAllButton.setFetching(isPipelineRunning);\n this.__stopButton.setEnabled(isPipelineRunning);\n },\n\n __applyMonitoredNodes: function(monitoredNodes) {\n monitoredNodes.forEach(monitoredNode => {\n [\n \"changeRunning\",\n \"changeOutput\"\n ].forEach(changeEvent => {\n monitoredNode.getStatus().addListener(changeEvent, () => this.__updatePreparingNodes());\n });\n });\n this.__updateMonitoredNodesList();\n this.__updatePreparingNodes();\n },\n\n __updateMonitoredNodesList: function() {\n this.__monitoredNodesList.removeAll();\n const monitoredNodes = this.getMonitoredNodes();\n if (monitoredNodes && monitoredNodes.length) {\n const group = new qx.ui.form.RadioGroup();\n group.addListener(\"changeSelection\", e => {\n const selectedButton = e.getData()[0];\n this.__loggerLayout.removeAll();\n const nodeLogger = selectedButton.node.getLogger();\n nodeLogger.getChildControl(\"pin-node\").exclude();\n this.__loggerLayout.add(nodeLogger);\n }, this);\n monitoredNodes.forEach(node => {\n const nodeLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5).set({\n alignY: \"middle\"\n }));\n\n const showLoggerBtn = new qx.ui.form.ToggleButton(this.tr(\"Logs\"));\n showLoggerBtn.node = node;\n nodeLayout.add(showLoggerBtn);\n group.add(showLoggerBtn);\n if (group.getSelection().length === 0) {\n group.setSelection([showLoggerBtn]);\n }\n\n const rerunBtn = new osparc.ui.form.FetchButton(this.tr(\"Re-run\")).set({\n minWidth: 80,\n maxWidth: 80,\n alignX: \"center\"\n });\n rerunBtn.addListener(\"execute\", () => this.fireDataEvent(\"startPartialPipeline\", [node.getNodeId()]), this);\n nodeLayout.add(rerunBtn);\n\n const checkRerunStatus = () => {\n const nodeRunningStatus = node.getStatus().getRunning();\n const fetching = [\n \"PUBLISHED\",\n \"PENDING\",\n \"WAITING_FOR_RESOURCES\",\n \"WAITING_FOR_CLUSTER\",\n \"STARTED\"\n ].includes(nodeRunningStatus);\n rerunBtn.setFetching(fetching);\n const rerunnable = [\n \"FAILED\",\n \"ABORTED\",\n \"SUCCESS\"\n ].includes(nodeRunningStatus);\n const isPipelineRunning = node.getStudy().isPipelineRunning();\n rerunBtn.setEnabled(rerunnable && !(isPipelineRunning === true));\n };\n node.getStatus().addListener(\"changeRunning\", () => checkRerunStatus());\n node.getStudy().addListener(\"changePipelineRunning\", () => checkRerunStatus());\n checkRerunStatus();\n\n const statusUI = new osparc.ui.basic.NodeStatusUI(node);\n nodeLayout.add(statusUI);\n nodeLayout.add(new qx.ui.basic.Label(node.getLabel()), {\n flex: 1\n });\n this.__monitoredNodesList.add(nodeLayout);\n });\n }\n },\n\n getPreparingNodes: function() {\n const preparingNodes = [];\n const monitoredNodes = this.getMonitoredNodes();\n monitoredNodes.forEach(monitoredNode => {\n if (!osparc.data.model.NodeStatus.isCompNodeReady(monitoredNode)) {\n preparingNodes.push(monitoredNode);\n }\n });\n return preparingNodes;\n },\n\n __updatePreparingNodes: function() {\n this.fireDataEvent(\"changePreparingNodes\", this.getPreparingNodes().length);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\n/**\n * Widget that contains the service filters.\n */\nqx.Class.define(\"osparc.filter.group.ServiceFilterGroup\", {\n extend: qx.ui.core.Widget,\n\n /**\n * Constructor takes the desired filterGroupId for the filters group.\n * @param {String} filterGroupId Group id of the filter\n */\n construct: function(filterGroupId) {\n this.base(arguments);\n this._setLayout(new qx.ui.layout.HBox(10));\n this.__filterGroupId = filterGroupId;\n const textFilter = this.__textFilter = new osparc.filter.TextFilter(\"text\", filterGroupId);\n osparc.utils.Utils.setIdToWidget(textFilter, \"serviceFiltersTextFld\");\n const tagsFilter = this.__tagsFilter = new osparc.filter.NodeTypeFilter(\"tags\", filterGroupId);\n this._add(textFilter);\n this._add(tagsFilter);\n },\n\n members: {\n __textFilter: null,\n __tagsFilter: null,\n __filterGroupId: null,\n\n /**\n * Resets the text and active tags.\n */\n reset: function() {\n this.__textFilter.reset();\n this.__tagsFilter.reset();\n },\n\n /**\n * Programmatically triggers filtering again.\n */\n dispatch: function() {\n osparc.filter.UIFilterController.dispatch(this.__filterGroupId);\n },\n\n /**\n * Returns the text filter widget.\n */\n getTextFilter: function() {\n return this.__textFilter;\n },\n\n getTagsFilter: function() {\n return this.__tagsFilter;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\n/**\n * This is a view to display the available services in a flowing fashion. Creates a ServiceButtonGrid button\n * for every service in the model and subscribes it to the filter group.\n */\nqx.Class.define(\"osparc.service.ServiceList\", {\n extend: qx.ui.core.Widget,\n\n /**\n * If the optional parameter is given, the elements will be subscribed to the filter group of the given id.\n *\n * @param {String} [filterGroupId] Id of the filter group the ServiceButtonGrid buttons will be subscribed to.\n */\n construct: function(filterGroupId) {\n this.base(arguments);\n this._setLayout(new qx.ui.layout.VBox(5));\n if (filterGroupId) {\n this.__filterGroup = filterGroupId;\n }\n },\n\n events: {\n \"changeSelected\": \"qx.event.type.Data\",\n \"serviceAdd\": \"qx.event.type.Data\"\n },\n\n properties: {\n appearance: {\n refine: true,\n init: \"service-browser\"\n },\n model: {\n nullable: true,\n check: \"qx.data.Array\",\n apply: \"_applyModel\"\n }\n },\n\n members: {\n __filterGroup: null,\n\n _applyModel: function(model) {\n this._removeAll();\n\n this.__serviceListItem = [];\n model.toArray().forEach(service => {\n const item = new osparc.service.ServiceListItem(service);\n if (this.__filterGroup !== null) {\n item.subscribeToFilterGroup(this.__filterGroup);\n }\n this._add(item);\n item.addListener(\"tap\", () => this.__setSelected(item));\n item.addListener(\"dbltap\", () => this.fireDataEvent(\"serviceAdd\", item.getService()), this);\n item.addListener(\"keypress\", e => {\n if (e.getKeyIdentifier() === \"Enter\") {\n this.fireDataEvent(\"serviceAdd\", item.getService());\n }\n }, this);\n });\n },\n\n /**\n * Public function to get the currently selected service.\n *\n * @return Returns the model of the selected service or null if selection is empty.\n */\n getSelected: function() {\n const items = this._getChildren();\n for (let i=0; i item.setSelected(item === selectedItem));\n this.fireDataEvent(\"changeSelected\", selectedItem);\n },\n\n /**\n * Function checking if the selection is empty or not\n *\n * @return True if no item is selected, false if there one or more item selected.\n */\n isSelectionEmpty: function() {\n const selecetedItems = this._getChildren().filter(item => item.getSelected());\n selecetedItems.length === 0;\n },\n\n /**\n * Function that selects the first visible button.\n */\n selectFirstVisible: function() {\n const items = this._getChildren();\n for (let i=0; i\n * let svgWidget = new osparc.workbench.SvgWidget(\"SvgWidget_(Purpose)\");\n * this.getRoot().add(svgWidget);\n * \n */\n\nqx.Class.define(\"osparc.workbench.SvgWidget\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base();\n this.addListenerOnce(\"appear\", () => {\n const el = this.getContentElement().getDomElement();\n const svgWrapper = osparc.wrapper.Svg.getInstance();\n svgWrapper.init()\n .then(() => {\n if (this.__canvas === null) {\n this.__canvas = svgWrapper.createEmptyCanvas(el);\n this.setReady(true);\n this.fireDataEvent(\"SvgWidgetReady\", true);\n }\n }, this);\n });\n },\n\n properties: {\n ready: {\n check: \"Boolean\",\n init: false\n }\n },\n\n events: {\n \"SvgWidgetReady\": \"qx.event.type.Data\"\n },\n\n statics: {\n getCurveControls: function(x1, y1, x2, y2, offset = 100) {\n return [{\n x: x1,\n y: y1\n }, {\n x: x1+offset,\n y: y1\n }, {\n x: x2-offset,\n y: y2\n }, {\n x: x2,\n y: y2\n }];\n },\n\n updateCurve: function(curve, x1, y1, x2, y2) {\n const controls = osparc.workbench.SvgWidget.getCurveControls(x1, y1, x2, y2);\n osparc.wrapper.Svg.updateCurve(curve, controls);\n }\n },\n\n members: {\n __canvas: null,\n\n drawCurve: function(x1, y1, x2, y2, dashed = false) {\n const controls = this.self().getCurveControls(x1, y1, x2, y2);\n return osparc.wrapper.Svg.drawCurve(this.__canvas, controls, dashed);\n },\n\n drawAnnotationText: function(x, y, label, color, fontSize) {\n return osparc.wrapper.Svg.drawAnnotationText(this.__canvas, x, y, label, color, fontSize);\n },\n\n drawAnnotationNote: function(x, y, recipientName = \"\", text = \"\") {\n return osparc.wrapper.Svg.drawAnnotationNote(this.__canvas, x, y, recipientName, text);\n },\n\n drawAnnotationRect: function(width, height, x, y, color) {\n return osparc.wrapper.Svg.drawAnnotationRect(this.__canvas, width, height, x, y, color);\n },\n\n drawDashedRect: function(width, height, x = 0, y = 0) {\n return osparc.wrapper.Svg.drawDashedRect(this.__canvas, width, height, x, y);\n },\n\n drawFilledRect: function(width, height, x = 0, y = 0) {\n return osparc.wrapper.Svg.drawFilledRect(this.__canvas, width, height, x, y);\n },\n\n drawNodeUI: function(width = osparc.workbench.NodeUI.NODE_WIDTH, height = osparc.workbench.NodeUI.NODE_HEIGHT, radius = 4, x = 0, y = 0) {\n return osparc.wrapper.Svg.drawNodeUI(this.__canvas, width, height, radius, x, y);\n },\n\n drawBoundingBox: function(annotation) {\n const offset = 10;\n const bBox = annotation.getRepresentation().bbox();\n const width = bBox.width + 2*offset;\n const height = bBox.height + 2*offset;\n const x = bBox.x - offset;\n const y = bBox.y - offset;\n return osparc.wrapper.Svg.drawDashedRect(this.__canvas, width, height, x, y);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.editor.AnnotationEditor\", {\n extend: qx.ui.core.Widget,\n\n construct: function(annotation) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this.__form = new qx.ui.form.Form();\n this.getChildControl(\"form-renderer\");\n\n if (annotation) {\n this.setAnnotation(annotation);\n }\n },\n\n events: {\n \"addAnnotation\": \"qx.event.type.Event\",\n \"cancel\": \"qx.event.type.Event\",\n \"deleteAnnotation\": \"qx.event.type.Event\",\n },\n\n properties: {\n annotation: {\n check: \"osparc.workbench.Annotation\",\n init: null,\n nullable: true,\n apply: \"__applyAnnotation\"\n },\n\n marker: {\n check: \"Object\",\n init: null,\n nullable: true,\n apply: \"__applyMarker\"\n }\n },\n\n members: {\n __form: null,\n\n getForm: function() {\n return this.__form;\n },\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"form-renderer\":\n control = new qx.ui.form.renderer.Single(this.__form);\n this._add(control);\n break;\n case \"text-field\":\n control = new qx.ui.form.TextField();\n this.__form.add(control, \"Text\", null, \"text\");\n break;\n case \"text-area\":\n control = new qx.ui.form.TextArea().set({\n autoSize: true,\n minHeight: 70,\n maxHeight: 140\n });\n this.__form.add(control, \"Note\", null, \"note\");\n break;\n case \"color-picker\":\n control = new osparc.form.ColorPicker();\n this.__form.add(control, \"Color\", null, \"color\");\n break;\n case \"font-size\":\n control = new qx.ui.form.Spinner();\n this.__form.add(control, \"Size\", null, \"size\");\n break;\n case \"buttons-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignX: \"right\"\n }));\n this._add(control);\n break;\n case \"cancel-btn\": {\n const buttons = this.getChildControl(\"buttons-layout\");\n control = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"form-button-text\"\n });\n control.addListener(\"execute\", () => this.fireEvent(\"cancel\"), this);\n buttons.add(control);\n break;\n }\n case \"add-btn\": {\n const buttons = this.getChildControl(\"buttons-layout\");\n control = new qx.ui.form.Button(this.tr(\"Add\")).set({\n appearance: \"form-button\"\n });\n control.addListener(\"execute\", () => this.fireEvent(\"addAnnotation\"), this);\n buttons.add(control);\n break;\n }\n case \"delete-btn\": {\n const buttons = this.getChildControl(\"buttons-layout\");\n control = new qx.ui.form.Button(this.tr(\"Delete\")).set({\n appearance: \"danger-button\"\n });\n control.addListener(\"execute\", () => this.fireEvent(\"deleteAnnotation\"), this);\n buttons.add(control);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __applyAnnotation: function(annotation) {\n if (annotation === null) {\n return;\n }\n\n const attrs = annotation.getAttributes();\n if (annotation.getType() === \"text\") {\n const textField = this.getChildControl(\"text-field\").set({\n value: attrs.text\n });\n textField.addListener(\"changeValue\", e => annotation.setText(e.getData()));\n } else if (annotation.getType() === \"note\") {\n const textArea = this.getChildControl(\"text-area\").set({\n value: attrs.text\n });\n textArea.addListener(\"changeValue\", e => annotation.setText(e.getData()));\n }\n\n if ([\"text\", \"rect\"].includes(annotation.getType())) {\n const colorPicker = this.getChildControl(\"color-picker\");\n annotation.bind(\"color\", colorPicker, \"value\");\n colorPicker.bind(\"value\", annotation, \"color\");\n }\n\n if (annotation.getType() === \"text\") {\n const fontSizeField = this.getChildControl(\"font-size\").set({\n value: attrs.fontSize\n })\n fontSizeField.addListener(\"changeValue\", e => annotation.setFontSize(e.getData()));\n }\n },\n\n __applyMarker: function(marker) {\n if (marker === null) {\n return;\n }\n\n const colorPicker = this.getChildControl(\"color-picker\");\n marker.bind(\"color\", colorPicker, \"color\");\n colorPicker.bind(\"color\", marker, \"color\");\n },\n\n addDeleteButton: function() {\n this.getChildControl(\"delete-btn\");\n },\n\n addAddButtons: function() {\n this.getChildControl(\"cancel-btn\");\n this.getChildControl(\"add-btn\");\n\n // Listen to \"Enter\" key\n this.addListener(\"keypress\", keyEvent => {\n if (keyEvent.getKeyIdentifier() === \"Enter\") {\n this.fireEvent(\"addAnnotation\");\n }\n }, this);\n },\n\n makeItModal: function() {\n this.set({\n padding: 10\n });\n\n this.show();\n\n const showEditor = () => this.show();\n const hideEditor = () => this.exclude();\n const tapListener = event => {\n if (osparc.utils.Utils.isMouseOnElement(this, event)) {\n return;\n }\n hideEditor();\n this.set({\n annotation: null,\n marker: null\n });\n document.removeEventListener(\"mousedown\", tapListener);\n };\n showEditor();\n document.addEventListener(\"mousedown\", tapListener);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Object that owns the Edge data model and it's representation\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let edge = new osparc.data.model.Edge(edgeId, node1, node2);\n * let edgeRepresentation = svgWidget.drawCurve(x1, y1, x2, y2);\n * let edgeUI = new osparc.workbench.EdgeUI(edge, edgeRepresentation);\n *
\n */\n\nqx.Class.define(\"osparc.workbench.EdgeUI\", {\n extend: qx.core.Object,\n include: osparc.filter.MFilterable,\n implement: osparc.filter.IFilterable,\n\n /**\n * @param edge {osparc.data.model.Edge} Edge owning the object\n * @param representation {SVG Object} UI representation of the edge\n */\n construct: function(edge, representation) {\n this.base();\n\n this.setEdge(edge);\n this.setRepresentation(representation);\n\n const hint = new osparc.ui.hint.Hint(null, \"\");\n representation.hint = hint;\n\n if (edge.getInputNode()) {\n edge.getInputNode().getStatus().addListener(\"changeModified\", () => this.__updateEdgeState());\n }\n edge.addListener(\"changePortConnected\", () => this.__updateEdgeState());\n\n this.__updateEdgeState();\n\n this.subscribeToFilterGroup(\"workbench\");\n },\n\n properties: {\n edge: {\n check: \"osparc.data.model.Edge\",\n nullable: false\n },\n\n representation: {\n init: null\n }\n },\n\n statics: {\n getEdgeColor: function(modified) {\n let newColor = null;\n if (modified === null) {\n newColor = qx.theme.manager.Color.getInstance().resolve(\"workbench-edge-comp-active\");\n } else {\n newColor = osparc.service.StatusUI.getColor(modified ? \"failed\" : \"ready\");\n }\n const colorHex = qx.theme.manager.Color.getInstance().resolve(newColor);\n return colorHex;\n },\n\n noPortsConnectedText: function(edge) {\n return `Connection candidate.
Check the ${edge.getOutputNode().getLabel()} inputs`;\n }\n },\n\n members: {\n __updateEdgeState: function() {\n const inputNode = this.getEdge().getInputNode();\n const portConnected = this.getEdge().isPortConnected();\n const modified = inputNode ? inputNode.getStatus().getModified() : false;\n\n // color\n const colorHex = this.self().getEdgeColor(modified);\n osparc.wrapper.Svg.updateCurveColor(this.getRepresentation(), colorHex);\n\n // shape\n osparc.wrapper.Svg.updateCurveDashes(this.getRepresentation(), !portConnected);\n\n // tooltip\n const hint = this.getHint();\n if (this.getEdge().isPortConnected() === false) {\n hint.setText(this.self().noPortsConnectedText(this.getEdge()));\n } else if (modified) {\n hint.setText(\"Out-of-date\");\n } else {\n hint.setText(null);\n }\n },\n\n getHint: function() {\n return this.getRepresentation().hint;\n },\n\n setSelected: function(selected) {\n if (selected) {\n const selectedColor = qx.theme.manager.Color.getInstance().resolve(\"workbench-edge-selected\");\n osparc.wrapper.Svg.updateCurveColor(this.getRepresentation(), selectedColor);\n } else {\n this.__updateEdgeState();\n }\n },\n\n setHighlighted: function(highlight) {\n if (highlight) {\n const strongColor = qx.theme.manager.Color.getInstance().resolve(\"strong-main\");\n osparc.wrapper.Svg.updateCurveColor(this.getRepresentation(), strongColor);\n } else {\n this.__updateEdgeState();\n }\n },\n\n getEdgeId: function() {\n return this.getEdge().getEdgeId();\n },\n\n _filter: function() {\n this.getRepresentation().node.style.opacity = 0.15;\n },\n\n _unfilter: function() {\n this.getRepresentation().node.style.opacity = 1;\n },\n\n _shouldApplyFilter: function(data) {\n return data.text && data.text.length > 1 ||\n data.tags && data.tags.length;\n },\n\n _shouldReactToFilter: function(data) {\n return true;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.workbench.Annotation\", {\n extend: qx.core.Object,\n\n /**\n * @param svgLayer {Object} SVG canvas\n * @param data {Object} data containing type, color, attributes and (optional) id\n * @param id {String} data\n */\n construct: function(svgLayer, data, id) {\n this.base();\n\n if (svgLayer) {\n this.__svgLayer = svgLayer;\n }\n\n if (id === undefined) {\n id = osparc.utils.Utils.uuidV4();\n }\n let color = \"color\" in data ? data.color : this.getColor();\n if (color && color[0] !== \"#\") {\n color = osparc.utils.Utils.namedColorToHex(color);\n }\n this.set({\n id,\n type: data.type,\n color,\n attributes: data.attributes\n });\n },\n\n statics: {\n DEFAULT_COLOR: \"#FFFF01\"\n },\n\n properties: {\n id: {\n check: \"String\",\n nullable: false\n },\n\n type: {\n check: [\"note\", \"rect\", \"text\"],\n nullable: false\n },\n\n color: {\n check: \"Color\",\n event: \"changeColor\",\n init: \"#FFFF01\",\n apply: \"__applyColor\"\n },\n\n attributes: {\n check: \"Object\",\n nullable: false,\n apply: \"__drawAnnotation\"\n },\n\n representation: {\n init: null\n }\n },\n\n events: {\n \"annotationClicked\": \"qx.event.type.Data\",\n \"annotationStartedMoving\": \"qx.event.type.Event\",\n \"annotationMoving\": \"qx.event.type.Event\",\n \"annotationStoppedMoving\": \"qx.event.type.Event\"\n },\n\n members: {\n __svgLayer: null,\n\n __drawAnnotation: async function(attrs) {\n if (this.__svgLayer === null) {\n return;\n }\n\n let representation = null;\n switch (this.getType()) {\n case \"note\": {\n const user = osparc.store.Groups.getInstance().getUserByGroupId(attrs.recipientGid);\n representation = this.__svgLayer.drawAnnotationNote(attrs.x, attrs.y, user ? user.getLabel() : \"\", attrs.text);\n break;\n }\n case \"rect\":\n representation = this.__svgLayer.drawAnnotationRect(attrs.width, attrs.height, attrs.x, attrs.y, this.getColor());\n break;\n case \"text\":\n representation = this.__svgLayer.drawAnnotationText(attrs.x, attrs.y, attrs.text, this.getColor(), attrs.fontSize);\n break;\n }\n if (representation) {\n osparc.wrapper.Svg.makeDraggable(representation);\n representation.node.addEventListener(\"click\", e => {\n this.fireDataEvent(\"annotationClicked\", e.ctrlKey);\n e.stopPropagation();\n }, this);\n representation.on(\"dragstart\", () => this.fireEvent(\"annotationStartedMoving\"));\n representation.on(\"dragmove\", () => this.fireEvent(\"annotationMoving\"));\n representation.on(\"dragend\", () => this.fireEvent(\"annotationStoppedMoving\"));\n this.setRepresentation(representation);\n }\n },\n\n __applyColor: function(color) {\n const representation = this.getRepresentation();\n if (representation) {\n switch (this.getType()) {\n case \"rect\":\n osparc.wrapper.Svg.updateItemColor(representation, color);\n break;\n case \"text\":\n osparc.wrapper.Svg.updateTextColor(representation, color);\n break;\n }\n }\n },\n\n getRepresentationPosition: function() {\n const representation = this.getRepresentation();\n if (representation) {\n const attrs = osparc.wrapper.Svg.getRectAttributes(representation);\n return {\n x: parseInt(attrs.x),\n y: parseInt(attrs.y)\n };\n }\n return null;\n },\n\n getPosition: function() {\n const attrs = this.getAttributes();\n if (attrs) {\n return {\n x: parseInt(attrs.x),\n y: parseInt(attrs.y)\n };\n }\n return null;\n },\n\n setPosition: function(x, y) {\n const representation = this.getRepresentation();\n if (representation) {\n x = parseInt(x) < 0 ? 0 : parseInt(x);\n y = parseInt(y) < 0 ? 0 : parseInt(y);\n osparc.wrapper.Svg.updateItemPos(representation, x, y);\n this.getAttributes().x = x;\n this.getAttributes().y = y;\n }\n },\n\n setText: function(newText) {\n this.getAttributes().text = newText;\n const representation = this.getRepresentation();\n if (representation) {\n osparc.wrapper.Svg.updateText(representation, newText);\n }\n },\n\n setFontSize: function(fontSize) {\n this.getAttributes().fontSize = fontSize;\n const representation = this.getRepresentation();\n if (representation) {\n osparc.wrapper.Svg.updateTextSize(representation, fontSize);\n }\n },\n\n setSelected: function(selected) {\n const representation = this.getRepresentation();\n if (representation) {\n switch (this.getType()) {\n case \"rect\":\n case \"text\": {\n if (selected) {\n if (!(\"bBox\" in representation.node)) {\n const bBox = this.__svgLayer.drawBoundingBox(this);\n representation.node[\"bBox\"] = bBox;\n }\n } else if (\"bBox\" in representation.node) {\n osparc.wrapper.Svg.removeItem(representation.node[\"bBox\"]);\n delete representation.node[\"bBox\"];\n }\n break;\n }\n }\n }\n },\n\n serialize: function() {\n return {\n type: this.getType(),\n attributes: this.getAttributes(),\n color: this.getColor()\n };\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.editor.AnnotationNoteCreator\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this.getChildControl(\"instructions\");\n this.getChildControl(\"select-recipient\");\n this.getChildControl(\"note\");\n this.getChildControl(\"add\");\n },\n\n properties: {\n recipientGid: {\n check: \"Integer\",\n init: null,\n nullable: true,\n event: \"changeRecipientGid\"\n },\n\n note: {\n check: \"String\",\n init: \"\",\n nullable: false,\n event: \"changeNote\"\n }\n },\n\n events: {\n \"addNote\": \"qx.event.type.Event\",\n \"cancel\": \"qx.event.type.Event\"\n },\n\n statics: {\n popUpInWindow: function(noteEditor) {\n const title = qx.locale.Manager.tr(\"Add Note\");\n const win = osparc.ui.window.Window.popUpInWindow(noteEditor, title, 325, 256);\n win.center();\n win.open();\n return win;\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"instructions\":\n control = new qx.ui.basic.Label().set({\n value: this.tr(\"Add a recipient to be notified. Please make sure the user has access to the \") + osparc.product.Utils.getStudyAlias() + \".\",\n font: \"text-14\",\n rich: true,\n wrap: true\n });\n this._add(control);\n break;\n case \"recipient-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(10)).set({\n alignY: \"middle\"\n });\n this._add(control);\n break;\n case \"select-recipient\":\n control = new qx.ui.form.Button(this.tr(\"Select recipient\")).set({\n allowGrowX: false\n });\n control.addListener(\"execute\", () => {\n const collaboratorsManager = new osparc.share.NewCollaboratorsManager(null, false);\n collaboratorsManager.setCaption(\"Recipient\");\n collaboratorsManager.getActionButton().setLabel(this.tr(\"Add\"));\n collaboratorsManager.addListener(\"addCollaborators\", e => {\n const collabs = e.getData();\n if (collabs) {\n collaboratorsManager.close();\n this.__setRecipientGid(collabs[0]);\n }\n }, this);\n }, this);\n this.getChildControl(\"recipient-layout\").add(control);\n break;\n case \"selected-recipient\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\",\n alignY: \"middle\"\n });\n this.getChildControl(\"recipient-layout\").add(control, {\n flex: 1\n });\n break;\n case \"note\":\n control = new qx.ui.form.TextArea().set({\n font: \"text-14\",\n placeholder: this.tr(\"Note\"),\n autoSize: true,\n minHeight: 70,\n maxHeight: 140\n });\n this.bind(\"note\", control, \"value\");\n control.bind(\"value\", this, \"note\");\n this._add(control);\n break;\n case \"buttonsLayout\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(8).set({\n alignX: \"right\"\n }));\n const cancelButton = new qx.ui.form.Button(this.tr(\"Cancel\"));\n cancelButton.addListener(\"execute\", () => this.fireEvent(\"cancel\"), this);\n control.add(cancelButton);\n this._add(control);\n break;\n }\n case \"add\": {\n const buttons = this.getChildControl(\"buttonsLayout\");\n control = new qx.ui.form.Button(this.tr(\"Add\"));\n control.addListener(\"execute\", () => this.fireEvent(\"addNote\"), this);\n buttons.addAt(control, 0);\n break;\n }\n }\n\n return control || this.base(arguments, id);\n },\n\n __setRecipientGid: function(gid) {\n this.setRecipientGid(gid);\n // only users were proposed\n const user = osparc.store.Groups.getInstance().getUserByGroupId(gid);\n if (user) {\n this.getChildControl(\"selected-recipient\").setValue(user.getLabel());\n }\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2007 OpenHex SPRL, http://www.openhex.org\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Gaetan de Menten (ged)\n\n************************************************************************ */\n\n/**\n * The string data cell renderer. All it does is escape the incoming String\n * values.\n */\nqx.Class.define(\"qx.ui.table.cellrenderer.String\",\n{\n extend : qx.ui.table.cellrenderer.Conditional,\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n // overridden\n _getContentHtml : function(cellInfo) {\n return qx.bom.String.escape(cellInfo.value || \"\");\n },\n\n // overridden\n _getCellClass : function(cellInfo) {\n return \"qooxdoo-table-cell\";\n }\n }\n});\n","/* ************************************************************************\n\n OSparc Dark Theme for Qooxdoo\n\n Copyright:\n 2018 IT'IS Foundation\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Tobias Oetiker (oetiker)\n\n Origin:\n This theme is based in large parts on the the Simple\n theme included with Qooxdoo.\n************************************************************************ */\n/* global osparc */\n/* eslint no-negated-condition: \"off\", no-nested-ternary: \"off\" */\n/* ************************************************************************\n\n\n************************************************************************* */\n\n/**\n * The simple qooxdoo appearance theme.\n *\n * @asset(qx/icon/Tango/16/apps/office-calendar.png)\n * @asset(qx/icon/Tango/16/places/folder-open.png)\n * @asset(qx/icon/Tango/16/places/folder.png)\n * @asset(qx/icon/Tango/16/mimetypes/text-plain.png)\n * @asset(qx/icon/Tango/16/actions/view-refresh.png)\n * @asset(qx/icon/Tango/16/actions/window-close.png)\n * @asset(qx/icon/Tango/16/actions/dialog-cancel.png)\n * @asset(qx/icon/Tango/16/actions/dialog-ok.png)\n */\nqx.Theme.define(\"osparc.theme.common.Appearance\", {\n appearances: {\n /*\n ---------------------------------------------------------------------------\n CORE\n ---------------------------------------------------------------------------\n */\n\n \"widget\": {},\n\n \"label\":\n {\n style: function(states) {\n return {textColor: states.disabled ? \"text-disabled\" : undefined};\n }\n },\n\n \"image\":\n {\n style: function(states) {\n return {opacity: !states.replacement && states.disabled ? 0.3 : undefined};\n }\n },\n\n \"atom\": {},\n \"atom/label\": \"label\",\n \"atom/icon\": \"image\",\n\n \"root\":\n {\n style: function(states) {\n return {\n backgroundColor: \"background-main\",\n textColor: \"text\",\n font: \"default\"\n };\n }\n },\n\n \"popup\":\n {\n style: function(states) {\n return {\n decorator: \"popup\",\n backgroundColor: \"background-pane\"\n };\n }\n },\n\n \"tooltip\":\n {\n include: \"popup\",\n\n style: function(states) {\n return {\n backgroundColor: \"tooltip\",\n textColor: \"tooltip-text\",\n decorator: \"tooltip\",\n padding: [1, 3, 2, 3],\n offset: [10, 5, 5, 5]\n };\n }\n },\n\n \"tooltip/atom\": \"atom\",\n\n \"tooltip-error\":\n {\n include: \"tooltip\",\n\n style: function(states) {\n return {\n textColor: \"text-selected\",\n showTimeout: 100,\n hideTimeout: 10000,\n decorator: \"tooltip-error\",\n font: \"bold\",\n backgroundColor: undefined\n };\n }\n },\n\n \"tooltip-error/atom\": \"atom\",\n\n \"iframe\":\n {\n style: function(states) {\n return {\n backgroundColor: \"white\",\n decorator: \"main-dark\"\n };\n }\n },\n\n \"move-frame\":\n {\n style: function(states) {\n return {decorator: \"main-dark\"};\n }\n },\n\n \"resize-frame\": \"move-frame\",\n\n \"dragdrop-cursor\": {\n style: function(states) {\n var icon = \"nodrop\";\n\n if (states.copy) {\n icon = \"copy\";\n }\n else if (states.move) {\n icon = \"move\";\n }\n else if (states.alias) {\n icon = \"alias\";\n }\n\n return {\n source: osparc.theme.common.Image.URLS[\"cursor-\" + icon],\n position: \"right-top\",\n offset: [2, 16, 2, 6]\n };\n }\n },\n /*\n ---------------------------------------------------------------------------\n BUTTON\n ---------------------------------------------------------------------------\n */\n\n \"button\": { /* qx.ui.form.Button */\n\n alias: \"material-button\",\n include: \"material-button\",\n style: function(states) {\n return {center: true};\n }\n },\n \"material-button\": {\n alias: \"atom\",\n\n style: function(states) {\n var decorator = \"material-button\";\n\n if (!states.disabled) {\n if (states.pressed || states.checked) {\n decorator += \"-pressed\";\n }\n else if (states.hovered || states.focused) {\n decorator += \"-hovered\";\n }\n }\n else {\n decorator += \"-disabled\";\n }\n\n if (states.invalid && !states.disabled) {\n decorator += \"-invalid\";\n }\n\n return {\n decorator: decorator,\n padding: [3, 8],\n cursor: states.disabled ? undefined : \"pointer\",\n minWidth: 5,\n minHeight: 5\n };\n }\n },\n \"material-button/label\": {\n alias: \"atom/label\",\n\n style: function(states) {\n return {\n textColor: states.disabled ?\n \"material-button-text-disabled\" : \"material-button-text\"\n };\n }\n },\n\n \"button-frame\": {\n alias: \"atom\",\n\n style: function(states) {\n var decorator = \"button-box\";\n\n if (!states.disabled) {\n if (states.hovered && !states.pressed && !states.checked) {\n decorator = \"button-box-hovered\";\n }\n else if (states.hovered && (states.pressed || states.checked)) {\n decorator = \"button-box-pressed-hovered\";\n }\n else if (states.pressed || states.checked) {\n decorator = \"button-box-pressed\";\n }\n }\n\n if (states.invalid && !states.disabled) {\n decorator += \"-invalid\";\n }\n else if (states.focused) {\n decorator += \"-focused\";\n }\n\n return {\n decorator: decorator,\n padding: [3, 8],\n cursor: states.disabled ? undefined : \"pointer\",\n minWidth: 5,\n minHeight: 5\n };\n }\n },\n\n \"button-frame/label\": {\n alias: \"atom/label\",\n\n style: function(states) {\n return {textColor: states.disabled ? \"text-disabled\" : undefined};\n }\n },\n\n\n\n \"hover-button\":\n {\n alias: \"button\",\n include: \"button\",\n\n style: function(states) {\n return {decorator: states.hovered ? \"button-hover\" : undefined};\n }\n },\n\n \"menubutton\": {\n include: \"button\",\n alias: \"button\",\n style: function(states) {\n return {\n icon: osparc.theme.common.Image.URLS[\"arrow-down\"],\n iconPosition: \"right\"\n };\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n TEXT FIELD\n ---------------------------------------------------------------------------\n */\n\n \"material-textfield\": {\n style: function(states) {\n var textColor;\n\n if (states.disabled) {\n textColor = \"text-disabled\";\n }\n else if (states.showingPlaceholder) {\n textColor = \"text-placeholder\";\n }\n else {\n textColor = undefined;\n }\n\n var decorator;\n var padding;\n decorator = \"material-textfield\";\n padding = [3, 0, 4, 0];\n if (states.readonly) {\n decorator += \"-readonly\";\n padding = [3, 0, 5, 0];\n }\n else if (states.disabled) {\n decorator += \"-disabled\";\n }\n else if (states.focused) {\n decorator += \"-focused\";\n if (states.invalid) {\n decorator += \"-invalid\";\n }\n padding = [3, 0, 3, 0];\n }\n else if (states.invalid) {\n decorator += \"-invalid\";\n }\n\n return {\n decorator: decorator,\n padding: padding,\n textColor: textColor,\n backgroundColor: states.disabled ? \"background-disabled\" : \"background-main\"\n };\n }\n },\n\n \"textfield\": \"material-textfield\",\n \"textarea\": \"textfield\",\n\n \"framebox\":\n {\n style: function(states) {\n var textColor;\n if (states.disabled) {\n textColor = \"text-disabled\";\n }\n else if (states.showingPlaceholder) {\n textColor = \"text-placeholder\";\n }\n else {\n textColor = undefined;\n }\n\n var decorator;\n var padding;\n if (states.disabled) {\n decorator = \"border-disabled\";\n padding = [1, 2];\n }\n else if (states.invalid) {\n decorator = \"border-invalid\";\n padding = [1, 2];\n }\n else if (states.focused) {\n decorator = \"border-focused\";\n padding = [1, 2];\n }\n else {\n padding = [1, 2];\n decorator = \"border\";\n }\n\n return {\n decorator: decorator,\n padding: padding,\n textColor: textColor,\n backgroundColor: states.disabled ? \"background-disabled\" : \"background-main\"\n };\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n SPLIT BUTTON\n ---------------------------------------------------------------------------\n */\n \"splitbutton\": {},\n\n \"splitbutton/button\":\n {\n alias: \"material-button\",\n style: function(states) {\n var decorator = \"material-button\";\n\n if (!states.disabled) {\n if (states.pressed || states.checked) {\n decorator += \"-pressed\";\n }\n else if (states.hovered) {\n decorator += \"-hovered\";\n }\n else if (states.focused) {\n decorator += \"-focused\";\n }\n }\n else {\n decorator += \"-disabled\";\n }\n\n decorator += \"-left\";\n\n return {\n decorator: decorator,\n padding: [3, 8],\n cursor: states.disabled ? undefined : \"pointer\"\n };\n }\n },\n\n \"splitbutton/arrow\": {\n alias: \"material-button\",\n style: function(states) {\n var decorator = \"material-button\";\n\n if (!states.disabled) {\n if (states.pressed || states.checked) {\n decorator += \"-pressed\";\n }\n else if (states.focused) {\n decorator += \"-focused\";\n }\n else if (states.hovered) {\n decorator += \"-hovered\";\n }\n }\n else {\n decorator += \"-disabled\";\n }\n\n decorator += \"-right\";\n\n return {\n icon: osparc.theme.common.Image.URLS[\"arrow-down\"],\n decorator: decorator,\n cursor: states.disabled ? undefined : \"pointer\",\n padding: [3, 4]\n };\n }\n },\n /*\n ---------------------------------------------------------------------------\n SLIDEBAR\n ---------------------------------------------------------------------------\n */\n\n \"slidebar\": {},\n \"slidebar/scrollpane\": {},\n \"slidebar/content\": {},\n\n \"slidebar/button-forward\":\n {\n alias: \"button\",\n include: \"button\",\n\n style: function(states) {\n return {icon: osparc.theme.common.Image.URLS[\"arrow-\" + (states.vertical ? \"down\" : \"right\")]};\n }\n },\n\n \"slidebar/button-backward\":\n {\n alias: \"button\",\n include: \"button\",\n\n style: function(states) {\n return {icon: osparc.theme.common.Image.URLS[\"arrow-\" + (states.vertical ? \"up\" : \"left\")]};\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n TABLE\n ---------------------------------------------------------------------------\n */\n\n \"table\": \"widget\",\n\n \"table/statusbar\":\n {\n style: function(states) {\n return {\n decorator: \"statusbar\",\n padding: [2, 5]\n };\n }\n },\n\n \"table/column-button\":\n {\n alias: \"button\",\n\n style: function(states) {\n return {\n decorator: \"table-header-column-button\",\n textColor: \"table-header-foreground\",\n backgroundColor: \"table-header\",\n padding: 3,\n icon: osparc.theme.common.Image.URLS[\"select-column-order\"]\n };\n }\n },\n\n \"table-column-reset-button\":\n {\n include: \"menu-button\",\n alias: \"menu-button\",\n style: function() {\n return {\n decorator: \"table-header-column-button\",\n icon: \"icon/16/actions/view-refresh.png\"\n };\n }\n },\n\n \"table-scroller/scrollbar-x\": \"scrollbar\",\n \"table-scroller/scrollbar-y\": \"scrollbar\",\n\n \"table-scroller\": \"widget\",\n\n \"table-scroller/header\": {\n style: function() {\n return {\n textColor: \"table-header-foreground\",\n backgroundColor: \"table-header\",\n decorator: \"table-header\"\n };\n }\n },\n\n \"table-scroller/pane\": {},\n\n \"table-scroller/focus-indicator\":\n {\n style: function(states) {\n return {decorator: \"main\"};\n }\n },\n\n \"table-scroller/resize-line\":\n {\n style: function(states) {\n return {\n backgroundColor: \"button-border\",\n width: 3\n };\n }\n },\n\n \"table-header-cell\":\n {\n alias: \"atom\",\n\n style: function(states) {\n return {\n decorator: states.first ? \"table-header-cell-first\" : \"table-header-cell\",\n minWidth: 13,\n font: \"bold\",\n paddingTop: 3,\n paddingLeft: 5,\n cursor: states.disabled ? undefined : \"pointer\",\n sortIcon: states.sorted ?\n (osparc.theme.common.Image.URLS[\"table-\" +\n (states.sortedAscending ? \"ascending\" : \"descending\")\n ]) : undefined\n };\n }\n },\n\n \"table-header-cell/icon\":\n {\n include: \"atom/icon\",\n\n style: function(states) {\n return {paddingRight: 5};\n }\n },\n\n \"table-header-cell/sort-icon\":\n {\n style: function(states) {\n return {\n alignY: \"middle\",\n alignX: \"right\",\n paddingRight: 5\n };\n }\n },\n\n \"table-editor-textfield\":\n {\n include: \"framebox\",\n\n style: function(states) {\n return {\n decorator: undefined,\n padding: [2, 2]\n };\n }\n },\n\n \"table-editor-selectbox\":\n {\n include: \"selectbox\",\n alias: \"selectbox\",\n\n style: function(states) {\n return {padding: [0, 2]};\n }\n },\n\n \"table-editor-combobox\":\n {\n include: \"combobox\",\n alias: \"combobox\",\n\n style: function(states) {\n return {decorator: undefined};\n }\n },\n\n \"progressive-table-header\": {\n style: function(states) {\n return {decorator: \"progressive-table-header\"};\n }\n },\n\n \"progressive-table-header-cell\": {\n style: function(states) {\n return {\n decorator: \"progressive-table-header-cell\",\n padding: [5, 6, 5, 6]\n };\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n TREEVIRTUAL\n ---------------------------------------------------------------------------\n */\n\n \"treevirtual\": {\n include: \"framebox\",\n alias: \"table\",\n style: function(states, superStyles) {\n return {padding: [superStyles.padding[0] + 2, superStyles.padding[1] + 1]};\n }\n },\n\n \"treevirtual-folder\":\n {\n style: function(states) {\n return {\n icon: (states.opened ?\n // the old treevirtual code can not use fonticons\n \"icon/16/places/folder-open.png\" : \"icon/16/places/folder.png\"),\n opacity: states.drag ? 0.5 : undefined\n };\n }\n },\n\n \"treevirtual-file\":\n {\n include: \"treevirtual-folder\",\n alias: \"treevirtual-folder\",\n\n style: function(states) {\n return {\n icon: \"icon/16/mimetypes/text-plain.png\",\n opacity: states.drag ? 0.5 : undefined\n };\n }\n },\n\n \"treevirtual-line\":\n {\n style: function(states) {\n return {icon: osparc.theme.common.Image.URLS[\"treevirtual-line\"]};\n }\n },\n\n \"treevirtual-contract\":\n {\n style: function(states) {\n return {icon: osparc.theme.common.Image.URLS[\"tree-minus\"]};\n }\n },\n\n \"treevirtual-expand\":\n {\n style: function(states) {\n return {icon: osparc.theme.common.Image.URLS[\"tree-plus\"]};\n }\n },\n\n \"treevirtual-only-contract\":\n {\n style: function(states) {\n return {icon: osparc.theme.common.Image.URLS[\"treevirtual-minus-only\"]};\n }\n },\n\n \"treevirtual-only-expand\":\n {\n style: function(states) {\n return {icon: osparc.theme.common.Image.URLS[\"treevirtual-plus-only\"]};\n }\n },\n\n \"treevirtual-start-contract\":\n {\n style: function(states) {\n return {icon: osparc.theme.common.Image.URLS[\"treevirtual-minus-start\"]};\n }\n },\n\n \"treevirtual-start-expand\":\n {\n style: function(states) {\n return {icon: osparc.theme.common.Image.URLS[\"treevirtual-plus-start\"]};\n }\n },\n\n \"treevirtual-end-contract\":\n {\n style: function(states) {\n return {icon: osparc.theme.common.Image.URLS[\"treevirtual-minus-end\"]};\n }\n },\n\n \"treevirtual-end-expand\":\n {\n style: function(states) {\n return {icon: osparc.theme.common.Image.URLS[\"treevirtual-plus-end\"]};\n }\n },\n\n \"treevirtual-cross-contract\":\n {\n style: function(states) {\n return {icon: osparc.theme.common.Image.URLS[\"treevirtual-minus-cross\"]};\n }\n },\n\n \"treevirtual-cross-expand\":\n {\n style: function(states) {\n return {icon: osparc.theme.common.Image.URLS[\"treevirtual-plus-cross\"]};\n }\n },\n\n\n \"treevirtual-end\":\n {\n style: function(states) {\n return {icon: osparc.theme.common.Image.URLS[\"treevirtual-end\"]};\n }\n },\n\n \"treevirtual-cross\":\n {\n style: function(states) {\n return {icon: osparc.theme.common.Image.URLS[\"treevirtual-cross\"]};\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n RESIZER\n ---------------------------------------------------------------------------\n */\n\n \"resizer\":\n {\n style: function(states) {\n return {decorator: \"main-dark\"};\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n SPLITPANE\n ---------------------------------------------------------------------------\n */\n\n \"splitpane\": {},\n\n \"splitpane/splitter\":\n {\n style: function(states) {\n return {backgroundColor: \"contrasted-background\"};\n }\n },\n\n \"splitpane/splitter/knob\":\n {\n style: function(states) {\n return {\n source: osparc.theme.common.Image.URLS[\n \"knob-\" + (states.horizontal ? \"horizontal\" : \"vertical\")\n ],\n padding: 0\n };\n }\n },\n\n \"splitpane/slider\":\n {\n style: function(states) {\n return {\n backgroundColor: \"material-button-background\",\n opacity: 0.3\n };\n }\n },\n\n\n\n /*\n ---------------------------------------------------------------------------\n MENU\n ---------------------------------------------------------------------------\n */\n\n \"menu\":\n {\n style: function(states) {\n var result =\n {\n backgroundColor: \"background-main\",\n decorator: \"main\",\n spacingX: 6,\n spacingY: 1,\n iconColumnWidth: 16,\n arrowColumnWidth: 4,\n padding: 1,\n placementModeY: states.submenu || states.contextmenu ? \"best-fit\" : \"keep-align\"\n };\n\n if (states.submenu) {\n result.position = \"right-top\";\n result.offset = [-2, -3];\n }\n\n if (states.contextmenu) {\n result.offset = 4;\n }\n\n return result;\n }\n },\n\n \"menu/slidebar\": \"menu-slidebar\",\n\n \"menu-slidebar\": \"widget\",\n\n \"menu-slidebar-button\":\n {\n style: function(states) {\n return {\n backgroundColor: states.hovered ? \"background-selected\" : undefined,\n padding: 6,\n center: true\n };\n }\n },\n\n \"menu-slidebar/button-backward\":\n {\n include: \"menu-slidebar-button\",\n\n style: function(states) {\n return {\n icon: osparc.theme.common.Image.URLS[\n \"arrow-up\" + (states.hovered ? \"-invert\" : \"\")\n ]\n };\n }\n },\n\n \"menu-slidebar/button-forward\":\n {\n include: \"menu-slidebar-button\",\n\n style: function(states) {\n return {\n icon: osparc.theme.common.Image.URLS[\n \"arrow-down\" + (states.hovered ? \"-invert\" : \"\")\n ]\n };\n }\n },\n\n \"menu-separator\":\n {\n style: function(states) {\n return {\n height: 0,\n decorator: \"menu-separator\",\n marginTop: 4,\n marginBottom: 4,\n marginLeft: 2,\n marginRight: 2\n };\n }\n },\n\n \"menu-button\":\n {\n alias: \"atom\",\n\n style: function(states) {\n return {\n backgroundColor: states.selected ? \"background-selected\" : undefined,\n textColor: states.selected ? \"text-selected\" : \"text\",\n padding: [2, 6]\n };\n }\n },\n\n \"menu-button/icon\":\n {\n include: \"image\",\n\n style: function(states) {\n return {\n alignY: \"middle\",\n textColor: states.selected ? \"text-selected\" : \"text\"\n };\n }\n },\n\n \"menu-button/label\":\n {\n include: \"label\",\n\n style: function(states) {\n return {\n alignY: \"middle\",\n padding: 1\n };\n }\n },\n\n \"menu-button/shortcut\":\n {\n include: \"label\",\n\n style: function(states) {\n return {\n alignY: \"middle\",\n marginLeft: 14,\n padding: 1\n };\n }\n },\n\n \"menu-button/arrow\":\n {\n include: \"image\",\n\n style: function(states) {\n return {\n source: osparc.theme.common.Image.URLS[\n \"arrow-right\" + (states.selected ? \"-invert\" : \"\")\n ],\n alignY: \"middle\"\n };\n }\n },\n\n \"menu-checkbox\":\n {\n alias: \"menu-button\",\n include: \"menu-button\",\n\n style: function(states) {\n var icon = \"menu-checkbox\";\n if (states.checked) {\n icon += \"-checked\";\n }\n return {icon: osparc.theme.common.Image.URLS[icon]};\n }\n },\n\n \"menu-radiobutton\":\n {\n alias: \"menu-button\",\n include: \"menu-button\",\n\n style: function(states) {\n var icon = \"menu-radiobutton\";\n if (states.checked) {\n icon += \"-checked\";\n }\n return {icon: osparc.theme.common.Image.URLS[icon]};\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n MENU BAR\n ---------------------------------------------------------------------------\n */\n\n \"menubar\":\n {\n style: function(states) {\n return {\n backgroundColor: \"material-button-background\",\n padding: [4, 2]\n };\n }\n },\n\n \"menubar-button\":\n {\n style: function(states) {\n var decorator;\n var padding = [2, 6];\n if (!states.disabled) {\n if (states.pressed) {\n decorator = \"menubar-button-pressed\";\n }\n else if (states.hovered) {\n decorator = \"menubar-button-hovered\";\n }\n }\n\n return {\n padding: padding,\n cursor: states.disabled ? undefined : \"pointer\",\n textColor: \"material-button-text\",\n decorator: decorator\n };\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n VIRTUAL WIDGETS\n ---------------------------------------------------------------------------\n */\n \"virtual-list\": \"list\",\n \"virtual-list/row-layer\": \"row-layer\",\n\n \"row-layer\": \"widget\",\n \"column-layer\": \"widget\",\n\n \"group-item\":\n {\n include: \"label\",\n alias: \"label\",\n\n style: function(states) {\n return {\n padding: 4,\n backgroundColor: \"#BABABA\",\n textColor: \"white\",\n font: \"bold\"\n };\n }\n },\n\n \"virtual-selectbox\": \"selectbox\",\n \"virtual-selectbox/dropdown\": \"popup\",\n \"virtual-selectbox/dropdown/list\": {alias: \"virtual-list\"},\n\n \"virtual-combobox\": \"combobox\",\n \"virtual-combobox/dropdown\": \"popup\",\n \"virtual-combobox/dropdown/list\": {alias: \"virtual-list\"},\n\n \"virtual-tree\":\n {\n include: \"tree\",\n alias: \"tree\",\n\n style: function(states) {\n return {itemHeight: 21};\n }\n },\n\n \"virtual-tree-folder\": \"tree-folder\",\n \"virtual-tree-file\": \"tree-file\",\n\n \"cell\":\n {\n style: function(states) {\n return {\n backgroundColor: states.selected ?\n \"table-row-background-selected\" :\n \"table-row-background-even\",\n textColor: states.selected ? \"text-selected\" : \"text\",\n padding: [3, 6]\n };\n }\n },\n\n \"cell-string\": \"cell\",\n \"cell-number\":\n {\n include: \"cell\",\n style: function(states) {\n return {textAlign: \"right\"};\n }\n },\n \"cell-image\": \"cell\",\n \"cell-boolean\": \"cell\",\n \"cell-atom\": \"cell\",\n \"cell-date\": \"cell\",\n \"cell-html\": \"cell\",\n\n\n /*\n ---------------------------------------------------------------------------\n SCROLLBAR\n ---------------------------------------------------------------------------\n */\n\n \"scrollbar\": {},\n \"scrollbar/slider\": {},\n\n \"scrollbar/slider/knob\":\n {\n style: function(states) {\n var decorator = \"scroll-knob\";\n\n if (!states.disabled) {\n if (states.hovered && !states.pressed && !states.checked) {\n decorator = \"scroll-knob-hovered\";\n }\n else if (states.hovered && (states.pressed || states.checked)) {\n decorator = \"scroll-knob-pressed-hovered\";\n }\n else if (states.pressed || states.checked) {\n decorator = \"scroll-knob-pressed\";\n }\n }\n\n return {\n height: 8,\n width: 8,\n marginLeft: 2,\n marginTop: 2,\n cursor: states.disabled ? undefined : \"pointer\",\n decorator: decorator,\n minHeight: states.horizontal ? undefined : 30,\n minWidth: states.horizontal ? 30 : undefined\n };\n }\n },\n\n\n \"scrollbar/button\":\n {\n style: function(states) {\n return {\n height: 0,\n width: 0,\n margin: [2, 2]\n };\n }\n },\n\n \"scrollbar/button-begin\": \"scrollbar/button\",\n \"scrollbar/button-end\": \"scrollbar/button\",\n\n\n /*\n ---------------------------------------------------------------------------\n SCROLLAREA\n ---------------------------------------------------------------------------\n */\n\n \"scrollarea/corner\":\n {\n style: function(states) {\n return {backgroundColor: \"background-main\"};\n }\n },\n\n \"scrollarea\": \"widget\",\n \"scrollarea/pane\": \"widget\",\n \"scrollarea/scrollbar-x\": \"scrollbar\",\n \"scrollarea/scrollbar-y\": \"scrollbar\",\n\n\n\n /*\n ---------------------------------------------------------------------------\n RADIO BUTTON\n ---------------------------------------------------------------------------\n */\n\n \"radiobutton\":\n {\n style: function(states) {\n var icon;\n\n if (states.checked) {\n icon = osparc.theme.common.Image.URLS[\"radiobutton-checked\"];\n // Checked\n }\n else {\n icon = osparc.theme.common.Image.URLS[\"radiobutton-unchecked\"];\n // Unchecked\n }\n\n var textColor = \"text\";\n if (states.disabled) {\n textColor = \"text-disabled\";\n }\n else if (states.invalid) {\n textColor = \"invalid\";\n }\n return {\n icon: icon,\n paddingTop: 2,\n textColor: textColor,\n gap: 6\n };\n }\n },\n \"radiobutton/icon\": {\n style: function(states) {\n return {\n decorator: \"radiobutton\",\n padding: [2,0,0,0]\n };\n }\n },\n\n /*\n ---------------------------------------------------------------------------\n FORM\n ---------------------------------------------------------------------------\n */\n \"form-renderer-label\": {\n include: \"label\",\n style: function() {\n return {paddingTop: 3};\n }\n },\n\n /*\n ---------------------------------------------------------------------------\n CHECK BOX\n ---------------------------------------------------------------------------\n */\n \"checkbox\":\n {\n alias: \"atom\",\n\n style: function(states) {\n // The \"disabled\" icon is set to an icon **without** the -disabled\n // suffix on purpose. This is because the Image widget handles this\n // already by replacing the current image with a disabled version\n // (if available). If no disabled image is found, the opacity style\n // is used.\n var icon;\n\n // Checked\n if (states.checked) {\n icon = osparc.theme.common.Image.URLS[\"checkbox-checked\"];\n // Undetermined\n }\n else if (states.undetermined) {\n icon = osparc.theme.common.Image.URLS[\"checkbox-undetermined\"];\n // Unchecked\n }\n else {\n // empty icon\n icon = osparc.theme.common.Image.URLS[\"checkbox-blank\"];\n }\n\n var textColor = \"text\";\n if (states.disabled) {\n textColor = \"text-disabled\";\n }\n else if (states.invalid) {\n textColor = \"invalid\";\n }\n return {\n icon: icon,\n textColor: textColor,\n gap: 6\n };\n }\n },\n\n\n \"checkbox/icon\": {\n style: function(states) {\n return {\n decorator: \"checkbox\",\n padding: 0\n };\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n SPINNER\n ---------------------------------------------------------------------------\n */\n\n \"spinner\":\n {\n style: function(states) {\n return {textColor: states.disabled ? \"text-disabled\" : undefined};\n }\n },\n\n \"spinner/textfield\": \"textfield\",\n\n \"spinner/upbutton\":\n {\n alias: \"combobox/button\",\n include: \"combobox/button\",\n\n style: function(states) {\n return {\n icon: osparc.theme.common.Image.URLS[\"arrow-up-small\"],\n decorator: undefined,\n width: 12,\n height: 6,\n padding: [-1, 0, 0, 0]\n };\n }\n },\n\n \"spinner/downbutton\":\n {\n alias: \"combobox/button\",\n include: \"combobox/button\",\n\n style: function(states) {\n return {\n icon: osparc.theme.common.Image.URLS[\"arrow-down-small\"],\n decorator: undefined,\n width: 12,\n height: 6,\n padding: [-1, 0, 0, 0]\n };\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n SELECTBOX\n ---------------------------------------------------------------------------\n */\n\n \"selectbox\": \"textfield\",\n\n \"selectbox/atom\": \"atom\",\n \"selectbox/popup\": \"popup\",\n \"selectbox/list\": {\n alias: \"list\",\n include: \"list\",\n\n style: function() {\n return {decorator: undefined};\n }\n },\n\n \"selectbox/arrow\":\n {\n include: \"image\",\n\n style: function(states) {\n return {\n source: osparc.theme.common.Image.URLS[\"arrow-down\"],\n paddingRight: 0,\n paddingLeft: 2,\n paddingTop: -3\n };\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n COMBO BOX\n ---------------------------------------------------------------------------\n */\n\n \"combobox\": {},\n\n \"combobox/button\":\n {\n alias: \"button-frame\",\n include: \"button-frame\",\n\n style: function(states) {\n let decorator = \"material-textfield\";\n if (states.focused) {\n decorator += \"-focused\";\n if (states.invalid) {\n decorator += \"-invalid\";\n }\n }\n else if (states.invalid) {\n decorator += \"-invalid\";\n }\n else if (states.disabled) {\n decorator += \"-disabled\";\n }\n\n return {\n backgroundColor: undefined,\n icon: osparc.theme.common.Image.URLS[\"arrow-down\"],\n decorator: decorator,\n padding: [0, 0, 0, 0]\n };\n }\n },\n\n \"combobox/popup\": \"popup\",\n \"combobox/list\": {\n alias: \"list\",\n style: function(states) {\n return {paddingRight: 2};\n }\n },\n\n \"combobox/textfield\": \"textfield\",\n\n\n /*\n ---------------------------------------------------------------------------\n DATEFIELD\n ---------------------------------------------------------------------------\n */\n\n \"datefield\": \"textfield\",\n\n \"datefield/button\":\n {\n alias: \"combobox/button\",\n include: \"combobox/button\",\n\n style: function(states) {\n return {\n icon: \"@MaterialIcons/calendar_today/14\",\n padding: [0, 0, 0, 0],\n backgroundColor: undefined,\n decorator: undefined,\n width: 16\n };\n }\n },\n\n \"datefield/textfield\": {\n alias: \"textfield\",\n include: \"textfield\",\n\n style: function(states) {\n return {\n decorator: undefined,\n padding: 0\n };\n }\n },\n\n \"datefield/list\":\n {\n alias: \"datechooser\",\n include: \"datechooser\",\n\n style: function(states) {\n return {decorator: undefined};\n }\n },\n\n\n\n /*\n ---------------------------------------------------------------------------\n LIST\n ---------------------------------------------------------------------------\n */\n\n \"list\":\n {\n alias: \"scrollarea\",\n include: \"framebox\"\n },\n\n \"listitem\":\n {\n alias: \"atom\",\n\n style: function(states) {\n var padding = [3, 5, 3, 5];\n if (states.lead) {\n padding = [2, 4, 2, 4];\n }\n if (states.dragover) {\n padding[2] -= 2;\n }\n\n var backgroundColor;\n if (states.selected) {\n backgroundColor = \"background-selected\";\n if (states.disabled) {\n backgroundColor += \"-disabled\";\n }\n }\n return {\n gap: 4,\n padding: padding,\n backgroundColor: backgroundColor,\n textColor: states.selected ? \"text-selected\" : undefined,\n decorator: states.lead ? \"lead-item\" : states.dragover ? \"dragover\" : undefined,\n opacity: states.drag ? 0.5 : undefined\n };\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n SLIDER\n ---------------------------------------------------------------------------\n */\n\n \"slider\":\n {\n style: function(states) {\n var decorator;\n var padding;\n if (states.disabled) {\n decorator = \"border-disabled\";\n padding = [1, 2];\n }\n else if (states.invalid) {\n decorator = \"border-invalid\";\n padding = [1, 2];\n }\n else if (states.focused) {\n decorator = \"border-focused\";\n padding = [1, 2];\n }\n else {\n padding = [1, 2];\n decorator = \"border\";\n }\n\n return {\n decorator: decorator,\n padding: padding\n };\n }\n },\n\n \"slider/knob\": \"scrollbar/slider/knob\",\n\n\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n GROUP BOX\n ---------------------------------------------------------------------------\n */\n\n \"groupbox\": {},\n\n \"groupbox/legend\":\n {\n alias: \"atom\",\n\n style: function(states) {\n return {\n textColor: states.invalid ? \"invalid\" : undefined,\n padding: 5,\n margin: 4,\n font: \"bold\"\n };\n }\n },\n\n \"groupbox/frame\":\n {\n style: function(states) {\n return {\n backgroundColor: \"background-main\",\n padding: [6, 9],\n margin: [18, 2, 2, 2],\n decorator: \"white-box\"\n };\n }\n },\n\n \"check-groupbox\": \"groupbox\",\n\n \"check-groupbox/legend\":\n {\n alias: \"checkbox\",\n include: \"checkbox\",\n\n style: function(states) {\n return {\n textColor: states.invalid ? \"invalid\" : undefined,\n padding: 5,\n margin: 4,\n font: \"bold\"\n };\n }\n },\n\n \"radio-groupbox\": \"groupbox\",\n\n \"radio-groupbox/legend\":\n {\n alias: \"radiobutton\",\n include: \"radiobutton\",\n\n style: function(states) {\n return {\n textColor: states.invalid ? \"invalid\" : undefined,\n padding: 5,\n margin: 4,\n font: \"bold\"\n };\n }\n },\n\n\n\n /*\n ---------------------------------------------------------------------------\n TREE\n ---------------------------------------------------------------------------\n */\n\n \"tree-folder/open\":\n {\n include: \"image\",\n style: function(states) {\n return {\n source: states.opened ?\n osparc.theme.common.Image.URLS[\"tree-minus\"] :\n osparc.theme.common.Image.URLS[\"tree-plus\"],\n textColor: states.selected ? \"text-selected\" : \"text\"\n };\n }\n },\n\n\n \"tree-folder\":\n {\n style: function(states) {\n var backgroundColor;\n if (states.selected) {\n backgroundColor = \"background-selected\";\n if (states.disabled) {\n backgroundColor += \"-disabled\";\n }\n }\n return {\n padding: [2, 8, 2, 5],\n icon: states.opened ?\n osparc.theme.common.Image.URLS[\"folder-open\"] :\n osparc.theme.common.Image.URLS[\"folder\"],\n backgroundColor: backgroundColor,\n textColor: states.selected ? \"text-selected\" : \"text\",\n iconOpened: osparc.theme.common.Image.URLS[\"folder-open\"],\n opacity: states.drag ? 0.5 : undefined\n };\n }\n },\n\n \"tree-folder/icon\":\n {\n include: \"image\",\n style: function(states) {\n return {\n padding: [0, 4, 0, 0],\n textColor: states.selected ? \"text-selected\" : \"text\"\n };\n }\n },\n\n \"tree-folder/label\":\n {\n style: function(states) {\n return {\n padding: [1, 2],\n textColor: states.selected ? \"text-selected\" : \"text\"\n };\n }\n },\n\n \"tree-file\":\n {\n include: \"tree-folder\",\n alias: \"tree-folder\",\n\n style: function(states) {\n return {icon: osparc.theme.common.Image.URLS[\"file\"]};\n }\n },\n\n \"tree\":\n {\n include: \"list\",\n alias: \"list\",\n\n style: function(states) {\n return {\n contentPadding: [4, 1],\n padding: 1\n };\n }\n },\n\n\n\n /*\n ---------------------------------------------------------------------------\n WINDOW\n ---------------------------------------------------------------------------\n */\n\n \"window\":\n {\n style: function(states) {\n return {\n contentPadding: [10, 10, 10, 10],\n backgroundColor: \"background-main\",\n decorator: states.maximized ? undefined : states.active ? \"window-active\" : \"window\"\n };\n }\n },\n\n \"window-resize-frame\": \"resize-frame\",\n\n \"window/pane\": {\n style: function(states) {\n return {padding: 10};\n }\n },\n\n \"window/captionbar\":\n {\n style: function(states) {\n return {\n backgroundColor: states.active ? \"window-caption-background-active\" : \"window-caption-background\",\n margin: 0,\n padding: 8,\n decorator: \"window-caption\"\n };\n }\n },\n\n \"window/icon\":\n {\n style: function(states) {\n return {\n marginRight: 4,\n marginTop: 2\n };\n }\n },\n\n \"window/title\":\n {\n style: function(states) {\n return {\n cursor: \"default\",\n font: states.active ? \"bold\" : \"default\",\n textColor: states.active ? \"window-caption-text-active\": \"window-caption-text\",\n marginRight: 20,\n marginLeft: 4,\n alignY: \"middle\"\n };\n }\n },\n\n \"window/minimize-button\":\n {\n alias: \"button\",\n\n style: function(states) {\n return {\n icon: osparc.theme.common.Image.URLS[\"window-minimize\"]+\"/18\",\n padding: 0,\n cursor: states.disabled ? undefined : \"pointer\"\n };\n }\n },\n\n \"window/restore-button\":\n {\n alias: \"button\",\n\n style: function(states) {\n return {\n icon: osparc.theme.common.Image.URLS[\"window-restore\"]+\"/18\",\n padding: 0,\n cursor: states.disabled ? undefined : \"pointer\"\n };\n }\n },\n\n \"window/maximize-button\":\n {\n alias: \"button\",\n\n style: function(states) {\n return {\n icon: osparc.theme.common.Image.URLS[\"window-maximize\"]+\"/18\",\n padding: 0,\n cursor: states.disabled ? undefined : \"pointer\"\n };\n }\n },\n\n \"window/close-button\":\n {\n alias: \"button\",\n\n style: function(states) {\n return {\n icon: osparc.theme.common.Image.URLS[\"window-close\"]+\"/18\",\n padding: 0,\n cursor: states.disabled ? undefined : \"pointer\"\n };\n }\n },\n\n \"window/statusbar\":\n {\n style: function(states) {\n return {\n decorator: \"statusbar\",\n padding: [2, 6]\n };\n }\n },\n\n \"window/statusbar-text\": \"label\",\n\n /*\n ---------------------------------------------------------------------------\n DATE CHOOSER\n ---------------------------------------------------------------------------\n */\n \"datechooser\":\n {\n style: function(states) {\n return {\n decorator: \"main\",\n minWidth: 220\n };\n }\n },\n\n \"datechooser/navigation-bar\":\n {\n style: function(states) {\n return {\n backgroundColor: \"background-main\",\n textColor: states.disabled ? \"text-disabled\" : states.invalid ? \"invalid\" : undefined,\n padding: [2, 10]\n };\n }\n },\n\n \"datechooser/last-year-button-tooltip\": \"tooltip\",\n \"datechooser/last-month-button-tooltip\": \"tooltip\",\n \"datechooser/next-year-button-tooltip\": \"tooltip\",\n \"datechooser/next-month-button-tooltip\": \"tooltip\",\n\n \"datechooser/last-year-button\": \"datechooser/button\",\n \"datechooser/last-month-button\": \"datechooser/button\",\n \"datechooser/next-year-button\": \"datechooser/button\",\n \"datechooser/next-month-button\": \"datechooser/button\",\n \"datechooser/button/icon\": {},\n\n \"datechooser/button\":\n {\n style: function(states) {\n var result = {\n width: 17,\n show: \"icon\",\n cursor: states.disabled ? undefined : \"pointer\"\n };\n\n if (states.lastYear) {\n result.icon = osparc.theme.common.Image.URLS[\"arrow-rewind\"];\n }\n else if (states.lastMonth) {\n result.icon = osparc.theme.common.Image.URLS[\"arrow-left\"];\n }\n else if (states.nextYear) {\n result.icon = osparc.theme.common.Image.URLS[\"arrow-forward\"];\n }\n else if (states.nextMonth) {\n result.icon = osparc.theme.common.Image.URLS[\"arrow-right\"];\n }\n\n return result;\n }\n },\n\n \"datechooser/month-year-label\":\n {\n style: function(states) {\n return {\n font: \"bold\",\n textAlign: \"center\"\n };\n }\n },\n\n \"datechooser/date-pane\":\n {\n style: function(states) {\n return {\n decorator: \"datechooser-date-pane\",\n backgroundColor: \"background-main\"\n };\n }\n },\n\n \"datechooser/weekday\":\n {\n style: function(states) {\n return {\n decorator: \"datechooser-weekday\",\n font: \"bold\",\n textAlign: \"center\",\n textColor: states.disabled ? \"text-disabled\" : states.weekend ? \"background-selected-dark\" : \"background-main\",\n backgroundColor: states.weekend ? \"background-main\" : \"background-selected-dark\",\n paddingTop: 2\n };\n }\n },\n\n \"datechooser/day\":\n {\n style: function(states) {\n return {\n textAlign: \"center\",\n decorator: states.today ? \"main\" : undefined,\n textColor: states.disabled ? \"text-disabled\" : states.selected ? \"text-selected\" : states.otherMonth ? \"text-disabled\" : undefined,\n backgroundColor: states.disabled ? undefined : states.selected ? \"background-selected\" : undefined,\n padding: states.today ? [1, 3] : [2, 4]\n };\n }\n },\n\n \"datechooser/week\":\n {\n style: function(states) {\n return {\n textAlign: \"center\",\n textColor: \"background-selected-dark\",\n padding: [2, 4],\n decorator: states.header ? \"datechooser-week-header\" : \"datechooser-week\"\n };\n }\n },\n\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n PROGRESSBAR\n ---------------------------------------------------------------------------\n */\n \"progressbar\":\n {\n style: function(states) {\n return {\n decorator: \"progressbar\",\n padding: 1,\n backgroundColor: \"background-main\",\n width: 200,\n height: 20\n };\n }\n },\n\n \"progressbar/progress\":\n {\n style: function(states) {\n return {\n backgroundColor: states.disabled ?\n \"background-disabled-checked\" :\n \"background-selected\"\n };\n }\n },\n\n\n\n /*\n ---------------------------------------------------------------------------\n TOOLBAR\n ---------------------------------------------------------------------------\n */\n\n \"toolbar\":\n {\n style: function(states) {\n return {\n backgroundColor: \"material-button-background\",\n padding: 0\n };\n }\n },\n\n \"toolbar/part\": {\n style: function(states) {\n return {margin: [0, 15]};\n }\n },\n\n \"toolbar/part/container\": {},\n \"toolbar/part/handle\": {},\n\n \"toolbar-separator\":\n {\n style: function(states) {\n return {\n decorator: undefined,\n margin: [7, 0],\n width: 4\n };\n }\n },\n\n \"toolbar-button\":\n {\n alias: \"atom\",\n\n style: function(states) {\n // set the margin\n var margin = [7, 10];\n if (states.left || states.middle || states.right) {\n margin = [7, 3];\n }\n var decorator = \"toolbar-button\";\n if (states.hovered || states.pressed || states.checked) {\n decorator += \"-hovered\";\n }\n\n return {\n cursor: states.disabled ? undefined : \"pointer\",\n decorator: decorator,\n textColor: \"material-button-text\",\n margin: margin,\n padding: [3, 5]\n };\n }\n },\n\n \"toolbar-menubutton\":\n {\n alias: \"toolbar-button\",\n include: \"toolbar-button\",\n\n style: function(states) {\n return {showArrow: true};\n }\n },\n\n \"toolbar-menubutton/arrow\":\n {\n alias: \"image\",\n include: \"image\",\n\n style: function(states) {\n return {\n source: osparc.theme.common.Image.URLS[\"arrow-down\"],\n cursor: states.disabled ? undefined : \"pointer\",\n padding: 0,\n textColor: \"material-button-text\",\n marginLeft: 2\n };\n }\n },\n\n \"toolbar-splitbutton\": {},\n\n \"toolbar-splitbutton/button\":\n {\n alias: \"toolbar-button\",\n include: \"toolbar-button\",\n\n style: function(states) {\n // set the margin\n var margin = [7, 0,7,10];\n if (states.left || states.middle || states.right) {\n margin = [7, 0,7,3];\n }\n var decorator = \"toolbar-button\";\n if (states.hovered || states.pressed || states.focused ||states.checked) {\n decorator += \"-hovered\";\n }\n decorator += \"-left\";\n\n return {\n decorator: decorator,\n margin: margin\n };\n }\n },\n\n\n \"toolbar-splitbutton/arrow\":\n {\n alias: \"toolbar-button\",\n include: \"toolbar-button\",\n\n style: function(states) {\n // set the margin\n var margin = [7, 10,7,0];\n if (states.left || states.middle || states.right) {\n margin = [7, 3,7,0];\n }\n var decorator = \"toolbar-button\";\n if (states.hovered || states.pressed || states.focused ||states.checked) {\n decorator += \"-hovered\";\n }\n decorator += \"-right\";\n\n\n return {\n icon: osparc.theme.common.Image.URLS[\"arrow-down\"],\n decorator: decorator,\n margin: margin\n };\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n TABVIEW\n ---------------------------------------------------------------------------\n */\n\n \"tabview\": {},\n\n \"tabview/bar\":\n {\n alias: \"slidebar\",\n\n style: function(states) {\n var marginTop = 0;\n var marginRight = 0;\n var marginBottom = 0;\n var marginLeft = 0;\n\n if (states.barTop) {\n marginBottom -= 1;\n }\n else if (states.barBottom) {\n marginTop -= 1;\n }\n else if (states.barRight) {\n marginLeft -= 1;\n }\n else {\n marginRight -= 1;\n }\n\n return {\n marginBottom: marginBottom,\n marginTop: marginTop,\n marginLeft: marginLeft,\n marginRight: marginRight\n };\n }\n },\n\n\n \"tabview/bar/button-forward\":\n {\n include: \"slidebar/button-forward\",\n alias: \"slidebar/button-forward\",\n\n style: function(states) {\n if (states.barTop) {\n return {\n marginTop: 4,\n marginBottom: 2,\n decorator: null\n };\n }\n else if (states.barBottom) {\n return {\n marginTop: 2,\n marginBottom: 4,\n decorator: null\n };\n }\n else if (states.barLeft) {\n return {\n marginLeft: 4,\n marginRight: 2,\n decorator: null\n };\n }\n return {\n marginLeft: 2,\n marginRight: 4,\n decorator: null\n };\n }\n },\n\n \"tabview/bar/button-backward\":\n {\n include: \"slidebar/button-backward\",\n alias: \"slidebar/button-backward\",\n\n style: function(states) {\n if (states.barTop) {\n return {\n marginTop: 4,\n marginBottom: 2,\n decorator: null\n };\n }\n else if (states.barBottom) {\n return {\n marginTop: 2,\n marginBottom: 4,\n decorator: null\n };\n }\n else if (states.barLeft) {\n return {\n marginLeft: 4,\n marginRight: 2,\n decorator: null\n };\n }\n return {\n marginLeft: 2,\n marginRight: 4,\n decorator: null\n };\n }\n },\n\n \"tabview/pane\":\n {\n style: function(states) {\n let marginTop =0;\n let marginBottom = 0;\n let marginLeft = 0;\n let marginRight = 0;\n let decorator;\n\n if (states.barTop) {\n marginTop = -1;\n decorator = \"main-top\";\n }\n else if (states.barBottom) {\n marginBottom = -1;\n decorator = \"main-bottom\";\n }\n else if (states.barLeft) {\n marginLeft = -1;\n decorator = \"main-left\";\n }\n else {\n marginRight = -1;\n decorator = \"main-right\";\n }\n return {\n marginLeft: marginLeft,\n marginRight: marginRight,\n marginTop: marginTop,\n marginBottom: marginBottom,\n padding: 10,\n decorator: decorator,\n backgroundColor: \"tabview-pane-background\"\n };\n }\n },\n\n \"tabview-page\": \"widget\",\n\n \"tabview-page/button\":\n {\n style: function(states) {\n var decorator;\n var padding;\n // default padding\n if (states.barTop || states.barBottom) {\n padding = [8, 16, 8, 13];\n }\n else if (states.barRight) {\n padding = [8, 8, 8, 12];\n }\n else if (states.barLeft) {\n padding = [8, 8, 8, 8];\n }\n\n // decorator\n if (states.checked) {\n if (states.barTop) {\n decorator = \"tabview-page-button-top\";\n padding[2] -= 2;\n }\n else if (states.barBottom) {\n decorator = \"tabview-page-button-bottom\";\n padding[0] -= 2;\n }\n else if (states.barRight) {\n decorator = \"tabview-page-button-right\";\n padding[3] -= 2;\n }\n else if (states.barLeft) {\n decorator = \"tabview-page-button-left\";\n padding[1] -= 2;\n }\n }\n\n return {\n zIndex: states.checked ? 10 : 5,\n decorator: decorator,\n textColor: states.disabled ? \"text-disabled\" : \"text\",\n font: states.checked ? \"bold\": undefined,\n padding: padding,\n cursor: \"pointer\"\n };\n }\n },\n\n \"tabview-page/button/label\":\n {\n alias: \"label\",\n\n style: function(states) {\n return {padding: [0, 1, 0, 1]};\n }\n },\n\n \"tabview-page/button/icon\": \"image\",\n \"tabview-page/button/close-button\":\n {\n alias: \"atom\",\n style: function(states) {\n return {\n cursor: states.disabled ? undefined : \"pointer\",\n icon: osparc.theme.common.Image.URLS[\"tabview-close\"]\n };\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n COLOR POPUP\n ---------------------------------------------------------------------------\n */\n\n\n \"colorpopup\":\n {\n alias: \"popup\",\n include: \"popup\",\n\n style: function(states) {\n return {padding: 5};\n }\n },\n\n \"colorpopup/field\":\n {\n style: function(states) {\n return {\n margin: 2,\n width: 14,\n height: 14,\n backgroundColor: \"background-main\",\n decorator: \"main-dark\"\n };\n }\n },\n\n \"colorpopup/selector-button\": \"button\",\n \"colorpopup/auto-button\": \"button\",\n\n \"colorpopup/preview-pane\": \"groupbox\",\n\n \"colorpopup/current-preview\":\n {\n style: function(state) {\n return {\n height: 20,\n padding: 4,\n marginLeft: 4,\n decorator: \"main-dark\",\n allowGrowX: true\n };\n }\n },\n\n \"colorpopup/selected-preview\":\n {\n style: function(state) {\n return {\n height: 20,\n padding: 4,\n marginRight: 4,\n decorator: \"main-dark\",\n allowGrowX: true\n };\n }\n },\n\n \"colorpopup/colorselector-okbutton\":\n {\n alias: \"button\",\n include: \"button\",\n\n style: function(states) {\n return {icon: \"icon/16/actions/dialog-ok.png\"};\n }\n },\n\n \"colorpopup/colorselector-cancelbutton\":\n {\n alias: \"button\",\n include: \"button\",\n\n style: function(states) {\n return {icon: \"icon/16/actions/dialog-cancel.png\"};\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n COLOR SELECTOR\n ---------------------------------------------------------------------------\n */\n\n \"colorselector\": \"widget\",\n \"colorselector/control-bar\": \"widget\",\n \"colorselector/visual-pane\": \"groupbox\",\n \"colorselector/control-pane\": \"widget\",\n \"colorselector/preset-grid\": \"widget\",\n\n \"colorselector/colorbucket\":\n {\n style: function(states) {\n return {\n decorator: \"main-dark\",\n width: 16,\n height: 16\n };\n }\n },\n\n \"colorselector/preset-field-set\": \"groupbox\",\n \"colorselector/input-field-set\": {\n include: \"groupbox\",\n alias: \"groupbox\",\n style: function() {\n return {paddingTop: 12};\n }\n },\n\n \"colorselector/preview-field-set\": {\n include: \"groupbox\",\n alias: \"groupbox\",\n style: function() {\n return {paddingTop: 12};\n }\n },\n\n \"colorselector/hex-field-composite\": \"widget\",\n \"colorselector/hex-field\": \"textfield\",\n\n \"colorselector/rgb-spinner-composite\": \"widget\",\n \"colorselector/rgb-spinner-red\": \"spinner\",\n \"colorselector/rgb-spinner-green\": \"spinner\",\n \"colorselector/rgb-spinner-blue\": \"spinner\",\n\n \"colorselector/hsb-spinner-composite\": \"widget\",\n \"colorselector/hsb-spinner-hue\": \"spinner\",\n \"colorselector/hsb-spinner-saturation\": \"spinner\",\n \"colorselector/hsb-spinner-brightness\": \"spinner\",\n\n \"colorselector/preview-content-old\":\n {\n style: function(states) {\n return {\n decorator: \"main-dark\",\n width: 50,\n height: 25\n };\n }\n },\n\n \"colorselector/preview-content-new\":\n {\n style: function(states) {\n return {\n decorator: \"main-dark\",\n backgroundColor: \"white\",\n width: 50,\n height: 25\n };\n }\n },\n\n \"colorselector/hue-saturation-field\":\n {\n style: function(states) {\n return {\n decorator: \"main-dark\",\n margin: 5\n };\n }\n },\n\n \"colorselector/brightness-field\":\n {\n style: function(states) {\n return {\n decorator: \"main-dark\",\n margin: [5, 7]\n };\n }\n },\n\n \"colorselector/hue-saturation-pane\": \"widget\",\n \"colorselector/hue-saturation-handle\": \"widget\",\n \"colorselector/brightness-pane\": \"widget\",\n \"colorselector/brightness-handle\": \"widget\",\n\n\n\n /*\n ---------------------------------------------------------------------------\n APPLICATION\n ---------------------------------------------------------------------------\n */\n\n \"app-header\":\n {\n style: function(states) {\n return {\n font: \"headline\",\n textColor: \"text-selected\",\n backgroundColor: \"background-selected-dark\",\n padding: [8, 12]\n };\n }\n },\n\n \"app-header-label\":\n {\n style: function(states) {\n return {paddingTop: 5};\n }\n },\n\n\n \"app-splitpane\": {\n alias: \"splitpane\",\n style: function(states) {\n return {\n padding: [0, 10, 10, 10],\n backgroundColor: \"contrasted-background\"\n };\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Tobias Oetiker (oetiker)\n\n************************************************************************ */\n\nqx.Theme.define(\"osparc.theme.Appearance\", {\n extend: osparc.theme.common.Appearance,\n\n appearances: {\n \"strong-ui\": {\n style: () => {\n return {\n textColor: \"white\",\n backgroundColor: \"product-color\",\n };\n }\n },\n\n \"dragdrop-no-cursor\": {\n style: () => {\n return {\n source: \"\",\n }\n }\n },\n\n \"dragdrop-own-cursor\": {\n style: states => {\n let icon = \"\";\n if (states.move) {\n icon = \"@FontAwesome5Solid/check/14\";\n } else {\n icon = \"@FontAwesome5Solid/times/14\";\n }\n return {\n source: icon,\n position: \"right-top\",\n offset: [12, 0, 0, 12],\n }\n }\n },\n\n \"material-button-invalid\": {},\n \"pb-list\": {\n include: \"list\",\n alias: \"list\",\n style: function(states) {\n return {\n decorator: null,\n padding: 0\n };\n }\n },\n\n \"pb-listitem\": {\n alias: \"material-button\",\n include: \"material-button\",\n style: function(states) {\n const style = {\n decorator: \"pb-listitem\",\n padding: 5,\n backgroundColor: \"pb-study\",\n opacity: 1\n };\n if (states.hovered) {\n style.opacity = 0.5;\n }\n if (states.selected || states.checked) {\n style.opacity = 1;\n style.backgroundColor = \"success\";\n }\n return style;\n }\n },\n\n \"pb-new\": {\n include: \"pb-listitem\",\n style: function(states) {\n const style = {\n backgroundColor: \"pb-new\"\n };\n if (states.focused || states.selected || states.checked) {\n style.backgroundColor = \"default-button-active-background\";\n }\n if (states.locked || states.disabled) {\n style.cursor = \"not-allowed\";\n style.backgroundColor = \"pb-locked\";\n }\n return style;\n }\n },\n\n \"pb-study\": {\n include: \"pb-listitem\",\n style: function(states) {\n const style = {\n backgroundColor: \"pb-study\"\n };\n if (states.focused || states.selected || states.checked) {\n style.backgroundColor = \"success\";\n }\n return style;\n }\n },\n\n \"pb-template\": {\n include: \"pb-listitem\",\n style: function(states) {\n const style = {\n backgroundColor: \"pb-template\"\n };\n return style;\n }\n },\n\n \"pb-dynamic\": {\n include: \"pb-listitem\",\n style: function(states) {\n const style = {\n backgroundColor: \"pb-dynamic\"\n };\n return style;\n }\n },\n\n \"pb-computational\": {\n include: \"pb-listitem\",\n style: function(states) {\n const style = {\n backgroundColor: \"pb-computational\"\n };\n return style;\n }\n },\n\n \"widget/selected-file-layout/download-button/icon\": {},\n \"widget/selected-file-layout/delete-button/icon\": {},\n \"pb-dynamic/menu-button/icon\": {},\n \"pb-template/menu-button/icon\": {},\n \"pb-study/menu-button/icon\": {},\n \"pb-computational/menu-button/icon\": {\n alias: \"image\"\n },\n\n \"pb-study/lock-status\": {\n style: function() {\n return {\n decorator: \"pb-locked\",\n cursor: \"disabled\"\n };\n }\n },\n\n \"pb-template/lock-status\": {\n style: function() {\n return {\n decorator: \"pb-locked\",\n cursor: \"disabled\"\n };\n }\n },\n\n \"pb-computational/lock-status\": {\n style: function() {\n return {\n decorator: \"pb-locked\",\n cursor: \"disabled\"\n };\n }\n },\n\n \"pb-dynamic/lock-status\": {\n style: function() {\n return {\n decorator: \"pb-locked\",\n cursor: \"disabled\"\n };\n }\n },\n\n \"selectable\": {\n include: \"material-button\",\n style: function(states) {\n const style = {\n decorator: \"no-radius-button\",\n padding: 5,\n backgroundColor: \"transparent\"\n };\n if (states.hovered) {\n style.backgroundColor = \"background-main-2\";\n }\n if (states.selected || states.checked) {\n style.backgroundColor = \"background-selected\";\n }\n return style;\n }\n },\n\n \"none\": {},\n\n \"floating-menu\": {\n style: function() {\n return {\n backgroundColor: \"background-main\",\n padding: 4,\n decorator: \"border-simple\"\n }\n }\n },\n\n /*\n ---------------------------------------------------------------------------\n WINDOW-SMALL-CAP CHOOSER\n ---------------------------------------------------------------------------\n */\n \"node-ui-cap\": {\n include: \"window\", // get all the settings from window\n alias: \"window\", // redirect kids to window/kid\n style: function(states) {\n return {\n backgroundColor: states.selected ? \"node-selected-background\" : \"node-background\",\n textColor: states.selected ? \"text-selected\" : \"text\",\n decorator: states.maximized ? \"node-ui-cap-maximized\" : \"node-ui-cap\"\n };\n }\n },\n\n \"node-ui-cap/captionbar\": {\n include: \"window/captionbar\", // load defaults from window captionbar\n alias: \"window/captionbar\", // redirect kids\n style: function(states) {\n return {\n padding: [0, 3, 0, 3],\n minHeight: 20,\n backgroundColor: \"transparent\",\n decorator: \"workbench-small-cap-captionbar\"\n };\n }\n },\n\n \"node-ui-cap/title\": {\n include: \"window/title\",\n style: function(states) {\n return {\n marginLeft: 2,\n font: \"text-12\",\n textColor: states.selected ? \"text-selected\" : \"text\"// Dark theme text color\n };\n }\n },\n\n \"node-ui-cap/minimize-button\": {\n alias: \"window/minimize-button\",\n include: \"window/minimize-button\",\n style: function(states) {\n return {\n icon: osparc.theme.common.Image.URLS[\"window-minimize\"]+\"/14\"\n };\n }\n },\n\n \"node-ui-cap/restore-button\": {\n alias: \"window/restore-button\",\n include: \"window/restore-button\",\n style: function(states) {\n return {\n icon: osparc.theme.common.Image.URLS[\"window-restore\"]+\"/14\"\n };\n }\n },\n\n \"node-ui-cap/maximize-button\": {\n alias: \"window/maximize-button\",\n include: \"window/maximize-button\",\n style: function(states) {\n return {\n icon: osparc.theme.common.Image.URLS[\"window-maximize\"]+\"/14\"\n };\n }\n },\n\n \"node-ui-cap/close-button\": {\n alias: \"window/close-button\",\n include: \"window/close-button\",\n style: function(states) {\n return {\n icon: osparc.theme.common.Image.URLS[\"window-close\"]+\"/14\"\n };\n }\n },\n\n \"node-ui-cap/progress\": \"progressbar\",\n\n \"service-window\": {\n include: \"window\",\n alias: \"window\",\n style: state => ({\n decorator: state.maximized ? \"service-window-maximized\" : \"service-window\"\n })\n },\n \"service-window/captionbar\": {\n include: \"window/captionbar\",\n style: state => ({\n backgroundColor: \"transparent\",\n decorator: \"workbench-small-cap-captionbar\"\n })\n },\n \"info-service-window\": {\n include: \"service-window\",\n alias: \"service-window\",\n style: state => ({\n maxHeight: state.maximized ? null : 500\n })\n },\n\n \"dialog-window-content\": {\n style: () => ({\n backgroundColor: \"transparent_overlay\"\n })\n },\n /*\n ---------------------------------------------------------------------------\n PanelView\n ---------------------------------------------------------------------------\n */\n \"panelview\": {\n style: state => ({\n decorator: \"panelview\"\n })\n },\n \"panelview/title\": {\n style: state => ({\n font: \"title-14\",\n cursor: \"pointer\"\n })\n },\n \"panelview/caret\": {\n style: state => ({\n cursor: \"pointer\"\n })\n },\n \"panelview-titlebar\": {\n style: state => ({\n height: 24,\n padding: [0, 5],\n alignY: \"middle\"\n })\n },\n \"panelview-content\": {\n style: state => ({\n decorator: \"panelview-content\",\n margin: [0, 4, 4, 4]\n })\n },\n\n /*\n ---------------------------------------------------------------------------\n Toolbar\n ---------------------------------------------------------------------------\n */\n \"toolbar-textfield\": {\n include: \"form-input\",\n style: state => ({\n backgroundColor: \"transparent\",\n marginTop: 8\n })\n },\n \"toolbar-label\": {\n style: state => ({\n marginTop: 11,\n marginRight: 3\n })\n },\n \"textfilter\": {},\n \"textfilter/textfield\": \"toolbar-textfield\",\n\n \"autocompletefilter\": {},\n \"autocompletefilter/autocompletefield/textfield\": {\n include: \"toolbar-textfield\",\n style: state => ({\n paddingRight: 15\n })\n },\n \"autocompletefilter/autocompletefield/button\": {},\n\n \"toolbar-selectbox\": {\n include: \"textfield\",\n alias: \"selectbox\",\n style: () => ({\n margin: [7, 10],\n paddingLeft: 5\n })\n },\n \"toolbar-selectbox/arrow\": {\n include: \"selectbox/arrow\",\n style: style => ({\n cursor: style.disabled ? \"auto\" : \"pointer\"\n })\n },\n \"toolbar-selectbox/list\": {\n include: \"selectbox/list\",\n style: () => ({\n padding: 0\n })\n },\n\n /*\n ---------------------------------------------------------------------------\n PROGRESSBAR\n ---------------------------------------------------------------------------\n */\n\n \"progressbar\": {\n style: function(states) {\n return {\n decorator: \"progressbar\",\n padding: 1,\n backgroundColor: \"progressbar-runner\",\n margin: [7, 10],\n width: 200,\n height: 20\n };\n }\n },\n\n \"progressbar/progress\": {\n style: function(states) {\n return {\n backgroundColor: states.disabled ? \"progressbar-disabled\" : \"progressbar\"\n };\n }\n },\n\n /*\n ---------------------------------------------------------------------------\n Splitpane\n ---------------------------------------------------------------------------\n */\n \"splitpane/splitter\": {\n style: state => ({\n visible: false\n })\n },\n\n \"splitpane/collapsible-view-left/collapse-button\": {},\n \"splitpane/collapsible-view-right/collapse-button\": {},\n\n /*\n ---------------------------------------------------------------------------\n NodePorts\n ---------------------------------------------------------------------------\n */\n \"node-ports\": {\n style: state => ({\n backgroundColor: \"background-main-2\"\n })\n },\n\n /*\n ---------------------------------------------------------------------------\n ServiceBrowser\n ---------------------------------------------------------------------------\n */\n \"service-browser\": {\n style: state => ({\n padding: 8,\n decorator: \"service-browser\"\n })\n },\n\n /*\n ---------------------------------------------------------------------------\n Input Fields\n ---------------------------------------------------------------------------\n */\n\n \"form-input\": {\n style: function(states) {\n const style = {\n decorator: \"form-input\",\n padding: 5,\n backgroundColor: \"input_background\"\n };\n if (states.hovered) {\n style.backgroundColor = \"info\";\n }\n if (states.focused) {\n style.decorator = \"form-input-focused\";\n }\n if (states.disabled) {\n style.decorator = \"form-input-disabled\";\n style.backgroundColor = \"default-button-disabled-background\";\n }\n return style;\n }\n },\n\n \"form-password\": {\n include: \"form-input\",\n style: function(states) {\n const style = {\n decorator: \"form-input\",\n padding: 5,\n backgroundColor: \"input_background\"\n };\n if (states.focused) {\n style.decorator = \"form-input-focused\";\n }\n return style;\n }\n },\n\n \"material-textfield\": {\n style: function(states) {\n var textColor;\n\n if (states.disabled) {\n textColor = \"text-disabled\";\n } else if (states.showingPlaceholder) {\n textColor = \"text-placeholder\";\n } else {\n textColor = undefined;\n }\n\n var decorator;\n var padding;\n decorator = \"form-input\";\n padding = [3, 5, 4, 5];\n if (states.readonly) {\n decorator += \"-disabled\";\n padding = [3, 5, 5, 5];\n } else if (states.disabled) {\n decorator += \"-disabled\";\n } else if (states.focused) {\n decorator += \"-focused\";\n if (states.invalid) {\n decorator += \"-invalid\";\n }\n padding = [3, 5, 4, 5];\n } else if (states.invalid) {\n decorator += \"-invalid\";\n }\n\n return {\n decorator: decorator,\n padding: padding,\n textColor: textColor,\n backgroundColor: states.disabled ? \"input_background_disable\" : \"input_background\"\n };\n }\n },\n\n /*\n ---------------------------------------------------------------------------\n Buttons\n ---------------------------------------------------------------------------\n */\n \"widget/reset-button\": {},\n\n \"form-button\": {\n include: \"strong-ui\",\n style: function(states) {\n const style = {\n decorator: \"form-button\",\n cursor: \"pointer\",\n padding: 5,\n };\n if (states.hovered) {\n style.decorator = \"form-button-hovered\";\n style.textColor = \"default-button-text-action\";\n style.backgroundColor = \"default-button-hover-background\";\n }\n if (states.focused) {\n style.decorator = \"form-button-focused\";\n style.backgroundColor = \"default-button-focus-background\";\n }\n if (states.disabled) {\n style.cursor = \"not-allowed\";\n style.decorator = \"form-button-disabled\";\n style.textColor = \"default-button-disabled\";\n style.backgroundColor = \"default-button-disabled-background\";\n }\n if (states.checked || states.selected) {\n style.decorator = \"form-button-checked\";\n }\n return style;\n }\n },\n\n \"form-button-outlined\": {\n include: \"form-button\",\n style: function(states) {\n const style = {\n decorator: \"form-button-outlined\",\n cursor: \"pointer\",\n padding: 5,\n textColor: \"default-button-text-outline\",\n backgroundColor: \"default-button-background\"\n };\n if (states.hovered) {\n style.decorator = \"form-button-hovered\";\n style.textColor = \"default-button-text-action\";\n style.backgroundColor = \"default-button-hover-background\";\n }\n if (states.focused || states.active) {\n style.decorator = \"form-button-focused\";\n style.backgroundColor = \"default-button-focus-background\";\n }\n if (states.disabled) {\n style.cursor = \"not-allowed\";\n style.decorator = \"form-button-disabled\";\n style.textColor = \"default-button-disabled\";\n style.backgroundColor = \"default-button-disabled-background\";\n }\n if (states.checked || states.selected) {\n style.decorator = \"form-button-checked\";\n }\n return style;\n }\n },\n\n \"fab-button\": {\n include: \"form-button\",\n style: function(states) {\n const style = {\n decorator: \"fab-button\",\n cursor: \"pointer\",\n padding: 5,\n textColor: \"fab_text\",\n backgroundColor: \"fab-background\",\n center: true\n };\n if (states.hovered) {\n style.decorator = \"form-button-hovered\";\n }\n if (states.focused) {\n style.decorator = \"form-button-focused\";\n }\n if (states.active) {\n style.decorator = \"form-button-active\";\n }\n if (states.disabled) {\n style.cursor = \"not-allowed\";\n style.decorator = \"form-button-disabled\";\n }\n if (states.checked || states.selected) {\n style.decorator = \"form-button-checked\";\n }\n return style;\n }\n },\n\n \"thumbnail\": {\n include: \"form-button\",\n style: function(states) {\n const style = {\n decorator: \"thumbnail\",\n cursor: \"pointer\",\n padding: 5,\n textColor: \"fab_text\",\n backgroundColor: \"fab-background\",\n center: true\n };\n if (states.hovered) {\n style.decorator = \"form-button-hovered\";\n }\n if (states.focused) {\n style.decorator = \"form-button-focused\";\n }\n if (states.active) {\n style.decorator = \"form-button-active\";\n }\n if (states.disabled) {\n style.cursor = \"not-allowed\";\n style.decorator = \"form-button-disabled\";\n }\n if (states.checked || states.selected) {\n style.decorator = \"form-button-checked\";\n }\n return style;\n }\n },\n\n \"form-button-text\": {\n style: function(states) {\n const style = {\n decorator: \"form-button-text\",\n center: true,\n cursor: \"pointer\",\n textColor: \"link\",\n padding: 5,\n alignY: \"middle\",\n alignX: \"center\",\n backgroundColor: \"transparent\"\n };\n if (states.hovered) {\n style.textColor = \"contrasted-text-dark\";\n }\n if (states.focused) {\n style.textColor = \"default-button-focus\";\n }\n if (states.disabled) {\n style.cursor = \"not-allowed\";\n style.textColor = \"default-button-disabled\";\n }\n return style;\n }\n },\n\n \"menu-wider\": {\n include: \"menu\",\n style: () => {\n return {\n decorator: \"border-simple\",\n font: \"text-14\",\n padding: 4,\n };\n }\n },\n\n \"menu-button\": {\n alias: \"atom\",\n\n style: states => {\n return {\n decorator: \"rounded\",\n cursor: states.disabled ? \"not-allowed\" : \"pointer\",\n backgroundColor: states.selected || states.hovered ? \"pb-new\" : undefined,\n textColor: \"text\",\n padding: [4, 8]\n }\n }\n },\n\n \"link-button\": {\n include: \"material-button\",\n style: state => ({\n backgroundColor: \"transparent\",\n textColor: state.hovered ? \"text\" : \"text-darker\"\n })\n },\n\n \"xl-button\": {\n include: \"material-button\",\n alias: \"material-button\",\n style: state => ({\n allowStretchY: false,\n allowStretchX: false,\n minHeight: 50,\n center: true\n })\n },\n\n \"xl-button/label\": {\n include: \"material-button/label\",\n style: state => ({\n font: \"title-16\"\n })\n },\n\n \"lg-button\": {\n include: \"material-button\",\n alias: \"material-button\",\n style: state => ({\n allowStretchY: false,\n allowStretchX: false,\n minHeight: 35,\n center: true\n })\n },\n\n \"lg-button/label\": {\n include: \"material-button/label\",\n style: state => ({\n font: \"text-16\"\n })\n },\n\n \"md-button\": {\n include: \"material-button\",\n alias: \"material-button\",\n style: state => ({\n allowStretchY: false,\n allowStretchX: false,\n minHeight: 25,\n center: true\n })\n },\n\n \"md-button/label\": {\n include: \"material-button/label\",\n style: state => ({\n font: \"text-14\"\n })\n },\n\n \"toolbar-button\": {\n alias: \"atom\",\n style: function(states) {\n // set the margin\n let textColor = \"default-button-text-outline\";\n let decorator = \"form-button-outlined\";\n let backgroundColor = \"default-button-background\";\n let cursor = \"pointer\";\n let margin = [7, 0, 7, 10];\n if (states.left || states.middle || states.right) {\n margin = [7, 0, 7, 3];\n }\n if (states.hovered) {\n textColor = \"default-button-text-action\";\n decorator = \"form-button-hovered\";\n backgroundColor = \"default-button-hover-background\";\n }\n if (states.pressed) {\n textColor = \"default-button-text-action\";\n decorator = \"form-button-active\";\n backgroundColor = \"default-button-active-background\";\n }\n if (states.focused) {\n textColor = \"default-button-focus\";\n decorator = \"form-button-focused\";\n backgroundColor = \"default-button-focus-background\";\n }\n if (states.selected || states.checked) {\n textColor = \"default-button-disabled\";\n cursor = \"default\";\n decorator = \"form-button-checked\";\n backgroundColor = \"default-button-disabled-background\";\n }\n\n decorator;\n\n return {\n textColor: textColor,\n cursor: cursor,\n decorator: decorator,\n margin: margin,\n padding: 5,\n backgroundColor: backgroundColor\n };\n }\n },\n\n \"toolbar-splitbutton/button\": {\n alias: \"toolbar-button\",\n include: \"toolbar-button\",\n style: function(states) {\n // set the margin\n var margin = [7, 0, 7, 10];\n if (states.left || states.middle || states.right) {\n margin = [7, 0, 7, 3];\n }\n var decorator = \"form-button-outlined\";\n if (states.hovered || states.pressed || states.focused || states.checked) {\n decorator += \"-hovered\";\n }\n decorator += \"-left\";\n\n return {\n decorator: decorator,\n margin: margin\n };\n }\n },\n\n \"toolbar-splitbutton/arrow\": {\n alias: \"image\",\n include: \"toolbar-button\",\n style: function(states) {\n // set the margin\n var margin = [7, 10, 7, 0];\n if (states.left || states.middle || states.right) {\n margin = [7, 3, 7, 0];\n }\n let decorator = \"form-button-outlined\";\n if (states.hovered || states.pressed || states.focused) {\n decorator += \"-hovered\";\n }\n\n if (states.checked || states.selected) {\n decorator += \"-checked\";\n }\n\n decorator += \"-right\";\n\n return {\n icon: osparc.theme.common.Image.URLS[\"arrow-down\"],\n decorator: decorator,\n margin: margin\n };\n }\n },\n\n \"toolbar-xl-button\": {\n include: \"toolbar-button\",\n alias: \"toolbar-button\",\n style: state => ({\n allowStretchY: false,\n allowStretchX: false,\n minHeight: 50,\n center: true\n })\n },\n\n \"toolbar-xl-button/label\": {\n include: \"toolbar-button/label\",\n style: state => ({\n font: \"title-16\"\n })\n },\n\n \"toolbar-lg-button\": {\n include: \"toolbar-button\",\n alias: \"toolbar-button\",\n style: state => ({\n allowStretchY: false,\n allowStretchX: false,\n minHeight: 35,\n center: true\n })\n },\n\n \"toolbar-lg-button/label\": {\n include: \"toolbar-button/label\",\n style: state => ({\n font: \"text-16\"\n })\n },\n\n \"toolbar-md-button\": {\n include: \"toolbar-button\",\n alias: \"toolbar-button\",\n style: state => ({\n allowStretchY: false,\n allowStretchX: false,\n minHeight: 25,\n center: true\n })\n },\n\n \"toolbar-md-button/label\": {\n include: \"toolbar-button/label\",\n style: state => ({\n font: \"text-14\"\n })\n },\n\n \"no-shadow-button\": {\n alias: \"atom\",\n style: function(states) {\n var decorator = \"toolbar-button\";\n if (states.hovered || states.pressed || states.checked) {\n decorator += \"-hovered\";\n }\n return {\n cursor: states.disabled ? undefined : \"pointer\",\n decorator: decorator,\n textColor: \"material-button-text\",\n padding: [3, 5]\n };\n }\n },\n\n \"strong-button\": {\n include: \"form-button\"\n },\n\n \"warning-button\": {\n include: \"form-button\",\n style: state => ({\n decorator: state.hovered || state.focused ? \"form-button-warning-hover\" : \"form-button-warning\",\n backgroundColor: state.hovered || state.focused ? \"default-button-hover-background\" : \"warning\",\n textColor: \"black\",\n })\n },\n\n \"danger-button\": {\n include: \"form-button\",\n style: state => ({\n decorator: state.hovered || state.focused ? \"form-button-danger-hover\" : \"form-button-danger\",\n backgroundColor: state.hovered || state.focused ? \"default-button-hover-background\" : \"error\",\n textColor: \"black\",\n })\n },\n\n /*\n ---------------------------------------------------------------------------\n TabButtons\n ---------------------------------------------------------------------------\n */\n\n \"tab-button\": {\n include: \"form-button\",\n style: function(states) {\n const style = {\n decorator: \"tab-button\",\n cursor: \"pointer\",\n padding: 5,\n textColor: \"white\",\n backgroundColor: \"default-button-background\"\n };\n if (states.hovered) {\n style.decorator = \"form-button-hovered\";\n }\n if (states.focused) {\n style.decorator = \"form-button-focused\";\n }\n if (states.active) {\n style.decorator = \"tab-button-selected\";\n }\n if (states.disabled) {\n style.cursor = \"not-allowed\";\n style.decorator = \"form-button-disabled\";\n style.textColor = \"default-button-disabled\";\n }\n if (states.checked || states.selected) {\n style.decorator = \"tab-button-selected\";\n }\n return style;\n }\n },\n\n /*\n ---------------------------------------------------------------------------\n FlashMessage\n ---------------------------------------------------------------------------\n */\n \"flash\": {\n style: () => ({\n padding: 12,\n backgroundColor: \"background-main-3\",\n decorator: \"flash\"\n })\n },\n \"flash/badge\": {\n style: () => ({\n decorator: \"flash-badge\"\n })\n },\n\n /*\n ---------------------------------------------------------------------------\n GroupBox\n ---------------------------------------------------------------------------\n */\n \"settings-groupbox\": \"groupbox\",\n \"settings-groupbox/frame\": {\n include: \"groupbox/frame\",\n style: state => ({\n decorator: \"no-border\"\n })\n },\n \"settings-groupbox/legend\": {\n include: \"groupbox/legend\",\n style: state => ({\n font: \"title-16\"\n })\n },\n\n /*\n ---------------------------------------------------------------------------\n Hints\n ---------------------------------------------------------------------------\n */\n \"hint\": {\n style: state => ({\n backgroundColor: \"hint-background\",\n decorator: \"hint\",\n padding: 5\n })\n },\n\n /*\n ---------------------------------------------------------------------------\n Chip\n ---------------------------------------------------------------------------\n */\n \"chip\": {\n include: \"atom\",\n alias: \"atom\",\n style: state => ({\n decorator: \"chip\",\n backgroundColor: \"background-main-1\",\n padding: [3, 5]\n })\n },\n\n \"chip/label\": {\n include: \"atom/label\",\n style: state => ({\n font: \"text-10\"\n })\n },\n\n /*\n ---------------------------------------------------------------------------\n Dashboard\n ---------------------------------------------------------------------------\n */\n \"dashboard\": {\n include: \"tabview\",\n alias: \"tabview\"\n },\n\n \"dashboard/pane\": {\n style: state => ({\n padding: [0, 0, 0, 15]\n })\n },\n\n \"dashboard/bar/content\": {\n style: state => ({\n width: 120,\n paddingTop: 15\n })\n },\n\n \"dashboard-page\": {\n include: \"tabview-page\",\n alias: \"tabview-page\"\n },\n\n \"dashboard-page/button\": {\n include: \"tabview-page/button\",\n alias: \"tabview-page/button\",\n style: state => ({\n font: state.checked ? \"title-16\" : \"text-16\"\n })\n },\n\n /*\n ---------------------------------------------------------------------------\n EditLabel\n ---------------------------------------------------------------------------\n */\n \"editlabel-label\": {\n include: \"label\",\n style: state => ({\n decorator: state.hovered && state.editable ? \"border-editable\" : \"rounded\",\n marginLeft: state.hovered && state.editable ? 0 : 1,\n padding: 5,\n cursor: state.editable ? \"text\" : \"auto\",\n backgroundColor: \"input_background\"\n })\n },\n\n \"editlabel-input\": {\n include: \"textfield\",\n style: () => ({\n padding: 5,\n minWidth: 120,\n backgroundColor: \"transparent\"\n })\n },\n\n /*\n ---------------------------------------------------------------------------\n Tooltip\n ---------------------------------------------------------------------------\n */\n \"tooltip\": {\n style: state => ({\n decorator: \"tooltip\",\n padding: [5, 10],\n // showTimeout is themeable so it can be tuned\n // it was defaulted to 700 which was too short\n showTimeout: 2000,\n hideTimeout: 6000,\n })\n },\n\n /*\n ---------------------------------------------------------------------------\n Tag\n ---------------------------------------------------------------------------\n */\n \"tag\": {\n include: \"atom/label\",\n style: state => ({\n decorator: \"tag\",\n padding: [1, 5]\n })\n },\n \"tagitem\": {\n style: () => ({\n decorator: \"tagitem\",\n padding: 5\n })\n },\n \"tagitem/colorbutton\": {\n include: \"material-button\",\n alias: \"material-button\",\n style: () => ({\n decorator: \"tagitem-colorbutton\"\n })\n },\n \"tagbutton\": {\n include: \"material-button\",\n alias: \"material-button\",\n style: () => ({\n decorator: \"tagbutton\"\n })\n },\n\n \"margined-layout\": {\n style: () => ({\n margin: [7, 10]\n })\n },\n\n \"chip-button\": {\n include: \"material-button\",\n style: () => ({\n iconPosition: \"right\",\n textColor: \"text\",\n alignY: \"middle\",\n paddingRight: 6,\n paddingLeft: 6,\n maxHeight: 26,\n maxWidth: 260,\n decorator: \"chip-button\"\n })\n },\n\n \"filter-toggle-button\": {\n include: \"material-button\",\n alias: \"material-button\",\n style: states => ({\n font: \"text-13\",\n textColor: \"text\",\n padding: 6,\n gap: 8,\n decorator: (states.hovered || states.pressed || states.checked) ? \"filter-toggle-button-selected\" : \"filter-toggle-button\"\n })\n },\n\n \"filter-toggle-button/label\": {\n include: \"material-button/label\",\n style: () => ({\n textColor: \"text\"\n })\n },\n\n \"filter-toggle-button/icon\": {\n include: \"material-button/icon\",\n style: () => ({\n width: 25,\n scale: true\n })\n },\n\n /*\n ---------------------------------------------------------------------------\n virtual overrides\n ---------------------------------------------------------------------------\n */\n\n \"virtual-tree\": {\n include: \"tree\",\n alias: \"tree\",\n style: function(states) {\n return {\n itemHeight: 30\n };\n }\n },\n\n /*\n ---------------------------------------------------------------------------\n jsonforms\n ---------------------------------------------------------------------------\n */\n \"form-array-container\": {\n style: () => ({\n padding: 10,\n decorator: \"border-editable\"\n })\n },\n\n /*\n ---------------------------------------------------------------------------\n Appmotion\n ---------------------------------------------------------------------------\n */\n \"appmotion-button\": {\n include: \"lg-button\",\n alias: \"lg-button\",\n style: state => {\n const style = {\n padding: [10, 25]\n };\n if (state.disabled) {\n style.backgroundColor = \"default-button-disabled-background\";\n }\n return style;\n }\n },\n\n \"appmotion-button-action\": {\n include: \"appmotion-button\",\n alias: \"appmotion-button\",\n style: state => {\n const style = {\n backgroundColor: \"strong-main\"\n };\n if (state.disabled) {\n style.backgroundColor = \"default-button-disabled-background\";\n }\n return style;\n }\n },\n\n \"appmotion-button/label\": {\n include: \"lg-button/label\",\n style: state => ({\n font: \"title-16\"\n })\n },\n\n \"appmotion-buy-credits-input\": {\n include: \"textfield\",\n style: state => ({\n backgroundColor: state.disabled ? \"transparent\" : \"background-main-1\",\n padding: [10, 15],\n font: \"text-18\",\n decorator: \"appmotion-buy-credits-input\"\n })\n },\n\n \"appmotion-buy-credits-select\": {\n include: \"selectbox\",\n alias: \"selectbox\",\n style: state => ({\n backgroundColor: state.disabled ? \"transparent\" : \"background-main-1\",\n padding: [10, 15],\n font: \"text-14\",\n decorator: \"appmotion-buy-credits-input\"\n })\n },\n\n \"appmotion-buy-credits-select/list\": {\n include: \"selectbox/list\",\n alias: \"selectbox/list\",\n style: state => ({\n backgroundColor: \"background-main-1\"\n })\n },\n\n \"appmotion-buy-credits-spinner\": {\n include: \"spinner\",\n alias: \"spinner\"\n },\n\n \"appmotion-buy-credits-spinner/textfield\": {\n include: \"appmotion-buy-credits-input\",\n alias: \"appmotion-buy-credits-input\",\n style: state => ({\n font: \"text-14\"\n })\n },\n\n \"appmotion-buy-credits-checkbox\": {\n include: \"checkbox\",\n alias: \"checkbox\",\n style: state => ({\n icon: state.checked ? \"@MaterialIcons/check_box/20\" : \"@MaterialIcons/check_box_outline_blank/20\"\n })\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Martin Wittemann (martinwittemann)\n * Sebastian Werner (wpbasti)\n * Jonathan Weiß (jonathan_rass)\n\n************************************************************************ */\n\n/**\n * Basically a text fields which allows a selection from a list of\n * preconfigured options. Allows custom user input. Public API is value\n * oriented.\n *\n * To work with selections without custom input the ideal candidates are\n * the {@link SelectBox} or the {@link RadioGroup}.\n *\n * @childControl textfield {qx.ui.form.TextField} textfield component of the combobox\n * @childControl button {qx.ui.form.Button} button to open the list popup\n * @childControl list {qx.ui.form.List} list inside the popup\n */\nqx.Class.define(\"qx.ui.form.ComboBox\",\n{\n extend : qx.ui.form.AbstractSelectBox,\n implement : [qx.ui.form.IStringForm],\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n construct : function()\n {\n this.base(arguments);\n\n var textField = this._createChildControl(\"textfield\");\n this._createChildControl(\"button\");\n\n this.addListener(\"tap\", this._onTap);\n\n // forward the focusin and focusout events to the textfield. The textfield\n // is not focusable so the events need to be forwarded manually.\n this.addListener(\"focusin\", function(e) {\n textField.fireNonBubblingEvent(\"focusin\", qx.event.type.Focus);\n }, this);\n\n this.addListener(\"focusout\", function(e) {\n textField.fireNonBubblingEvent(\"focusout\", qx.event.type.Focus);\n }, this);\n },\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n // overridden\n appearance :\n {\n refine : true,\n init : \"combobox\"\n },\n\n\n /**\n * String value which will be shown as a hint if the field is all of:\n * unset, unfocused and enabled. Set to null to not show a placeholder\n * text.\n */\n placeholder :\n {\n check : \"String\",\n nullable : true,\n apply : \"_applyPlaceholder\"\n }\n },\n\n\n\n /*\n *****************************************************************************\n EVENTS\n *****************************************************************************\n */\n\n events :\n {\n /** Whenever the value is changed this event is fired\n *\n * Event data: The new text value of the field.\n */\n \"changeValue\" : \"qx.event.type.Data\"\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n __preSelectedItem : null,\n __onInputId : null,\n\n\n // property apply\n _applyPlaceholder : function(value, old) {\n this.getChildControl(\"textfield\").setPlaceholder(value);\n },\n\n /*\n ---------------------------------------------------------------------------\n WIDGET API\n ---------------------------------------------------------------------------\n */\n\n // overridden\n _createChildControlImpl : function(id, hash)\n {\n var control;\n\n switch(id)\n {\n case \"textfield\":\n control = new qx.ui.form.TextField();\n control.setFocusable(false);\n control.addState(\"inner\");\n control.addListener(\"changeValue\", this._onTextFieldChangeValue, this);\n control.addListener(\"blur\", this.close, this);\n this._add(control, {flex: 1});\n break;\n\n case \"button\":\n control = new qx.ui.form.Button();\n control.setFocusable(false);\n control.setKeepActive(true);\n control.addState(\"inner\");\n control.addListener(\"execute\", this.toggle, this);\n this._add(control);\n break;\n\n case \"list\":\n // Get the list from the AbstractSelectBox\n control = this.base(arguments, id);\n\n // Change selection mode\n control.setSelectionMode(\"single\");\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n\n // overridden\n /**\n * @lint ignoreReferenceField(_forwardStates)\n */\n _forwardStates : {\n focused : true,\n invalid : true\n },\n\n\n // overridden\n tabFocus : function()\n {\n var field = this.getChildControl(\"textfield\");\n\n field.getFocusElement().focus();\n field.selectAllText();\n },\n\n\n // overridden\n focus : function()\n {\n this.base(arguments);\n this.getChildControl(\"textfield\").getFocusElement().focus();\n },\n\n\n // interface implementation\n setValue : function(value)\n {\n var textfield = this.getChildControl(\"textfield\");\n if (textfield.getValue() == value) {\n return;\n }\n\n // Apply to text field\n textfield.setValue(value);\n },\n\n\n // interface implementation\n getValue : function() {\n return this.getChildControl(\"textfield\").getValue();\n },\n\n\n // interface implementation\n resetValue : function() {\n this.getChildControl(\"textfield\").setValue(null);\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n EVENT LISTENERS\n ---------------------------------------------------------------------------\n */\n\n // overridden\n _onKeyPress : function(e)\n {\n var popup = this.getChildControl(\"popup\");\n var iden = e.getKeyIdentifier();\n\n if (iden == \"Down\" && e.isAltPressed())\n {\n this.getChildControl(\"button\").addState(\"selected\");\n this.toggle();\n e.stopPropagation();\n }\n else if (iden == \"Enter\")\n {\n if (popup.isVisible())\n {\n this._setPreselectedItem();\n this.resetAllTextSelection();\n this.close();\n e.stop();\n }\n }\n else if (popup.isVisible())\n {\n this.base(arguments, e);\n }\n },\n\n\n /**\n * Toggles the popup's visibility.\n *\n * @param e {qx.event.type.Pointer} Pointer tap event\n */\n _onTap : function(e) {\n this.close();\n },\n\n\n // overridden\n _onListPointerDown : function(e) {\n this._setPreselectedItem();\n },\n\n\n /**\n * Apply pre-selected item\n */\n _setPreselectedItem: function() {\n if (this.__preSelectedItem)\n {\n var label = this.__preSelectedItem.getLabel();\n\n if (this.getFormat()!= null) {\n label = this.getFormat().call(this, this.__preSelectedItem);\n }\n\n // check for translation\n if (label && label.translate) {\n label = label.translate();\n }\n this.setValue(label);\n this.__preSelectedItem = null;\n }\n },\n\n\n // overridden\n _onListChangeSelection : function(e)\n {\n var current = e.getData();\n if (current.length > 0)\n {\n // Ignore quick context (e.g. pointerover)\n // and configure the new value when closing the popup afterwards\n var list = this.getChildControl(\"list\");\n var ctx = list.getSelectionContext();\n if (ctx == \"quick\" || ctx == \"key\" )\n {\n this.__preSelectedItem = current[0];\n }\n else\n {\n var label = current[0].getLabel();\n\n if (this.getFormat()!= null) {\n label = this.getFormat().call(this, current[0]);\n }\n\n // check for translation\n if (label && label.translate) {\n label = label.translate();\n }\n this.setValue(label);\n this.__preSelectedItem = null;\n }\n }\n },\n\n\n // overridden\n _onPopupChangeVisibility : function(e)\n {\n this.base(arguments, e);\n\n // Synchronize the list with the current value on every\n // opening of the popup. This is useful because through\n // the quick selection mode, the list may keep an invalid\n // selection on close or the user may enter text while\n // the combobox is closed and reopen it afterwards.\n var popup = this.getChildControl(\"popup\");\n if (popup.isVisible())\n {\n var list = this.getChildControl(\"list\");\n var value = this.getValue();\n var item = null;\n\n if (value) {\n item = list.findItem(value);\n }\n\n if (item) {\n list.setSelection([item]);\n } else {\n list.resetSelection();\n }\n }\n else\n {\n // When closing the popup text should selected and field should\n // have the focus. Identical to when reaching the field using the TAB key.\n //\n // Only focus if popup was visible before. Fixes [BUG #4453].\n if (e.getOldData() == \"visible\") {\n this.tabFocus();\n }\n }\n\n // In all cases: Remove focused state from button\n this.getChildControl(\"button\").removeState(\"selected\");\n },\n\n\n /**\n * Reacts on value changes of the text field and syncs the\n * value to the combobox.\n *\n * @param e {qx.event.type.Data} Change event\n */\n _onTextFieldChangeValue : function(e)\n {\n var value = e.getData();\n\n var list = this.getChildControl(\"list\");\n if (value != null) {\n // Select item when possible\n var item = list.findItem(value, false);\n if (item) {\n list.setSelection([item]);\n } else {\n list.resetSelection();\n }\n } else {\n list.resetSelection();\n }\n\n // Fire event\n this.fireDataEvent(\"changeValue\", value, e.getOldData());\n },\n\n\n /*\n ---------------------------------------------------------------------------\n TEXTFIELD SELECTION API\n ---------------------------------------------------------------------------\n */\n\n /**\n * Returns the current selection.\n * This method only works if the widget is already created and\n * added to the document.\n *\n * @return {String|null}\n */\n getTextSelection : function() {\n return this.getChildControl(\"textfield\").getTextSelection();\n },\n\n\n /**\n * Returns the current selection length.\n * This method only works if the widget is already created and\n * added to the document.\n *\n * @return {Integer|null}\n */\n getTextSelectionLength : function() {\n return this.getChildControl(\"textfield\").getTextSelectionLength();\n },\n\n\n /**\n * Set the selection to the given start and end (zero-based).\n * If no end value is given the selection will extend to the\n * end of the textfield's content.\n * This method only works if the widget is already created and\n * added to the document.\n *\n * @param start {Integer} start of the selection (zero-based)\n * @param end {Integer} end of the selection\n */\n setTextSelection : function(start, end) {\n this.getChildControl(\"textfield\").setTextSelection(start, end);\n },\n\n\n /**\n * Clears the current selection.\n * This method only works if the widget is already created and\n * added to the document.\n *\n */\n clearTextSelection : function() {\n this.getChildControl(\"textfield\").clearTextSelection();\n },\n\n\n /**\n * Selects the whole content\n *\n */\n selectAllText : function() {\n this.getChildControl(\"textfield\").selectAllText();\n },\n\n\n /**\n * Clear any text selection, then select all text\n *\n */\n resetAllTextSelection: function() {\n this.clearTextSelection();\n this.selectAllText();\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.ui.form.ContentSchemaHelper\", {\n type: \"static\",\n\n statics: {\n __getDomainText: function(s) {\n let rangeText = null;\n if (\"minimum\" in s && \"maximum\" in s) {\n rangeText = `∈ [${s.minimum}, ${s.maximum}] `;\n } else if (\"minimum\" in s) {\n rangeText = `∈ [${s.minimum}, ∞] `;\n } else if (\"maximum\" in s) {\n rangeText = `∈ [-∞, ${s.maximum}] `;\n }\n if (rangeText && \"x_unit\" in s) {\n const {\n unitPrefix,\n unit\n } = osparc.utils.Units.decomposeXUnit(s[\"x_unit\"]);\n const labels = osparc.utils.Units.getLabels(unit, unitPrefix);\n if (labels !== null) {\n rangeText += labels.unitShort;\n }\n }\n return rangeText;\n },\n\n __getArrayDomainText: function(s) {\n const sMerged = osparc.utils.Utils.deepCloneObject(s);\n if (\"items\" in sMerged) {\n Object.keys(sMerged.items).forEach(item => {\n sMerged[item] = sMerged.items[item];\n });\n }\n let rangeText = this.__getDomainText(sMerged);\n if (rangeText === null) {\n rangeText = \"\";\n }\n if (\"minItems\" in s) {\n rangeText += \"
\";\n rangeText += qx.locale.Manager.tr(\"Minimum items: \") + s.minItems;\n }\n if (\"maxItems\" in s) {\n rangeText += \"
\";\n rangeText += qx.locale.Manager.tr(\"Maximum items: \") + s.maxItems;\n }\n return rangeText;\n },\n\n getDomainText: function(s) {\n if (s.type === \"array\") {\n return this.__getArrayDomainText(s);\n }\n return this.__getDomainText(s);\n },\n\n createValidator: function(control, s) {\n const manager = new qx.ui.form.validation.Manager();\n manager.add(control, (value, item) => {\n let multiplier = 1;\n let invalidMessage = qx.locale.Manager.tr(\"Out of range\");\n if (\"x_unit\" in s) {\n const {\n unitPrefix\n } = osparc.utils.Units.decomposeXUnit(s[\"x_unit\"]);\n multiplier = osparc.utils.Units.getMultiplier(unitPrefix, control.unitPrefix);\n }\n let valid = true;\n if (\"minimum\" in s && value < multiplier*(s.minimum)) {\n valid = false;\n invalidMessage += \"
\";\n invalidMessage += qx.locale.Manager.tr(\"Minimum value: \") + multiplier*(s.minimum);\n }\n if (\"maximum\" in s && value > multiplier*(s.maximum)) {\n valid = false;\n invalidMessage += \"
\";\n invalidMessage += qx.locale.Manager.tr(\"Maximum value: \") + multiplier*(s.maximum);\n }\n if (!valid) {\n item.setInvalidMessage(invalidMessage);\n }\n return Boolean(valid);\n });\n return manager;\n },\n\n createArrayValidator: function(control, s) {\n const manager = new qx.ui.form.validation.Manager();\n manager.add(control, (valuesInString, item) => {\n const values = JSON.parse(valuesInString);\n if (\"minItems\" in s && (values.length < s.minItems)) {\n let oorInvalidMessage = qx.locale.Manager.tr(\"Minimum items: \") + s.minItems;\n item.setInvalidMessage(oorInvalidMessage);\n return false;\n }\n if (\"maxItems\" in s && (values.length > s.maxItems)) {\n let oorInvalidMessage = qx.locale.Manager.tr(\"Maximum items: \") + s.maxItems;\n item.setInvalidMessage(oorInvalidMessage);\n return false;\n }\n let multiplier = 1;\n let oorInvalidMessage = qx.locale.Manager.tr(\"Out of range\");\n if (\"x_unit\" in s) {\n const {\n unitPrefix\n } = osparc.utils.Units.decomposeXUnit(s[\"x_unit\"]);\n multiplier = osparc.utils.Units.getMultiplier(unitPrefix, control.unitPrefix);\n }\n let valid = true;\n if (\"items\" in s) {\n if (\"minimum\" in s[\"items\"] && values.some(v => v < multiplier*(s[\"items\"].minimum))) {\n valid = false;\n oorInvalidMessage += \"
\";\n oorInvalidMessage += qx.locale.Manager.tr(\"Minimum value: \") + multiplier*(s[\"items\"].minimum);\n }\n if (\"maximum\" in s[\"items\"] && values.some(v => v > multiplier*(s[\"items\"].maximum))) {\n valid = false;\n oorInvalidMessage += \"
\";\n oorInvalidMessage += qx.locale.Manager.tr(\"Maximum value: \") + multiplier*(s[\"items\"].maximum);\n }\n }\n if (!valid) {\n item.setInvalidMessage(oorInvalidMessage);\n }\n return Boolean(valid);\n });\n return manager;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.file.FolderContent\", {\n extend: qx.ui.container.Stack,\n\n construct: function() {\n this.base(arguments);\n\n this.getChildControl(\"icons-layout\");\n this.getChildControl(\"table\");\n },\n\n properties: {\n folder: {\n check: \"qx.core.Object\",\n init: null,\n nullable: true,\n event: \"changeFolder\",\n apply: \"__applyFolder\"\n },\n\n mode: {\n check: [\"list\", \"icons\"],\n init: \"list\",\n nullable: false,\n event: \"changeMode\",\n apply: \"__reloadFolderContent\"\n },\n\n multiSelect: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n event: \"changeMultiSelect\",\n apply: \"__changeMultiSelect\"\n },\n },\n\n events: {\n \"selectionChanged\": \"qx.event.type.Data\", // tap\n \"multiSelectionChanged\": \"qx.event.type.Data\", // tap\n \"openItemSelected\": \"qx.event.type.Data\", // dbltap\n \"requestDatasetFiles\": \"qx.event.type.Data\",\n },\n\n statics: {\n getItemButton: function() {\n const item = new qx.ui.form.ToggleButton().set({\n iconPosition: \"top\",\n width: 100,\n height: 80,\n padding: 2\n });\n item.getChildControl(\"label\").set({\n font: \"text-12\",\n rich: true,\n textAlign: \"center\",\n maxWidth: 100,\n maxHeight: 33 // two lines\n });\n osparc.utils.Utils.setIdToWidget(item, \"FolderViewerItem\");\n return item;\n },\n\n T_POS: {\n TYPE: 0,\n NAME: 1,\n MODIFIED_DATE: 2,\n SIZE: 3,\n ID: 4\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"table\": {\n const tableModel = new qx.ui.table.model.Simple();\n tableModel.setColumns([\n \"\",\n this.tr(\"Name\"),\n this.tr(\"Date Modified\"),\n this.tr(\"Size\"),\n this.tr(\"Id\")\n ]);\n control = new osparc.ui.table.Table(tableModel, {\n // tableColumnModel: obj => new qx.ui.table.columnmodel.Resize(obj),\n initiallyHiddenColumns: [this.self().T_POS.ID]\n });\n control.getTableColumnModel().setDataCellRenderer(this.self().T_POS.TYPE, new qx.ui.table.cellrenderer.Image());\n control.setColumnWidth(this.self().T_POS.TYPE, 30);\n control.setColumnWidth(this.self().T_POS.NAME, 250);\n control.setColumnWidth(this.self().T_POS.MODIFIED_DATE, 125);\n control.setColumnWidth(this.self().T_POS.SIZE, 80);\n this.bind(\"mode\", control, \"visibility\", {\n converter: mode => mode === \"list\" ? \"visible\" : \"excluded\"\n });\n const scroll = new qx.ui.container.Scroll();\n scroll.add(control);\n this.add(scroll);\n break;\n }\n case \"icons-layout\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.Flow(5, 5));\n osparc.utils.Utils.setIdToWidget(control, \"FolderViewerIconsContent\");\n this.bind(\"mode\", control, \"visibility\", {\n converter: mode => mode === \"icons\" ? \"visible\" : \"excluded\"\n });\n const scroll = new qx.ui.container.Scroll();\n scroll.add(control);\n this.add(scroll);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __convertEntries: function(content) {\n const datas = [];\n content.forEach(entry => {\n const data = {\n icon: entry.getIcon ? entry.getIcon() : this.__getIcon(entry),\n label: entry.getLabel(),\n lastModified: entry.getLastModified ? osparc.utils.Utils.formatDateAndTime(new Date(entry.getLastModified())) : \"\",\n size: entry.getSize ? osparc.utils.Utils.bytesToSize(entry.getSize()) : \"\",\n itemId: entry.getItemId ? entry.getItemId() : null,\n entry: entry,\n };\n datas.push(data);\n });\n // folders first\n datas.sort((a, b) => osparc.file.FilesTree.isFile(a.entry) - osparc.file.FilesTree.isFile(b.entry));\n const items = [];\n if (this.getMode() === \"list\") {\n datas.forEach(data => {\n const row = [];\n row.push(data[\"icon\"]);\n row.push(data[\"label\"]);\n row.push(data[\"lastModified\"]);\n row.push(data[\"size\"]);\n if (data[\"itemId\"]) {\n row.push(data[\"itemId\"]);\n }\n row.entry = data[\"entry\"];\n items.push(row);\n });\n } else if (this.getMode() === \"icons\") {\n datas.forEach(data => {\n let toolTip = data[\"label\"];\n if (data[\"size\"]) {\n toolTip += \"
\" + data[\"size\"];\n }\n if (data[\"lastModified\"]) {\n toolTip += \"
\" + data[\"lastModified\"];\n }\n const gridItem = this.self().getItemButton().set({\n label: data[\"label\"],\n icon: data[\"icon\"],\n toolTipText: toolTip\n });\n const icon = gridItem.getChildControl(\"icon\", true);\n if (icon.getSource() === \"@FontAwesome5Solid/circle-notch/12\") {\n icon.setPadding(0);\n icon.setMarginRight(4);\n icon.getContentElement().addClass(\"rotate\");\n }\n if (data[\"itemId\"]) {\n gridItem.itemId = data[\"itemId\"];\n }\n gridItem.entry = data[\"entry\"];\n this.__attachListenersToGridItem(gridItem);\n items.push(gridItem);\n });\n }\n return items;\n },\n\n __getIcon: function(entry) {\n return osparc.file.FilesTree.isDir(entry) ? \"@MaterialIcons/folder\" : \"@MaterialIcons/insert_drive_file\";\n },\n\n __getEntries: function() {\n if (this.getFolder()) {\n const children = this.getFolder().getChildren().toArray();\n return this.__convertEntries(children);\n }\n return [];\n },\n\n __applyFolder: function(folder) {\n if (folder) {\n if (folder.getLoaded && !folder.getLoaded()) {\n this.fireDataEvent(\"requestDatasetFiles\", {\n locationId: folder.getLocation(),\n datasetId: folder.getPath()\n });\n }\n\n folder.getChildren().addListener(\"change\", () => {\n this.__reloadFolderContent();\n }, this);\n }\n\n this.__reloadFolderContent();\n },\n\n __reloadFolderContent: function() {\n const entries = this.__getEntries();\n if (this.getMode() === \"list\") {\n const table = this.getChildControl(\"table\");\n table.setData(entries);\n this.__attachListenersToTableItem(table);\n } else if (this.getMode() === \"icons\") {\n const iconsLayout = this.getChildControl(\"icons-layout\");\n iconsLayout.removeAll();\n entries.forEach(entry => {\n iconsLayout.add(entry);\n });\n }\n this.setSelection([this.getSelectables()[this.getMode() === \"icons\" ? 0 : 1]]);\n },\n\n __changeMultiSelect: function() {\n if (this.getMode() === \"icons\" && this.getMultiSelect() === false) {\n const iconsLayout = this.getChildControl(\"icons-layout\");\n const selectedButtons = iconsLayout.getChildren().filter(btn => btn.getValue());\n if (selectedButtons.length > 1) {\n // reset selection\n selectedButtons.forEach(btn => btn.setValue(false));\n }\n } else if (this.getMode() === \"list\") {\n const selectionModel = this.getChildControl(\"table\").getSelectionModel();\n let selection = null;\n if (selectionModel.getSelectedCount() === 1) {\n // keep selection\n selection = selectionModel.getSelectedRanges()[0];\n }\n selectionModel.setSelectionMode(this.isMultiSelect() ?\n qx.ui.table.selection.Model.MULTIPLE_INTERVAL_SELECTION_TOGGLE :\n qx.ui.table.selection.Model.SINGLE_SELECTION\n );\n if (selection) {\n selectionModel.setSelectionInterval(selection.minIndex, selection.maxIndex);\n }\n }\n },\n\n __selectionChanged: function(selection) {\n if (this.isMultiSelect()) {\n this.fireDataEvent(\"multiSelectionChanged\", selection);\n } else {\n this.fireDataEvent(\"selectionChanged\", (selection && selection.length) ? selection[0] : null);\n }\n },\n\n __itemDblTapped: function(entry) {\n this.fireDataEvent(\"openItemSelected\", entry);\n },\n\n __attachListenersToGridItem: function(gridItem) {\n gridItem.addListener(\"tap\", e => {\n if (e.getNativeEvent().ctrlKey) {\n this.setMultiSelect(true);\n }\n if (this.isMultiSelect()) {\n // pass all buttons that are selected\n const selectedItems = [];\n const iconsLayout = this.getChildControl(\"icons-layout\");\n iconsLayout.getChildren().forEach(btn => {\n if (btn.getValue() && \"entry\" in btn) {\n selectedItems.push(btn.entry);\n }\n });\n this.__selectionChanged(selectedItems);\n } else {\n // unselect the other items\n const iconsLayout = this.getChildControl(\"icons-layout\");\n iconsLayout.getChildren().forEach(btn => {\n btn.setValue(btn === gridItem);\n });\n this.__selectionChanged(gridItem.getValue() ? [gridItem.entry] : null);\n }\n // folders can't be selected\n if (osparc.file.FilesTree.isDir(gridItem.entry)) {\n gridItem.setValue(false);\n }\n }, this);\n gridItem.addListener(\"dbltap\", () => {\n this.__itemDblTapped(gridItem.entry);\n }, this);\n },\n\n __attachListenersToTableItem: function(table) {\n table.addListener(\"cellTap\", e => {\n if (e.getNativeEvent().ctrlKey) {\n this.setMultiSelect(true);\n }\n const selectedItems = [];\n const selectionRanges = table.getSelectionModel().getSelectedRanges();\n selectionRanges.forEach(range => {\n for (let i=range.minIndex; i<=range.maxIndex; i++) {\n const row = table.getTableModel().getRowData(i);\n if (row && \"entry\" in row) {\n selectedItems.push(row.entry);\n }\n }\n });\n this.__selectionChanged(selectedItems);\n }, this);\n table.addListener(\"cellDbltap\", e => {\n const selectedRow = e.getRow();\n const row = table.getTableModel().getRowData(selectedRow);\n if (row && \"entry\" in row) {\n this.__itemDblTapped(row.entry);\n }\n }, this);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * A HBox containing a text field, download button and delete button.\n *\n * It is used together with a virtual tree of files where the selection is displayed\n * in the text field and the download and delete are related to that selection.\n * Download and deleted methods are also provided.\n * If a file is deleted it fires \"fileDeleted\" data event\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let hBox = new osparc.file.FileLabelWithActions();\n * this.getRoot().add(hBox);\n *
\n */\n\nqx.Class.define(\"osparc.file.FileLabelWithActions\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.HBox(10));\n\n this.getChildControl(\"spacer\");\n this.getChildControl(\"selected-label\");\n\n const downloadBtn = this.getChildControl(\"download-button\");\n downloadBtn.addListener(\"execute\", () => this.__retrieveURLAndDownloadSelected(), this);\n\n const deleteBtn = this.getChildControl(\"delete-button\");\n deleteBtn.addListener(\"execute\", () => this.__deleteSelected(), this);\n\n this.__selection = [];\n },\n\n events: {\n \"fileDeleted\": \"qx.event.type.Data\"\n },\n\n properties: {\n multiSelect: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n event: \"changeMultiSelect\",\n apply: \"__changeMultiSelection\",\n },\n },\n\n members: {\n __selection: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"spacer\":\n control = new qx.ui.core.Spacer();\n this._add(control, {\n flex: 1\n });\n break;\n case \"selected-label\":\n control = new qx.ui.basic.Label().set({\n alignY: \"middle\"\n });\n this._add(control);\n break;\n case \"download-button\":\n control = new qx.ui.form.Button(this.tr(\"Download\"), \"@FontAwesome5Solid/cloud-download-alt/16\");\n osparc.utils.Utils.setIdToWidget(control, \"filesTreeDownloadBtn\");\n this._add(control);\n break;\n case \"delete-button\":\n control = new qx.ui.form.Button(this.tr(\"Delete\"), \"@FontAwesome5Solid/trash/16\").set({\n appearance: \"danger-button\"\n });\n this._add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __changeMultiSelection: function() {\n if (this.__selection.length > 1) {\n this.resetSelection();\n }\n },\n\n setItemSelected: function(selectedItem) {\n if (selectedItem) {\n this.__selection = [selectedItem];\n const isFile = osparc.file.FilesTree.isFile(selectedItem);\n this.getChildControl(\"download-button\").setEnabled(isFile);\n this.getChildControl(\"delete-button\").setEnabled(true); // folders can also be deleted\n this.getChildControl(\"selected-label\").setValue(selectedItem.getLabel());\n } else {\n this.resetSelection();\n }\n },\n\n setMultiItemSelected: function(multiSelectionData) {\n this.__selection = multiSelectionData;\n if (multiSelectionData && multiSelectionData.length) {\n if (multiSelectionData.length === 1) {\n this.setItemSelected(multiSelectionData[0]);\n } else {\n const selectedLabel = this.getChildControl(\"selected-label\");\n selectedLabel.set({\n value: multiSelectionData.length + \" items\"\n });\n }\n } else {\n this.resetSelection();\n }\n },\n\n resetSelection: function() {\n this.__selection = [];\n this.getChildControl(\"download-button\").setEnabled(false);\n this.getChildControl(\"delete-button\").setEnabled(false);\n this.getChildControl(\"selected-label\").resetValue();\n },\n\n __retrieveURLAndDownloadSelected: function() {\n if (this.isMultiSelect()) {\n this.__selection.forEach(selection => {\n if (selection && osparc.file.FilesTree.isFile(selection)) {\n this.__retrieveURLAndDownloadFile(selection);\n }\n });\n } else if (this.__selection.length) {\n const selection = this.__selection[0];\n if (selection && osparc.file.FilesTree.isFile(selection)) {\n this.__retrieveURLAndDownloadFile(selection);\n }\n }\n },\n\n __retrieveURLAndDownloadFile: function(file) {\n const fileId = file.getFileId();\n const locationId = file.getLocation();\n osparc.utils.Utils.retrieveURLAndDownload(locationId, fileId)\n .then(data => {\n if (data) {\n osparc.DownloadLinkTracker.getInstance().downloadLinkUnattended(data.link, data.fileName);\n }\n });\n },\n\n __deleteSelected: function() {\n const toBeDeleted = [];\n let isFolderSelected = false;\n if (this.isMultiSelect()) {\n this.__selection.forEach(selection => {\n if (selection) {\n toBeDeleted.push(selection);\n if (osparc.file.FilesTree.isDir(selection)) {\n isFolderSelected = true;\n }\n }\n });\n } else if (this.__selection.length) {\n const selection = this.__selection[0];\n if (selection) {\n if (osparc.file.FilesTree.isDir(selection)) {\n isFolderSelected = true;\n }\n }\n }\n\n let msg = this.tr(\"This operation cannot be undone.\");\n msg += isFolderSelected ? (\"
\"+this.tr(\"All the content of the folders will be deleted.\")) : \"\";\n msg += \"
\" + this.tr(\"Do you want to proceed?\");\n const confirmationWin = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Delete\"),\n confirmText: this.tr(\"Delete\"),\n confirmAction: \"delete\"\n });\n confirmationWin.center();\n confirmationWin.open();\n confirmationWin.addListener(\"close\", () => {\n if (confirmationWin.getConfirmed()) {\n this.__doDeleteSelected(toBeDeleted);\n }\n }, this);\n },\n\n __doDeleteSelected: function(toBeDeleted) {\n const requests = [];\n toBeDeleted.forEach(selection => {\n if (selection) {\n let request = null;\n if (osparc.file.FilesTree.isFile(selection)) {\n request = this.__deleteItem(selection.getFileId(), selection.getLocation());\n } else {\n request = this.__deleteItem(selection.getPath(), selection.getLocation());\n }\n if (request) {\n requests.push(request);\n }\n }\n });\n Promise.all(requests)\n .then(datas => {\n if (datas.length) {\n this.fireDataEvent(\"fileDeleted\", datas[0]);\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Items successfully deleted\"), \"INFO\");\n }\n });\n },\n\n __deleteItem: function(itemId, locationId) {\n if (locationId !== 0 && locationId !== \"0\") {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Only items in simcore.s3 can be deleted\"));\n return null;\n }\n const dataStore = osparc.store.Data.getInstance();\n return dataStore.deleteFile(locationId, itemId);\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Class that stores PricingPlan data.\n */\n\nqx.Class.define(\"osparc.data.model.PricingPlan\", {\n extend: qx.core.Object,\n\n /**\n * @param pricingPlanData {Object} Object containing the serialized PricingPlan Data\n */\n construct: function(pricingPlanData) {\n this.base(arguments);\n\n this.set({\n pricingPlanId: pricingPlanData.pricingPlanId,\n pricingPlanKey: pricingPlanData.pricingPlanKey,\n classification: pricingPlanData.classification,\n name: pricingPlanData.displayName,\n description: pricingPlanData.description,\n isActive: pricingPlanData.isActive,\n pricingUnits: [],\n });\n\n if (pricingPlanData.pricingUnits) {\n pricingPlanData.pricingUnits.forEach(pricingUnitData => {\n const pricingUnit = new osparc.data.model.PricingUnit(pricingUnitData);\n this.getPricingUnits().push(pricingUnit);\n });\n }\n },\n\n properties: {\n pricingPlanId: {\n check: \"Number\",\n nullable: false,\n init: null,\n event: \"changePricingPlanId\"\n },\n\n pricingPlanKey: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changePricingPlanKey\"\n },\n\n pricingUnits: {\n check: \"Array\",\n nullable: true,\n init: [],\n event: \"changePricingUnits\"\n },\n\n classification: {\n check: [\"TIER\", \"LICENSE\"],\n nullable: false,\n init: null,\n event: \"changeClassification\"\n },\n\n name: {\n check: \"String\",\n nullable: false,\n init: null,\n event: \"changeName\"\n },\n\n description: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeDescription\"\n },\n\n isActive: {\n check: \"Boolean\",\n nullable: false,\n init: false,\n event: \"changeIsActive\"\n },\n },\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Class that stores PricingUnit data.\n */\n\nqx.Class.define(\"osparc.data.model.PricingUnit\", {\n extend: qx.core.Object,\n\n /**\n * @param pricingUnitData {Object} Object containing the serialized PricingUnit Data\n */\n construct: function(pricingUnitData) {\n this.base(arguments);\n\n this.set({\n pricingUnitId: pricingUnitData.pricingUnitId,\n name: pricingUnitData.unitName,\n cost: parseFloat(pricingUnitData.currentCostPerUnit),\n isDefault: pricingUnitData.default,\n extraInfo: pricingUnitData.unitExtraInfo,\n specificInfo: pricingUnitData.specificInfo || null,\n });\n },\n\n properties: {\n pricingUnitId: {\n check: \"Number\",\n nullable: true,\n init: null,\n event: \"changePricingUnitId\"\n },\n\n classification: {\n check: [\"TIER\", \"LICENSE\"],\n nullable: false,\n init: null,\n event: \"changeClassification\"\n },\n\n name: {\n check: \"String\",\n nullable: false,\n init: null,\n event: \"changeName\"\n },\n\n cost: {\n check: \"Number\",\n nullable: false,\n init: null,\n event: \"changeCost\"\n },\n\n isDefault: {\n check: \"Boolean\",\n nullable: false,\n init: false,\n event: \"changeIsDefault\",\n },\n\n extraInfo: {\n check: \"Object\",\n nullable: false,\n init: null,\n event: \"changeExtraInfo\",\n },\n\n specificInfo: {\n check: \"Object\",\n nullable: true,\n init: null,\n event: \"changeSpecificInfo\",\n },\n },\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.study.PricingUnit\", {\n extend: qx.ui.core.Widget,\n type: \"abstract\",\n\n construct: function(pricingUnit) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(5));\n\n this.set({\n padding: 10,\n decorator: \"rounded\",\n minWidth: 100,\n allowGrowX: false,\n allowGrowY: false,\n });\n\n this.setUnitData(pricingUnit);\n\n osparc.utils.Utils.addBorder(this);\n },\n\n events: {\n \"editPricingUnit\": \"qx.event.type.Event\",\n },\n\n properties: {\n selected: {\n check: \"Boolean\",\n init: false,\n nullable: false,\n event: \"changeSelected\",\n apply: \"__applySelected\",\n },\n\n unitData: {\n check: \"osparc.data.model.PricingUnit\",\n nullable: false,\n init: null,\n apply: \"_buildLayout\"\n },\n\n showEditButton: {\n check: \"Boolean\",\n init: false,\n nullable: true,\n event: \"changeShowEditButton\"\n },\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"name\":\n control = new qx.ui.basic.Label().set({\n font: \"text-16\"\n });\n this._add(control);\n break;\n case \"price\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\"\n });\n this._add(control);\n break;\n case \"edit-button\":\n control = new qx.ui.form.Button(qx.locale.Manager.tr(\"Edit\"));\n this.bind(\"showEditButton\", control, \"visibility\", {\n converter: show => show ? \"visible\" : \"excluded\"\n });\n control.addListener(\"execute\", () => this.fireEvent(\"editPricingUnit\"));\n this._add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n _buildLayout: function(pricingUnit) {\n this._removeAll();\n\n const name = this.getChildControl(\"name\");\n pricingUnit.bind(\"name\", name, \"value\");\n },\n\n __applySelected: function(selected) {\n const strong = qx.theme.manager.Color.getInstance().resolve(\"strong-main\");\n osparc.utils.Utils.updateBorderColor(this, selected ? strong : \"transparent\");\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.study.PricingUnitTier\", {\n extend: osparc.study.PricingUnit,\n\n events: {\n \"selectPricingUnit\": \"qx.event.type.Event\",\n },\n\n properties: {\n showAwsSpecificInfo: {\n check: \"Boolean\",\n init: false,\n nullable: true,\n event: \"changeShowAwsSpecificInfo\"\n },\n\n showUnitExtraInfo: {\n check: \"Boolean\",\n init: true,\n nullable: true,\n event: \"changeShowUnitExtraInfo\"\n },\n\n showSelectButton: {\n check: \"Boolean\",\n init: false,\n nullable: true,\n event: \"changeShowSelectButton\"\n },\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"awsSpecificInfo\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\"\n });\n this.bind(\"showAwsSpecificInfo\", control, \"visibility\", {\n converter: show => show ? \"visible\" : \"excluded\"\n })\n this._add(control);\n break;\n case \"unitExtraInfo\":\n control = new qx.ui.basic.Label().set({\n font: \"text-13\",\n rich: true,\n });\n this.bind(\"showUnitExtraInfo\", control, \"visibility\", {\n converter: show => show ? \"visible\" : \"excluded\"\n });\n this._add(control);\n break;\n case \"select-button\":\n control = new qx.ui.form.Button().set({\n appearance: \"strong-button\",\n center: true,\n });\n this.bind(\"selected\", control, \"label\", {\n converter: selected => selected ? \"Selected\" : \"Select\"\n });\n this.bind(\"selected\", control, \"enabled\", {\n converter: selected => !selected\n });\n this.bind(\"showSelectButton\", control, \"visibility\", {\n converter: show => show ? \"visible\" : \"excluded\"\n });\n control.addListener(\"execute\", () => this.fireEvent(\"selectPricingUnit\"));\n this._add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n // override\n _buildLayout: function(pricingUnit) {\n this.base(arguments, pricingUnit);\n\n // add price info\n const price = this.getChildControl(\"price\");\n pricingUnit.bind(\"cost\", price, \"value\", {\n converter: v => qx.locale.Manager.tr(\"Credits/h\") + \": \" + v\n });\n\n // add aws specific info\n if (\"specificInfo\" in pricingUnit) {\n const specificInfo = this.getChildControl(\"awsSpecificInfo\");\n pricingUnit.bind(\"awsSpecificInfo\", specificInfo, \"value\", {\n converter: v => qx.locale.Manager.tr(\"EC2\") + \": \" + v,\n });\n }\n\n // add pricing unit extra info\n const unitExtraInfo = this.getChildControl(\"unitExtraInfo\");\n let text = \"\";\n Object.entries(pricingUnit.getExtraInfo()).forEach(([key, value]) => {\n text += `${key}: ${value}
`;\n });\n unitExtraInfo.setValue(text);\n\n // add select button\n this.getChildControl(\"select-button\");\n\n // add edit button\n this.getChildControl(\"edit-button\");\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * A tree that makes its items selectable with a checkbox.\n */\nqx.Class.define(\"osparc.ui.tree.CheckboxTree\", {\n extend: qx.ui.tree.VirtualTree,\n\n construct: function(data) {\n this.base(arguments, this.__createModel(data), \"label\", \"children\", \"open\");\n const tree = this;\n this.set({\n delegate: {\n createItem: function() {\n return new osparc.ui.tree.CheckboxTreeItem();\n },\n bindItem: function(controller, item, id) {\n controller.bindDefaultProperties(item, id);\n controller.bindProperty(\"checked\", \"checked\", null, item, id);\n controller.bindPropertyReverse(\"checked\", \"checked\", null, item, id);\n controller.bindProperty(\"description\", \"description\", null, item, id);\n controller.bindProperty(\"url\", \"url\", null, item, id);\n },\n configureItem: function(item) {\n item.addListener(\"checkboxClicked\", () => tree.fireDataEvent(\"checkedChanged\", tree.getChecked()));\n item.setSelectable(false);\n }\n },\n hideRoot: true,\n decorator: \"no-border\",\n selectionMode: \"multi\"\n });\n },\n events: {\n checkedChanged: \"qx.event.type.Data\"\n },\n members: {\n __createModel: function(data) {\n this.__extendData(data);\n const model = qx.data.marshal.Json.createModel(data, true);\n const enableTriState = node => {\n node.getChildren().forEach(child => {\n enableTriState(child);\n // Binding parent -> child\n node.bind(\"checked\", child, \"checked\", {\n converter: function(value) {\n if (value === null) {\n // If parent gets null (half-checked), children preserve their values\n return child.getChecked();\n }\n return value;\n }\n });\n // Binding child -> parent\n child.bind(\"checked\", node, \"checked\", {\n converter: function() {\n const children = node.getChildren().toArray();\n const areAllChecked = children.every(item => item.getChecked());\n const isOneChecked = children.some(item => item.getChecked() || item.getChecked() === null);\n if (isOneChecked) {\n // Null means half-checked\n return areAllChecked ? true : null;\n }\n return false;\n }\n });\n });\n };\n enableTriState(model);\n return model;\n },\n __extendData: function(data) {\n data.open = data.open || true;\n data.checked = data.checked || false;\n data.children = data.children || [];\n data.children.forEach(child => this.__extendData(child));\n },\n /**\n * Method returning an array of checked elements (model elements).\n * @param {Array?} model Tree model to check. Used for recursion, the method should be called without any parameters.\n */\n getChecked: function(model) {\n const nodes = model == null ? this.getModel().getChildren().toArray() : model.getChildren().toArray();\n let checked = [];\n nodes.forEach(node => {\n if (node.getChecked()) {\n checked.push(qx.util.Serializer.toNativeObject(node));\n }\n checked = [...checked, ...this.getChecked(node)];\n });\n return checked;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Mixin.define(\"osparc.ui.tree.MHintInTree\", {\n properties: {\n description: {\n check: \"String\",\n init: null,\n event: \"changeDescription\",\n apply: \"__populateInfoButton\",\n nullable: true\n },\n\n url: {\n check: \"String\",\n init: null,\n event: \"changeUrl\",\n apply: \"__populateInfoButton\",\n nullable: true\n }\n },\n\n members: {\n addHint: function() {\n this.__infoButton = new osparc.ui.hint.InfoHint();\n this._add(this.__infoButton);\n\n return this.__infoButton;\n },\n\n __populateInfoButton: function() {\n const texts = [];\n [\n this.getDescription()\n ].forEach(text => {\n if (text && text !== \"\") {\n texts.push(text);\n }\n });\n const url = this.getUrl();\n if (url && url !== \"\") {\n const link = \"More...\";\n const linkWithRightColor = link.replace(/^ {\n this.__populateInfoButton();\n }, this);\n }\n const hint = texts.join(\"
\");\n this.__infoButton.setHintText(hint);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.ui.tree.ClassifiersTreeItem\", {\n extend: qx.ui.tree.VirtualTreeItem,\n include: osparc.ui.tree.MHintInTree,\n\n members: {\n _addWidgets: function() {\n this.addSpacer();\n this.addOpenButton();\n this.addLabel();\n this._add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n this.addHint();\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.FolderWithSharedIcon\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.Canvas());\n\n this.getChildControl(\"folder-icon\");\n this.getChildControl(\"shared-icon\");\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"icon-container\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox().set({\n alignY: \"middle\"\n }));\n this._add(control, {\n height: \"100%\"\n });\n break;\n case \"folder-icon\":\n control = new qx.ui.basic.Image().set({\n source: \"@FontAwesome5Solid/folder/26\"\n });\n this.getChildControl(\"icon-container\").add(control);\n break;\n case \"shared-icon\":\n control = new qx.ui.basic.Image().set({\n textColor: \"strong-main\",\n padding: 0\n });\n this._add(control, {\n bottom: 7,\n left: 2\n });\n break;\n }\n return control || this.base(arguments, id);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.dashboard.WorkspacesAndFoldersTreeItem\", {\n extend: qx.ui.tree.VirtualTreeItem,\n\n construct: function() {\n this.base(arguments);\n\n this.set({\n indent: 12, // defaults to 19,\n decorator: \"rounded\",\n padding: 2,\n maxWidth: osparc.dashboard.ResourceBrowserBase.SIDE_SPACER_WIDTH - 12,\n });\n\n this.setNotHoveredStyle();\n this.__attachEventHandlers();\n\n this.__attachDragHandlers();\n this.__attachDropHandlers();\n },\n\n events: {\n \"studyToFolderRequested\": \"qx.event.type.Data\",\n \"folderToFolderRequested\": \"qx.event.type.Data\",\n },\n\n members: {\n __attachEventHandlers: function() {\n this.addListener(\"mouseover\", () => {\n this.setHoveredStyle();\n });\n this.addListener(\"mouseout\", () => {\n this.setNotHoveredStyle();\n });\n },\n\n setHoveredStyle: function() {\n osparc.utils.Utils.addBorder(this, 1, qx.theme.manager.Color.getInstance().resolve(\"text\"));\n },\n\n setNotHoveredStyle: function() {\n osparc.utils.Utils.hideBorder(this);\n },\n\n __getFolder: function() {\n const folderId = this.getModel().getFolderId();\n if (folderId === null) {\n return null;\n }\n return osparc.store.Folders.getInstance().getFolder(folderId);\n },\n\n __attachDragHandlers: function() {\n this.setDraggable(true);\n\n this.addListener(\"dragstart\", e => {\n const folderOrigin = this.__getFolder();\n // only folders can be dragged\n if (folderOrigin == null) {\n e.preventDefault();\n return;\n }\n osparc.dashboard.DragDropHelpers.moveFolder.dragStart(e, this, folderOrigin);\n });\n\n this.addListener(\"dragend\", () => {\n osparc.dashboard.DragDropHelpers.dragEnd(this);\n });\n },\n\n __attachDropHandlers: function() {\n this.setDroppable(true);\n\n let draggingOver = false;\n this.addListener(\"dragover\", e => {\n const workspaceDestId = this.getModel().getWorkspaceId();\n const folderDestId = this.getModel().getFolderId();\n if (e.supportsType(\"osparc-moveStudy\")) {\n osparc.dashboard.DragDropHelpers.moveStudy.dragOver(e, this, workspaceDestId, folderDestId);\n } else if (e.supportsType(\"osparc-moveFolder\")) {\n osparc.dashboard.DragDropHelpers.moveFolder.dragOver(e, this, workspaceDestId, folderDestId);\n }\n\n draggingOver = true;\n setTimeout(() => {\n if (draggingOver) {\n this.setOpen(true);\n draggingOver = false;\n }\n }, 1000);\n });\n\n this.addListener(\"dragleave\", () => {\n osparc.dashboard.DragDropHelpers.dragLeave(this);\n draggingOver = false;\n });\n this.addListener(\"dragend\", () => {\n osparc.dashboard.DragDropHelpers.dragLeave(this);\n draggingOver = false;\n });\n\n this.addListener(\"drop\", e => {\n const workspaceDestId = this.getModel().getWorkspaceId();\n const folderDestId = this.getModel().getFolderId();\n if (e.supportsType(\"osparc-moveStudy\")) {\n const studyToFolderData = osparc.dashboard.DragDropHelpers.moveStudy.drop(e, this, workspaceDestId, folderDestId);\n this.fireDataEvent(\"studyToFolderRequested\", studyToFolderData);\n } else if (e.supportsType(\"osparc-moveFolder\")) {\n const folderToFolderData = osparc.dashboard.DragDropHelpers.moveFolder.drop(e, this, workspaceDestId, folderDestId);\n this.fireDataEvent(\"folderToFolderRequested\", folderToFolderData);\n }\n draggingOver = false;\n });\n },\n },\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.editor.OrganizationEditor\", {\n extend: qx.ui.core.Widget,\n\n construct: function(organization) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(8));\n\n const manager = this.__validator = new qx.ui.form.validation.Manager();\n const title = this.getChildControl(\"title\");\n title.setRequired(true);\n manager.add(title);\n this.getChildControl(\"description\");\n this.getChildControl(\"thumbnail\");\n organization ? this.getChildControl(\"save\") : this.getChildControl(\"create\");\n\n if (organization) {\n organization.bind(\"groupId\", this, \"gid\");\n organization.bind(\"label\", this, \"label\");\n organization.bind(\"description\", this, \"description\");\n organization.bind(\"thumbnail\", this, \"thumbnail\", {\n converter: val => val ? val : \"\"\n });\n } else {\n const groupsStore = osparc.store.Groups.getInstance();\n const orgs = groupsStore.getOrganizations();\n const existingNames = Object.values(orgs).map(org => org.getLabel());\n const defaultName = osparc.utils.Utils.getUniqueName(\"New Organization\", existingNames)\n title.setValue(defaultName);\n }\n\n this.addListener(\"appear\", () => {\n title.focus();\n title.activate();\n });\n },\n\n properties: {\n gid: {\n check: \"Number\",\n init: 0,\n nullable: false,\n event: \"changeGid\"\n },\n\n label: {\n check: \"String\",\n init: \"\",\n nullable: false,\n event: \"changeLabel\"\n },\n\n description: {\n check: \"String\",\n init: \"\",\n nullable: false,\n event: \"changeDescription\"\n },\n\n thumbnail: {\n check: \"String\",\n init: \"\",\n nullable: false,\n event: \"changeThumbnail\"\n }\n },\n\n events: {\n \"createOrg\": \"qx.event.type.Event\",\n \"updateOrg\": \"qx.event.type.Event\",\n \"cancel\": \"qx.event.type.Event\"\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"title\": {\n control = new qx.ui.form.TextField().set({\n font: \"text-14\",\n backgroundColor: \"background-main\",\n placeholder: this.tr(\"Title\"),\n height: 30,\n });\n this.bind(\"label\", control, \"value\");\n control.bind(\"value\", this, \"label\");\n this._add(control);\n break;\n }\n case \"description\": {\n control = new qx.ui.form.TextField().set({\n font: \"text-14\",\n placeholder: this.tr(\"Description\"),\n height: 30,\n });\n this.bind(\"description\", control, \"value\");\n control.bind(\"value\", this, \"description\");\n this._add(control);\n break;\n }\n case \"thumbnail\": {\n control = new qx.ui.form.TextField().set({\n font: \"text-14\",\n placeholder: this.tr(\"Thumbnail\"),\n height: 30,\n });\n this.bind(\"thumbnail\", control, \"value\");\n control.bind(\"value\", this, \"thumbnail\");\n this._add(control);\n break;\n }\n case \"create\": {\n const buttons = this.getChildControl(\"buttonsLayout\");\n control = new osparc.ui.form.FetchButton(this.tr(\"Create\")).set({\n appearance: \"form-button\"\n });\n control.addListener(\"execute\", () => {\n if (this.__validator.validate()) {\n control.setFetching(true);\n this.fireEvent(\"createOrg\");\n }\n }, this);\n buttons.addAt(control, 1);\n break;\n }\n case \"save\": {\n const buttons = this.getChildControl(\"buttonsLayout\");\n control = new osparc.ui.form.FetchButton(this.tr(\"Save\")).set({\n appearance: \"form-button\"\n });\n control.addListener(\"execute\", () => {\n if (this.__validator.validate()) {\n control.setFetching(true);\n this.fireEvent(\"updateOrg\");\n }\n }, this);\n buttons.addAt(control, 1);\n break;\n }\n case \"buttonsLayout\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(8).set({\n alignX: \"right\"\n }));\n const cancelButton = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"form-button-text\"\n });\n cancelButton.addListener(\"execute\", () => this.fireEvent(\"cancel\"), this);\n control.addAt(cancelButton, 0);\n this._add(control);\n break;\n }\n }\n\n return control || this.base(arguments, id);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.ui.list.OrganizationListItem\", {\n extend: osparc.ui.list.ListItemWithMenu,\n\n properties: {\n showDeleteButton: {\n check: \"Boolean\",\n init: true,\n nullable: false,\n event: \"changeShowDeleteButton\"\n },\n\n groupMembers: {\n check: \"Object\",\n nullable: true,\n init: null,\n event: \"changeGroupMembers\",\n apply: \"updateNMembers\",\n },\n },\n\n events: {\n \"openEditOrganization\": \"qx.event.type.Data\",\n \"deleteOrganization\": \"qx.event.type.Data\"\n },\n\n members: {\n // overridden\n _setRole: function() {\n // Role field was already filled up with the nMembers\n return;\n },\n\n updateNMembers: function() {\n const roleText = this.getGroupMembers() ? Object.keys(this.getGroupMembers()).length + this.tr(\" members\") : \"-\";\n this.setRole(roleText);\n },\n\n // overridden\n _getOptionsMenu: function() {\n let menu = null;\n const accessRights = this.getAccessRights();\n if (accessRights[\"write\"]) {\n const optionsMenu = this.getChildControl(\"options\");\n optionsMenu.show();\n\n menu = new qx.ui.menu.Menu().set({\n position: \"bottom-right\"\n });\n\n if (accessRights[\"write\"]) {\n const editOrgButton = new qx.ui.menu.Button(this.tr(\"Edit details...\"));\n editOrgButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"openEditOrganization\", this.getKey());\n });\n menu.add(editOrgButton);\n }\n\n if (accessRights[\"delete\"]) {\n const deleteOrgButton = new qx.ui.menu.Button(this.tr(\"Delete\"));\n this.bind(\"showDeleteButton\", deleteOrgButton, \"visibility\", {\n converter: show => show ? \"visible\" : \"excluded\"\n });\n deleteOrgButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"deleteOrganization\", this.getKey());\n });\n menu.add(deleteOrgButton);\n }\n optionsMenu.setMenu(menu);\n }\n return menu;\n },\n\n // overridden\n _applyThumbnail: function(value) {\n const thumbnail = this.getChildControl(\"thumbnail\");\n if (value) {\n thumbnail.setSource(value);\n } else {\n thumbnail.setSource(osparc.utils.Icons.organization(osparc.ui.list.ListItemWithMenu.ICON_SIZE));\n }\n if (this.isPropertyInitialized(\"key\")) {\n const groupsStore = osparc.store.Groups.getInstance();\n const groupProductEveryone = groupsStore.getEveryoneProductGroup();\n if (groupProductEveryone && parseInt(this.getKey()) === groupProductEveryone.getGroupId()) {\n thumbnail.setSource(osparc.utils.Icons.everyone(osparc.ui.list.ListItemWithMenu.ICON_SIZE));\n }\n }\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.organizations.MembersList\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this.__createNewMemberLayout();\n this.__createMembersList();\n },\n\n statics: {\n getNoReadAccess: function() {\n return {\n \"read\": false,\n \"write\": false,\n \"delete\": false\n };\n },\n\n getReadAccess: function() {\n return {\n \"read\": true,\n \"write\": false,\n \"delete\": false\n };\n },\n\n getWriteAccess: function() {\n return {\n \"read\": true,\n \"write\": true,\n \"delete\": false\n };\n },\n\n getDeleteAccess: function() {\n return {\n \"read\": true,\n \"write\": true,\n \"delete\": true\n };\n },\n\n sortOrgMembers: function(a, b) {\n const sorted = osparc.share.Collaborators.sortByAccessRights(a[\"accessRights\"], b[\"accessRights\"]);\n if (sorted !== 0) {\n return sorted;\n }\n if ((\"label\" in a) && (\"label\" in b)) {\n return a[\"label\"].localeCompare(b[\"label\"]);\n }\n return 0;\n }\n },\n\n members: {\n __currentOrg: null,\n __introLabel: null,\n __addMembersButton: null,\n __membersModel: null,\n\n setCurrentOrg: function(orgModel) {\n if (orgModel === null) {\n return;\n }\n this.__currentOrg = orgModel;\n this.__reloadOrgMembers();\n },\n\n __createNewMemberLayout: function() {\n const vBox = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n vBox.add(this.__createAddMembersText());\n vBox.add(this.__getMemberInvitation());\n this._add(vBox);\n },\n\n __createMembersList: function() {\n const vBox = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n const rolesLayout = this.__getRolesToolbar();\n const membersFilter = this.__getMembersFilter();\n membersFilter.setPaddingRight(10);\n osparc.data.Roles.replaceSpacerWithWidget(rolesLayout, membersFilter);\n vBox.add(rolesLayout);\n vBox.add(this.__getMembersList(), {\n flex: 1\n });\n this._add(vBox, {\n flex: 1\n });\n },\n\n __createAddMembersText: function() {\n const intro = this.__introLabel = new qx.ui.basic.Label().set({\n alignX: \"left\",\n rich: true,\n font: \"text-13\"\n });\n return intro;\n },\n\n __getMemberInvitation: function() {\n const addBtn = this.__addMembersButton = new qx.ui.form.Button().set({\n appearance: \"strong-button\",\n label: this.tr(\"Add Members...\"),\n allowGrowX: false,\n });\n addBtn.addListener(\"execute\", function() {\n const serializedData = this.__currentOrg.serialize();\n serializedData[\"resourceType\"] = \"organization\";\n const showOrganizations = false;\n const collaboratorsManager = new osparc.share.NewCollaboratorsManager(serializedData, showOrganizations);\n collaboratorsManager.setCaption(\"Add Members\");\n collaboratorsManager.getActionButton().setLabel(this.tr(\"Add\"));\n collaboratorsManager.addListener(\"addCollaborators\", e => {\n const selectedMembers = e.getData();\n if (selectedMembers.length) {\n const promises = [];\n const usersStore = osparc.store.Users.getInstance();\n selectedMembers.forEach(selectedMemberGId => promises.push(usersStore.getUser(selectedMemberGId)));\n Promise.all(promises)\n .then(values => {\n values.forEach(user => {\n if (user) {\n this.__addMember(user.getUsername());\n }\n });\n })\n .catch(console.error)\n .finally(collaboratorsManager.close());\n } else {\n collaboratorsManager.close();\n }\n }, this);\n }, this);\n\n return addBtn;\n },\n\n __getRolesToolbar: function() {\n return osparc.data.Roles.createRolesOrgInfo();\n },\n\n __getMembersFilter: function() {\n const filter = new osparc.filter.TextFilter(\"text\", \"organizationMembersList\");\n filter.setCompact(true);\n return filter;\n },\n\n __getMembersList: function() {\n const membersUIList = new qx.ui.form.List().set({\n decorator: \"no-border\",\n spacing: 3,\n width: 150\n });\n\n const membersModel = this.__membersModel = new qx.data.Array();\n const membersCtrl = new qx.data.controller.List(membersModel, membersUIList, \"name\");\n membersCtrl.setDelegate({\n createItem: () => new osparc.ui.list.MemberListItem(),\n bindItem: (ctrl, item, id) => {\n ctrl.bindProperty(\"userId\", \"model\", null, item, id);\n ctrl.bindProperty(\"userId\", \"key\", null, item, id);\n ctrl.bindProperty(\"thumbnail\", \"thumbnail\", null, item, id);\n ctrl.bindProperty(\"label\", \"title\", null, item, id);\n ctrl.bindProperty(\"description\", \"subtitleMD\", null, item, id);\n ctrl.bindProperty(\"accessRights\", \"accessRights\", null, item, id);\n ctrl.bindProperty(\"options\", \"options\", null, item, id);\n ctrl.bindProperty(\"showOptions\", \"showOptions\", null, item, id);\n },\n configureItem: item => {\n item.subscribeToFilterGroup(\"organizationMembersList\");\n item.getChildControl(\"thumbnail\").getContentElement()\n .setStyles({\n \"border-radius\": \"16px\"\n });\n item.addListener(\"promoteToMember\", e => {\n const listedMember = e.getData();\n this.__promoteToUser(listedMember);\n });\n item.addListener(\"promoteToManager\", e => {\n const listedMember = e.getData();\n this.__promoteToManager(listedMember);\n });\n item.addListener(\"promoteToAdministrator\", e => {\n const listedMember = e.getData();\n this.__promoteToAdministrator(listedMember);\n });\n item.addListener(\"demoteToUser\", e => {\n const listedMember = e.getData();\n this.__demoteToRestrictedUser(listedMember);\n });\n item.addListener(\"demoteToMember\", e => {\n const listedMember = e.getData();\n this.__demoteToMember(listedMember);\n });\n item.addListener(\"demoteToManager\", e => {\n const listedMember = e.getData();\n this.__demoteToManager(listedMember);\n });\n item.addListener(\"removeMember\", e => {\n const listedMember = e.getData();\n this.__deleteMember(listedMember);\n });\n item.addListener(\"leaveResource\", e => {\n const listedMember = e.getData();\n this.__deleteMyself(listedMember);\n });\n }\n });\n\n return membersUIList;\n },\n\n __reloadOrgMembers: function() {\n const membersModel = this.__membersModel;\n membersModel.removeAll();\n\n const organization = this.__currentOrg;\n if (organization === null) {\n return;\n }\n\n const canIWrite = organization.getAccessRights()[\"write\"];\n const canIDelete = organization.getAccessRights()[\"delete\"];\n\n const introText = canIWrite ?\n this.tr(\"You can add new members and change their roles.\") :\n this.tr(\"You can't add new members to this Organization. Please contact an Administrator or Manager.\");\n this.__introLabel.setValue(introText);\n\n this.__addMembersButton.set({\n enabled: canIWrite\n });\n\n const myGroupId = osparc.auth.Data.getInstance().getGroupId();\n const membersList = [];\n const groupMembers = organization.getGroupMembers();\n Object.values(groupMembers).forEach(groupMember => {\n const gid = parseInt(groupMember.getGroupId());\n const member = {};\n member[\"userId\"] = gid === myGroupId ? osparc.auth.Data.getInstance().getUserId() : groupMember.getUserId();\n member[\"groupId\"] = gid;\n member[\"thumbnail\"] = groupMember.getThumbnail();\n member[\"label\"] = groupMember.getLabel();\n member[\"description\"] = gid === myGroupId ? osparc.auth.Data.getInstance().getEmail() : groupMember.getDescription();\n member[\"accessRights\"] = groupMember.getAccessRights();\n let options = [];\n if (canIDelete) {\n // admin...\n if (groupMember.getAccessRights()[\"delete\"]) {\n // ...on admin\n options = [];\n } else if (groupMember.getAccessRights()[\"write\"]) {\n // ...on manager\n options = [\n \"promoteToAdministrator\",\n \"demoteToMember\",\n \"removeMember\"\n ];\n } else if (groupMember.getAccessRights()[\"read\"]) {\n // ...on member\n options = [\n \"promoteToManager\",\n \"demoteToUser\",\n \"removeMember\"\n ];\n } else if (!groupMember.getAccessRights()[\"read\"]) {\n // ...on user\n options = [\n \"promoteToMember\",\n \"removeMember\"\n ];\n }\n } else if (canIWrite) {\n // manager...\n if (groupMember.getAccessRights()[\"delete\"]) {\n // ...on admin\n options = [];\n } else if (groupMember.getAccessRights()[\"write\"]) {\n // ...on manager\n options = [];\n } else if (groupMember.getAccessRights()[\"read\"]) {\n // ...on member\n options = [\n \"promoteToManager\",\n \"demoteToUser\",\n \"removeMember\"\n ];\n } else if (!groupMember.getAccessRights()[\"read\"]) {\n // ...on user\n options = [\n \"promoteToMember\",\n \"removeMember\"\n ];\n }\n }\n // Let me go?\n const openStudy = osparc.store.Store.getInstance().getCurrentStudy();\n if (\n openStudy === null &&\n canIWrite &&\n groupMembers.length > 1 && groupMember.getGroupId() === myGroupId\n ) {\n options.push(\"leave\");\n }\n member[\"options\"] = options;\n member[\"showOptions\"] = Boolean(options.length);\n membersList.push(member);\n });\n membersList.sort(this.self().sortOrgMembers);\n membersList.forEach(member => membersModel.append(qx.data.marshal.Json.createModel(member)));\n },\n\n __addMember: async function(newMemberIdentifier) {\n if (this.__currentOrg === null) {\n return;\n }\n\n const orgId = this.__currentOrg.getGroupId();\n const groupsStore = osparc.store.Groups.getInstance();\n const isEmail = osparc.utils.Utils.isEmail(newMemberIdentifier);\n const request = isEmail ? groupsStore.addMember(orgId, null, newMemberIdentifier) : groupsStore.addMember(orgId, newMemberIdentifier);\n request\n .then(newMember => {\n const text = newMemberIdentifier + this.tr(\" successfully added\");\n osparc.FlashMessenger.getInstance().logAs(text);\n this.__reloadOrgMembers();\n\n // push 'NEW_ORGANIZATION' notification\n osparc.notification.Notifications.postNewOrganization(newMember.getUserId(), orgId);\n })\n .catch(err => {\n const errorMessage = err[\"message\"] || this.tr(\"Something went wrong adding the user\");\n osparc.FlashMessenger.getInstance().logAs(errorMessage, \"ERROR\");\n console.error(err);\n });\n },\n\n __promoteToUser: function(listedMember) {\n if (this.__currentOrg === null) {\n return;\n }\n\n const newAccessRights = this.self().getReadAccess();\n const groupsStore = osparc.store.Groups.getInstance();\n groupsStore.patchMember(this.__currentOrg.getGroupId(), listedMember[\"id\"], newAccessRights)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(`Successfully promoted to ${osparc.data.Roles.ORG[1].label}`));\n this.__reloadOrgMembers();\n })\n .catch(err => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong promoting to \") + osparc.data.Roles.ORG[1].label, \"ERROR\");\n console.error(err);\n });\n },\n\n __demoteToRestrictedUser: function(listedMember, msg) {\n if (this.__currentOrg === null) {\n return;\n }\n\n const orgId = this.__currentOrg.getGroupId();\n const userId = \"id\" in listedMember ? listedMember[\"id\"] : listedMember[\"key\"]\n const newAccessRights = this.self().getNoReadAccess();\n const groupsStore = osparc.store.Groups.getInstance();\n groupsStore.patchAccessRights(orgId, userId, newAccessRights)\n .then(() => {\n if (msg === undefined) {\n msg = this.tr(`Successfully demoted to ${osparc.data.Roles.ORG[0].label}`);\n }\n osparc.FlashMessenger.getInstance().logAs(msg);\n this.__reloadOrgMembers();\n })\n .catch(err => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong demoting to \") + osparc.data.Roles.ORG[0].label, \"ERROR\");\n console.error(err);\n });\n },\n\n __promoteToManager: function(listedMember) {\n if (this.__currentOrg === null) {\n return;\n }\n\n const orgId = this.__currentOrg.getGroupId();\n const userId = listedMember[\"id\"];\n const newAccessRights = this.self().getWriteAccess();\n const groupsStore = osparc.store.Groups.getInstance();\n groupsStore.patchAccessRights(orgId, userId, newAccessRights)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(`Successfully promoted to ${osparc.data.Roles.ORG[2].label}`));\n this.__reloadOrgMembers();\n })\n .catch(err => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong promoting to \") + osparc.data.Roles.ORG[2].label, \"ERROR\");\n console.error(err);\n });\n },\n\n __promoteToAdministrator: function(listedMember) {\n if (this.__currentOrg === null) {\n return;\n }\n\n const orgId = this.__currentOrg.getGroupId();\n const userId = listedMember[\"id\"];\n const newAccessRights = this.self().getDeleteAccess();\n const groupsStore = osparc.store.Groups.getInstance();\n groupsStore.patchAccessRights(orgId, userId, newAccessRights)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(`Successfully promoted to ${osparc.data.Roles.ORG[3].label}`));\n this.__reloadOrgMembers();\n })\n .catch(err => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong promoting to \") + osparc.data.Roles.ORG[3].label, \"ERROR\");\n console.error(err);\n });\n },\n\n __demoteToMember: function(listedMember) {\n if (this.__currentOrg === null) {\n return;\n }\n\n const orgId = this.__currentOrg.getGroupId();\n const userId = listedMember[\"id\"];\n const newAccessRights = this.self().getReadAccess();\n const groupsStore = osparc.store.Groups.getInstance();\n groupsStore.patchAccessRights(orgId, userId, newAccessRights)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(`Successfully demoted to ${osparc.data.Roles.ORG[1].label}`));\n this.__reloadOrgMembers();\n })\n .catch(err => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong demoting to \") + osparc.data.Roles.ORG[1].label, \"ERROR\");\n console.error(err);\n });\n },\n\n __demoteToManager: function(listedMember) {\n if (this.__currentOrg === null) {\n return;\n }\n\n const orgId = this.__currentOrg.getGroupId();\n const userId = listedMember[\"id\"];\n const newAccessRights = this.self().getWriteAccess();\n const groupsStore = osparc.store.Groups.getInstance();\n groupsStore.patchAccessRights(orgId, userId, newAccessRights)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(`Successfully demoted to ${osparc.data.Roles.ORG[3].label}`));\n this.__reloadOrgMembers();\n })\n .catch(err => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong demoting to \") + osparc.data.Roles.ORG[3].label, \"ERROR\");\n console.error(err);\n });\n },\n\n __doDeleteMember: function(listedMember) {\n const groupsStore = osparc.store.Groups.getInstance();\n return groupsStore.removeMember(this.__currentOrg.getGroupId(), listedMember[\"id\"])\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(listedMember[\"name\"] + this.tr(\" successfully removed\"));\n this.__reloadOrgMembers();\n })\n .catch(err => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong removing \") + listedMember[\"name\"], \"ERROR\");\n console.error(err);\n });\n },\n\n __deleteMember: function(listedMember) {\n if (this.__currentOrg === null) {\n return;\n }\n\n this.__doDeleteMember(listedMember)\n .then(() => this.__reloadOrgMembers());\n },\n\n __deleteMyself: function(orgMember) {\n if (this.__currentOrg === null) {\n return;\n }\n\n const members = this.__currentOrg.getGroupMembers()\n const isThereAnyAdmin = members.some(member => member.getAccessRights()[\"delete\"]);\n const isThereAnyManager = members.some(member => member.getAccessRights()[\"write\"]);\n let rUSure = this.tr(\"Are you sure you want to leave?\");\n if (isThereAnyAdmin) {\n rUSure += `
There is no ${osparc.data.Roles.ORG[2].label} in this Organization.`;\n } else if (isThereAnyManager) {\n rUSure += `
There is no ${osparc.data.Roles.ORG[3].label} in this Organization.`;\n }\n rUSure += \"
\" + this.tr(\"If you Leave, the page will be reloaded.\");\n const confirmationWin = new osparc.ui.window.Confirmation(rUSure).set({\n caption: this.tr(\"Leave Organization\"),\n confirmText: this.tr(\"Leave\"),\n confirmAction: \"delete\"\n });\n confirmationWin.center();\n confirmationWin.open();\n confirmationWin.addListener(\"close\", () => {\n if (confirmationWin.getConfirmed()) {\n this.__doDeleteMember(orgMember)\n .then(() => window.location.reload());\n }\n }, this);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.organizations.TemplatesList\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this._add(this.__createIntroText());\n this._add(this.__getTemplatesFilter());\n this._add(this.__getTemplatesList(), {\n flex: 1\n });\n },\n\n members: {\n __currentOrg: null,\n __templatesModel: null,\n\n setCurrentOrg: function(orgModel) {\n if (orgModel === null) {\n return;\n }\n this.__currentOrg = orgModel;\n this.__reloadOrgTemplates();\n },\n\n __createIntroText: function() {\n const msg = this.tr(\"This is the list of \") + osparc.product.Utils.getTemplateAlias({plural: true}) + this.tr(\" shared with this Organization\");\n const intro = new qx.ui.basic.Label().set({\n value: msg,\n alignX: \"left\",\n rich: true,\n font: \"text-13\"\n });\n return intro;\n },\n\n __getTemplatesFilter: function() {\n const filter = new osparc.filter.TextFilter(\"text\", \"organizationTemplatesList\").set({\n allowStretchX: true,\n margin: [0, 10, 5, 10]\n });\n return filter;\n },\n\n __getTemplatesList: function() {\n const templatesUIList = new qx.ui.form.List().set({\n decorator: \"no-border\",\n spacing: 3\n });\n\n const templatesModel = this.__templatesModel = new qx.data.Array();\n const templatesCtrl = new qx.data.controller.List(templatesModel, templatesUIList, \"name\");\n templatesCtrl.setDelegate({\n createItem: () => new osparc.desktop.organizations.SharedResourceListItem(\"template\"),\n bindItem: (ctrl, item, id) => {\n ctrl.bindProperty(\"uuid\", \"model\", null, item, id);\n ctrl.bindProperty(\"uuid\", \"key\", null, item, id);\n ctrl.bindProperty(\"orgId\", \"orgId\", null, item, id);\n ctrl.bindProperty(\"thumbnail\", \"thumbnail\", null, item, id);\n ctrl.bindProperty(\"name\", \"title\", null, item, id);\n ctrl.bindProperty(\"description\", \"subtitleMD\", null, item, id);\n ctrl.bindProperty(\"accessRights\", \"accessRights\", {\n converter: data => data.get(item.getOrgId())\n }, item, id);\n },\n configureItem: item => {\n item.subscribeToFilterGroup(\"organizationTemplatesList\");\n item.addListener(\"openMoreInfo\", e => {\n const templateId = e.getData()[\"key\"];\n osparc.data.Resources.get(\"templates\")\n .then(templates => {\n const templateData = templates.find(t => t.uuid === templateId);\n if (templateData) {\n templateData[\"resourceType\"] = \"template\";\n const resourceDetails = new osparc.dashboard.ResourceDetails(templateData).set({\n showOpenButton: false\n });\n osparc.dashboard.ResourceDetails.popUpInWindow(resourceDetails);\n }\n });\n });\n }\n });\n\n return templatesUIList;\n },\n\n __reloadOrgTemplates: function() {\n const templatesModel = this.__templatesModel;\n templatesModel.removeAll();\n\n const orgModel = this.__currentOrg;\n if (orgModel === null) {\n return;\n }\n\n const groupId = orgModel.getGroupId();\n osparc.data.Resources.getInstance().getAllPages(\"templates\")\n .then(templates => {\n const orgTemplates = templates.filter(template => groupId in template[\"accessRights\"]);\n orgTemplates.forEach(orgTemplate => {\n const orgTemplateCopy = osparc.utils.Utils.deepCloneObject(orgTemplate);\n orgTemplateCopy[\"orgId\"] = groupId;\n templatesModel.append(qx.data.marshal.Json.createModel(orgTemplateCopy));\n });\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.organizations.ServicesList\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this._add(this.__createIntroText());\n this._add(this.__getServicesFilter());\n this._add(this.__getServicesList(), {\n flex: 1\n });\n },\n\n members: {\n __currentOrg: null,\n __servicesModel: null,\n\n setCurrentOrg: function(orgModel) {\n if (orgModel === null) {\n return;\n }\n this.__currentOrg = orgModel;\n this.__reloadOrgServices();\n },\n\n __createIntroText: function() {\n const msg = this.tr(\"This is the list of services shared with this Organization\");\n const intro = new qx.ui.basic.Label().set({\n value: msg,\n alignX: \"left\",\n rich: true,\n font: \"text-13\"\n });\n return intro;\n },\n\n __getServicesFilter: function() {\n const filter = new osparc.filter.TextFilter(\"text\", \"organizationServicesList\").set({\n allowStretchX: true,\n margin: [0, 10, 5, 10]\n });\n return filter;\n },\n\n __getServicesList: function() {\n const servicesUIList = new qx.ui.form.List().set({\n decorator: \"no-border\",\n spacing: 3\n });\n\n const servicesModel = this.__servicesModel = new qx.data.Array();\n const servicesCtrl = new qx.data.controller.List(servicesModel, servicesUIList, \"name\");\n servicesCtrl.setDelegate({\n createItem: () => new osparc.desktop.organizations.SharedResourceListItem(\"service\"),\n bindItem: (ctrl, item, id) => {\n ctrl.bindProperty(\"key\", \"model\", null, item, id);\n ctrl.bindProperty(\"key\", \"key\", null, item, id);\n ctrl.bindProperty(\"version\", \"version\", null, item, id);\n ctrl.bindProperty(\"orgId\", \"orgId\", null, item, id);\n ctrl.bindProperty(\"thumbnail\", \"thumbnail\", null, item, id);\n ctrl.bindProperty(\"name\", \"title\", null, item, id);\n ctrl.bindProperty(\"description\", \"subtitleMD\", null, item, id);\n ctrl.bindProperty(\"accessRights\", \"accessRights\", {\n converter: data => data.get(item.getOrgId())\n }, item, id);\n },\n configureItem: item => {\n item.subscribeToFilterGroup(\"organizationTemplatesList\");\n item.addListener(\"openMoreInfo\", e => {\n const serviceKey = e.getData()[\"key\"];\n const serviceVersion = e.getData()[\"version\"];\n osparc.store.Services.getService(serviceKey, serviceVersion)\n .then(serviceData => {\n if (serviceData) {\n serviceData[\"resourceType\"] = \"service\";\n const resourceDetails = new osparc.dashboard.ResourceDetails(serviceData).set({\n showOpenButton: false\n });\n osparc.dashboard.ResourceDetails.popUpInWindow(resourceDetails);\n }\n });\n });\n }\n });\n\n return servicesUIList;\n },\n\n __reloadOrgServices: function() {\n const servicesModel = this.__servicesModel;\n servicesModel.removeAll();\n\n const orgModel = this.__currentOrg;\n if (orgModel === null) {\n return;\n }\n\n const groupId = orgModel.getGroupId();\n osparc.store.Services.getServicesLatest()\n .then(servicesLatest => {\n const orgServices = [];\n Object.keys(servicesLatest).forEach(key => {\n const serviceLatest = servicesLatest[key];\n if (groupId in serviceLatest[\"accessRights\"]) {\n orgServices.push(serviceLatest);\n }\n });\n orgServices.forEach(orgService => {\n const orgServiceCopy = osparc.utils.Utils.deepCloneObject(orgService);\n orgServiceCopy[\"orgId\"] = groupId;\n if (orgServiceCopy[\"thumbnail\"] === null) {\n orgServiceCopy[\"thumbnail\"] = osparc.dashboard.CardBase.PRODUCT_THUMBNAIL;\n }\n servicesModel.append(qx.data.marshal.Json.createModel(orgServiceCopy));\n });\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.credits.CreditsServiceListItem\", {\n extend: osparc.ui.list.ListItem,\n\n construct: function(serviceKey, credits, hours, percentage) {\n this.base(arguments);\n\n const layout = this._getLayout();\n layout.setSpacingX(12);\n layout.setSpacingY(4);\n layout.setColumnFlex(this.self().GRID.ICON.column, 0);\n layout.setColumnFlex(this.self().GRID.NAME.column, 1);\n layout.setColumnFlex(this.self().GRID.TIME.column, 0);\n layout.setColumnFlex(this.self().GRID.CREDITS.column, 0);\n\n const icon = this.getChildControl(\"icon\");\n const name = this.getChildControl(\"title\");\n const serviceMetadata = osparc.service.Utils.getLatest(serviceKey);\n if (serviceMetadata) {\n const source = osparc.utils.Utils.getIconFromResource(serviceMetadata);\n icon.setSource(source);\n name.setValue(serviceMetadata[\"name\"]);\n } else {\n icon.setSource(osparc.dashboard.CardBase.PRODUCT_THUMBNAIL);\n const serviceName = serviceKey.split(\"/\").pop();\n name.setValue(serviceName);\n }\n this.getChildControl(\"percentage\").set({\n maximum: 100,\n value: percentage\n });\n this.getChildControl(\"time\").setValue(hours + \" h\");\n this.getChildControl(\"credits\").setValue(credits + \" used\");\n },\n\n statics: {\n GRID: {\n ICON: {\n column: 0,\n row: 0,\n rowSpan: 2\n },\n NAME: {\n column: 1,\n row: 0\n },\n PERCENTAGE: {\n column: 1,\n row: 1\n },\n TIME: {\n column: 2,\n row: 0,\n rowSpan: 2\n },\n CREDITS: {\n column: 3,\n row: 0,\n rowSpan: 2\n }\n }\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"icon\": {\n control = new osparc.ui.basic.Thumbnail(null, 32, 32).set({\n minHeight: 32,\n minWidth: 32\n });\n control.getChildControl(\"image\").set({\n decorator: \"rounded\",\n });\n this._add(control, this.self().GRID.ICON);\n break;\n }\n case \"title\":\n control = new qx.ui.basic.Label().set({\n font: \"text-12\",\n alignY: \"middle\",\n maxWidth: 200,\n allowGrowX: true,\n rich: true,\n });\n this._add(control, this.self().GRID.NAME);\n break;\n case \"percentage\":\n control = new qx.ui.indicator.ProgressBar().set({\n backgroundColor: \"transparent\",\n maxHeight: 8,\n margin: 0,\n padding: 0\n });\n control.getChildControl(\"progress\").set({\n backgroundColor: \"strong-main\"\n });\n control.getContentElement().setStyles({\n \"border-radius\": \"2px\"\n });\n this._add(control, this.self().GRID.PERCENTAGE);\n break;\n case \"time\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\",\n alignY: \"middle\"\n });\n this._add(control, this.self().GRID.TIME);\n break;\n case \"credits\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\",\n alignY: \"middle\"\n });\n this._add(control, this.self().GRID.CREDITS);\n break;\n }\n\n return control || this.base(arguments, id);\n }\n }\n});\n","/* ************************************************************************\n osparc - the simcore frontend\n https://osparc.io\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n License:\n MIT: https://opensource.org/licenses/MIT\n Authors:\n * Odei Maiz (odeimaiz)\n************************************************************************ */\n\n/**\n *\n */\n\nqx.Class.define(\"osparc.desktop.preferences.window.APIKeyBase\", {\n extend: osparc.ui.window.Window,\n type: \"abstract\",\n\n construct: function(caption, infoText) {\n this.base(arguments, caption);\n\n this.set({\n layout: new qx.ui.layout.VBox(10),\n autoDestroy: true,\n modal: true,\n showMaximize: false,\n showMinimize: false,\n width: 350,\n clickAwayClose: true\n });\n\n this.__addInfoText(infoText);\n\n this.center();\n },\n\n members: {\n __addInfoText: function(infoText) {\n const introLabel = new qx.ui.basic.Label(infoText).set({\n paddingLeft: 5,\n paddingRight: 5,\n rich: true\n });\n this.add(introLabel);\n }\n }\n});\n","/* ************************************************************************\n osparc - the simcore frontend\n https://osparc.io\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n License:\n MIT: https://opensource.org/licenses/MIT\n Authors:\n * Odei Maiz (odeimaiz)\n************************************************************************ */\n\n/**\n *\n */\n\nqx.Class.define(\"osparc.desktop.preferences.window.CreateAPIKey\", {\n extend: osparc.desktop.preferences.window.APIKeyBase,\n\n construct: function() {\n const caption = this.tr(\"Create API Key\");\n const infoText = this.tr(\"Key names must be unique.\");\n this.base(arguments, caption, infoText);\n\n this.__populateWindow();\n },\n\n events: {\n \"finished\": \"qx.event.type.Data\"\n },\n\n members: {\n __form: null,\n\n __populateWindow: function() {\n const form = this.__form = new qx.ui.form.Form();\n\n const keyName = new qx.ui.form.TextField().set({\n required: true\n });\n form.add(keyName, this.tr(\"Key Name\"), null, \"name\");\n this.addListener(\"appear\", () => keyName.focus());\n\n const dateFormat = new qx.util.format.DateFormat(\"dd/MM/yyyy-HH:mm:ss\");\n const expirationDate = new qx.ui.form.DateField();\n form.add(expirationDate, this.tr(\"Expiration Date\"), null, \"expiration\");\n expirationDate.addListener(\"changeValue\", e => {\n const date = e.getData();\n if (date) {\n // allow only future dates\n if (new Date() > new Date(date)) {\n const msg = this.tr(\"Choose a future date\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"WARNING\");\n expirationDate.resetValue();\n } else {\n expirationDate.setDateFormat(dateFormat);\n }\n }\n });\n\n const formRenderer = new qx.ui.form.renderer.Single(form);\n this.add(formRenderer);\n\n const hBox2 = new qx.ui.container.Composite(new qx.ui.layout.HBox(10));\n hBox2.add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n const confirmBtn = new qx.ui.form.Button(this.tr(\"Confirm\"));\n confirmBtn.addListener(\"execute\", () => {\n this.fireDataEvent(\"finished\", {\n name: form.getItem(\"name\").getValue(),\n expiration: form.getItem(\"expiration\").getValue()\n });\n }, this);\n hBox2.add(confirmBtn);\n\n this.add(hBox2);\n }\n }\n});\n","/* ************************************************************************\n osparc - the simcore frontend\n https://osparc.io\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n License:\n MIT: https://opensource.org/licenses/MIT\n Authors:\n * Odei Maiz (odeimaiz)\n************************************************************************ */\n\n/**\n *\n */\n\nqx.Class.define(\"osparc.desktop.preferences.window.ShowAPIKey\", {\n extend: osparc.desktop.preferences.window.APIKeyBase,\n\n construct: function(key, secret, baseUrl) {\n const caption = this.tr(\"API Key\");\n const infoText = this.tr(\"For your protection, store your access keys securely and do not share them. You will not be able to access the key again once this window is closed.\");\n this.base(arguments, caption, infoText);\n\n this.set({\n clickAwayClose: false\n });\n\n this.__populateTokens(key, secret, baseUrl);\n },\n\n members: {\n __populateTokens: function(key, secret, baseUrl) {\n const hBox1 = this.__createStarredEntry(this.tr(\"Key:\"), key);\n this._add(hBox1);\n\n const hBox2 = this.__createStarredEntry(this.tr(\"Secret:\"), secret);\n this._add(hBox2);\n\n const hBox3 = this.__createEntry(this.tr(\"Base url:\"), baseUrl);\n this._add(hBox3);\n\n const buttonsLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(10)).set({\n appearance: \"margined-layout\"\n });\n const copyAPIKeyBtn = new qx.ui.form.Button(this.tr(\"API Key\"), \"@FontAwesome5Solid/copy/12\");\n copyAPIKeyBtn.addListener(\"execute\", e => {\n if (osparc.utils.Utils.copyTextToClipboard(key)) {\n copyAPIKeyBtn.setIcon(\"@FontAwesome5Solid/check/12\");\n }\n });\n buttonsLayout.add(copyAPIKeyBtn, {\n flex: 1\n });\n const copyAPISecretBtn = new qx.ui.form.Button(this.tr(\"API Secret\"), \"@FontAwesome5Solid/copy/12\");\n copyAPISecretBtn.addListener(\"execute\", e => {\n if (osparc.utils.Utils.copyTextToClipboard(secret)) {\n copyAPISecretBtn.setIcon(\"@FontAwesome5Solid/check/12\");\n }\n });\n buttonsLayout.add(copyAPISecretBtn, {\n flex: 1\n });\n const copyBaseUrlBtn = new qx.ui.form.Button(this.tr(\"Base URL\"), \"@FontAwesome5Solid/copy/12\");\n copyBaseUrlBtn.addListener(\"execute\", e => {\n if (osparc.utils.Utils.copyTextToClipboard(baseUrl)) {\n copyBaseUrlBtn.setIcon(\"@FontAwesome5Solid/check/12\");\n }\n });\n buttonsLayout.add(copyBaseUrlBtn, {\n flex: 1\n });\n this._add(buttonsLayout);\n },\n\n __createStarredEntry: function(title, label) {\n const hBox = this.__createEntry(title);\n if (label) {\n // partially hide the key and secret\n hBox.getChildren()[1].setValue(label.substring(1, 8) + \"****\")\n }\n return hBox;\n },\n\n __createEntry: function(title, label) {\n const hBox = new qx.ui.container.Composite(new qx.ui.layout.HBox(10)).set({\n padding: 5\n });\n const sTitle = new qx.ui.basic.Label(title).set({\n rich: true,\n width: 60\n });\n hBox.add(sTitle);\n const sLabel = new qx.ui.basic.Label();\n if (label) {\n // partially hide the key and secret\n sLabel.setValue(label);\n }\n hBox.add(sLabel);\n return hBox;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.admin.AdminCenter\", {\n extend: osparc.ui.window.TabbedView,\n\n construct: function() {\n this.base(arguments);\n\n const miniProfile = osparc.desktop.account.MyAccount.createMiniProfileView().set({\n paddingRight: 10\n });\n this.addWidgetToTabs(miniProfile);\n\n this.__addPricingPlansPage();\n this.__addMaintenancePage();\n this.__addAnnouncementsPage();\n },\n\n members: {\n __addPricingPlansPage: function() {\n const title = this.tr(\"Pricing Plans\");\n const iconSrc = \"@FontAwesome5Solid/dollar-sign/22\";\n const pricingPlans = new osparc.pricing.PlanManager();\n this.addTab(title, iconSrc, pricingPlans);\n },\n\n __addMaintenancePage: function() {\n const title = this.tr(\"Maintenance\");\n const iconSrc = \"@FontAwesome5Solid/wrench/22\";\n const maintenance = new osparc.admin.Maintenance();\n this.addTab(title, iconSrc, maintenance);\n },\n\n __addAnnouncementsPage: function() {\n const title = this.tr(\"Announcements\");\n const iconSrc = \"@FontAwesome5Solid/bullhorn/22\";\n const announcements = new osparc.admin.Announcements();\n this.addTab(title, iconSrc, announcements);\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.po.POCenter\", {\n extend: osparc.ui.window.TabbedView,\n\n construct: function() {\n this.base(arguments);\n\n const miniProfile = osparc.desktop.account.MyAccount.createMiniProfileView().set({\n paddingRight: 10\n });\n this.addWidgetToTabs(miniProfile);\n\n this.__addUsersPage();\n this.__addPreRegistrationPage();\n this.__addInvitationsPage();\n this.__addProductPage();\n this.__addMsgTemplatesPage();\n },\n\n members: {\n __addUsersPage: function() {\n const title = this.tr(\"Users\");\n const iconSrc = \"@FontAwesome5Solid/user/22\";\n const users = new osparc.po.Users();\n this.addTab(title, iconSrc, users);\n },\n\n __addPreRegistrationPage: function() {\n const title = this.tr(\"PreRegistration\");\n const iconSrc = \"@FontAwesome5Solid/address-card/22\";\n const preRegistration = new osparc.po.PreRegistration();\n this.addTab(title, iconSrc, preRegistration);\n },\n\n __addInvitationsPage: function() {\n const title = this.tr(\"Invitations\");\n const iconSrc = \"@FontAwesome5Solid/envelope/22\";\n const invitations = new osparc.po.Invitations();\n this.addTab(title, iconSrc, invitations);\n },\n\n __addProductPage: function() {\n const title = this.tr(\"Product Info\");\n const iconSrc = \"@FontAwesome5Solid/info/22\";\n const productInfo = new osparc.po.ProductInfo();\n this.addTab(title, iconSrc, productInfo);\n },\n\n __addMsgTemplatesPage: function() {\n const title = this.tr(\"Message Templates\");\n const iconSrc = \"@FontAwesome5Solid/envelope-open/22\";\n const productInfo = new osparc.po.MessageTemplates();\n this.addTab(title, iconSrc, productInfo);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.tester.TesterCenter\", {\n extend: osparc.ui.window.TabbedView,\n\n construct: function() {\n this.base(arguments);\n\n const miniProfile = osparc.desktop.account.MyAccount.createMiniProfileView().set({\n paddingRight: 10\n });\n this.addWidgetToTabs(miniProfile);\n\n this.__addSocketMessagesPage();\n this.__addConsoleErrorsPage();\n this.__addStaticsPage();\n },\n\n members: {\n __addSocketMessagesPage: function() {\n const title = this.tr(\"Socket Messages\");\n const iconSrc = \"@FontAwesome5Solid/exchange-alt/22\";\n const webSocketMessages = new osparc.tester.WebSocketMessages();\n this.addTab(title, iconSrc, webSocketMessages);\n },\n\n __addConsoleErrorsPage: function() {\n const title = this.tr(\"Console Errors\");\n const iconSrc = \"@FontAwesome5Solid/times/22\";\n const consoleErrors = new osparc.tester.ConsoleErrors();\n this.addTab(title, iconSrc, consoleErrors);\n },\n\n __addStaticsPage: function() {\n const title = this.tr(\"Statics\");\n const iconSrc = \"@FontAwesome5Solid/wrench/22\";\n const maintenance = new osparc.tester.Statics();\n this.addTab(title, iconSrc, maintenance);\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n * Ignacio Pascual\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.credits.AutoRecharge\", {\n extend: qx.ui.container.Stack,\n\n construct: function(walletId) {\n this.base(arguments);\n\n const store = osparc.store.Store.getInstance();\n const wallet = store.getWallets().find(w => w.getWalletId() == walletId);\n\n this.__buildLayout();\n this.setWallet(wallet);\n },\n\n properties: {\n wallet: {\n check: \"osparc.data.model.Wallet\",\n init: null,\n nullable: true,\n event: \"changeWallet\",\n apply: \"__applyWallet\"\n }\n },\n\n events: {\n \"addNewPaymentMethod\": \"qx.event.type.Event\",\n \"close\": \"qx.event.type.Event\"\n },\n\n members: {\n __topUpAmountField: null,\n __monthlyLimitField: null,\n __paymentMethodField: null,\n\n __buildLayout: function() {\n this.removeAll();\n\n const titleText = this.tr(\"Auto-recharge\");\n const introText = this.tr(\"Keep your balance running smoothly by automatically setting your credits to be recharged when it runs low.\");\n\n this.__mainContent = new qx.ui.container.Composite(new qx.ui.layout.VBox(15).set({\n alignX: \"center\"\n }))\n const title = new qx.ui.basic.Label(titleText).set({\n marginTop: 25,\n font: \"title-18\"\n });\n const subtitle = new qx.ui.basic.Label(introText).set({\n rich: true,\n font: \"text-14\",\n textAlign: \"center\"\n });\n this.__mainContent.add(title);\n this.__mainContent.add(subtitle);\n this.__mainContent.add(this.__getAutoRechargeForm())\n this.__mainContent.add(this.__getButtons())\n this.add(this.__mainContent)\n\n this.__noPaymentMethodsContent = new qx.ui.container.Composite(new qx.ui.layout.VBox(15).set({\n alignX: \"center\"\n }))\n this.__noPaymentMethodsContent.add(new qx.ui.basic.Label(titleText).set({\n marginTop: 25,\n font: \"title-18\"\n }))\n this.__noPaymentMethodsContent.add(new qx.ui.basic.Label(introText).set({\n rich: true,\n font: \"text-14\",\n textAlign: \"center\"\n }))\n this.__noPaymentMethodsContent.add(new qx.ui.basic.Label(this.tr(\"Before the auto-recharge function can be activated you need to add your first payment method\")).set({\n rich: true,\n font: \"text-14\",\n textAlign: \"center\"\n }))\n const addNewPaymentMethod = new qx.ui.basic.Label(this.tr(\"Add Payment Method\")).set({\n cursor: \"pointer\",\n font: \"link-label-14\",\n textAlign: \"center\"\n });\n addNewPaymentMethod.addListener(\"tap\", () => this.fireEvent(\"addNewPaymentMethod\"));\n this.__noPaymentMethodsContent.add(addNewPaymentMethod)\n this.add(this.__noPaymentMethodsContent)\n\n this.__fetchingView = new qx.ui.container.Composite(new qx.ui.layout.VBox().set({\n alignX: \"center\",\n alignY: \"middle\"\n }))\n const image = new qx.ui.basic.Image(\"@FontAwesome5Solid/circle-notch/26\")\n image.getContentElement().addClass(\"rotate\")\n this.__fetchingView.add(image)\n this.add(this.__fetchingView)\n\n this.setSelection([this.__fetchingView])\n },\n\n __applyWallet: function(wallet) {\n let myAccessRights = null;\n if (wallet) {\n myAccessRights = wallet.getMyAccessRights();\n if (myAccessRights[\"write\"]) {\n this.__requestData();\n }\n }\n this.setEnabled(Boolean(myAccessRights && myAccessRights[\"write\"]));\n },\n\n __requestData: async function() {\n const wallet = this.getWallet();\n const paymentMethodSB = this.__paymentMethodField;\n await osparc.desktop.credits.Utils.populatePaymentMethodSelector(wallet, paymentMethodSB);\n if (paymentMethodSB.getChildren().length) {\n this.setSelection([this.__fetchingView])\n // Get auto-recharge data\n const params = {\n url: {\n walletId: wallet.getWalletId()\n }\n };\n osparc.data.Resources.fetch(\"autoRecharge\", \"get\", params)\n .then(arData => this.__populateForm(arData))\n .catch(err => console.error(err.message));\n } else {\n // Wallet has no payment methods\n this.setSelection([this.__noPaymentMethodsContent])\n }\n },\n\n __populateForm: function(arData) {\n this.__enabledField.setValue(arData.enabled);\n this.__topUpAmountField.setValue(arData[\"topUpAmountInUsd\"]);\n if (arData[\"monthlyLimitInUsd\"]) {\n this.__monthlyLimitField.setValue(arData[\"monthlyLimitInUsd\"] > 0 ? arData[\"monthlyLimitInUsd\"] : 0);\n } else {\n this.__monthlyLimitField.setValue(arData[\"topUpCountdown\"] > 0 ? arData[\"topUpCountdown\"]*arData[\"topUpAmountInUsd\"] : 0);\n }\n const paymentMethodSB = this.__paymentMethodField;\n const paymentMethodFound = paymentMethodSB.getSelectables().find(selectable => selectable.getModel() === arData[\"paymentMethodId\"]);\n if (paymentMethodFound) {\n paymentMethodSB.setSelection([paymentMethodFound]);\n }\n this.setSelection([this.__mainContent])\n },\n\n __getAutoRechargeForm: function() {\n const autoRechargeLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(10).set({\n alignX: \"center\"\n })).set({\n marginTop: 20\n });\n\n const enabledLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(5)).set({\n allowStretchX: false,\n width: 274\n });\n const enabledTitle = new qx.ui.basic.Label(this.tr(\"Enabled\")).set({\n marginLeft: 2\n })\n const enabledCheckbox = this.__enabledField = new qx.ui.form.CheckBox().set({\n appearance: \"appmotion-buy-credits-checkbox\"\n });\n enabledLayout.add(enabledTitle);\n enabledLayout.add(enabledCheckbox);\n autoRechargeLayout.add(enabledLayout);\n\n const topUpAmountLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(5)).set({\n allowStretchX: false,\n marginTop: 15\n });\n const topUpAmountTitleLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n const topUpAmountTitle = new qx.ui.basic.Label(this.tr(\"Recharging amount (USD)\")).set({\n marginLeft: 15\n });\n topUpAmountTitleLayout.add(topUpAmountTitle);\n const topUpAmountInfo = new osparc.ui.hint.InfoHint(\"Amount in USD payed when auto-recharge condition is satisfied.\");\n topUpAmountTitleLayout.add(topUpAmountInfo);\n topUpAmountLayout.add(topUpAmountTitleLayout);\n const topUpAmountField = this.__topUpAmountField = new qx.ui.form.Spinner().set({\n maximum: 10000,\n width: 300,\n appearance: \"appmotion-buy-credits-spinner\"\n });\n osparc.store.Store.getInstance().getMinimumAmount()\n .then(minimum => {\n topUpAmountInfo.setHintText(topUpAmountInfo.getText() + `. A minimum amount of ${minimum} USD is required.`);\n topUpAmountField.set({\n minimum\n });\n });\n topUpAmountLayout.add(topUpAmountField);\n autoRechargeLayout.add(topUpAmountLayout);\n\n const monthlyLimitLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(5)).set({\n allowStretchX: false\n });\n const monthlyLimitTitleLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n const monthlyLimitTitle = new qx.ui.basic.Label(this.tr(\"Monthly limit (USD)\")).set({\n marginLeft: 15\n });\n monthlyLimitTitleLayout.add(monthlyLimitTitle);\n const monthlyLimitTitleInfo = new osparc.ui.hint.InfoHint(this.tr(\"Maximum amount in USD charged within a natural month.\"));\n monthlyLimitTitleLayout.add(monthlyLimitTitleInfo);\n monthlyLimitLayout.add(monthlyLimitTitleLayout);\n const monthlyLimitField = this.__monthlyLimitField = new qx.ui.form.Spinner().set({\n minimum: 0,\n maximum: 100000,\n width: 300,\n appearance: \"appmotion-buy-credits-spinner\"\n });\n monthlyLimitLayout.add(monthlyLimitField);\n const monthlyLimitHelper = new qx.ui.basic.Label(this.tr(\"To disable spending limit, clear input field\")).set({\n font: \"text-12\",\n marginLeft: 15,\n rich: true\n });\n monthlyLimitLayout.add(monthlyLimitHelper);\n autoRechargeLayout.add(monthlyLimitLayout);\n\n const paymentMethodLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(5)).set({\n allowStretchX: false\n });\n const paymentMethodTitle = new qx.ui.basic.Label(this.tr(\"Pay with\")).set({\n marginLeft: 15\n });\n paymentMethodLayout.add(paymentMethodTitle);\n const paymentMethodField = this.__paymentMethodField = new qx.ui.form.SelectBox().set({\n width: 300,\n appearance: \"appmotion-buy-credits-select\"\n });\n paymentMethodLayout.add(paymentMethodField);\n const addNewPaymentMethod = new qx.ui.basic.Label(this.tr(\"Add Payment Method\")).set({\n marginLeft: 15,\n cursor: \"pointer\",\n font: \"link-label-12\"\n });\n addNewPaymentMethod.addListener(\"tap\", () => this.fireEvent(\"addNewPaymentMethod\"));\n paymentMethodLayout.add(addNewPaymentMethod);\n autoRechargeLayout.add(paymentMethodLayout);\n\n enabledCheckbox.bind(\"value\", monthlyLimitField, \"enabled\")\n enabledCheckbox.bind(\"value\", paymentMethodField, \"enabled\")\n enabledCheckbox.bind(\"value\", topUpAmountField, \"enabled\")\n enabledCheckbox.bind(\"value\", monthlyLimitHelper, \"visibility\", {\n converter: value => value ? \"visible\" : \"hidden\"\n })\n enabledCheckbox.bind(\"value\", addNewPaymentMethod, \"visibility\", {\n converter: value => value ? \"visible\" : \"hidden\"\n })\n\n return autoRechargeLayout;\n },\n\n __getFieldsData: function() {\n return {\n topUpAmountInUsd: this.__topUpAmountField.getValue(),\n monthlyLimitInUsd: this.__monthlyLimitField.getValue(),\n paymentMethodId: this.__paymentMethodField.getSelection()[0].getModel(),\n enabled: this.__enabledField.getValue()\n };\n },\n\n __updateAutoRecharge: function(enabled, fetchButton, successfulMsg) {\n const wallet = this.getWallet();\n fetchButton.setFetching(true);\n const params = {\n url: {\n walletId: wallet.getWalletId()\n },\n data: this.__getFieldsData()\n };\n params.data.enabled = enabled;\n osparc.data.Resources.fetch(\"autoRecharge\", \"put\", params)\n .then(arData => {\n this.__populateForm(arData);\n wallet.setAutoRecharge(arData);\n osparc.FlashMessenger.getInstance().logAs(successfulMsg, \"INFO\");\n this.fireEvent(\"close\");\n })\n .finally(() => fetchButton.setFetching(false));\n },\n\n __getButtons: function() {\n const btnContainer = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignX: \"center\"\n })).set({\n marginTop: 30,\n marginBottom: 15\n });\n const saveAutoRechargeBtn = new osparc.ui.form.FetchButton(this.tr(\"Save and close\")).set({\n appearance: \"appmotion-button-action\"\n });\n const successfulMsg = this.tr(\"Changes on the Auto recharge were successfully saved\");\n saveAutoRechargeBtn.addListener(\"execute\", () => this.__updateAutoRecharge(this.__enabledField.getValue(), saveAutoRechargeBtn, successfulMsg));\n btnContainer.addAt(saveAutoRechargeBtn, 1)\n const cancelBtn = new qx.ui.form.Button(\"Cancel\").set({\n appearance: \"appmotion-button\"\n });\n cancelBtn.addListener(\"execute\", () => this.fireEvent(\"close\"))\n btnContainer.addAt(cancelBtn, 0)\n return btnContainer;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.wallets.MemberListItem\", {\n extend: osparc.ui.list.ListItemWithMenu,\n\n properties: {\n gid: {\n check: \"Number\",\n init: null,\n nullable: false,\n event: \"changeGid\"\n }\n },\n\n events: {\n \"promoteToAccountant\": \"qx.event.type.Data\",\n \"demoteToMember\": \"qx.event.type.Data\",\n \"removeMember\": \"qx.event.type.Data\"\n },\n\n members: {\n // overridden\n _applySubtitleMD: function(value) {\n this.base(arguments, value);\n\n // highlight me\n const email = osparc.auth.Data.getInstance().getEmail();\n if (value && value.includes(email)) {\n this.addState(\"selected\");\n }\n },\n\n // overridden\n _setRole: function() {\n const accessRights = this.getAccessRights();\n const role = this.getChildControl(\"role\");\n if (\"getWrite\" in accessRights && accessRights.getWrite()) {\n role.setValue(osparc.data.Roles.WALLET[2].label);\n } else if (\"getRead\" in accessRights && accessRights.getRead()) {\n role.setValue(osparc.data.Roles.WALLET[1].label);\n }\n },\n\n // overridden\n _getOptionsMenu: function() {\n const menu = new qx.ui.menu.Menu().set({\n position: \"bottom-right\"\n });\n\n const options = this.getOptions();\n if (options === null) {\n return menu;\n }\n\n if (options.includes(\"promoteToAccountant\")) {\n const promoteButton = new qx.ui.menu.Button(this.tr(\"Promote to \") + osparc.data.Roles.WALLET[2].label);\n promoteButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"promoteToAccountant\", {\n gid: this.getGid(),\n name: this.getTitle()\n });\n });\n menu.add(promoteButton);\n }\n if (options.includes(\"demoteToMember\")) {\n const demoteButton = new qx.ui.menu.Button(this.tr(\"Demote to \") + osparc.data.Roles.WALLET[1].label);\n demoteButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"demoteToMember\", {\n gid: this.getGid(),\n name: this.getTitle()\n });\n });\n menu.add(demoteButton);\n }\n\n if (menu.getChildren().length) {\n menu.addSeparator();\n }\n\n if (options.includes(\"removeMember\")) {\n const accessRights = this.getAccessRights();\n let currentRole = osparc.data.Roles.WALLET[1];\n if (accessRights.getWrite()) {\n currentRole = osparc.data.Roles.WALLET[2];\n }\n const removeButton = new qx.ui.menu.Button(this.tr(\"Remove \") + currentRole.label).set({\n textColor: \"danger-red\"\n });\n removeButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"removeMember\", {\n gid: this.getGid(),\n name: this.getTitle()\n });\n });\n menu.add(removeButton);\n }\n\n return menu;\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2006 STZ-IDA, Germany, http://www.stz-ida.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Til Schneider (til132)\n * Martin Wittemann (martinwittemann)\n\n************************************************************************ */\n\n/**\n * A *date chooser* is a small calendar including a navigation bar to switch the shown\n * month. It includes a column for the calendar week and shows one month. Selecting\n * a date is as easy as tapping on it.\n *\n * To be conform with all form widgets, the {@link qx.ui.form.IForm} interface\n * is implemented.\n *\n * The following example creates and adds a date chooser to the root element.\n * A listener alerts the user if a new date is selected.\n *\n * \n * var chooser = new qx.ui.control.DateChooser();\n * this.getRoot().add(chooser, { left : 20, top: 20});\n *\n * chooser.addListener(\"changeValue\", function(e) {\n * alert(e.getData());\n * });\n *
\n *\n * Additionally to a selection event an execute event is available which is\n * fired by doubletap or tapping the space / enter key. With this event you\n * can for example save the selection and close the date chooser.\n *\n * @childControl navigation-bar {qx.ui.container.Composite} container for the navigation bar controls\n * @childControl last-year-button-tooltip {qx.ui.tooltip.ToolTip} tooltip for the last year button\n * @childControl last-year-button {qx.ui.form.Button} button to jump to the last year\n * @childControl last-month-button-tooltip {qx.ui.tooltip.ToolTip} tooltip for the last month button\n * @childControl last-month-button {qx.ui.form.Button} button to jump to the last month\n * @childControl next-month-button-tooltip {qx.ui.tooltip.ToolTip} tooltip for the next month button\n * @childControl next-month-button {qx.ui.form.Button} button to jump to the next month\n * @childControl next-year-button-tooltip {qx.ui.tooltip.ToolTip} tooltip for the next year button\n * @childControl next-year-button {qx.ui.form.Button} button to jump to the next year\n * @childControl month-year-label {qx.ui.basic.Label} shows the current month and year\n * @childControl week {qx.ui.basic.Label} week label (used multiple times)\n * @childControl weekday {qx.ui.basic.Label} weekday label (used multiple times)\n * @childControl day {qx.ui.basic.Label} day label (used multiple times)\n * @childControl date-pane {qx.ui.container.Composite} the pane used to position the week, weekday and day labels\n *\n */\nqx.Class.define(\"qx.ui.control.DateChooser\",\n{\n extend : qx.ui.core.Widget,\n include : [\n qx.ui.core.MExecutable,\n qx.ui.form.MForm\n ],\n implement : [\n qx.ui.form.IExecutable,\n qx.ui.form.IForm,\n qx.ui.form.IDateForm\n ],\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * @param date {Date ? null} The initial date to show. If null
\n * the current day (today) is shown.\n */\n construct : function(date)\n {\n this.base(arguments);\n\n // set the layout\n var layout = new qx.ui.layout.VBox();\n this._setLayout(layout);\n\n // create the child controls\n this._createChildControl(\"navigation-bar\");\n this._createChildControl(\"date-pane\");\n\n // Support for key events\n this.addListener(\"keypress\", this._onKeyPress);\n\n // initialize format - moved from statics{} to constructor due to [BUG #7149]\n var DateChooser = qx.ui.control.DateChooser;\n if (!DateChooser.MONTH_YEAR_FORMAT) {\n DateChooser.MONTH_YEAR_FORMAT = qx.locale.Date.getDateTimeFormat(\"yyyyMMMM\", \"MMMM yyyy\");\n }\n\n // Show the right date\n var shownDate = (date != null) ? date : new Date();\n this.showMonth(shownDate.getMonth(), shownDate.getFullYear());\n\n // listen for locale changes\n if (qx.core.Environment.get(\"qx.dynlocale\")) {\n qx.locale.Manager.getInstance().addListener(\"changeLocale\", this._updateDatePane, this);\n }\n\n // register pointer up and down handler\n this.addListener(\"pointerdown\", this._onPointerUpDown, this);\n this.addListener(\"pointerup\", this._onPointerUpDown, this);\n },\n\n\n\n /*\n *****************************************************************************\n STATICS\n *****************************************************************************\n */\n\n statics :\n {\n /**\n * @type {string} The format for the date year label at the top center.\n */\n MONTH_YEAR_FORMAT : null,\n\n /**\n * @type {string} The format for the weekday labels (the headers of the date table).\n */\n WEEKDAY_FORMAT : \"EE\",\n\n /**\n * @type {string} The format for the week numbers (the labels of the left column).\n */\n WEEK_FORMAT : \"ww\"\n },\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n // overridden\n appearance :\n {\n refine : true,\n init : \"datechooser\"\n },\n\n // overridden\n width :\n {\n refine : true,\n init : 200\n },\n\n // overridden\n height :\n {\n refine : true,\n init : 150\n },\n\n /** The currently shown month. 0 = january, 1 = february, and so on. */\n shownMonth :\n {\n check : \"Integer\",\n init : null,\n nullable : true,\n event : \"changeShownMonth\"\n },\n\n /** The currently shown year. */\n shownYear :\n {\n check : \"Integer\",\n init : null,\n nullable : true,\n event : \"changeShownYear\"\n },\n\n /** The date value of the widget. */\n value :\n {\n check : \"Date\",\n init : null,\n nullable : true,\n event : \"changeValue\",\n apply : \"_applyValue\"\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n __weekdayLabelArr : null,\n __dayLabelArr : null,\n __weekLabelArr : null,\n\n\n // overridden\n /**\n * @lint ignoreReferenceField(_forwardStates)\n */\n _forwardStates :\n {\n invalid : true\n },\n\n\n /*\n ---------------------------------------------------------------------------\n WIDGET INTERNALS\n ---------------------------------------------------------------------------\n */\n\n // overridden\n _createChildControlImpl : function(id, hash)\n {\n var control;\n\n switch(id)\n {\n // NAVIGATION BAR STUFF\n case \"navigation-bar\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox());\n\n // Add the navigation bar elements\n control.add(this.getChildControl(\"last-year-button\"));\n control.add(this.getChildControl(\"last-month-button\"));\n control.add(this.getChildControl(\"month-year-label\"), {flex: 1});\n control.add(this.getChildControl(\"next-month-button\"));\n control.add(this.getChildControl(\"next-year-button\"));\n\n this._add(control);\n break;\n\n case \"last-year-button-tooltip\":\n control = new qx.ui.tooltip.ToolTip(this.tr(\"Last year\"));\n break;\n\n case \"last-year-button\":\n control = new qx.ui.toolbar.Button();\n control.addState(\"lastYear\");\n control.setFocusable(false);\n control.setToolTip(this.getChildControl(\"last-year-button-tooltip\"));\n control.addListener(\"tap\", this._onNavButtonTap, this);\n break;\n\n case \"last-month-button-tooltip\":\n control = new qx.ui.tooltip.ToolTip(this.tr(\"Last month\"));\n break;\n\n case \"last-month-button\":\n control = new qx.ui.toolbar.Button();\n control.addState(\"lastMonth\");\n control.setFocusable(false);\n control.setToolTip(this.getChildControl(\"last-month-button-tooltip\"));\n control.addListener(\"tap\", this._onNavButtonTap, this);\n break;\n\n case \"next-month-button-tooltip\":\n control = new qx.ui.tooltip.ToolTip(this.tr(\"Next month\"));\n break;\n\n case \"next-month-button\":\n control = new qx.ui.toolbar.Button();\n control.addState(\"nextMonth\");\n control.setFocusable(false);\n control.setToolTip(this.getChildControl(\"next-month-button-tooltip\"));\n control.addListener(\"tap\", this._onNavButtonTap, this);\n break;\n\n case \"next-year-button-tooltip\":\n control = new qx.ui.tooltip.ToolTip(this.tr(\"Next year\"));\n break;\n\n case \"next-year-button\":\n control = new qx.ui.toolbar.Button();\n control.addState(\"nextYear\");\n control.setFocusable(false);\n control.setToolTip(this.getChildControl(\"next-year-button-tooltip\"));\n control.addListener(\"tap\", this._onNavButtonTap, this);\n break;\n\n case \"month-year-label\":\n control = new qx.ui.basic.Label();\n control.setAllowGrowX(true);\n control.setAnonymous(true);\n break;\n\n case \"week\":\n control = new qx.ui.basic.Label();\n control.setAllowGrowX(true);\n control.setAllowGrowY(true);\n control.setSelectable(false);\n control.setAnonymous(true);\n control.setCursor(\"default\");\n break;\n\n case \"weekday\":\n control = new qx.ui.basic.Label();\n control.setAllowGrowX(true);\n control.setAllowGrowY(true);\n control.setSelectable(false);\n control.setAnonymous(true);\n control.setCursor(\"default\");\n break;\n\n case \"day\":\n control = new qx.ui.basic.Label();\n control.setAllowGrowX(true);\n control.setAllowGrowY(true);\n control.setCursor(\"default\");\n control.addListener(\"pointerdown\", this._onDayTap, this);\n control.addListener(\"dbltap\", this._onDayDblTap, this);\n break;\n\n case \"date-pane\":\n var controlLayout = new qx.ui.layout.Grid();\n control = new qx.ui.container.Composite(controlLayout);\n\n for (var i = 0; i < 8; i++) {\n controlLayout.setColumnFlex(i, 1);\n }\n\n for (var i = 0; i < 7; i++) {\n controlLayout.setRowFlex(i, 1);\n }\n\n // Create the weekdays\n // Add an empty label as spacer for the week numbers\n var label = this.getChildControl(\"week#0\");\n label.addState(\"header\");\n control.add(label, {column: 0, row: 0});\n\n this.__weekdayLabelArr = [];\n for (var i=0; i<7; i++)\n {\n label = this.getChildControl(\"weekday#\" + i);\n control.add(label, {column: i + 1, row: 0});\n this.__weekdayLabelArr.push(label);\n }\n\n // Add the days\n this.__dayLabelArr = [];\n this.__weekLabelArr = [];\n\n for (var y = 0; y < 6; y++)\n {\n // Add the week label\n var label = this.getChildControl(\"week#\" + (y+1));\n control.add(label, {column: 0, row: y + 1});\n this.__weekLabelArr.push(label);\n\n // Add the day labels\n for (var x = 0; x < 7; x++)\n {\n var label = this.getChildControl(\"day#\" + ((y*7)+x));\n control.add(label, {column:x + 1, row:y + 1});\n this.__dayLabelArr.push(label);\n }\n }\n\n this._add(control);\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n\n // apply methods\n _applyValue : function(value, old)\n {\n if ((value != null) && (this.getShownMonth() != value.getMonth() || this.getShownYear() != value.getFullYear()))\n {\n // The new date is in another month -> Show that month\n this.showMonth(value.getMonth(), value.getFullYear());\n }\n else\n {\n // The new date is in the current month -> Just change the states\n var newDay = (value == null) ? -1 : value.getDate();\n\n for (var i=0; i<6*7; i++)\n {\n var dayLabel = this.__dayLabelArr[i];\n\n if (dayLabel.hasState(\"otherMonth\"))\n {\n if (dayLabel.hasState(\"selected\")) {\n dayLabel.removeState(\"selected\");\n }\n }\n else\n {\n var day = parseInt(dayLabel.getValue(), 10);\n\n if (day == newDay) {\n dayLabel.addState(\"selected\");\n } else if (dayLabel.hasState(\"selected\")) {\n dayLabel.removeState(\"selected\");\n }\n }\n }\n }\n },\n\n\n\n /*\n ---------------------------------------------------------------------------\n EVENT HANDLER\n ---------------------------------------------------------------------------\n */\n\n /**\n * Handler which stops the propagation of the tap event if\n * the navigation bar or calendar headers will be tapped.\n *\n * @param e {qx.event.type.Pointer} The pointer up / down event\n */\n _onPointerUpDown : function(e) {\n var target = e.getTarget();\n\n if (target == this.getChildControl(\"navigation-bar\") ||\n target == this.getChildControl(\"date-pane\")) {\n e.stopPropagation();\n return;\n }\n },\n\n\n /**\n * Event handler. Called when a navigation button has been tapped.\n *\n * @param evt {qx.event.type.Data} The data event.\n */\n _onNavButtonTap : function(evt)\n {\n var year = this.getShownYear();\n var month = this.getShownMonth();\n\n switch(evt.getCurrentTarget())\n {\n case this.getChildControl(\"last-year-button\"):\n year--;\n break;\n\n case this.getChildControl(\"last-month-button\"):\n month--;\n\n if (month < 0)\n {\n month = 11;\n year--;\n }\n\n break;\n\n case this.getChildControl(\"next-month-button\"):\n month++;\n\n if (month >= 12)\n {\n month = 0;\n year++;\n }\n\n break;\n\n case this.getChildControl(\"next-year-button\"):\n year++;\n break;\n }\n\n this.showMonth(month, year);\n },\n\n\n /**\n * Event handler. Called when a day has been tapped.\n *\n * @param evt {qx.event.type.Data} The event.\n */\n _onDayTap : function(evt)\n {\n var time = evt.getCurrentTarget().dateTime;\n this.setValue(new Date(time));\n },\n\n\n /**\n * Event handler. Called when a day has been double-tapped.\n */\n _onDayDblTap : function() {\n this.execute();\n },\n\n\n /**\n * Event handler. Called when a key was pressed.\n *\n * @param evt {qx.event.type.Data} The event.\n */\n _onKeyPress : function(evt)\n {\n var dayIncrement = null;\n var monthIncrement = null;\n var yearIncrement = null;\n\n if (evt.getModifiers() == 0)\n {\n switch(evt.getKeyIdentifier())\n {\n case \"Left\":\n dayIncrement = -1;\n break;\n\n case \"Right\":\n dayIncrement = 1;\n break;\n\n case \"Up\":\n dayIncrement = -7;\n break;\n\n case \"Down\":\n dayIncrement = 7;\n break;\n\n case \"PageUp\":\n monthIncrement = -1;\n break;\n\n case \"PageDown\":\n monthIncrement = 1;\n break;\n\n case \"Escape\":\n if (this.getValue() != null)\n {\n this.setValue(null);\n return;\n }\n\n break;\n\n case \"Enter\":\n case \"Space\":\n if (this.getValue() != null) {\n this.execute();\n }\n\n return;\n }\n }\n else if (evt.isShiftPressed())\n {\n switch(evt.getKeyIdentifier())\n {\n case \"PageUp\":\n yearIncrement = -1;\n break;\n\n case \"PageDown\":\n yearIncrement = 1;\n break;\n }\n }\n\n if (dayIncrement != null || monthIncrement != null || yearIncrement != null)\n {\n var date = this.getValue();\n\n if (date != null) {\n date = new Date(date.getTime());\n }\n\n if (date == null) {\n date = new Date();\n }\n else\n {\n if (dayIncrement != null){date.setDate(date.getDate() + dayIncrement);}\n if (monthIncrement != null){date.setMonth(date.getMonth() + monthIncrement);}\n if (yearIncrement != null){date.setFullYear(date.getFullYear() + yearIncrement);}\n }\n\n this.setValue(date);\n }\n },\n\n\n /**\n * Shows a certain month.\n *\n * @param month {Integer ? null} the month to show (0 = january). If not set\n * the month will remain the same.\n * @param year {Integer ? null} the year to show. If not set the year will\n * remain the same.\n */\n showMonth : function(month, year)\n {\n if ((month != null && month != this.getShownMonth()) || (year != null && year != this.getShownYear()))\n {\n if (month != null) {\n this.setShownMonth(month);\n }\n\n if (year != null) {\n this.setShownYear(year);\n }\n\n this._updateDatePane();\n }\n },\n\n\n /**\n * Event handler. Used to handle the key events.\n *\n * @param e {qx.event.type.Data} The event.\n */\n handleKeyPress : function(e) {\n this._onKeyPress(e);\n },\n\n\n /**\n * Updates the date pane.\n */\n _updateDatePane : function()\n {\n var DateChooser = qx.ui.control.DateChooser;\n\n var today = new Date();\n var todayYear = today.getFullYear();\n var todayMonth = today.getMonth();\n var todayDayOfMonth = today.getDate();\n\n var selDate = this.getValue();\n var selYear = (selDate == null) ? -1 : selDate.getFullYear();\n var selMonth = (selDate == null) ? -1 : selDate.getMonth();\n var selDayOfMonth = (selDate == null) ? -1 : selDate.getDate();\n\n var shownMonth = this.getShownMonth();\n var shownYear = this.getShownYear();\n\n var startOfWeek = qx.locale.Date.getWeekStart();\n\n // Create a help date that points to the first of the current month\n var helpDate = new Date(this.getShownYear(), this.getShownMonth(), 1);\n\n var monthYearFormat = new qx.util.format.DateFormat(DateChooser.MONTH_YEAR_FORMAT);\n this.getChildControl(\"month-year-label\").setValue(monthYearFormat.format(helpDate));\n\n // Show the day names\n var firstDayOfWeek = helpDate.getDay();\n var firstSundayInMonth = 1 + ((7 - firstDayOfWeek) % 7);\n var weekDayFormat = new qx.util.format.DateFormat(DateChooser.WEEKDAY_FORMAT);\n\n for (var i=0; i<7; i++)\n {\n var day = (i + startOfWeek) % 7;\n\n var dayLabel = this.__weekdayLabelArr[i];\n\n helpDate.setDate(firstSundayInMonth + day);\n dayLabel.setValue(weekDayFormat.format(helpDate));\n\n if (qx.locale.Date.isWeekend(day)) {\n dayLabel.addState(\"weekend\");\n } else {\n dayLabel.removeState(\"weekend\");\n }\n }\n\n // Show the days\n helpDate = new Date(shownYear, shownMonth, 1, 12, 0, 0);\n var nrDaysOfLastMonth = (7 + firstDayOfWeek - startOfWeek) % 7;\n helpDate.setDate(helpDate.getDate() - nrDaysOfLastMonth);\n\n var weekFormat = new qx.util.format.DateFormat(DateChooser.WEEK_FORMAT);\n\n for (var week=0; week<6; week++)\n {\n this.__weekLabelArr[week].setValue(weekFormat.format(helpDate));\n\n for (var i=0; i<7; i++)\n {\n var dayLabel = this.__dayLabelArr[week * 7 + i];\n\n var year = helpDate.getFullYear();\n var month = helpDate.getMonth();\n var dayOfMonth = helpDate.getDate();\n\n var isSelectedDate = (selYear == year && selMonth == month && selDayOfMonth == dayOfMonth);\n\n if (isSelectedDate) {\n dayLabel.addState(\"selected\");\n } else {\n dayLabel.removeState(\"selected\");\n }\n\n if (month != shownMonth) {\n dayLabel.addState(\"otherMonth\");\n } else {\n dayLabel.removeState(\"otherMonth\");\n }\n\n var isToday = (year == todayYear && month == todayMonth && dayOfMonth == todayDayOfMonth);\n\n if (isToday) {\n dayLabel.addState(\"today\");\n } else {\n dayLabel.removeState(\"today\");\n }\n\n dayLabel.setValue(\"\" + dayOfMonth);\n dayLabel.dateTime = helpDate.getTime();\n\n // Go to the next day\n helpDate.setDate(helpDate.getDate() + 1);\n }\n }\n\n monthYearFormat.dispose();\n weekDayFormat.dispose();\n weekFormat.dispose();\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n DESTRUCTOR\n *****************************************************************************\n */\n\n destruct : function()\n {\n if (qx.core.Environment.get(\"qx.dynlocale\")) {\n qx.locale.Manager.getInstance().removeListener(\"changeLocale\", this._updateDatePane, this);\n }\n\n this.__weekdayLabelArr = this.__dayLabelArr = this.__weekLabelArr = null;\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2025 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.store.LicensedItems\", {\n extend: qx.core.Object,\n type: \"singleton\",\n\n construct: function() {\n this.base(arguments);\n\n this.__licensedItems = {};\n },\n\n statics: {\n getLowerLicensedItems: function(licensedItems, key, version) {\n const lowerLicensedItems = [];\n licensedItems.forEach(licensedItem => {\n if (licensedItem[\"key\"] === key && licensedItem[\"version\"] < version) {\n lowerLicensedItems.push(licensedItem);\n }\n });\n return lowerLicensedItems;\n },\n\n seatsToNSeats: function(seats) {\n let nSeats = 0;\n seats.forEach(seat => {\n if (\"numOfSeats\" in seat) {\n nSeats += seat[\"numOfSeats\"];\n } else if (\"getNumOfSeats\" in seat) {\n nSeats += seat.getNumOfSeats();\n }\n });\n return nSeats;\n },\n },\n\n members: {\n __licensedItems: null,\n\n getLicensedItems: function() {\n if (Object.keys(this.__licensedItems).length) {\n return new Promise(resolve => resolve(this.__licensedItems));\n }\n\n return osparc.data.Resources.getInstance().getAllPages(\"licensedItems\")\n .then(licensedItemsData => {\n licensedItemsData.forEach(licensedItemData => this.__addLicensedItemsToCache(licensedItemData));\n return this.__licensedItems;\n });\n },\n\n __addLicensedItemsToCache: function(licensedItemData) {\n const licensedItem = new osparc.data.model.LicensedItem(licensedItemData);\n this.__licensedItems[licensedItem.getLicensedItemId()] = licensedItem;\n },\n\n getPurchasedLicensedItems: function(walletId, urlParams, options = {}) {\n let purchasesParams = {\n url: {\n walletId,\n offset: 0,\n limit: 49,\n }\n };\n if (urlParams) {\n purchasesParams.url = Object.assign(purchasesParams.url, urlParams);\n }\n return osparc.data.Resources.fetch(\"licensedItems\", \"purchases\", purchasesParams, options);\n },\n\n purchaseLicensedItem: function(licensedItemId, walletId, pricingPlanId, pricingUnitId, numOfSeats) {\n const params = {\n url: {\n licensedItemId\n },\n data: {\n \"wallet_id\": walletId,\n \"pricing_plan_id\": pricingPlanId,\n \"pricing_unit_id\": pricingUnitId,\n \"num_of_seats\": numOfSeats, // this should go away\n },\n }\n return osparc.data.Resources.fetch(\"licensedItems\", \"purchase\", params);\n },\n\n getCheckedOutLicensedItems: function(walletId, urlParams, options = {}) {\n let purchasesParams = {\n url: {\n walletId,\n offset: 0,\n limit: 49,\n }\n };\n if (urlParams) {\n purchasesParams.url = Object.assign(purchasesParams.url, urlParams);\n }\n return osparc.data.Resources.fetch(\"licensedItems\", \"checkouts\", purchasesParams, options);\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2025 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.data.model.LicensedItem\", {\n extend: qx.core.Object,\n\n /**\n * @param licensedItemData {Object} Object containing the serialized LicensedItem Data\n */\n construct: function(licensedItemData) {\n this.base(arguments);\n\n let thumbnail = \"\";\n let date = null;\n let licensedResources = [];\n if (licensedItemData[\"licensedResources\"]) {\n if (licensedItemData[\"licensedResources\"].length) {\n const firstItem = licensedItemData[\"licensedResources\"][0][\"source\"];\n if (firstItem[\"thumbnail\"]) {\n thumbnail = firstItem[\"thumbnail\"];\n }\n if (firstItem[\"features\"] && firstItem[\"features\"][\"date\"]) {\n date = firstItem[\"features\"][\"date\"];\n }\n }\n licensedItemData[\"licensedResources\"].forEach(licensedRsrc => {\n const licensedItemResource = new osparc.data.model.LicensedItemResource(licensedRsrc[\"source\"]);\n if (licensedItemData[\"termsOfUseUrl\"]) {\n licensedItemResource.set({\n termsOfUseUrl: licensedItemData[\"termsOfUseUrl\"],\n })\n }\n licensedResources.push(licensedItemResource);\n });\n }\n let categoryIcon = \"@FontAwesome5Solid/shopping-bag/20\";\n if (licensedItemData.categoryIcon) {\n categoryIcon = licensedItemData.categoryIcon;\n } else if (qx.util.ResourceManager.getInstance().has(`osparc/market/${licensedItemData.categoryId}.svg`)) {\n categoryIcon = `osparc/market/${licensedItemData.categoryId}.svg`;\n }\n\n this.set({\n licensedItemId: licensedItemData.licensedItemId,\n categoryId: licensedItemData.categoryId,\n categoryDisplay: licensedItemData.categoryDisplay,\n categoryIcon: categoryIcon,\n pricingPlanId: licensedItemData.pricingPlanId,\n key: licensedItemData.key,\n version: licensedItemData.version,\n thumbnail: thumbnail,\n displayName: licensedItemData.displayName,\n date: new Date(date),\n licensedResources: licensedResources,\n seats: licensedItemData.seats || [],\n });\n },\n\n properties: {\n licensedItemId: {\n check: \"String\",\n nullable: false,\n init: null,\n event: \"changeLicensedItemId\",\n },\n\n categoryId: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeCategoryId\",\n },\n\n categoryDisplay: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeCategoryDisplay\",\n },\n\n categoryIcon: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeCategoryIcon\",\n },\n\n pricingPlanId: {\n check: \"Number\",\n nullable: false,\n init: null,\n event: \"changePricingPlanId\",\n },\n\n key: {\n check: \"String\",\n nullable: false,\n init: null,\n event: \"changeKey\",\n },\n\n version: {\n check: \"String\",\n nullable: false,\n init: null,\n event: \"changeVersion\",\n },\n\n thumbnail: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeThumbnail\",\n },\n\n displayName: {\n check: \"String\",\n nullable: false,\n init: null,\n event: \"changeDisplayName\",\n },\n\n date: {\n check: \"Date\",\n nullable: false,\n init: null,\n event: \"changeDate\",\n },\n\n licensedResources: {\n check: \"Array\",\n nullable: false,\n init: [],\n event: \"changeLicensedResources\",\n },\n\n seats: {\n check: \"Array\",\n nullable: false,\n init: [],\n event: \"changeSeats\",\n },\n },\n\n statics: {\n addSeatsFromPurchases: function(licensedItems, purchases) {\n // reset seats\n Object.values(licensedItems).forEach(licensedItem => licensedItem.setSeats([]));\n // populate seats\n purchases.forEach(purchase => {\n const {\n key,\n version,\n } = purchase;\n Object.values(licensedItems).forEach(licensedItem => {\n if (licensedItem.getKey() === key && licensedItem.getVersion() <= version) {\n licensedItem.getSeats().push({\n licensedItemId: purchase[\"licensedItemId\"],\n licensedItemPurchaseId: purchase[\"licensedItemPurchaseId\"],\n numOfSeats: purchase[\"numOfSeats\"],\n expireAt: new Date(purchase[\"expireAt\"]),\n });\n }\n });\n })\n },\n },\n\n members: {\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.vipMarket.VipMarket\", {\n extend: qx.ui.splitpane.Pane,\n\n construct: function(licensedItems) {\n this.base(arguments, \"horizontal\");\n\n this.setOffset(5);\n this.getChildControl(\"splitter\").set({\n width: 1,\n backgroundColor: \"text\",\n opacity: 0.3,\n });\n this.getChildControl(\"slider\").set({\n width: 2,\n backgroundColor: \"text\",\n opacity: 1,\n });\n\n this.__buildLayout();\n\n if (licensedItems) {\n this.setLicensedItems(licensedItems);\n }\n },\n\n events: {\n \"modelPurchased\": \"qx.event.type.Event\",\n \"importMessageSent\": \"qx.event.type.Event\",\n },\n\n properties: {\n openBy: {\n check: \"String\",\n init: null,\n nullable: true,\n event: \"changeOpenBy\",\n },\n\n category: {\n check: \"String\",\n init: null,\n nullable: true,\n },\n },\n\n members: {\n __anatomicalBundles: null,\n __anatomicalBundlesModel: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"left-side\":\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox(10)).set({\n alignY: \"middle\",\n paddingRight: 5,\n });\n this.add(control, 0); // flex: 0\n break;\n case \"right-side\":\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox(10)).set({\n alignY: \"middle\",\n paddingLeft: 5,\n });\n this.add(control, 1); // flex: 1\n break;\n case \"toolbar-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(10)).set({\n alignY: \"middle\",\n });\n this.getChildControl(\"left-side\").add(control);\n break;\n case \"sort-button\":\n control = new osparc.vipMarket.SortModelsButtons().set({\n alignY: \"bottom\",\n maxHeight: 27,\n });\n this.getChildControl(\"toolbar-layout\").add(control);\n break;\n case \"filter-text\":\n control = new osparc.filter.TextFilter(\"text\", \"vipModels\").set({\n alignY: \"middle\",\n allowGrowY: false,\n allowGrowX: true,\n marginRight: 5,\n });\n control.getChildControl(\"textfield\").set({\n backgroundColor: \"transparent\",\n allowGrowX: true,\n });\n this.addListener(\"appear\", () => control.getChildControl(\"textfield\").focus());\n this.getChildControl(\"toolbar-layout\").add(control, {\n flex: 1\n });\n break;\n case \"models-list\":\n control = new qx.ui.form.List().set({\n decorator: \"no-border\",\n spacing: 5,\n width: 250,\n backgroundColor: \"transparent\",\n });\n this.getChildControl(\"left-side\").add(control, {\n flex: 1\n });\n break;\n case \"models-details\": {\n control = new osparc.vipMarket.LicensedItemDetails().set({\n padding: 5,\n });\n const scrollView = new qx.ui.container.Scroll();\n scrollView.add(control);\n this.bind(\"openBy\", control, \"openBy\");\n this.getChildControl(\"right-side\").add(scrollView, {\n flex: 1\n });\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n __buildLayout: function() {\n this.getChildControl(\"sort-button\");\n this.getChildControl(\"filter-text\");\n const modelsUIList = this.getChildControl(\"models-list\");\n\n const anatomicalModelsModel = this.__anatomicalBundlesModel = new qx.data.Array();\n const membersCtrl = new qx.data.controller.List(anatomicalModelsModel, modelsUIList, \"displayName\");\n membersCtrl.setDelegate({\n createItem: () => new osparc.vipMarket.LicensedItemListItem(),\n bindItem: (ctrl, item, id) => {\n ctrl.bindProperty(\"key\", \"key\", null, item, id);\n ctrl.bindProperty(\"version\", \"version\", null, item, id);\n ctrl.bindProperty(\"thumbnail\", \"thumbnail\", null, item, id);\n ctrl.bindProperty(\"displayName\", \"displayName\", null, item, id);\n ctrl.bindProperty(\"date\", \"date\", null, item, id);\n ctrl.bindProperty(\"licensedItemId\", \"licensedItemId\", null, item, id);\n ctrl.bindProperty(\"pricingPlanId\", \"pricingPlanId\", null, item, id);\n ctrl.bindProperty(\"seats\", \"seats\", null, item, id);\n },\n configureItem: item => {\n item.subscribeToFilterGroup(\"vipModels\");\n },\n });\n\n const loadingModel = {\n id: 0,\n thumbnail: \"@FontAwesome5Solid/spinner/32\",\n name: this.tr(\"Loading\"),\n };\n this.__anatomicalBundlesModel.append(qx.data.marshal.Json.createModel(loadingModel));\n\n const anatomicModelDetails = this.getChildControl(\"models-details\");\n\n modelsUIList.addListener(\"changeSelection\", e => {\n const selection = e.getData();\n if (selection.length) {\n const licensedItemId = selection[0].getLicensedItemId();\n const licensedItemBundle = this.__anatomicalBundles.find(anatomicalBundle => anatomicalBundle.getLicensedItemId() === licensedItemId);\n if (licensedItemBundle) {\n anatomicModelDetails.setAnatomicalModelsData(licensedItemBundle);\n return;\n }\n }\n anatomicModelDetails.setAnatomicalModelsData(null);\n }, this);\n },\n\n setLicensedItems: function(licensedBundles) {\n const store = osparc.store.Store.getInstance();\n const contextWallet = store.getContextWallet();\n if (!contextWallet) {\n return;\n }\n\n this.__anatomicalBundles = licensedBundles;\n\n this.__populateModels();\n\n const anatomicModelDetails = this.getChildControl(\"models-details\");\n if (!anatomicModelDetails.hasListener(\"modelPurchaseRequested\")) {\n anatomicModelDetails.addListener(\"modelPurchaseRequested\", e => {\n const {\n licensedItemId,\n pricingPlanId,\n pricingUnitId,\n } = e.getData();\n this.__modelPurchaseRequested(licensedItemId, pricingPlanId, pricingUnitId);\n }, this);\n }\n if (!anatomicModelDetails.hasListener(\"modelImportRequested\")) {\n anatomicModelDetails.addListener(\"modelImportRequested\", e => {\n const {\n modelId,\n categoryId,\n } = e.getData();\n this.__sendImportModelMessage(modelId, categoryId);\n }, this);\n }\n },\n\n __populateModels: function(selectLicensedItemId) {\n const models = this.__anatomicalBundles;\n\n this.__anatomicalBundlesModel.removeAll();\n const sortModel = sortBy => {\n models.sort((a, b) => {\n // first criteria\n const nASeats = osparc.store.LicensedItems.seatsToNSeats(a.getSeats());\n const nBSeats = osparc.store.LicensedItems.seatsToNSeats(b.getSeats());\n if (nBSeats !== nASeats) {\n // nSeats first\n return nBSeats - nASeats;\n }\n // second criteria\n if (sortBy) {\n if (sortBy[\"sort\"] === \"name\") {\n if (sortBy[\"order\"] === \"down\") {\n // A -> Z\n return a.getDisplayName().localeCompare(b.getDisplayName());\n }\n return b.getDisplayName().localeCompare(a.getDisplayName());\n } else if (sortBy[\"sort\"] === \"date\") {\n if (sortBy[\"order\"] === \"down\") {\n // Now -> Yesterday\n return b.getDate() - a.getDate();\n }\n return a.getDate() - b.getDate();\n }\n }\n // default criteria\n // A -> Z\n return a.getDisplayName().localeCompare(b.getDisplayName());\n });\n };\n sortModel();\n models.forEach(model => this.__anatomicalBundlesModel.append(qx.data.marshal.Json.createModel(model)));\n\n this.getChildControl(\"sort-button\").addListener(\"sortBy\", e => {\n this.__anatomicalBundlesModel.removeAll();\n const sortBy = e.getData();\n sortModel(sortBy);\n models.forEach(model => this.__anatomicalBundlesModel.append(qx.data.marshal.Json.createModel(model)));\n }, this);\n\n // select model after timeout, there is something that changes the selection to empty after populating the list\n setTimeout(() => {\n const modelsUIList = this.getChildControl(\"models-list\");\n if (selectLicensedItemId) {\n const entryFound = modelsUIList.getSelectables().find(entry => \"getLicensedItemId\" in entry && entry.getLicensedItemId() === selectLicensedItemId);\n modelsUIList.setSelection([entryFound]);\n } else if (modelsUIList.getSelectables().length) {\n // select first\n modelsUIList.setSelection([modelsUIList.getSelectables()[0]]);\n }\n }, 100);\n },\n\n __modelPurchaseRequested: function(licensedItemId, pricingPlanId, pricingUnitId) {\n const store = osparc.store.Store.getInstance();\n const contextWallet = store.getContextWallet();\n if (!contextWallet) {\n return;\n }\n const walletId = contextWallet.getWalletId();\n let numOfSeats = null;\n const pricingUnit = osparc.store.Pricing.getInstance().getPricingUnit(pricingPlanId, pricingUnitId);\n if (pricingUnit) {\n numOfSeats = parseInt(pricingUnit.getExtraInfo()[\"num_of_seats\"]);\n }\n const licensedItemsStore = osparc.store.LicensedItems.getInstance();\n licensedItemsStore.purchaseLicensedItem(licensedItemId, walletId, pricingPlanId, pricingUnitId, numOfSeats)\n .then(purchaseData => {\n const nSeats = purchaseData[\"numOfSeats\"];\n let msg = nSeats;\n msg += \" seat\" + (nSeats > 1 ? \"s\" : \"\");\n msg += \" rented until \" + osparc.utils.Utils.formatDate(new Date(purchaseData[\"expireAt\"]));\n osparc.FlashMessenger.getInstance().logAs(msg, \"INFO\");\n\n const found = this.__anatomicalBundles.find(model => model.getLicensedItemId() === licensedItemId);\n if (found) {\n found.getSeats().push({\n licensedItemId: purchaseData[\"licensedItemId\"],\n licensedItemPurchaseId: purchaseData[\"licensedItemPurchaseId\"],\n numOfSeats: purchaseData[\"numOfSeats\"],\n expireAt: new Date(purchaseData[\"expireAt\"]),\n });\n this.__populateModels(licensedItemId);\n const anatomicModelDetails = this.getChildControl(\"models-details\");\n anatomicModelDetails.setAnatomicalModelsData(found);\n }\n this.fireEvent(\"modelPurchased\");\n })\n .catch(err => {\n const msg = err.message || this.tr(\"Cannot purchase model\");\n osparc.FlashMessenger.getInstance().logAs(msg, \"ERROR\");\n });\n },\n\n __sendImportModelMessage: function(modelId, categoryId) {\n const store = osparc.store.Store.getInstance();\n const currentStudy = store.getCurrentStudy();\n const nodeId = this.getOpenBy();\n if (currentStudy && nodeId) {\n const msg = {\n \"type\": \"importModel\",\n \"message\": {\n \"modelId\": modelId,\n \"categoryId\": categoryId,\n },\n };\n if (currentStudy.sendMessageToIframe(nodeId, msg)) {\n this.fireEvent(\"importMessageSent\");\n }\n }\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget that shows the run and stop study button.\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let startStopButtons = new osparc.desktop.StartStopButtons();\n * this.getRoot().add(startStopButtons);\n *
\n */\n\nqx.Class.define(\"osparc.desktop.StartStopButtons\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.HBox());\n\n this.__buildLayout();\n\n this.__attachEventHandlers();\n\n this.__nodeSelectionChanged([]);\n },\n\n properties: {\n study: {\n check: \"osparc.data.model.Study\",\n apply: \"__applyStudy\",\n init: null,\n nullable: false\n }\n },\n\n events: {\n \"startPipeline\": \"qx.event.type.Event\",\n \"startPartialPipeline\": \"qx.event.type.Event\",\n \"stopPipeline\": \"qx.event.type.Event\"\n },\n\n members: {\n __runSelectionButton: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"dynamics-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(5).set({\n alignY: \"middle\"\n }));\n this._add(control);\n break;\n case \"start-service-button\":\n control = new qx.ui.toolbar.Button().set({\n label: this.tr(\"Start\"),\n icon: \"@FontAwesome5Solid/play/14\"\n });\n this.getChildControl(\"dynamics-layout\").add(control);\n break;\n case \"stop-service-button\":\n control = new qx.ui.toolbar.Button().set({\n label: this.tr(\"Stop\"),\n icon: \"@FontAwesome5Solid/stop/14\"\n });\n this.getChildControl(\"dynamics-layout\").add(control);\n break;\n case \"computationals-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(5).set({\n alignY: \"middle\"\n }));\n this._add(control);\n break;\n case \"run-button\":\n control = new osparc.ui.toolbar.FetchButton(this.tr(\"Run\"), \"@FontAwesome5Solid/play/14\");\n osparc.utils.Utils.setIdToWidget(control, \"runStudyBtn\");\n control.addListener(\"execute\", () => this.fireEvent(\"startPipeline\"), this);\n this.getChildControl(\"computationals-layout\").add(control);\n break;\n case \"run-all-button\": {\n control = new osparc.ui.menu.FetchButton(this.tr(\"Run All\"));\n control.addListener(\"execute\", () => this.fireEvent(\"startPipeline\"), this);\n const splitButtonMenu = new qx.ui.menu.Menu();\n splitButtonMenu.add(control);\n this.__runSelectionButton.setMenu(splitButtonMenu);\n break;\n }\n case \"stop-button\":\n control = new osparc.ui.toolbar.FetchButton(this.tr(\"Stop\"), \"@FontAwesome5Solid/stop/14\");\n osparc.utils.Utils.setIdToWidget(control, \"stopStudyBtn\");\n control.addListener(\"execute\", () => this.fireEvent(\"stopPipeline\"), this);\n this.getChildControl(\"computationals-layout\").add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __buildLayout: function() {\n this.getChildControl(\"start-service-button\");\n this.getChildControl(\"stop-service-button\");\n\n this.getChildControl(\"run-button\");\n const runSelectionButton = this.__runSelectionButton = new osparc.ui.toolbar.FetchSplitButton(this.tr(\"Run Selection\"), \"@FontAwesome5Solid/play/14\");\n runSelectionButton.addListener(\"execute\", () => this.fireEvent(\"startPartialPipeline\"), this);\n this.getChildControl(\"computationals-layout\").add(runSelectionButton);\n this.getChildControl(\"run-all-button\");\n this.getChildControl(\"stop-button\");\n },\n\n __attachEventHandlers: function() {\n qx.event.message.Bus.subscribe(\"changeNodeSelection\", e => {\n const selectedNodes = e.getData();\n this.__nodeSelectionChanged(selectedNodes);\n }, this);\n },\n\n __nodeSelectionChanged: function(selectedNodes) {\n const dynamicsLayout = this.getChildControl(\"dynamics-layout\");\n const computationalsLayout = this.getChildControl(\"computationals-layout\");\n if (selectedNodes.length === 1 && selectedNodes[0].isDynamic()) {\n // dynamic\n dynamicsLayout.show();\n computationalsLayout.exclude();\n\n const node = selectedNodes[0];\n\n const startButton = this.getChildControl(\"start-service-button\");\n startButton.removeAllBindings();\n if (\"executeListenerId\" in startButton) {\n startButton.removeListenerById(startButton.executeListenerId);\n }\n node.attachHandlersToStartButton(startButton);\n\n const stopButton = this.getChildControl(\"stop-service-button\");\n stopButton.removeAllBindings();\n if (\"executeListenerId\" in stopButton) {\n stopButton.removeListenerById(stopButton.executeListenerId);\n }\n node.attachHandlersToStopButton(stopButton);\n } else {\n // computationals and default\n dynamicsLayout.exclude();\n computationalsLayout.show();\n\n const isSelectionRunnable = selectedNodes.length && selectedNodes.some(node => node && (node.isComputational() || node.isIterator()));\n this.getChildControl(\"run-button\").setVisibility(isSelectionRunnable ? \"excluded\" : \"visible\");\n this.__runSelectionButton.setVisibility(isSelectionRunnable ? \"visible\" : \"excluded\");\n this.getChildControl(\"run-all-button\").setVisibility(isSelectionRunnable ? \"visible\" : \"excluded\");\n }\n },\n\n __setRunning: function(running) {\n this.__getRunButtons().forEach(runBtn => runBtn.setFetching(running));\n this.getChildControl(\"stop-button\").setEnabled(running);\n },\n\n __getRunButtons: function() {\n return [\n this.getChildControl(\"run-button\"),\n this.__runSelectionButton.getChildControl(\"button\"),\n this.getChildControl(\"run-all-button\")\n ];\n },\n\n __applyStudy: async function(study) {\n study.getWorkbench().addListener(\"pipelineChanged\", this.__checkButtonsVisible, this);\n study.addListener(\"changePipelineRunning\", this.__updateRunButtonsStatus, this);\n this.__checkButtonsVisible();\n this.__updateRunButtonsStatus();\n },\n\n __checkButtonsVisible: function() {\n const allNodes = this.getStudy().getWorkbench().getNodes();\n const isRunnable = Object.values(allNodes).some(node => (node.isComputational() || node.isIterator()));\n this.__getRunButtons().forEach(runBtn => {\n if (!runBtn.isFetching()) {\n runBtn.setEnabled(isRunnable);\n }\n }, this);\n\n const isReadOnly = this.getStudy().isReadOnly();\n this.setVisibility(isReadOnly ? \"excluded\" : \"visible\");\n },\n\n __updateRunButtonsStatus: function() {\n const study = this.getStudy();\n if (study) {\n this.__setRunning(study.isPipelineRunning());\n }\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2021 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n * Widget that shows the zoom button.\n *\n * *Example*\n *\n * Here is a little example of how to use the widget.\n *\n * \n * let zoomButtons = new osparc.desktop.ZoomButtons();\n * this.getRoot().add(zoomButtons);\n *
\n */\n\nconst ZOOM_BUTTON_SIZE = 32;\n\nqx.Class.define(\"osparc.desktop.ZoomButtons\", {\n extend: qx.ui.toolbar.ToolBar,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.HBox(0));\n\n this.set({\n spacing: 0,\n backgroundColor: \"transparent\"\n });\n\n this.__buildLayout();\n },\n\n events: {\n \"zoomIn\": \"qx.event.type.Event\",\n \"zoomOut\": \"qx.event.type.Event\",\n \"zoomReset\": \"qx.event.type.Event\"\n },\n\n members: {\n __buildLayout: function() {\n this.add(this.__getZoomOutButton());\n this.add(this.__getZoomResetButton());\n this.add(this.__getZoomInButton());\n },\n\n __getZoomBtn: function(icon, tooltip) {\n const btn = new qx.ui.toolbar.Button(null, icon+\"/20\").set({\n appearance: \"form-button-outlined\",\n padding: [5, 5],\n marginLeft: 10,\n width: ZOOM_BUTTON_SIZE,\n height: ZOOM_BUTTON_SIZE,\n maxHeight: ZOOM_BUTTON_SIZE\n });\n if (tooltip) {\n btn.setToolTipText(tooltip);\n }\n return btn;\n },\n\n __getZoomInButton: function() {\n const btn = this.__getZoomBtn(\"@MaterialIcons/zoom_in\", this.tr(\"Zoom In\"));\n btn.addListener(\"execute\", () => this.fireEvent(\"zoomIn\"), this);\n return btn;\n },\n\n __getZoomOutButton: function() {\n const btn = this.__getZoomBtn(\"@MaterialIcons/zoom_out\", this.tr(\"Zoom Out\"));\n btn.addListener(\"execute\", () => this.fireEvent(\"zoomOut\"), this);\n return btn;\n },\n\n __getZoomResetButton: function() {\n const btn = this.__getZoomBtn(\"@MaterialIcons/find_replace\", this.tr(\"Reset Zoom\"));\n btn.addListener(\"execute\", () => this.fireEvent(\"zoomReset\"), this);\n return btn;\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2010 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Christian Hagendorn (chris_schmidt)\n\n************************************************************************ */\n\n/**\n * Cell renderer can be used for Widget rendering. The Widget creation can be configured with the\n * {@link #delegate} property:\n *\n * \n * widgetCell.setDelegate(\n * {\n * createWidget : function() {\n * return new qx.ui.form.ListItem();\n * }\n * });\n *
\n *\n * When the {@link #delegate} property is not used {@link qx.ui.core.Widget} instances are created as\n * fallback.\n *\n * The {@link #updateData} method can be used to update any Widget property. Just use a Map
\n * with property name as key:\n *\n * \n * // widget is a qx.ui.form.ListItem instance\n * widgetCell.updateData(widget,\n * {\n * label: \"my label value\",\n * icon: \"qx/icon/22/emotes/face-angel.png\"\n * });\n *
\n */\nqx.Class.define(\"qx.ui.virtual.cell.WidgetCell\",\n{\n extend : qx.ui.virtual.cell.AbstractWidget,\n\n properties :\n {\n /**\n * Delegation object, which can have one or more functions defined by the\n * {@link qx.ui.virtual.cell.IWidgetCellDelegate} interface.\n */\n delegate :\n {\n apply: \"_applyDelegate\",\n init: null,\n nullable: true\n }\n },\n\n members :\n {\n // apply method\n _applyDelegate : function(value, old) {\n this._cleanupPool();\n },\n\n // overridden\n _createWidget : function() {\n var delegate = this.getDelegate();\n\n if (delegate != null && delegate.createWidget != null) {\n return delegate.createWidget();\n } else {\n return new qx.ui.core.Widget();\n }\n },\n\n // overridden\n updateData : function(widget, data) {\n for (var key in data)\n {\n if (qx.Class.hasProperty(widget.constructor, key)) {\n qx.util.PropertyUtil.setUserValue(widget, key, data[key]);\n } else {\n throw new Error(\"Can't update data! The key '\" + key + \"' is not a Property!\");\n }\n }\n }\n }\n});","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\n/**\n *\n */\n\nqx.Class.define(\"osparc.navigation.BreadcrumbSplitter\", {\n extend: qx.ui.core.Widget,\n\n construct: function(w, h) {\n this.base(arguments);\n\n this.set({\n width: w,\n height: h\n });\n\n this.addListenerOnce(\"appear\", () => {\n const el = this.getContentElement().getDomElement();\n const svgWrapper = osparc.wrapper.Svg.getInstance();\n svgWrapper.init()\n .then(() => {\n if (this.__canvas === null) {\n this.__canvas = svgWrapper.createEmptyCanvas(el);\n this.setReady(true);\n this.fireDataEvent(\"SvgWidgetReady\", true);\n }\n }, this);\n });\n },\n\n properties: {\n ready: {\n check: \"Boolean\",\n init: false\n },\n\n shape: {\n check: [\"slash\", \"arrow\", \"separator\", \"plusBtn\"],\n nullable: true,\n init: \"slash\"\n },\n\n leftWidget: {\n check: \"qx.ui.core.Widget\",\n nullable: true,\n apply: \"_applyLeftWidget\"\n },\n\n rightWidget: {\n check: \"qx.ui.core.Widget\",\n nullable: true,\n apply: \"_applyRightWidget\"\n }\n },\n\n events: {\n \"SvgWidgetReady\": \"qx.event.type.Data\"\n },\n\n statics: {\n getTriangleControlsLeft: function(w = 16, h = 32) {\n return [\n [0, 0],\n [0, h],\n [w, 0]\n ];\n },\n\n getTriangleControlsRight: function(w = 16, h = 32) {\n return [\n [0, h],\n [w, 0],\n [w, h]\n ];\n },\n\n getSlashControls: function(w = 16, h = 32) {\n const offsetH = 4;\n const offsetW = Math.round(offsetH*w/h);\n return [\n [w-offsetW, offsetH],\n [offsetW, h-offsetH]\n ];\n },\n\n getArrowControlsLeft: function(w = 16, h = 32) {\n return [\n [0, 0],\n [w, h/2],\n [0, h]\n ];\n },\n\n getArrowControlsRight: function(w = 16, h = 32) {\n return [\n [w, 0],\n [0, 0],\n [w, h/2],\n [0, h],\n [w, h]\n ];\n },\n\n getArrowControls: function(w = 16, h = 32) {\n return [\n [0, 0],\n [w, h/2],\n [0, h]\n ];\n },\n\n getSeparatorControls: function(w = 16, h = 32) {\n return [w/2, 0, w/2, h];\n },\n\n getPlusBtnControlsLeft: function(w = 16, h = 32) {\n // return `M0 0 M0 0 L${w/2} 0 L${w/2} ${h/4} A${w/2} ${h/4} 0 1 0 ${w/2} ${h*3/4} L${w/2} ${h} L0 ${h} L0 0`;\n return `M0 0 M0 0 L8 0 L8 8 A8 8 0 1 0 8 24 L8 32 L0 32 L0 0`;\n },\n\n getPlusBtnControlsRight: function(w = 16, h = 32) {\n // return `M0 0 M${w/2} 0 L${w} 0 L${w} ${h} L0 ${h} L0 ${h*3/4} A${w/2} ${h/4} 0 1 0 0 ${h/4} L0 0`;\n return `M0 0 M8 0 L16 0 L16 32 L8 32 L8 24 A8 8 0 1 0 8 8 L8 0`;\n }\n },\n\n members: {\n __canvas: null,\n __leftPart: null,\n __rightPart: null,\n\n __getBGColor: function(decoratorName) {\n const decorator = qx.theme.manager.Decoration.getInstance().resolve(decoratorName);\n if (decorator) {\n const decoratorBG = decorator.getBackgroundColor();\n return qx.theme.manager.Color.getInstance().resolve(decoratorBG);\n }\n return null;\n },\n\n _applyLeftWidget: function(leftWidget) {\n const bounds = leftWidget.getBounds();\n this.set({\n zIndex: leftWidget.getZIndex()+1,\n marginTop: bounds.top\n });\n\n let controls;\n switch (this.getShape()) {\n case \"slash\":\n controls = this.self().getTriangleControlsLeft(16, bounds.height);\n break;\n case \"arrow\":\n controls = this.self().getArrowControlsLeft(16, bounds.height);\n break;\n case \"separator\":\n controls = this.self().getSeparatorControls(16, bounds.height);\n break;\n case \"plusBtn\":\n controls = this.self().getPlusBtnControlsLeft(16, bounds.height);\n break;\n }\n if (controls) {\n switch (this.getShape()) {\n case \"slash\":\n case \"arrow\":\n this.__leftPart = osparc.wrapper.Svg.drawPolygon(this.__canvas, controls);\n break;\n case \"separator\":\n this.__leftPart = osparc.wrapper.Svg.drawLine(this.__canvas, controls)\n .move(16 / 2, 0);\n break;\n case \"plusBtn\":\n this.__leftPart = osparc.wrapper.Svg.drawPath(this.__canvas, controls);\n break;\n }\n\n const color = this.__getBGColor(leftWidget.getDecorator());\n if (color) {\n osparc.wrapper.Svg.updatePolygonColor(this.__leftPart, color);\n }\n leftWidget.addListener(\"changeDecorator\", e => {\n const newColor = this.__getBGColor(leftWidget.getDecorator());\n if (newColor) {\n osparc.wrapper.Svg.updatePolygonColor(this.__leftPart, newColor);\n }\n }, this);\n }\n },\n\n _applyRightWidget: function(rightWidget) {\n const bounds = rightWidget.getBounds();\n this.set({\n zIndex: rightWidget.getZIndex()+1,\n marginTop: bounds.top\n });\n\n let controls;\n switch (this.getShape()) {\n case \"slash\":\n controls = this.self().getTriangleControlsRight(16, bounds.height);\n break;\n case \"arrow\":\n controls = this.self().getArrowControlsRight(16, bounds.height);\n break;\n case \"separator\":\n controls = this.self().getSeparatorControls(16, bounds.height);\n break;\n case \"plusBtn\":\n controls = this.self().getPlusBtnControlsRight(16, bounds.height);\n break;\n }\n if (controls) {\n switch (this.getShape()) {\n case \"slash\":\n case \"arrow\": {\n this.__rightPart = osparc.wrapper.Svg.drawPolygon(this.__canvas, controls);\n const color = this.__getBGColor(rightWidget.getDecorator());\n if (color) {\n osparc.wrapper.Svg.updatePolygonColor(this.__rightPart, color);\n }\n rightWidget.addListener(\"changeDecorator\", e => {\n const newColor = this.__getBGColor(rightWidget.getDecorator());\n if (newColor) {\n osparc.wrapper.Svg.updatePolygonColor(this.__rightPart, newColor);\n }\n }, this);\n break;\n }\n case \"separator\":\n this.__rightPart = osparc.wrapper.Svg.drawLine(this.__canvas, controls)\n .move(16 / 2, 0);\n break;\n case \"plusBtn\":\n this.__rightPart = osparc.wrapper.Svg.drawPath(this.__canvas, controls);\n break;\n }\n }\n\n let polylineControls;\n let lineControls;\n switch (this.getShape()) {\n case \"slash\":\n polylineControls = this.self().getSlashControls(16, bounds.height);\n break;\n case \"arrow\":\n polylineControls = this.self().getArrowControls(16, bounds.height);\n break;\n case \"sepatator\":\n lineControls = this.self().getSeparatorControls(16, bounds.height);\n break;\n }\n if (polylineControls || lineControls) {\n let stroke = null;\n if (polylineControls) {\n stroke = osparc.wrapper.Svg.drawPolyline(this.__canvas, polylineControls);\n } else if (lineControls) {\n stroke = osparc.wrapper.Svg.drawLine(this.__canvas, lineControls);\n }\n const color = qx.theme.manager.Color.getInstance().resolve(\"text\");\n osparc.wrapper.Svg.updateItemColor(stroke, color);\n rightWidget.addListener(\"changeDecorator\", e => {\n const newColor = qx.theme.manager.Color.getInstance().resolve(\"text\");\n osparc.wrapper.Svg.updateItemColor(stroke, newColor);\n }, this);\n }\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n\n************************************************************************ */\n\n/**\n * The button to fill the menubar\n *\n * @childControl arrow {qx.ui.basic.Image} arrow widget to show a submenu is available\n */\nqx.Class.define(\"qx.ui.toolbar.MenuButton\",\n{\n extend : qx.ui.menubar.Button,\n\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n /** Appearance of the widget */\n appearance :\n {\n refine : true,\n init : \"toolbar-menubutton\"\n },\n\n /** Whether the button should show an arrow to indicate the menu behind it */\n showArrow :\n {\n check : \"Boolean\",\n init : false,\n themeable : true,\n apply : \"_applyShowArrow\"\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n // overridden\n _applyVisibility : function(value, old) {\n this.base(arguments, value, old);\n\n // hide the menu too\n var menu = this.getMenu();\n if (value != \"visible\" && menu) {\n menu.hide();\n }\n\n // trigger a appearance recalculation of the parent\n var parent = this.getLayoutParent();\n if (parent && parent instanceof qx.ui.toolbar.PartContainer) {\n qx.ui.core.queue.Appearance.add(parent);\n }\n },\n\n\n // overridden\n _createChildControlImpl : function(id, hash)\n {\n var control;\n\n switch(id)\n {\n case \"arrow\":\n control = new qx.ui.basic.Image();\n control.setAnonymous(true);\n this._addAt(control, 10);\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n\n // property apply routine\n _applyShowArrow : function(value, old)\n {\n if (value) {\n this._showChildControl(\"arrow\");\n } else {\n this._excludeChildControl(\"arrow\");\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\n/**\n * Dropdown menu for tag filtering\n */\nqx.Class.define(\"osparc.filter.TagsFilter\", {\n extend: osparc.filter.UIFilter,\n\n /**\n * Constructor for TagsFilter creates a TagsFilter.\n *\n * @extends osparc.filter.UIFilter\n */\n construct: function(label, filterId, filterGroupId) {\n this.base(arguments, filterId, filterGroupId);\n this._setLayout(new qx.ui.layout.HBox());\n\n this.__dropdown = new qx.ui.toolbar.MenuButton(label).set({\n marginLeft: 0\n });\n this._add(this.__dropdown);\n\n this.__activeTags = [];\n this.__tagButtons = {};\n },\n\n properties: {\n printTags: {\n init: true,\n check: \"Boolean\",\n nullable: false\n }\n },\n\n statics: {\n ActiveTagIcon: \"@FontAwesome5Solid/check/12\"\n },\n\n members: {\n __dropdown: null,\n __activeTags: null,\n __tagButtons: null,\n __menu: null,\n\n /**\n * Implementing IFilter: Function in charge of resetting the filter.\n */\n reset: function() {\n // Remove ticks from menu\n const menuButtons = this._getMenuButtons();\n menuButtons.forEach(button => button.resetIcon());\n // Remove active tags\n if (this.__activeTags.length) {\n this.__activeTags.length = 0;\n }\n // Remove tag buttons\n for (let tagName in this.__tagButtons) {\n this._remove(this.__tagButtons[tagName]);\n delete this.__tagButtons[tagName];\n }\n this.__dispatch();\n },\n\n __dispatch: function() {\n this._filterChange(this.__activeTags);\n },\n\n getActiveTags: function() {\n return this.__activeTags;\n },\n\n _addTag: function(tagName, menuButton) {\n // Check if added\n if (this.__activeTags.includes(tagName)) {\n this.removeTag(tagName, menuButton);\n } else {\n // Save previous icon\n menuButton.prevIcon = menuButton.getIcon();\n // Add tick\n menuButton.setIcon(this.self().ActiveTagIcon);\n // Update state\n this.__activeTags.push(tagName);\n if (this.isPrintTags()) {\n // Add tag\n const tagButton = new qx.ui.toolbar.Button(tagName, \"@MaterialIcons/close/12\");\n this._add(tagButton);\n tagButton.addListener(\"execute\", () => this.removeTag(tagName, menuButton));\n this.__tagButtons[tagName] = tagButton;\n }\n }\n this.__dispatch();\n },\n\n removeTag: function(tagName, menuButton) {\n if (menuButton === undefined) {\n menuButton = this._getMenuButtons().find(btn => btn.getLabel() === tagName);\n }\n // Restore icon\n menuButton.setIcon(menuButton.prevIcon);\n // Update state\n this.__activeTags.splice(this.__activeTags.indexOf(tagName), 1);\n if (tagName in this.__tagButtons) {\n this._remove(this.__tagButtons[tagName]);\n delete this.__tagButtons[tagName];\n }\n this.__dispatch();\n },\n\n _getMenuButtons: function() {\n const menu = this.__dropdown.getMenu();\n if (menu) {\n return menu.getChildren().filter(child => child instanceof qx.ui.menu.Button);\n }\n return [];\n },\n\n _getActiveMenuButtons: function() {\n const menuButtons = this._getMenuButtons();\n return menuButtons.filter(menuButton => menuButton.getIcon() === this.self().ActiveTagIcon);\n },\n\n _addOption: function(tagName) {\n if (this.__menu === null) {\n this.__menu = new qx.ui.menu.Menu();\n this.__dropdown.setMenu(this.__menu);\n }\n const existing = this.__menu.getChildren().find(button => button.getLabel && button.getLabel() === tagName);\n if (existing) {\n // Don't add repeated options\n return existing;\n }\n const button = new qx.ui.menu.Button(tagName);\n button.addListener(\"execute\", e => this._addTag(tagName, e.getTarget()));\n this.__menu.add(button);\n return button;\n },\n\n _removeAllOptions: function() {\n if (this.__menu) {\n this.__menu.removeAll();\n }\n },\n\n _addSeparator: function() {\n if (this.__menu === null) {\n this.__menu = new qx.ui.menu.Menu();\n this.__dropdown.setMenu(this.__menu);\n }\n this.__menu.addSeparator();\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2019 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Ignacio Pascual (ignapas)\n\n************************************************************************ */\n\n/**\n * Filter for node types.\n */\nqx.Class.define(\"osparc.filter.NodeTypeFilter\", {\n extend: osparc.filter.TagsFilter,\n\n /**\n * Constructor for NodeTypeFilter creates the filter and builds its menu.\n *\n * @extends osparc.filter.TagsFilter\n */\n construct: function(filterId, filterGroupId) {\n this.base(arguments, this.tr(\"Type\"), filterId, filterGroupId);\n this._setLayout(new qx.ui.layout.HBox());\n\n this.__buildMenu();\n },\n\n members: {\n /**\n * Function that uses the information in {osparc.service.Utils} statics to build the menu for the filter.\n */\n __buildMenu: function() {\n osparc.service.Utils.getTypes().forEach(serviceType => this._addOption(osparc.utils.Utils.capitalize(serviceType)));\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.service.ServiceListItem\", {\n extend: osparc.dashboard.ListButtonBase,\n\n construct: function(service) {\n this.base(arguments);\n\n this.set({\n width: this.self().ITEM_WIDTH,\n height: this.self().ITEM_HEIGHT,\n paddingTop: 0,\n paddingBottom: 0,\n allowGrowX: true,\n focusable: true,\n });\n\n this.setResourceType(\"service\");\n if (service) {\n this.setService(service);\n }\n\n this.subscribeToFilterGroup(\"serviceCatalog\");\n\n this.bind(\"selected\", this, \"backgroundColor\", {\n converter: selected => selected ? \"strong-main\" : \"info\"\n });\n },\n\n properties: {\n service: {\n check: \"qx.core.Object\",\n nullable: false,\n apply: \"__applyService\"\n }\n },\n\n statics: {\n LATEST: \"latest\",\n ITEM_WIDTH: 550,\n ITEM_HEIGHT: 35,\n SERVICE_THUMBNAIL: osparc.product.Utils.getThumbnailUrl()\n },\n\n members: {\n __versionsBox: null,\n __infoBtn: null,\n\n __applyService: function(service) {\n // BASE\n if (service.getThumbnail()) {\n this.getChildControl(\"icon\").setSource(service.getThumbnail());\n } else {\n this.getChildControl(\"icon\").setSource(this.self().SERVICE_THUMBNAIL);\n }\n service.bind(\"name\", this.getChildControl(\"title\"), \"value\");\n\n // ITEM\n this.__applyVersion(service);\n this.__applyHitsOnItem(service);\n },\n\n __applyVersion: function(service) {\n const text = service.getVersionDisplay() ? service.getVersionDisplay() : \"v\" + service.getVersion();\n const label = new qx.ui.basic.Label(text).set({\n alignY: \"middle\"\n });\n this._add(label, {\n row: 0,\n column: osparc.dashboard.ListButtonBase.POS.LAST_CHANGE\n });\n },\n\n __applyHitsOnItem: function(service) {\n const hitsLabel = new qx.ui.basic.Label(this.tr(\"Hits: \") + String(service.getHits())).set({\n alignY: \"middle\",\n toolTipText: this.tr(\"Number of times you instantiated it\")\n });\n this._add(hitsLabel, {\n row: 0,\n column: osparc.dashboard.ListButtonBase.POS.HITS\n });\n },\n\n _filterText: function(text) {\n const checks = [\n this.getService().getName(),\n this.getService().getDescription(),\n this.getService().getContact()\n ];\n return osparc.dashboard.CardBase.filterText(checks, text);\n },\n\n _filterTags: function(tags) {\n if (tags && tags.length) {\n // xtype is a tuned type by the frontend\n const type = this.getService().getXType() || \"\";\n if (!tags.includes(osparc.utils.Utils.capitalize(type.trim()))) {\n return true;\n }\n }\n return false;\n },\n\n _filterClassifiers: function(classifiers) {\n const checks = this.getService().getClassifiers();\n return osparc.dashboard.CardBase.filterText(checks, classifiers);\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2022 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n * Odei Maiz (odeimaiz)\n */\n\nqx.Class.define(\"osparc.form.ColorPicker\", {\n extend: qx.ui.core.Widget,\n include : [\n qx.ui.form.MForm\n ],\n implement : [\n qx.ui.form.IStringForm,\n qx.ui.form.IForm\n ],\n\n construct: function() {\n this.base(arguments);\n\n const layout = new qx.ui.layout.HBox();\n this._setLayout(layout);\n\n this.getChildControl(\"random-button\");\n this.getChildControl(\"selector-button\");\n this.getChildControl(\"color-input\");\n },\n\n properties: {\n value: {\n check: \"Color\",\n event: \"changeValue\",\n init: \"#303030\"\n }\n },\n\n // eslint-disable-next-line qx-rules/no-refs-in-members\n members: {\n _forwardStates: {\n focused : true,\n invalid : true\n },\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"random-button\":\n control = new qx.ui.form.Button(null, \"@FontAwesome5Solid/sync-alt/12\");\n control.addListener(\"execute\", () => this.setValue(osparc.utils.Utils.getRandomColor()), this);\n this.bind(\"value\", control, \"backgroundColor\");\n this.bind(\"value\", control, \"textColor\", {\n converter: value => qx.theme.manager.Color.getInstance().resolve(osparc.utils.Utils.getContrastedTextColor(value))\n });\n this._add(control);\n break;\n case \"selector-button\":\n control = new qx.ui.form.Button(null, \"@FontAwesome5Solid/eye-dropper/12\");\n control.addListener(\"execute\", () => this.__openColorSelector(), this);\n this.bind(\"value\", control, \"backgroundColor\");\n this.bind(\"value\", control, \"textColor\", {\n converter: value => qx.theme.manager.Color.getInstance().resolve(osparc.utils.Utils.getContrastedTextColor(value))\n });\n this._add(control);\n break;\n case \"color-input\":\n control = new qx.ui.form.TextField().set({\n width: 80,\n required: true\n });\n this._add(control, {\n flex: 1\n });\n this.bind(\"value\", control, \"value\");\n control.addListener(\"changeValue\", e => {\n const newColor = e.getData();\n if (osparc.utils.Validators.hexColor(newColor, control)) {\n this.setValue(newColor);\n }\n });\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __openColorSelector: function() {\n const colorSelector = new qx.ui.control.ColorSelector();\n const rgb = qx.util.ColorUtil.hexStringToRgb(this.getValue());\n colorSelector.setRed(rgb[0]);\n colorSelector.setGreen(rgb[1]);\n colorSelector.setBlue(rgb[2]);\n osparc.ui.window.Window.popUpInWindow(colorSelector, this.tr(\"Pick a color\"), 590, 380);\n colorSelector.addListener(\"changeValue\", e => this.setValue(e.getData()));\n },\n\n // overridden\n resetValue: function() {\n this.getChildControl(\"color-input\").resetValue();\n },\n\n // overridden\n focus: function() {\n this.base(arguments);\n this.getChildControl(\"color-input\").getFocusElement().focus();\n },\n\n // overridden\n tabFocus: function() {\n const field = this.getChildControl(\"color-input\");\n field.getFocusElement().focus();\n field.selectAllText();\n },\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n * Odei Maiz (odeimaiz)\n */\n\nqx.Class.define(\"osparc.ui.tree.CheckboxTreeItem\", {\n extend: qx.ui.tree.VirtualTreeItem,\n include: osparc.ui.tree.MHintInTree,\n\n properties: {\n checked: {\n check: \"Boolean\",\n init: false,\n event: \"changeChecked\",\n nullable: true\n }\n },\n\n events: {\n checkboxClicked: \"qx.event.type.Event\"\n },\n\n members: {\n _addWidgets: function() {\n this.addSpacer();\n this.addOpenButton();\n this._add(this.getChildControl(\"checkbox\"));\n const label = this.getChildControl(\"label\");\n this._add(label, {\n flex: 1\n });\n this._add(new qx.ui.core.Spacer(), {\n flex: 1\n });\n this.addHint();\n\n this.setMaxWidth(240);\n },\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"checkbox\":\n control = new qx.ui.form.CheckBox();\n control.setTriState(true);\n control.bind(\"value\", this, \"checked\");\n this.bind(\"checked\", control, \"value\");\n control.addListener(\"tap\", () => this.fireEvent(\"checkboxClicked\"));\n break;\n }\n return control || this.base(arguments, id);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2022 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.utils.Icons\", {\n type: \"static\",\n\n statics: {\n user: function(iconSize) {\n if (iconSize) {\n return \"@FontAwesome5Solid/user/\" + iconSize;\n }\n return \"@FontAwesome5Solid/user/14\";\n },\n\n organization: function(iconSize) {\n if (iconSize) {\n return \"@FontAwesome5Solid/users/\" + iconSize;\n }\n return \"@FontAwesome5Solid/users/14\";\n },\n\n everyone: function(iconSize) {\n if (iconSize) {\n return \"@FontAwesome5Solid/globe/\" + iconSize;\n }\n return \"@FontAwesome5Solid/globe/14\";\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.ui.list.MemberListItem\", {\n extend: osparc.ui.list.ListItemWithMenu,\n\n events: {\n \"promoteToMember\": \"qx.event.type.Data\",\n \"promoteToManager\": \"qx.event.type.Data\",\n \"promoteToAdministrator\": \"qx.event.type.Data\",\n \"demoteToUser\": \"qx.event.type.Data\",\n \"demoteToMember\": \"qx.event.type.Data\",\n \"demoteToManager\": \"qx.event.type.Data\",\n \"removeMember\": \"qx.event.type.Data\",\n \"leaveResource\": \"qx.event.type.Data\"\n },\n\n members: {\n // overridden\n _applySubtitleMD: function(value) {\n this.base(arguments, value);\n\n // highlight me\n const email = osparc.auth.Data.getInstance().getEmail();\n if (value && value.includes(email)) {\n this.addState(\"selected\");\n }\n },\n\n // overridden\n _getOptionsMenu: function() {\n const menu = new qx.ui.menu.Menu().set({\n position: \"bottom-right\"\n });\n\n const options = this.getOptions();\n if (options === null) {\n return menu;\n }\n\n if (options.includes(\"promoteToMember\")) {\n const promoteButton = new qx.ui.menu.Button(this.tr(\"Promote to \") + osparc.data.Roles.ORG[1].label);\n promoteButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"promoteToMember\", {\n id: this.getKey(),\n name: this.getTitle()\n });\n });\n menu.add(promoteButton);\n }\n if (options.includes(\"promoteToManager\")) {\n const promoteButton = new qx.ui.menu.Button(this.tr(\"Promote to \") + osparc.data.Roles.ORG[2].label);\n promoteButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"promoteToManager\", {\n id: this.getKey(),\n name: this.getTitle()\n });\n });\n menu.add(promoteButton);\n }\n if (options.includes(\"promoteToAdministrator\")) {\n const promoteButton = new qx.ui.menu.Button(this.tr(\"Promote to \") + osparc.data.Roles.ORG[3].label);\n promoteButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"promoteToAdministrator\", {\n id: this.getKey(),\n name: this.getTitle()\n });\n });\n menu.add(promoteButton);\n }\n if (options.includes(\"demoteToUser\")) {\n const demoteButton = new qx.ui.menu.Button(this.tr(\"Demote to \") + osparc.data.Roles.ORG[0].label);\n demoteButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"demoteToUser\", {\n id: this.getKey(),\n name: this.getTitle()\n });\n });\n menu.add(demoteButton);\n }\n if (options.includes(\"demoteToMember\")) {\n const demoteButton = new qx.ui.menu.Button(this.tr(\"Demote to \") + osparc.data.Roles.ORG[1].label);\n demoteButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"demoteToMember\", {\n id: this.getKey(),\n name: this.getTitle()\n });\n });\n menu.add(demoteButton);\n }\n if (options.includes(\"demoteToManager\")) {\n const demoteButton = new qx.ui.menu.Button(this.tr(\"Demote to \") + osparc.data.Roles.ORG[2].label);\n demoteButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"demoteToManager\", {\n id: this.getKey(),\n name: this.getTitle()\n });\n });\n menu.add(demoteButton);\n }\n\n if (menu.getChildren().length) {\n menu.addSeparator();\n }\n\n if (options.includes(\"removeMember\")) {\n const accessRights = this.getAccessRights();\n let currentRole = osparc.data.Roles.ORG[0];\n if (accessRights.getDelete()) {\n currentRole = osparc.data.Roles.ORG[3];\n } else if (accessRights.getWrite()) {\n currentRole = osparc.data.Roles.ORG[2];\n } else if (accessRights.getRead()) {\n currentRole = osparc.data.Roles.ORG[1];\n }\n const removeButton = new qx.ui.menu.Button(this.tr(\"Remove \") + currentRole.label).set({\n textColor: \"danger-red\"\n });\n removeButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"removeMember\", {\n id: this.getKey(),\n name: this.getTitle()\n });\n });\n menu.add(removeButton);\n }\n\n if (options.includes(\"leave\")) {\n if (menu.getChildren().length) {\n menu.addSeparator();\n }\n const removeButton = new qx.ui.menu.Button(this.tr(\"Leave\")).set({\n textColor: \"danger-red\"\n });\n removeButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"leaveResource\", {\n id: this.getKey(),\n name: this.getTitle()\n });\n });\n menu.add(removeButton);\n }\n\n return menu;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.desktop.organizations.SharedResourceListItem\", {\n extend: osparc.ui.list.ListItemWithMenu,\n\n construct: function(resourceType) {\n this.__resourceType = resourceType;\n\n this.base(arguments);\n },\n\n properties: {\n orgId: {\n check: \"Integer\",\n init: true,\n nullable: false,\n event: \"changeOrgId\"\n },\n\n version: {\n check: \"String\",\n init: true,\n nullable: true,\n event: \"changeVersion\"\n }\n },\n\n events: {\n \"openMoreInfo\": \"qx.event.type.Data\"\n },\n\n statics: {\n canDelete: function(accessRights) {\n const canDelete = accessRights.getDelete ? accessRights.getDelete() : false;\n return canDelete;\n },\n\n canWrite: function(accessRights) {\n let canWrite = accessRights.getWrite ? accessRights.getWrite() : false;\n canWrite = canWrite || (accessRights.getWriteAccess ? accessRights.getWriteAccess() : false);\n return canWrite;\n },\n\n canRead: function(accessRights) {\n let canRead = accessRights.getRead ? accessRights.getRead() : false;\n canRead = canRead || (accessRights.getExecuteAccess ? accessRights.getExecuteAccess() : false);\n return canRead;\n }\n },\n\n members: {\n __resourceType: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"info-button\": {\n control = new qx.ui.form.Button().set({\n maxWidth: 28,\n maxHeight: 28,\n alignX: \"center\",\n alignY: \"middle\",\n icon: \"@MaterialIcons/info_outline/14\",\n focusable: false\n });\n this._add(control, {\n row: 0,\n column: 4,\n rowSpan: 2\n });\n break;\n }\n }\n\n return control || this.base(arguments, id);\n },\n\n __getRoleInfo: function(i) {\n if (this.__resourceType === \"service\") {\n return osparc.data.Roles.SERVICES[i];\n }\n return osparc.data.Roles.STUDY[i];\n },\n\n // overridden\n _setRole: function() {\n const accessRights = this.getAccessRights();\n const role = this.getChildControl(\"role\");\n if (this.self().canDelete(accessRights)) {\n role.setValue(this.__getRoleInfo(3).label);\n } else if (this.self().canWrite(accessRights)) {\n role.setValue(this.__getRoleInfo(2).label);\n } else {\n role.setValue(this.__getRoleInfo(1).label);\n }\n },\n\n // overridden\n _getInfoButton: function() {\n const accessRights = this.getAccessRights();\n if (\n (\"getRead\" in accessRights && accessRights.getRead()) ||\n (\"getExecute\" in accessRights && accessRights.getExecute())\n ) {\n const button = this.getChildControl(\"info-button\");\n button.addListener(\"execute\", () => this.fireDataEvent(\"openMoreInfo\", {\n key: this.getKey(),\n version: this.getVersion()\n }));\n return button;\n }\n return null;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.po.BaseView\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this._buildLayout();\n },\n\n statics: {\n createGroupBox: function(title) {\n const box = new qx.ui.groupbox.GroupBox(title).set({\n layout: new qx.ui.layout.VBox(5)\n });\n box.getChildControl(\"legend\").set({\n font: \"text-14\"\n });\n box.getChildControl(\"frame\").set({\n backgroundColor: \"transparent\",\n marginTop: 15,\n padding: 2\n });\n return box;\n },\n\n createHelpLabel: function(text) {\n const label = new qx.ui.basic.Label(text).set({\n font: \"text-13\"\n });\n return label;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.pricing.PlanManager\", {\n extend: osparc.po.BaseView,\n\n members: {\n _buildLayout: function() {\n const stack = new qx.ui.container.Stack();\n this._add(stack, {\n flex: 1\n });\n\n const pricingPlans = new osparc.pricing.Plans();\n stack.add(pricingPlans);\n\n const pricingPlanDetails = new osparc.pricing.PlanDetails();\n stack.add(pricingPlanDetails);\n\n stack.setSelection([pricingPlans]);\n pricingPlans.addListener(\"pricingPlanSelected\", e => {\n const pricingPlanModel = e.getData();\n if (pricingPlanModel) {\n stack.setSelection([pricingPlanDetails]);\n pricingPlanDetails.setCurrentPricingPlan(pricingPlanModel);\n }\n });\n\n pricingPlanDetails.addListener(\"backToPricingPlans\", () => {\n stack.setSelection([pricingPlans]);\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.admin.Maintenance\", {\n extend: osparc.po.BaseView,\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"maintenance-container\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n this._add(control, {\n flex: 1\n });\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n _buildLayout: function() {\n osparc.data.Resources.get(\"maintenance\")\n .then(scheduledMaintenance => {\n if (scheduledMaintenance) {\n this.__populateMaintenanceLayout(JSON.parse(scheduledMaintenance))\n } else {\n this.__populateMaintenanceLayout(null)\n }\n })\n .catch(err => console.error(err));\n },\n\n __populateMaintenanceLayout: function(data) {\n const vBox = this.getChildControl(\"maintenance-container\");\n vBox.removeAll();\n\n if (data) {\n const respLabel = new qx.ui.basic.Label(this.tr(\"Start and End dates go in UTC time zone\"));\n vBox.add(respLabel);\n\n const invitationRespViewer = new osparc.ui.basic.JsonTreeWidget(data, \"maintenance-data\");\n const container = new qx.ui.container.Scroll();\n container.add(invitationRespViewer);\n vBox.add(container, {\n flex: 1\n });\n } else {\n const label = new qx.ui.basic.Label().set({\n value: this.tr(\"No Maintenance scheduled\")\n });\n vBox.add(label);\n }\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.admin.Announcements\", {\n extend: osparc.po.BaseView,\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"create-announcement\":\n control = this.__createAnnouncements();\n this._add(control);\n break;\n case \"announcement-container\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n this._add(control, {\n flex: 1\n });\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n _buildLayout: function() {\n this.getChildControl(\"create-announcement\");\n this.getChildControl(\"announcement-container\");\n },\n\n __createAnnouncements: function() {\n const announcementGroupBox = osparc.po.BaseView.createGroupBox(this.tr(\"Create announcement\"));\n\n const announcementForm = this.__createAnnouncementForm();\n const form = new qx.ui.form.renderer.Single(announcementForm);\n announcementGroupBox.add(form);\n\n return announcementGroupBox;\n },\n\n __createAnnouncementForm: function() {\n const form = new qx.ui.form.Form();\n\n const title = new qx.ui.form.TextField().set({\n placeholder: this.tr(\"title\")\n });\n form.add(title, this.tr(\"Title\"));\n\n const description = new qx.ui.form.TextArea().set({\n placeholder: this.tr(\"description\"),\n maxHeight: 60\n });\n form.add(description, this.tr(\"Description\"));\n\n const link = new qx.ui.form.TextField().set({\n placeholder: this.tr(\"link\")\n });\n form.add(link, this.tr(\"Link\"));\n\n const widgetLogin = new qx.ui.form.CheckBox().set({\n value: false\n });\n form.add(widgetLogin, this.tr(\"Login\"));\n\n const widgetRibbon = new qx.ui.form.CheckBox().set({\n value: false\n });\n form.add(widgetRibbon, this.tr(\"Ribbon\"));\n\n const widgetUserMenu = new qx.ui.form.CheckBox().set({\n value: false\n });\n form.add(widgetUserMenu, this.tr(\"User Menu\"));\n\n const dateFormat = new qx.util.format.DateFormat(\"dd/MM/yyyy\");\n const now = new Date();\n\n const start = new qx.ui.form.DateField();\n start.setDateFormat(dateFormat);\n start.setValue(now);\n form.add(start, this.tr(\"Start\"));\n\n const end = new qx.ui.form.DateField();\n end.setDateFormat(dateFormat);\n end.setValue(now);\n form.add(end, this.tr(\"End\"));\n\n const generateAnnouncementBtn = new osparc.ui.form.FetchButton(this.tr(\"Generate\"));\n generateAnnouncementBtn.set({appearance: \"form-button\"});\n generateAnnouncementBtn.addListener(\"execute\", () => {\n const products = [osparc.product.Utils.getProductName()];\n const widgets = [];\n if (widgetLogin.getValue()) {\n widgets.push(\"login\");\n }\n if (widgetRibbon.getValue()) {\n widgets.push(\"ribbon\");\n }\n if (widgetUserMenu.getValue()) {\n widgets.push(\"user-menu\");\n }\n if (widgets.length === 0) {\n const msg = \"Select at least one widget\";\n osparc.FlashMessenger.getInstance().logAs(msg, \"WARNING\");\n }\n const announcementData = {\n \"id\": osparc.utils.Utils.uuidV4(),\n \"products\": products,\n \"title\": title.getValue() ? title.getValue() : \"\",\n \"description\": description.getValue() ? description.getValue() : \"\",\n \"link\": link.getValue() ? link.getValue() : \"\",\n \"widgets\": widgets,\n \"start\": start.getValue(),\n \"end\": end.getValue(),\n };\n this.__populateAnnouncementLayout(announcementData);\n }, this);\n form.addButton(generateAnnouncementBtn);\n\n return form;\n },\n\n __populateAnnouncementLayout: function(announcementData) {\n const vBox = this.getChildControl(\"announcement-container\");\n vBox.removeAll();\n\n const announcementField = new qx.ui.form.TextArea(JSON.stringify(announcementData)).set({\n readOnly: true\n });\n vBox.add(announcementField);\n\n const copyAnnouncementBtn = new qx.ui.form.Button(this.tr(\"Copy announcement\")).set({\n alignX: \"left\",\n allowGrowX: false,\n });\n copyAnnouncementBtn.set({appearance: \"form-button\"});\n copyAnnouncementBtn.addListener(\"execute\", () => {\n if (osparc.utils.Utils.copyTextToClipboard(JSON.stringify(announcementData))) {\n copyAnnouncementBtn.setIcon(\"@FontAwesome5Solid/check/12\");\n }\n });\n vBox.add(copyAnnouncementBtn);\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Pedro Crespo-Valero (pcrespov)\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.po.Users\", {\n extend: osparc.po.BaseView,\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"search-users\":\n control = this.__searchUsers();\n this._add(control);\n break;\n case \"finding-status\":\n control = new qx.ui.basic.Label();\n this._add(control);\n break;\n case \"found-users-container\":\n control = new qx.ui.container.Scroll();\n this._add(control, {\n flex: 1\n });\n break;\n }\n return control || this.base(arguments, id);\n },\n\n _buildLayout: function() {\n this.getChildControl(\"search-users\");\n this.getChildControl(\"finding-status\");\n this.getChildControl(\"found-users-container\");\n },\n\n __searchUsers: function() {\n const usersGroupBox = osparc.po.BaseView.createGroupBox(this.tr(\"Search\"));\n\n const searchUsersForm = this.__searchUsersForm();\n const form = new qx.ui.form.renderer.Single(searchUsersForm);\n usersGroupBox.add(form);\n\n return usersGroupBox;\n },\n\n __searchUsersForm: function() {\n const form = new qx.ui.form.Form();\n\n const userEmail = new qx.ui.form.TextField().set({\n required: true,\n placeholder: this.tr(\"user@email.address or user@*\")\n });\n form.add(userEmail, this.tr(\"Email\"));\n\n const searchBtn = new osparc.ui.form.FetchButton(this.tr(\"Search\"));\n searchBtn.set({\n appearance: \"form-button\"\n });\n searchBtn.addListener(\"execute\", () => {\n if (!osparc.data.Permissions.getInstance().canDo(\"user.users.search\", true)) {\n return;\n }\n if (form.validate()) {\n searchBtn.setFetching(true);\n const findingStatus = this.getChildControl(\"finding-status\");\n findingStatus.setValue(this.tr(\"Searching users...\"));\n const params = {\n url: {\n email: userEmail.getValue()\n }\n };\n osparc.data.Resources.fetch(\"poUsers\", \"search\", params)\n .then(data => {\n findingStatus.setValue(data.length + this.tr(\" user(s) found\"));\n this.__populateFoundUsersLayout(data);\n })\n .catch(err => {\n findingStatus.setValue(this.tr(\"Error searching users\"));\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n })\n .finally(() => searchBtn.setFetching(false));\n }\n }, this);\n form.addButton(searchBtn);\n\n return form;\n },\n\n __populateFoundUsersLayout: function(respData) {\n const foundUsersContainer = this.getChildControl(\"found-users-container\");\n osparc.utils.Utils.removeAllChildren(foundUsersContainer);\n const usersRespViewer = new osparc.ui.basic.JsonTreeWidget(respData, \"users-data\");\n foundUsersContainer.add(usersRespViewer);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Pedro Crespo-Valero (pcrespov)\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.po.PreRegistration\", {\n extend: osparc.po.BaseView,\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"search-preregistration\":\n control = this.__searchPreRegistration();\n this._add(control);\n break;\n case \"finding-status\":\n control = new qx.ui.basic.Label().set({\n rich: true\n });\n this._add(control);\n break;\n case \"pre-registration-container\":\n control = new qx.ui.container.Scroll();\n this._add(control, {\n flex: 1\n });\n break;\n }\n return control || this.base(arguments, id);\n },\n\n _buildLayout: function() {\n this.getChildControl(\"search-preregistration\");\n this.getChildControl(\"finding-status\");\n this.getChildControl(\"pre-registration-container\");\n },\n\n __searchPreRegistration: function() {\n const groupBox = osparc.po.BaseView.createGroupBox(this.tr(\"Pre-Registration\"));\n const form = this.__preRegistrationForm();\n const formRenderer = new qx.ui.form.renderer.Single(form);\n groupBox.add(formRenderer);\n\n return groupBox;\n },\n\n __preRegistrationForm: function() {\n const form = new qx.ui.form.Form();\n const requestAccountData = new qx.ui.form.TextArea().set({\n required: true,\n minHeight: 200,\n placeholder: this.tr(\"Copy&Paste the Request Account Form in JSON format here ...\")\n });\n form.add(requestAccountData, this.tr(\"Request Form\"));\n\n const submitBtn = new osparc.ui.form.FetchButton(this.tr(\"Submit\"));\n submitBtn.set({\n appearance: \"form-button\"\n });\n\n submitBtn.addListener(\"execute\", () => {\n if (!osparc.data.Permissions.getInstance().canDo(\"user.users.pre-register\", true)) {\n return;\n }\n if (form.validate()) {\n submitBtn.setFetching(true);\n\n const flashErrorMsg = this.tr(\"Pre-Registration Failed. See details below\");\n const findingStatus = this.getChildControl(\"finding-status\");\n findingStatus.setValue(this.tr(\"Searching Pre-Registered users...\"));\n\n let params;\n try {\n params = {\n data: JSON.parse(requestAccountData.getValue())\n };\n } catch (err) {\n console.error(err);\n\n const detailErrorMsg = `Error parsing Request Form JSON. ${err}`;\n findingStatus.setValue(detailErrorMsg);\n\n osparc.FlashMessenger.logAs(flashErrorMsg, \"ERROR\");\n submitBtn.setFetching(false);\n return\n }\n\n osparc.data.Resources.fetch(\"poUsers\", \"preRegister\", params)\n .then(data => {\n if (data.length) {\n findingStatus.setValue(this.tr(\"Pre-Registered as:\"));\n } else {\n findingStatus.setValue(this.tr(\"No Pre-Registered user found\"));\n }\n this.__populatePreRegistrationLayout(data);\n })\n .catch(err => {\n const detailErrorMsg = this.tr(`Error during Pre-Registeristration: ${err.message}`)\n findingStatus.setValue(detailErrorMsg);\n console.error(err);\n osparc.FlashMessenger.logAs(flashErrorMsg, \"ERROR\");\n })\n .finally(() => submitBtn.setFetching(false));\n }\n }, this);\n form.addButton(submitBtn);\n\n return form;\n },\n\n __populatePreRegistrationLayout: function(respData) {\n const preRegistrationContainer = this.getChildControl(\"pre-registration-container\");\n const preregistrationRespViewer = new osparc.ui.basic.JsonTreeWidget(respData, \"preregistration-data\");\n preRegistrationContainer.add(preregistrationRespViewer);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.po.Invitations\", {\n extend: osparc.po.BaseView,\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"create-invitation\":\n control = this.__createInvitations();\n this._add(control);\n break;\n case \"invitation-container\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));\n this._add(control, {\n flex: 1\n });\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n _buildLayout: function() {\n this.getChildControl(\"create-invitation\");\n this.getChildControl(\"invitation-container\");\n },\n\n __createInvitations: function() {\n const invitationGroupBox = osparc.po.BaseView.createGroupBox(this.tr(\"Create invitation\"));\n\n const disclaimer = osparc.po.BaseView.createHelpLabel(this.tr(\"There is no invitation required in this product/deployment.\"));\n disclaimer.exclude();\n const config = osparc.store.Store.getInstance().get(\"config\");\n if (\"invitation_required\" in config && config[\"invitation_required\"] === false) {\n disclaimer.show();\n }\n invitationGroupBox.add(disclaimer);\n\n const newTokenForm = this.__createInvitationForm();\n const form = new qx.ui.form.renderer.Single(newTokenForm);\n invitationGroupBox.add(form);\n\n return invitationGroupBox;\n },\n\n __createInvitationForm: function() {\n const form = new qx.ui.form.Form();\n\n const userEmail = new qx.ui.form.TextField().set({\n required: true,\n placeholder: this.tr(\"new.user@email.address\")\n });\n form.add(userEmail, this.tr(\"User Email\"));\n\n const extraCreditsInUsd = new qx.ui.form.Spinner().set({\n minimum: 0,\n maximum: 1000,\n value: 100\n });\n form.add(extraCreditsInUsd, this.tr(\"Welcome Credits (USD)\"));\n\n const withExpiration = new qx.ui.form.CheckBox().set({\n value: false\n });\n form.add(withExpiration, this.tr(\"With expiration\"));\n\n const trialDays = new qx.ui.form.Spinner().set({\n minimum: 1,\n maximum: 1000,\n value: 1\n });\n withExpiration.bind(\"value\", trialDays, \"visibility\", {\n converter: val => val ? \"visible\" : \"excluded\"\n });\n form.add(trialDays, this.tr(\"Trial Days\"));\n\n const generateInvitationBtn = new osparc.ui.form.FetchButton(this.tr(\"Generate\"));\n generateInvitationBtn.set({\n appearance: \"form-button\"\n });\n generateInvitationBtn.addListener(\"execute\", () => {\n if (!osparc.data.Permissions.getInstance().canDo(\"user.invitation.generate\", true)) {\n return;\n }\n if (form.validate()) {\n generateInvitationBtn.setFetching(true);\n const params = {\n data: {\n \"guest\": userEmail.getValue()\n }\n };\n if (extraCreditsInUsd.getValue() > 0) {\n params.data[\"extraCreditsInUsd\"] = extraCreditsInUsd.getValue();\n }\n if (withExpiration.getValue()) {\n params.data[\"trialAccountDays\"] = trialDays.getValue();\n }\n osparc.data.Resources.fetch(\"invitations\", \"post\", params)\n .then(data => {\n this.__populateInvitationLayout(data);\n })\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n })\n .finally(() => generateInvitationBtn.setFetching(false));\n }\n }, this);\n form.addButton(generateInvitationBtn);\n\n return form;\n },\n\n __populateInvitationLayout: function(respData) {\n const vBox = this.getChildControl(\"invitation-container\");\n vBox.removeAll();\n\n const label = new qx.ui.basic.Label().set({\n value: this.tr(\"Remember that this is a one time use link\")\n });\n vBox.add(label);\n\n const hBox = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignY: \"middle\"\n }));\n vBox.add(hBox);\n\n const invitationField = new qx.ui.form.TextField(respData[\"invitation_link\"]).set({\n readOnly: true\n });\n hBox.add(invitationField, {\n flex: 1\n });\n\n const copyInvitationBtn = new qx.ui.form.Button(this.tr(\"Copy invitation link\"));\n copyInvitationBtn.set({appearance: \"form-button-outlined\"});\n copyInvitationBtn.addListener(\"execute\", () => {\n if (osparc.utils.Utils.copyTextToClipboard(respData[\"invitation_link\"])) {\n copyInvitationBtn.setIcon(\"@FontAwesome5Solid/check/12\");\n }\n });\n hBox.add(copyInvitationBtn);\n\n const respLabel = new qx.ui.basic.Label(this.tr(\"Data encrypted in the invitation\"));\n vBox.add(respLabel);\n\n const printData = osparc.utils.Utils.deepCloneObject(respData);\n delete printData[\"invitation_link\"];\n const invitationRespViewer = new osparc.ui.basic.JsonTreeWidget(respData, \"invitation-data\");\n const container = new qx.ui.container.Scroll();\n container.add(invitationRespViewer);\n vBox.add(container, {\n flex: 1\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.po.ProductInfo\", {\n extend: osparc.po.BaseView,\n\n members: {\n _buildLayout: function() {\n const params = {\n url: {\n productName: osparc.product.Utils.getProductName()\n }\n };\n osparc.data.Resources.fetch(\"productMetadata\", \"get\", params)\n .then(respData => {\n // \"templates\" has its own section\n delete respData[\"templates\"];\n const invitationRespViewer = new osparc.ui.basic.JsonTreeWidget(respData, \"product-metadata\");\n const container = new qx.ui.container.Scroll();\n container.add(invitationRespViewer);\n this._add(container, {\n flex: 1\n });\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.po.MessageTemplates\", {\n extend: osparc.po.BaseView,\n\n members: {\n __messageTemplates: null,\n\n _buildLayout: function() {\n const params = {\n url: {\n productName: osparc.product.Utils.getProductName()\n }\n };\n osparc.data.Resources.fetch(\"productMetadata\", \"get\", params)\n .then(respData => {\n this.__messageTemplates = respData[\"templates\"];\n this.__buildLayout();\n });\n },\n\n __buildLayout: function() {\n this._removeAll();\n\n const templatesSB = new qx.ui.form.SelectBox().set({\n allowGrowX: false\n });\n this._add(templatesSB);\n\n const htmlViewer = this.__htmlViewer = new osparc.editor.HtmlEditor().set({\n minHeight: 400\n });\n htmlViewer.getChildControl(\"cancel-button\").exclude();\n const container = new qx.ui.container.Scroll();\n container.add(htmlViewer, {\n flex: 1\n });\n this._add(container, {\n flex: 1\n });\n\n templatesSB.addListener(\"changeSelection\", e => {\n const selection = e.getData();\n if (selection.length) {\n const templateId = selection[0].getModel();\n this.__populateMessage(templateId);\n }\n }, this);\n this.__messageTemplates.forEach(template => {\n const lItem = new qx.ui.form.ListItem(template.id, null, template.id);\n templatesSB.add(lItem);\n });\n htmlViewer.addListener(\"textChanged\", e => {\n const newTemplate = e.getData();\n const templateId = templatesSB.getSelection()[0].getModel();\n this.__saveTemplate(templateId, newTemplate);\n });\n },\n\n __populateMessage: function(templateId) {\n const found = this.__messageTemplates.find(template => template.id === templateId);\n if (found) {\n this.__htmlViewer.setText(found.content);\n }\n },\n\n __saveTemplate: function(templateId, newTemplate) {\n const productName = osparc.product.Utils.getProductName();\n const params = {\n url: {\n productName,\n templateId\n },\n data: {\n content: newTemplate\n }\n };\n osparc.data.Resources.fetch(\"productMetadata\", \"updateEmailTemplate\", params)\n .then(() => osparc.FlashMessenger.logAs(this.tr(\"Template updated\"), \"INFO\"))\n .catch(err => {\n console.error(err);\n osparc.FlashMessenger.logAs(err.message, \"ERROR\");\n })\n .finally(() => this._buildLayout());\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.tester.WebSocketMessages\", {\n extend: osparc.po.BaseView,\n construct: function() {\n this.base(arguments);\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"filter-message\": {\n control = new qx.ui.form.TextField().set({\n liveUpdate : true,\n placeholder: this.tr(\"Search in Message\"),\n });\n this._add(control);\n break;\n }\n case \"messages-table\": {\n const tableModel = new qx.ui.table.model.Filtered();\n tableModel.setColumns([\n this.tr(\"Date\"),\n this.tr(\"Channel\"),\n this.tr(\"Message\"),\n ]);\n const custom = {\n tableColumnModel: function(obj) {\n return new qx.ui.table.columnmodel.Resize(obj);\n }\n };\n control = new qx.ui.table.Table(tableModel, custom).set({\n selectable: true,\n statusBarVisible: false,\n showCellFocusIndicator: false,\n forceLineHeight: false\n });\n control.getTableColumnModel().setDataCellRenderer(\n 1,\n new qx.ui.table.cellrenderer.String().set({\n defaultCellStyle: \"user-select: text\"\n })\n );\n control.getTableColumnModel().setDataCellRenderer(\n 0,\n new qx.ui.table.cellrenderer.String().set({\n defaultCellStyle: \"user-select: text\"\n })\n );\n control.getTableColumnModel().setDataCellRenderer(\n 2,\n new osparc.ui.table.cellrenderer.Html().set({\n defaultCellStyle: \"user-select: text; text-wrap: wrap\"\n })\n );\n control.setColumnWidth(0, 80);\n control.setColumnWidth(1, 150);\n\n control.setDataRowRenderer(new osparc.ui.table.rowrenderer.ExpandSelection(control));\n this._add(control, {\n flex: 1\n });\n break;\n }\n case \"json-viewer\":\n control = new osparc.ui.basic.JsonTreeWidget();\n this._add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n _buildLayout: function() {\n const filterMessage = this.getChildControl(\"filter-message\");\n const table = this.getChildControl(\"messages-table\");\n const jsonViewer = this.getChildControl(\"json-viewer\");\n\n const model = table.getTableModel();\n filterMessage.addListener(\"changeValue\", e => {\n const value = e.getData();\n model.resetHiddenRows();\n model.addNotRegex(value, \"Message\", true);\n model.applyFilters();\n });\n table.addListener(\"cellTap\", e => {\n const selectedRow = e.getRow();\n const rowData = table.getTableModel().getRowData(selectedRow);\n jsonViewer.setJson(JSON.parse(rowData[2]));\n }, this);\n\n this.__populateTable();\n },\n\n __populateTable: function() {\n const socket = osparc.wrapper.WebSocket.getInstance();\n const messagesObj = socket.getCachedMessages();\n const messagesArray = [];\n for (const channel in messagesObj) {\n messagesObj[channel].forEach(msg => {\n messagesArray.push({\n date: msg.date,\n channel,\n message: msg.message,\n });\n });\n }\n messagesArray.sort((a, b) => {\n return new Date(b.date) - new Date(a.date); // newest first\n });\n const datas = [];\n messagesArray.forEach(entry => {\n const data = [\n new Date(entry.date).toLocaleTimeString(),\n entry.channel,\n JSON.stringify(entry.message),\n ];\n datas.push(data);\n });\n this.getChildControl(\"messages-table\").getTableModel().setData(datas);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.tester.ConsoleErrors\", {\n extend: osparc.po.BaseView,\n construct: function() {\n this.base(arguments);\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"filter-message\": {\n control = new qx.ui.form.TextField().set({\n liveUpdate : true,\n placeholder: this.tr(\"Search in Message\"),\n });\n this._add(control);\n break;\n }\n case \"messages-table\": {\n const tableModel = new qx.ui.table.model.Filtered();\n tableModel.setColumns([\n this.tr(\"Date\"),\n this.tr(\"Message\"),\n ]);\n const custom = {\n tableColumnModel: function(obj) {\n return new qx.ui.table.columnmodel.Resize(obj);\n }\n };\n control = new qx.ui.table.Table(tableModel, custom).set({\n selectable: true,\n statusBarVisible: false,\n showCellFocusIndicator: false,\n forceLineHeight: false\n });\n control.getTableColumnModel().setDataCellRenderer(\n 0,\n new qx.ui.table.cellrenderer.String().set({\n defaultCellStyle: \"user-select: text\"\n })\n );\n control.getTableColumnModel().setDataCellRenderer(\n 1,\n new osparc.ui.table.cellrenderer.Html().set({\n defaultCellStyle: \"user-select: text; text-wrap: wrap\"\n })\n );\n control.setColumnWidth(0, 80);\n\n // control.setDataRowRenderer(new osparc.ui.table.rowrenderer.ExpandSelection(control));\n this._add(control, {\n flex: 1\n });\n break;\n }\n case \"error-viewer\":\n control = new qx.ui.form.TextArea().set({\n autoSize: true,\n });\n this._add(control, {\n flex: 1\n });\n break;\n }\n return control || this.base(arguments, id);\n },\n\n _buildLayout: function() {\n const filterMessage = this.getChildControl(\"filter-message\");\n const table = this.getChildControl(\"messages-table\");\n const errorViewer = this.getChildControl(\"error-viewer\");\n\n const model = table.getTableModel();\n filterMessage.addListener(\"changeValue\", e => {\n const value = e.getData();\n model.resetHiddenRows();\n model.addNotRegex(value, \"Message\", true);\n model.applyFilters();\n });\n table.addListener(\"cellTap\", e => {\n const selectedRow = e.getRow();\n const rowData = table.getTableModel().getRowData(selectedRow);\n errorViewer.setValue(JSON.stringify(rowData[1]));\n }, this);\n\n this.__populateTable();\n },\n\n __populateTable: function() {\n const consoleErrorTracker = osparc.ConsoleErrorTracker.getInstance();\n const errors = consoleErrorTracker.getErrors();\n const errorsArray = [];\n errors.forEach(msg => {\n errorsArray.push({\n date: msg.date,\n message: msg.error,\n });\n });\n errorsArray.sort((a, b) => {\n return new Date(b.date) - new Date(a.date); // newest first\n });\n const datas = [];\n errorsArray.forEach(entry => {\n const data = [\n new Date(entry.date).toLocaleTimeString(),\n entry.message,\n ];\n datas.push(data);\n });\n this.getChildControl(\"messages-table\").getTableModel().setData(datas);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.tester.Statics\", {\n extend: osparc.po.BaseView,\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"statics-container\":\n control = osparc.ui.window.TabbedView.createSectionBox(this.tr(\"Statics\"));\n this._add(control, {\n flex: 1\n });\n break;\n case \"statics-content\": {\n const statics = osparc.store.Store.getInstance().get(\"statics\");\n const form = new qx.ui.form.Form();\n for (let [key, value] of Object.entries(statics)) {\n const textField = new qx.ui.form.TextField().set({\n value: typeof value === \"object\" ? JSON.stringify(value) : value.toString(),\n readOnly: true\n });\n form.add(textField, key, null, key);\n }\n const renderer = new qx.ui.form.renderer.Single(form);\n control = new qx.ui.container.Scroll(renderer);\n this.getChildControl(\"statics-container\").add(control);\n break;\n }\n case \"local-storage-container\":\n control = osparc.ui.window.TabbedView.createSectionBox(this.tr(\"Local Storage\"));\n this._add(control);\n break;\n case \"local-storage-content\": {\n const items = {\n ...window.localStorage\n };\n const form = new qx.ui.form.Form();\n for (let [key, value] of Object.entries(items)) {\n const textField = new qx.ui.form.TextField().set({\n value: typeof value === \"object\" ? JSON.stringify(value) : value.toString(),\n readOnly: true\n });\n form.add(textField, key, null, key);\n }\n control = new qx.ui.form.renderer.Single(form);\n this.getChildControl(\"local-storage-container\").add(control);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n _buildLayout: function() {\n this.getChildControl(\"statics-content\");\n this.getChildControl(\"local-storage-content\");\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2025 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.data.model.LicensedItemResource\", {\n extend: qx.core.Object,\n\n /**\n * @param licensedItemResourceData {Object} Object containing the serialized LicensedItem Data\n */\n construct: function(licensedItemResourceData) {\n this.base(arguments);\n\n let description = licensedItemResourceData[\"description\"] || \"\";\n let title = \"\";\n let subtitle = null;\n description = description.replace(/SPEAG/g, \" \"); // remove SPEAG substring\n const delimiter = \" - \";\n let titleAndSubtitle = description.split(delimiter);\n if (titleAndSubtitle.length > 0) {\n title = titleAndSubtitle[0];\n titleAndSubtitle.shift();\n }\n if (titleAndSubtitle.length > 0) {\n subtitle = titleAndSubtitle.join(delimiter);\n }\n\n const manufacturerData = {};\n if (licensedItemResourceData[\"thumbnail\"]) {\n if (licensedItemResourceData[\"thumbnail\"].includes(\"itis.swiss\")) {\n manufacturerData[\"label\"] = \"IT'IS Foundation\";\n manufacturerData[\"link\"] = \"https://itis.swiss/virtual-population/\";\n manufacturerData[\"icon\"] = \"https://media.licdn.com/dms/image/v2/C4D0BAQE_FGa66IyvrQ/company-logo_200_200/company-logo_200_200/0/1631341490431?e=2147483647&v=beta&t=7f_IK-ArGjPrz-1xuWolAT4S2NdaVH-e_qa8hsKRaAc\";\n } else if (licensedItemResourceData[\"thumbnail\"].includes(\"speag.swiss\")) {\n manufacturerData[\"label\"] = \"Speag\";\n manufacturerData[\"link\"] = \"https://speag.swiss/products/em-phantoms/overview-2/\";\n manufacturerData[\"icon\"] = \"https://media.licdn.com/dms/image/v2/D4E0BAQG2CYG28KAKbA/company-logo_200_200/company-logo_200_200/0/1700045977122/schmid__partner_engineering_ag_logo?e=2147483647&v=beta&t=6CZb1jjg5TnnzQWkrZBS9R3ebRKesdflg-_xYi4dwD8\";\n }\n }\n\n this.set({\n modelId: licensedItemResourceData.id,\n description: description,\n title: title,\n subtitle: subtitle,\n thumbnail: licensedItemResourceData.thumbnail || \"\",\n features: licensedItemResourceData.features || {},\n doi: licensedItemResourceData.doi || null,\n termsOfUseUrl: licensedItemResourceData.termsOfUseUrl || null,\n manufacturerLabel: manufacturerData.label || null,\n manufacturerLink: manufacturerData.link || null,\n manufacturerIcon: manufacturerData.icon || null,\n });\n },\n\n properties: {\n modelId: {\n check: \"Number\",\n nullable: false,\n init: null,\n event: \"changeModelId\",\n },\n\n description: {\n check: \"String\",\n nullable: false,\n init: null,\n event: \"changeDescription\",\n },\n\n title: {\n check: \"String\",\n nullable: false,\n init: null,\n event: \"changeTitle\",\n },\n\n subtitle: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeSubtitle\",\n },\n\n thumbnail: {\n check: \"String\",\n nullable: false,\n init: null,\n event: \"changeThumbnail\",\n },\n\n features: {\n check: \"Object\",\n nullable: false,\n init: null,\n event: \"changeFeatures\",\n },\n\n doi: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeDoi\",\n },\n\n termsOfUseUrl: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeTermsOfUseUrl\",\n },\n\n manufacturerLabel: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeManufacturerLabel\",\n },\n\n manufacturerLink: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeManufacturerLink\",\n },\n\n manufacturerIcon: {\n check: \"String\",\n nullable: true,\n init: null,\n event: \"changeManufacturerIcon\",\n },\n },\n\n statics: {\n longName: function(licensedResource) {\n const name = licensedResource.getFeatures()[\"name\"] || licensedResource.getSubtitle();\n const version = licensedResource.getFeatures()[\"version\"] || \"\";\n const functionality = licensedResource.getFeatures()[\"functionality\"] || \"Static\";\n return `${name} ${version}, ${functionality}`;\n },\n },\n\n members: {\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.vipMarket.SortModelsButtons\", {\n extend: qx.ui.form.MenuButton,\n\n construct: function() {\n this.base(arguments, this.tr(\"Sort\"), \"@FontAwesome5Solid/chevron-down/10\");\n\n this.set({\n iconPosition: \"left\",\n marginRight: 8\n });\n\n const sortByMenu = new qx.ui.menu.Menu().set({\n font: \"text-14\"\n });\n this.setMenu(sortByMenu);\n\n const nameAsc = new qx.ui.menu.Button().set({\n label: this.tr(\"Name\"),\n icon: \"@FontAwesome5Solid/sort-alpha-down/14\"\n });\n nameAsc[\"sortBy\"] = \"name\";\n nameAsc[\"orderBy\"] = \"down\";\n const nameDesc = new qx.ui.menu.Button().set({\n label: this.tr(\"Name\"),\n icon: \"@FontAwesome5Solid/sort-alpha-up/14\"\n });\n nameDesc[\"sortBy\"] = \"name\";\n nameDesc[\"orderBy\"] = \"up\";\n\n const dateDesc = new qx.ui.menu.Button().set({\n label: this.tr(\"Date\"),\n icon: \"@FontAwesome5Solid/arrow-down/14\"\n });\n dateDesc[\"sortBy\"] = \"date\";\n dateDesc[\"orderBy\"] = \"down\";\n const dateAsc = new qx.ui.menu.Button().set({\n label: this.tr(\"Date\"),\n icon: \"@FontAwesome5Solid/arrow-up/14\"\n });\n dateAsc[\"sortBy\"] = \"date\";\n dateAsc[\"orderBy\"] = \"down\";\n\n [\n nameAsc,\n nameDesc,\n dateDesc,\n dateAsc,\n ].forEach((btn, idx) => {\n sortByMenu.add(btn);\n\n btn.addListener(\"execute\", () => this.__buttonExecuted(btn));\n\n if (idx === 0) {\n btn.execute();\n }\n });\n },\n\n events: {\n \"sortBy\": \"qx.event.type.Data\"\n },\n\n statics: {\n DefaultSorting: {\n \"sort\": \"name\",\n \"order\": \"down\"\n }\n },\n\n members: {\n __buttonExecuted: function(btn) {\n this.set({\n label: btn.getLabel(),\n icon: btn.getIcon()\n });\n\n const data = {\n \"sort\": btn[\"sortBy\"],\n \"order\": btn[\"orderBy\"]\n };\n this.fireDataEvent(\"sortBy\", data);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.vipMarket.LicensedItemDetails\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n const layout = new qx.ui.layout.VBox(15);\n this._setLayout(layout);\n\n this.set({\n allowGrowX: false,\n });\n\n this.__populateLayout();\n },\n\n events: {\n \"modelPurchaseRequested\": \"qx.event.type.Data\",\n \"modelImportRequested\": \"qx.event.type.Data\",\n },\n\n properties: {\n openBy: {\n check: \"String\",\n init: null,\n nullable: true,\n event: \"changeOpenBy\",\n },\n\n anatomicalModelsData: {\n check: \"Object\",\n init: null,\n nullable: true,\n apply: \"__populateLayout\"\n },\n },\n\n statics: {\n createThumbnail: function(source, size) {\n return new qx.ui.basic.Image().set({\n source: source,\n alignY: \"middle\",\n scale: true,\n allowGrowX: true,\n allowGrowY: true,\n allowShrinkX: true,\n allowShrinkY: true,\n maxWidth: size,\n maxHeight: size,\n });\n },\n },\n\n members: {\n __modelsInfoStack: null,\n\n __populateLayout: function() {\n this._removeAll();\n\n const licensedItem = this.getAnatomicalModelsData();\n if (licensedItem && licensedItem.getLicensedResources().length) {\n this.__addModelsInfo();\n this.__addSeatsSection();\n this.__addPricing();\n } else {\n const selectModelLabel = new qx.ui.basic.Label().set({\n value: this.tr(\"Select a model for more details\"),\n font: \"text-16\",\n alignX: \"center\",\n alignY: \"middle\",\n allowGrowX: true,\n allowGrowY: true,\n });\n this._add(selectModelLabel);\n }\n },\n\n __addModelsInfo: function() {\n const modelBundleLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(6));\n\n const stack = this.__modelsInfoStack = new qx.ui.container.Stack();\n this._add(stack, {\n flex: 1\n });\n modelBundleLayout.add(this.__modelsInfoStack);\n\n this.__populateModelsInfo();\n\n const licensedItem = this.getAnatomicalModelsData();\n const licensedResources = licensedItem.getLicensedResources();\n if (licensedResources.length > 1) {\n const modelSelectionLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(4));\n const titleLabel = new qx.ui.basic.Label(this.tr(\"This bundle contains:\"));\n modelSelectionLayout.add(titleLabel);\n const modelsLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(4));\n modelSelectionLayout.add(modelsLayout);\n\n const modelSelected = idx => {\n if (this.__modelsInfoStack.getSelectables().length > idx) {\n this.__modelsInfoStack.setSelection([stack.getSelectables()[idx]]);\n }\n\n const selectedBorderColor = qx.theme.manager.Color.getInstance().resolve(\"strong-main\");\n const unselectedBorderColor = \"transparent\";\n modelsLayout.getChildren().forEach((thumbnailAndTitle, index) => {\n const thumbnail = thumbnailAndTitle.getChildren()[0];\n osparc.utils.Utils.updateBorderColor(thumbnail, index === idx ? selectedBorderColor : unselectedBorderColor);\n });\n }\n\n licensedResources.forEach((licensedResource, idx) => {\n const modelLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(4)).set({\n allowGrowX: false,\n });\n const miniThumbnail = this.self().createThumbnail(licensedResource.getThumbnail(), 32);\n osparc.utils.Utils.addBorder(miniThumbnail);\n modelLayout.add(miniThumbnail);\n const title = new qx.ui.basic.Label().set({\n value: osparc.data.model.LicensedItemResource.longName(licensedResource),\n alignY: \"middle\"\n });\n modelLayout.add(title);\n modelLayout.setCursor(\"pointer\");\n modelLayout.addListener(\"tap\", () => modelSelected(idx));\n modelsLayout.add(modelLayout);\n });\n modelBundleLayout.add(modelSelectionLayout);\n\n modelSelected(0);\n }\n\n this._add(modelBundleLayout);\n },\n\n __populateModelsInfo: function() {\n this.__modelsInfoStack.removeAll();\n\n const licensedItem = this.getAnatomicalModelsData();\n const licensedResources = licensedItem.getLicensedResources();\n licensedResources.forEach((licensedResource, index) => {\n const modelInfoLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox(4));\n\n const topGrid = new qx.ui.layout.Grid(8, 6);\n topGrid.setColumnFlex(0, 1);\n const headerLayout = new qx.ui.container.Composite(topGrid);\n if (licensedResource.getTitle()) {\n const titleLabel = new qx.ui.basic.Label().set({\n value: licensedResource.getTitle(),\n font: \"text-16\",\n alignY: \"middle\",\n allowGrowX: true,\n allowGrowY: true,\n });\n headerLayout.add(titleLabel, {\n column: 0,\n row: 0,\n });\n }\n if (licensedResource.getSubtitle()) {\n const subtitleLabel = new qx.ui.basic.Label().set({\n value: licensedResource.getSubtitle(),\n font: \"text-16\",\n alignY: \"middle\",\n allowGrowX: true,\n allowGrowY: true,\n });\n headerLayout.add(subtitleLabel, {\n column: 0,\n row: 1,\n });\n }\n if (licensedResource.getManufacturerLabel()) {\n const manufacturerLink = new qx.ui.basic.Atom().set({\n label: licensedResource.getManufacturerLabel(),\n icon: licensedResource.getManufacturerIcon(),\n font: \"text-16\",\n gap: 10,\n iconPosition: \"right\",\n cursor: \"pointer\",\n });\n manufacturerLink.getChildControl(\"icon\").set({\n maxWidth: 32,\n maxHeight: 32,\n scale: true,\n decorator: \"rounded\",\n });\n manufacturerLink.addListener(\"tap\", () => window.open(licensedResource.getManufacturerLink()));\n headerLayout.add(manufacturerLink, {\n column: 1,\n row: 0,\n rowSpan: 2,\n });\n }\n modelInfoLayout.add(headerLayout);\n\n\n const middleLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(16));\n const thumbnail = this.self().createThumbnail(licensedResource.getThumbnail(), 256);\n middleLayout.add(thumbnail);\n\n const features = licensedResource.getFeatures();\n const featuresGrid = new qx.ui.layout.Grid(8, 8);\n const featuresLayout = new qx.ui.container.Composite(featuresGrid);\n let idx = 0;\n const capitalizeField = [\n \"Sex\",\n \"Species\",\n \"Ethnicity\",\n \"Functionality\",\n ];\n [\n \"Name\",\n \"Version\",\n \"Date\",\n \"Species\",\n \"Sex\",\n \"Age\",\n \"Weight\",\n \"Height\",\n \"Ethnicity\",\n \"Functionality\",\n ].forEach(key => {\n if (key.toLowerCase() in features) {\n const titleLabel = new qx.ui.basic.Label().set({\n value: key,\n font: \"text-14\",\n alignX: \"right\",\n });\n featuresLayout.add(titleLabel, {\n column: 0,\n row: idx,\n });\n\n const value = features[key.toLowerCase()];\n const featureValue = capitalizeField.includes(key) ? osparc.utils.Utils.capitalize(value) : value;\n const nameLabel = new qx.ui.basic.Label().set({\n value: featureValue,\n font: \"text-14\",\n alignX: \"left\",\n });\n featuresLayout.add(nameLabel, {\n column: 1,\n row: idx,\n });\n\n idx++;\n }\n });\n\n if (licensedResource.getDoi()) {\n const doiTitle = new qx.ui.basic.Label().set({\n value: \"DOI\",\n font: \"text-14\",\n alignX: \"right\",\n marginTop: 10,\n });\n featuresLayout.add(doiTitle, {\n column: 0,\n row: idx,\n });\n\n const doiToLink = doi => {\n const doiLabel = new osparc.ui.basic.LinkLabel(\"-\").set({\n font: \"text-14\",\n alignX: \"left\",\n marginTop: 10,\n });\n if (doi) {\n doiLabel.set({\n value: doi,\n url: \"https://doi.org/\" + doi,\n font: \"link-label-14\",\n });\n }\n return doiLabel;\n };\n featuresLayout.add(doiToLink(licensedResource.getDoi()), {\n column: 1,\n row: idx,\n });\n idx++;\n }\n\n if (licensedResource.getTermsOfUseUrl()) { // remove the first one when this info goes down to the model\n const tAndC = new qx.ui.basic.Label().set({\n font: \"text-14\",\n value: this.tr(\"Terms and Conditions\"),\n rich: true,\n anonymous: false,\n cursor: \"pointer\",\n });\n tAndC.addListener(\"tap\", () => this.__openLicense(licensedResource.getTermsOfUseUrl()));\n featuresLayout.add(tAndC, {\n column: 1,\n row: idx,\n });\n idx++;\n }\n\n middleLayout.add(featuresLayout);\n\n modelInfoLayout.add(middleLayout);\n\n const importSection = this.__createImportSection(licensedItem, index);\n modelInfoLayout.add(importSection);\n\n this.__modelsInfoStack.add(modelInfoLayout);\n })\n },\n\n __openLicense: function(rawLink) {\n if (rawLink.includes(\"github\")) {\n // make sure the raw version of the link is shown\n rawLink += \"?raw=true\";\n }\n const mdWindow = new osparc.ui.markdown.MarkdownWindow(rawLink).set({\n caption: this.tr(\"Terms and Conditions\"),\n width: 800,\n height: 600,\n });\n mdWindow.open();\n },\n\n __createImportSection: function(anatomicalModelsData, selectedIdx) {\n const importSection = new qx.ui.container.Composite(new qx.ui.layout.VBox().set({\n alignX: \"center\"\n }));\n\n const importButton = new qx.ui.form.Button().set({\n label: this.tr(\"Import\"),\n appearance: \"strong-button\",\n center: true,\n maxWidth: 200,\n alignX: \"center\",\n marginTop: 10,\n });\n this.bind(\"openBy\", importButton, \"visibility\", {\n converter: openBy => openBy ? \"visible\" : \"excluded\"\n });\n importButton.addListener(\"execute\", () => {\n this.fireDataEvent(\"modelImportRequested\", {\n modelId: anatomicalModelsData.getLicensedResources()[selectedIdx].getModelId(),\n categoryId: anatomicalModelsData.getCategoryId(),\n });\n }, this);\n\n osparc.store.Pricing.getInstance().fetchPricingUnits(anatomicalModelsData.getPricingPlanId())\n .then(pricingUnits => {\n if (\n anatomicalModelsData.getSeats().length ||\n (pricingUnits.length === 1 && pricingUnits[0].getCost() === 0)\n ) {\n importSection.add(importButton);\n }\n });\n\n return importSection;\n },\n\n __addPricing: function() {\n const layout = new qx.ui.container.Composite(new qx.ui.layout.VBox().set({\n alignX: \"center\"\n }))\n\n const pricingLayout = new qx.ui.container.Composite(new qx.ui.layout.VBox()).set({\n allowGrowX: false,\n decorator: \"border\",\n });\n layout.add(pricingLayout)\n\n const pricingUnitsLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(10).set({\n alignX: \"center\"\n }));\n const licensedItem = this.getAnatomicalModelsData();\n osparc.store.Pricing.getInstance().fetchPricingUnits(licensedItem.getPricingPlanId())\n .then(pricingUnits => {\n if (pricingUnits.length === 1 && pricingUnits[0].getCost() === 0) {\n const availableForImporting = new qx.ui.basic.Label().set({\n font: \"text-14\",\n value: this.tr(\"Available for Importing\"),\n padding: 10,\n });\n pricingUnitsLayout.add(availableForImporting);\n // hide the text if Import button is there\n this.bind(\"openBy\", pricingLayout, \"visibility\", {\n converter: openBy => openBy ? \"excluded\" : \"visible\"\n });\n } else {\n pricingUnits.forEach(pricingUnit => {\n pricingUnit.set({\n classification: \"LICENSE\"\n });\n const pUnit = new osparc.study.PricingUnitLicense(pricingUnit).set({\n showRentButton: true,\n });\n pUnit.addListener(\"rentPricingUnit\", () => {\n this.fireDataEvent(\"modelPurchaseRequested\", {\n licensedItemId: licensedItem.getLicensedItemId(),\n pricingPlanId: licensedItem.getPricingPlanId(),\n pricingUnitId: pricingUnit.getPricingUnitId(),\n });\n }, this);\n pricingUnitsLayout.add(pUnit);\n });\n }\n })\n .catch(err => console.error(err));\n this._add(pricingUnitsLayout);\n pricingLayout.add(pricingUnitsLayout);\n\n this._add(layout);\n },\n\n __addSeatsSection: function() {\n const licensedItem = this.getAnatomicalModelsData();\n if (licensedItem.getSeats().length === 0) {\n return;\n }\n const seatsSection = new qx.ui.container.Composite(new qx.ui.layout.VBox(5).set({\n alignX: \"left\",\n }));\n\n licensedItem.getSeats().forEach(purchase => {\n const nSeats = purchase[\"numOfSeats\"];\n const seatsText = \"seat\" + (nSeats > 1 ? \"s\" : \"\");\n const entry = new qx.ui.basic.Label().set({\n value: `${nSeats} ${seatsText} available until ${osparc.utils.Utils.formatDate(purchase[\"expireAt\"])}`,\n font: \"text-14\",\n });\n seatsSection.add(entry);\n });\n\n this._add(seatsSection);\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.vipMarket.LicensedItemListItem\", {\n extend: qx.ui.core.Widget,\n implement : [qx.ui.form.IModel, osparc.filter.IFilterable],\n include : [qx.ui.form.MModelProperty, osparc.filter.MFilterable],\n\n construct: function() {\n this.base(arguments);\n\n const layout = new qx.ui.layout.Grid(5, 5);\n layout.setRowFlex(0, 1);\n layout.setColumnFlex(1, 1); // flex display name\n layout.setColumnWidth(0, 48);\n layout.setColumnAlign(0, \"center\", \"middle\");\n layout.setColumnAlign(1, \"left\", \"middle\");\n layout.setColumnAlign(2, \"center\", \"middle\");\n this._setLayout(layout);\n\n this.set({\n padding: 5,\n height: 48,\n alignY: \"middle\",\n decorator: \"rounded\",\n });\n\n this.addListener(\"pointerover\", this._onPointerOver, this);\n this.addListener(\"pointerout\", this._onPointerOut, this);\n },\n\n events: {\n /** (Fired by {@link qx.ui.form.List}) */\n \"action\" : \"qx.event.type.Event\"\n },\n\n properties: {\n appearance: {\n refine: true,\n init: \"selectable\"\n },\n\n key: {\n check: \"String\",\n init: null,\n nullable: false,\n event: \"changeKey\",\n },\n\n version: {\n check: \"String\",\n init: null,\n nullable: false,\n event: \"changeVersion\",\n },\n\n licensedItemId: {\n check: \"String\",\n init: null,\n nullable: false,\n event: \"changeLicensedItemId\",\n },\n\n thumbnail: {\n check: \"String\",\n init: null,\n nullable: true,\n event: \"changeThumbnail\",\n apply: \"__applyThumbnail\",\n },\n\n displayName: {\n check: \"String\",\n init: null,\n nullable: false,\n event: \"changeDisplayName\",\n apply: \"__applyDisplayName\",\n },\n\n date: {\n check: \"Date\",\n init: null,\n nullable: true,\n event: \"changeDate\",\n },\n\n pricingPlanId: {\n check: \"Number\",\n init: null,\n nullable: false,\n event: \"changePricingPlanId\",\n },\n\n seats: {\n check: \"Array\",\n nullable: false,\n init: [],\n event: \"changeSeats\",\n apply: \"__applySeats\",\n },\n },\n\n members: { // eslint-disable-line qx-rules/no-refs-in-members\n // overridden\n _forwardStates: {\n focused : true,\n hovered : true,\n selected : true,\n dragover : true\n },\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"thumbnail\":\n control = new qx.ui.basic.Image().set({\n alignY: \"middle\",\n scale: true,\n allowGrowX: true,\n allowGrowY: true,\n allowShrinkX: true,\n allowShrinkY: true,\n maxWidth: 32,\n maxHeight: 32\n });\n this._add(control, {\n row: 0,\n column: 0,\n rowSpan: 2\n });\n break;\n case \"name\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\",\n alignY: \"middle\",\n });\n this._add(control, {\n row: 0,\n column: 1\n });\n break;\n case \"n-seats\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\",\n alignY: \"middle\",\n });\n this._add(control, {\n row: 0,\n column: 2\n });\n break;\n }\n control.set({\n anonymous: true, // pass the tap action over\n });\n\n return control || this.base(arguments, id);\n },\n\n __applyThumbnail: function(value) {\n if (value) {\n this.getChildControl(\"thumbnail\").setSource(value);\n }\n },\n\n __applyDisplayName: function(value) {\n this.getChildControl(\"name\").setValue(value);\n\n this.set({\n toolTipText: value\n });\n },\n\n __applySeats: function(seats) {\n if (seats === null || seats.length === 0) {\n return;\n }\n const nSeatsLabel = this.getChildControl(\"n-seats\");\n const nSeats = osparc.store.LicensedItems.seatsToNSeats(seats);\n if (nSeats) {\n nSeatsLabel.setValue(`(${nSeats})`);\n } else {\n nSeatsLabel.resetValue();\n }\n },\n\n _onPointerOver: function() {\n this.addState(\"hovered\");\n },\n\n _onPointerOut : function() {\n this.removeState(\"hovered\");\n },\n\n _filter: function() {\n this.exclude();\n },\n\n _unfilter: function() {\n this.show();\n },\n\n _shouldApplyFilter: function(data) {\n if (data.text) {\n const checks = [\n this.getDisplayName(),\n ];\n if (checks.filter(check => check && check.toLowerCase().trim().includes(data.text)).length == 0) {\n return true;\n }\n }\n return false;\n },\n\n _shouldReactToFilter: function(data) {\n if (data.text && data.text.length > 1) {\n return true;\n }\n return false;\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2020 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Ignacio Pascual (ignapas)\n */\n\n/**\n * A toolbar button that serves to fetch or load some data from the server. To indicate that some processing is being done, and\n * that the user has to wait, a rotating special icon is shown meanwhile.\n */\nqx.Class.define(\"osparc.ui.toolbar.FetchButton\", {\n extend: qx.ui.toolbar.Button,\n include: osparc.ui.mixin.FetchButton\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2021 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Odei Maiz (odeimaiz)\n */\n\n/**\n * A toolbar button that serves to fetch or load some data from the server. To indicate that some processing is being done, and\n * that the user has to wait, a rotating special icon is shown meanwhile.\n */\nqx.Class.define(\"osparc.ui.menu.FetchButton\", {\n extend: qx.ui.menu.Button,\n include: osparc.ui.mixin.FetchButton\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Andreas Ecker (ecker)\n\n************************************************************************ */\n\n/**\n * A button which acts as a normal button and shows a menu on one\n * of the sides to open something like a history list.\n *\n * @childControl button {qx.ui.toolbar.Button} button to interact with\n * @childControl arrow {qx.ui.toolbar.MenuButton} menu button to show the menu connected to the split button\n */\nqx.Class.define(\"qx.ui.toolbar.SplitButton\",\n{\n extend : qx.ui.form.SplitButton,\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n construct : function(label, icon, menu, command)\n {\n this.base(arguments, label, icon, menu, command);\n\n // Toolbar buttons should not support the keyboard events\n this.removeListener(\"keydown\", this._onKeyDown);\n this.removeListener(\"keyup\", this._onKeyUp);\n },\n\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n // overridden\n appearance :\n {\n refine : true,\n init : \"toolbar-splitbutton\"\n },\n\n\n // overridden\n focusable :\n {\n refine : true,\n init : false\n }\n },\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n // overridden\n /**\n * @lint ignoreReferenceField(_forwardStates)\n */\n _forwardStates :\n {\n hovered : true,\n focused : true,\n left : true,\n middle : true,\n right : true\n },\n\n /*\n ---------------------------------------------------------------------------\n WIDGET API\n ---------------------------------------------------------------------------\n */\n\n // overridden\n _createChildControlImpl : function(id, hash)\n {\n var control;\n\n switch(id)\n {\n case \"button\":\n control = new qx.ui.toolbar.Button;\n control.addListener(\"execute\", this._onButtonExecute, this);\n this._addAt(control, 0);\n break;\n\n case \"arrow\":\n control = new qx.ui.toolbar.MenuButton;\n this._addAt(control, 1);\n break;\n }\n\n return control || this.base(arguments, id);\n }\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2021 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Odei Maiz (odeimaiz)\n */\n\n/**\n * A toolbar split button that serves to fetch or load some data from the server. To indicate that some processing is being done, and\n * that the user has to wait, a rotating special icon is shown meanwhile.\n */\nqx.Class.define(\"osparc.ui.toolbar.FetchSplitButton\", {\n extend: qx.ui.toolbar.SplitButton,\n include: osparc.ui.mixin.FetchButton,\n\n members: {\n // overridden\n _createChildControlImpl : function(id, hash) {\n let control;\n\n switch (id) {\n case \"button\":\n control = new osparc.ui.form.FetchButton();\n control.addListener(\"execute\", this._onButtonExecute, this);\n control.setFocusable(false);\n this._addAt(control, 0, {flex: 1});\n break;\n }\n\n return control || this.base(arguments, id);\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Andreas Ecker (ecker)\n * Jonathan Weiß (jonathan_rass)\n * Matthew Gregory\n\n************************************************************************ */\n\n/**\n * A typical color selector as known from native applications.\n *\n * Includes support for RGB and HSB color areas.\n *\n * @childControl control-bar {qx.ui.container.Composite} container which holds the control-pane and visual-pane\n * @childControl visual-pane {qx.ui.groupbox.GroupBox} pane shows the hue-saturation-pane and the brightness-pane\n * @childControl hue-saturation-pane {qx.ui.container.Composite} shows the hue saturation and the handle to select\n * @childControl hue-saturation-field {qx.ui.basic.Image} hue saturation image which shows all available colors\n * @childControl hue-saturation-handle {qx.ui.basic.Image} handle to select the color using the pointer\n * @childControl brightness-pane {qx.ui.container.Composite} shows the brightness field and the handle to select\n * @childControl brightness-field {qx.ui.basic.Image} brightness image which shows all brightness steps\n * @childControl brightness-handle {qx.ui.basic.Image} brightness handle to select the brightness using the pointer\n * @childControl preset-field-set {qx.ui.groupbox.GroupBox} groupbox holding all preset colors\n * @childControl colorbucket {qx.ui.core.Widget} color bucket\n * @childControl preset-grid {qx.ui.container.Composite} container for all color presets\n * @childControl input-field-set {qx.ui.groupbox.GroupBox} groupbox holding different input elements\n * @childControl preview-field-set {qx.ui.groupbox.GroupBox} groupbox holding the two preview fields\n * @childControl hex-field-composite {qx.ui.container.Composite} container for the hex field\n * @childControl hex-field {qx.ui.form.TextField} textfield to input a hex value\n * @childControl rgb-spinner-composite {qx.ui.container.Composite} container for the rgb spinner\n * @childControl rgb-spinner-red {qx.ui.form.Spinner} spinner control for the red hex value\n * @childControl rgb-spinner-green {qx.ui.form.Spinner} spinner control for the green hex value\n * @childControl rgb-spinner-blue {qx.ui.form.Spinner} spinner control for the blue hex value\n * @childControl hsb-spinner-composite {qx.ui.container.Composite} container for the hsb spinners\n * @childControl hsb-spinner-hue {qx.ui.form.Spinner} spinner control for the huevalue\n * @childControl hsb-spinner-saturation {qx.ui.form.Spinner} spinner control for the saturation value\n * @childControl hsb-spinner-brightness {qx.ui.form.Spinner} spinner control for the brightness value\n * @childControl preview-content-old {qx.ui.core.Widget} preview of the old color\n * @childControl preview-content-new {qx.ui.core.Widget} preview of the new color\n */\nqx.Class.define(\"qx.ui.control.ColorSelector\",\n{\n extend : qx.ui.core.Widget,\n implement : [qx.ui.form.IColorForm],\n\n\n\n\n /*\n *****************************************************************************\n CONSTRUCTOR\n *****************************************************************************\n */\n\n /**\n * Creates a ColorSelector.\n */\n construct : function()\n {\n this.base(arguments);\n\n // add the basic layout\n this._setLayout(new qx.ui.layout.VBox());\n\n this._createChildControl(\"control-bar\");\n\n this.addListener(\"appear\", this._onAppear, this);\n },\n\n\n\n\n /*\n *****************************************************************************\n EVENTS\n *****************************************************************************\n */\n\n events:\n {\n /** Fired when the \"OK\" button is tapped. */\n \"dialogok\" : \"qx.event.type.Event\",\n\n /** Fired when the \"Cancel\" button is tapped. */\n \"dialogcancel\" : \"qx.event.type.Event\",\n\n /** Fired when the value changes */\n \"changeValue\" : \"qx.event.type.Data\"\n },\n\n\n\n\n /*\n *****************************************************************************\n PROPERTIES\n *****************************************************************************\n */\n\n properties :\n {\n // overridden\n appearance :\n {\n refine : true,\n init : \"colorselector\"\n },\n\n /** The numeric red value of the selected color. */\n red :\n {\n check : \"Integer\",\n init : 255,\n apply : \"_applyRed\"\n },\n\n /** The numeric green value of the selected color. */\n green :\n {\n check : \"Integer\",\n init : 255,\n apply : \"_applyGreen\"\n },\n\n /** The numeric blue value of the selected color. */\n blue :\n {\n check : \"Integer\",\n init : 255,\n apply : \"_applyBlue\"\n },\n\n /** The numeric hue value. */\n hue :\n {\n check : \"Number\",\n init : 0,\n apply : \"_applyHue\"\n },\n\n /** The numeric saturation value. */\n saturation :\n {\n check : \"Number\",\n init : 0,\n apply : \"_applySaturation\"\n },\n\n /** The numeric brightness value. */\n brightness :\n {\n check : \"Number\",\n init : 100,\n apply : \"_applyBrightness\"\n }\n },\n\n\n\n\n /*\n *****************************************************************************\n MEMBERS\n *****************************************************************************\n */\n\n members :\n {\n /*\n ---------------------------------------------------------------------------\n CONTEXT HANDLING\n ---------------------------------------------------------------------------\n */\n\n /**\n * @type {String} The context in which an update has occurred.\n */\n __updateContext : null,\n\n /**\n * @type {Array} Map containing the preset colors.\n * @lint ignoreReferenceField(__presetTable)\n */\n __presetTable : [ \"maroon\", \"red\", \"orange\", \"yellow\", \"olive\", \"purple\",\n \"fuchsia\", \"lime\", \"green\", \"navy\", \"blue\", \"aqua\", \"teal\", \"black\",\n \"#333\", \"#666\", \"#999\", \"#BBB\", \"#EEE\", \"white\" ],\n\n /**\n * @type {String} Name of child control which is captured.\n */\n __capture : \"\",\n\n /**\n * @type {Number} Numeric brightness value\n */\n __brightnessSubtract : 0,\n\n /**\n * @type {Integer} HueSaturation's X coordinate\n */\n __hueSaturationSubtractTop : 0,\n\n /**\n * @type {Integer} HueSaturation's Y coordinate\n */\n __hueSaturationSubtractLeft : 0,\n\n // internal boolean flag to signal, that the value is set to null\n __nullValue : true,\n\n // internal mutex to prevent the changeValue event to be fired too often\n __preventChangeValueEvent : false,\n\n\n // overridden\n _createChildControlImpl : function(id, hash)\n {\n var control;\n\n switch(id)\n {\n /*\n ---------------------------------------------------------------------------\n CREATE #1: BASE STRUCTURE\n ---------------------------------------------------------------------------\n */\n case \"control-bar\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(10));\n\n control.add(this.getChildControl(\"control-pane\"));\n control.add(this.getChildControl(\"visual-pane\"));\n\n this._add(control);\n break;\n\n /*\n ---------------------------------------------------------------------------\n CREATE #2: PANES\n ---------------------------------------------------------------------------\n */\n\n case \"visual-pane\":\n control = new qx.ui.groupbox.GroupBox(this.tr(\"Visual\"));\n control.setLayout(new qx.ui.layout.HBox(10));\n control.add(this.getChildControl(\"hue-saturation-pane\"));\n control.add(this.getChildControl(\"brightness-pane\"));\n break;\n\n case \"control-pane\":\n control = new qx.ui.container.Composite(new qx.ui.layout.VBox(0));\n control.add(this.getChildControl(\"preset-field-set\"));\n control.add(this.getChildControl(\"input-field-set\"));\n control.add(this.getChildControl(\"preview-field-set\"), {flex: 1});\n break;\n\n case \"hue-saturation-pane\":\n control = new qx.ui.container.Composite(new qx.ui.layout.Canvas());\n control.setAllowGrowY(false);\n control.addListener(\"roll\", this._onHueSaturationPaneRoll, this);\n control.add(this.getChildControl(\"hue-saturation-field\"));\n control.add(this.getChildControl(\"hue-saturation-handle\"), {left: 0, top: 256});\n break;\n\n case \"hue-saturation-field\":\n control = new qx.ui.basic.Image(\"decoration/colorselector/huesaturation-field.jpg\");\n control.addListener(\"pointerdown\", this._onHueSaturationFieldPointerDown, this);\n break;\n\n case \"hue-saturation-handle\":\n control = new qx.ui.basic.Image(\"decoration/colorselector/huesaturation-handle.gif\");\n control.addListener(\"pointerdown\", this._onHueSaturationFieldPointerDown, this);\n control.addListener(\"pointerup\", this._onHueSaturationHandlePointerUp, this);\n control.addListener(\"pointermove\", this._onHueSaturationHandlePointerMove, this);\n break;\n\n case \"brightness-pane\":\n control = new qx.ui.container.Composite(new qx.ui.layout.Canvas());\n control.setAllowGrowY(false);\n control.addListener(\"roll\", this._onBrightnessPaneRoll, this);\n control.add(this.getChildControl(\"brightness-field\"));\n control.add(this.getChildControl(\"brightness-handle\"));\n break;\n\n case \"brightness-field\":\n control = new qx.ui.basic.Image(\"decoration/colorselector/brightness-field.png\");\n control.addListener(\"pointerdown\", this._onBrightnessFieldPointerDown, this);\n break;\n\n case \"brightness-handle\":\n control = new qx.ui.basic.Image(\"decoration/colorselector/brightness-handle.gif\");\n control.addListener(\"pointerdown\", this._onBrightnessHandlePointerDown, this);\n control.addListener(\"pointerup\", this._onBrightnessHandlePointerUp, this);\n control.addListener(\"pointermove\", this._onBrightnessHandlePointerMove, this);\n break;\n\n\n /*\n ---------------------------------------------------------------------------\n CREATE #3: CONTROL PANE CONTENT\n ---------------------------------------------------------------------------\n */\n case \"preset-field-set\":\n control = new qx.ui.groupbox.GroupBox(this.tr(\"Presets\"));\n control.setLayout(new qx.ui.layout.Grow());\n control.add(this.getChildControl(\"preset-grid\"));\n break;\n\n case \"colorbucket\":\n control = new qx.ui.core.Widget();\n control.addListener(\"pointerdown\", this._onColorFieldTap, this);\n break;\n\n case \"preset-grid\":\n controlLayout = new qx.ui.layout.Grid(3, 3);\n control = new qx.ui.container.Composite(controlLayout);\n\n var colorField;\n var colorPos;\n\n for (var i=0; i<2; i++)\n {\n for (var j=0; j<10; j++)\n {\n colorPos = i * 10 + j;\n colorField = this.getChildControl(\"colorbucket#\" + colorPos);\n colorField.setBackgroundColor(this.__presetTable[colorPos]);\n\n control.add(colorField, {column: j, row: i});\n }\n }\n break;\n\n case \"input-field-set\":\n control = new qx.ui.groupbox.GroupBox(this.tr(\"Details\"));\n var controlLayout = new qx.ui.layout.VBox();\n controlLayout.setSpacing(10);\n control.setLayout(controlLayout);\n\n control.add(this.getChildControl(\"hex-field-composite\"));\n control.add(this.getChildControl(\"rgb-spinner-composite\"));\n control.add(this.getChildControl(\"hsb-spinner-composite\"));\n break;\n\n case \"preview-field-set\":\n control = new qx.ui.groupbox.GroupBox(this.tr(\"Preview (Old/New)\"));\n var controlLayout = new qx.ui.layout.HBox(10);\n control.setLayout(controlLayout);\n\n control.add(this.getChildControl(\"preview-content-old\"), {flex: 1});\n control.add(this.getChildControl(\"preview-content-new\"), {flex: 1});\n break;\n\n /*\n ---------------------------------------------------------------------------\n CREATE #4: INPUT FIELDSET CONTENT\n ---------------------------------------------------------------------------\n */\n case \"hex-field-composite\":\n var layout = new qx.ui.layout.HBox(4);\n layout.setAlignY(\"middle\");\n control = new qx.ui.container.Composite(layout);\n\n var hexLabel = new qx.ui.basic.Label(this.tr(\"Hex\"));\n hexLabel.setWidth(30);\n control.add(hexLabel);\n\n var hexHelper = new qx.ui.basic.Label(\"#\");\n control.add(hexHelper);\n\n control.add(this.getChildControl(\"hex-field\"));\n break;\n\n case \"hex-field\":\n control = new qx.ui.form.TextField(\"FFFFFF\");\n control.setMaxLength(6);\n control.setFilter(/[0-9A-Fa-f]/);\n control.setWidth(55);\n control.addListener(\"changeValue\", this._onHexFieldChange, this);\n break;\n\n case \"rgb-spinner-composite\":\n var layout = new qx.ui.layout.HBox(4);\n layout.setAlignY(\"middle\");\n control = new qx.ui.container.Composite(layout);\n\n var rgbSpinLabel = new qx.ui.basic.Label(this.tr(\"RGB\"));\n rgbSpinLabel.setWidth(30);\n control.add(rgbSpinLabel);\n\n control.add(this.getChildControl(\"rgb-spinner-red\"));\n control.add(this.getChildControl(\"rgb-spinner-green\"));\n control.add(this.getChildControl(\"rgb-spinner-blue\"));\n break;\n\n case \"rgb-spinner-red\":\n control = new qx.ui.form.Spinner(0, 255, 255);\n control.setWidth(50);\n control.addListener(\"changeValue\", this._setRedFromSpinner, this);\n break;\n\n case \"rgb-spinner-green\":\n control = new qx.ui.form.Spinner(0, 255, 255);\n control.setWidth(50);\n control.addListener(\"changeValue\", this._setGreenFromSpinner, this);\n break;\n\n case \"rgb-spinner-blue\":\n control = new qx.ui.form.Spinner(0, 255, 255);\n control.setWidth(50);\n control.addListener(\"changeValue\", this._setBlueFromSpinner, this);\n break;\n\n case \"hsb-spinner-composite\":\n var layout = new qx.ui.layout.HBox(4);\n layout.setAlignY(\"middle\");\n control = new qx.ui.container.Composite(layout);\n\n var hsbSpinLabel = new qx.ui.basic.Label(this.tr(\"HSB\"));\n hsbSpinLabel.setWidth(30);\n control.add(hsbSpinLabel);\n\n control.add(this.getChildControl(\"hsb-spinner-hue\"));\n control.add(this.getChildControl(\"hsb-spinner-saturation\"));\n control.add(this.getChildControl(\"hsb-spinner-brightness\"));\n break;\n\n case \"hsb-spinner-hue\":\n control = new qx.ui.form.Spinner(0, 0, 360);\n control.setWidth(50);\n control.addListener(\"changeValue\", this._setHueFromSpinner, this);\n break;\n\n case \"hsb-spinner-saturation\":\n control = new qx.ui.form.Spinner(0, 0, 100);\n control.setWidth(50);\n control.addListener(\"changeValue\", this._setSaturationFromSpinner, this);\n break;\n\n case \"hsb-spinner-brightness\":\n control = new qx.ui.form.Spinner(0, 100, 100);\n control.setWidth(50);\n control.addListener(\"changeValue\", this._setBrightnessFromSpinner, this);\n break;\n\n\n /*\n ---------------------------------------------------------------------------\n CREATE #5: PREVIEW CONTENT\n ---------------------------------------------------------------------------\n */\n case \"preview-content-old\":\n control = new qx.ui.core.Widget();\n break;\n\n case \"preview-content-new\":\n control = new qx.ui.core.Widget();\n break;\n }\n\n return control || this.base(arguments, id);\n },\n\n\n /**\n * The value of the ColorSelector is a string containing the HEX value of\n * the currently selected color. Take a look at\n * {@link qx.util.ColorUtil#stringToRgb} to see what kind of input the\n * method can handle.\n *\n * @param value {String} The value of a color.\n */\n setValue: function(value)\n {\n var rgb;\n\n if (value == null)\n {\n this.__nullValue = true;\n rgb = [255, 255, 255];\n }\n else\n {\n rgb = qx.util.ColorUtil.stringToRgb(value);\n this.__nullValue = false;\n }\n\n // block the first tow events\n this.__preventChangeValueEvent = true;\n this.setRed(rgb[0]);\n this.setGreen(rgb[1]);\n // only allow the final change event\n this.__preventChangeValueEvent = false;\n this.setBlue(rgb[2]);\n },\n\n\n /**\n * Returns the currently selected color.\n *\n * @return {String | null} The HEX value of the color of if not color\n * is set, null.\n */\n getValue: function()\n {\n return this.__nullValue ? null : qx.util.ColorUtil.rgbToHexString(\n [this.getRed(), this.getGreen(), this.getBlue()]\n );\n },\n\n /**\n * Resets the color to null.\n */\n resetValue: function()\n {\n this.__nullValue = true;\n this.__preventChangeValueEvent = true;\n this.setRed(255);\n this.setGreen(255);\n this.__preventChangeValueEvent = false;\n this.setBlue(255);\n },\n\n\n /**\n * Helper for firing the changeValue event and checking for the mutex.\n */\n __fireChangeValueEvent: function()\n {\n if (!this.__preventChangeValueEvent)\n {\n this.__nullValue = false;\n this.fireDataEvent(\"changeValue\", this.getValue());\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n RGB MODIFIER\n ---------------------------------------------------------------------------\n */\n\n\n // property apply\n _applyRed : function(value, old)\n {\n if (this.__updateContext === null) {\n this.__updateContext = \"redModifier\";\n }\n\n if (this.__updateContext !== \"rgbSpinner\") {\n this.getChildControl(\"rgb-spinner-red\").setValue(value);\n }\n\n if (this.__updateContext !== \"hexField\") {\n this._setHexFromRgb();\n }\n\n switch(this.__updateContext)\n {\n case \"rgbSpinner\":\n case \"hexField\":\n case \"redModifier\":\n this._setHueFromRgb();\n }\n\n this._setPreviewFromRgb();\n this.__fireChangeValueEvent();\n\n if (this.__updateContext === \"redModifier\") {\n this.__updateContext = null;\n }\n },\n\n\n // property apply\n _applyGreen : function(value, old)\n {\n if (this.__updateContext === null) {\n this.__updateContext = \"greenModifier\";\n }\n\n if (this.__updateContext !== \"rgbSpinner\") {\n this.getChildControl(\"rgb-spinner-green\").setValue(value);\n }\n\n if (this.__updateContext !== \"hexField\") {\n this._setHexFromRgb();\n }\n\n switch(this.__updateContext)\n {\n case \"rgbSpinner\":\n case \"hexField\":\n case \"greenModifier\":\n this._setHueFromRgb();\n }\n\n this._setPreviewFromRgb();\n this.__fireChangeValueEvent();\n\n if (this.__updateContext === \"greenModifier\") {\n this.__updateContext = null;\n }\n },\n\n\n // property apply\n _applyBlue : function(value, old)\n {\n if (this.__updateContext === null) {\n this.__updateContext = \"blueModifier\";\n }\n\n if (this.__updateContext !== \"rgbSpinner\") {\n this.getChildControl(\"rgb-spinner-blue\").setValue(value);\n }\n\n if (this.__updateContext !== \"hexField\") {\n this._setHexFromRgb();\n }\n\n switch(this.__updateContext)\n {\n case \"rgbSpinner\":\n case \"hexField\":\n case \"blueModifier\":\n this._setHueFromRgb();\n }\n\n this._setPreviewFromRgb();\n this.__fireChangeValueEvent();\n\n if (this.__updateContext === \"blueModifier\") {\n this.__updateContext = null;\n }\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n HSB MODIFIER\n ---------------------------------------------------------------------------\n */\n\n // property apply\n _applyHue : function(value, old)\n {\n if (this.__updateContext === null) {\n this.__updateContext = \"hueModifier\";\n }\n\n if (this.__updateContext !== \"hsbSpinner\") {\n this.getChildControl(\"hsb-spinner-hue\").setValue(value);\n }\n\n if (this.__updateContext !== \"hueSaturationField\")\n {\n if (this.getChildControl(\"hue-saturation-handle\").getBounds()) {\n this.getChildControl(\"hue-saturation-handle\").setDomLeft(Math.round(value / 1.40625) + this.getChildControl(\"hue-saturation-pane\").getPaddingLeft());\n } else {\n this.getChildControl(\"hue-saturation-handle\").setLayoutProperties({ left : Math.round(value / 1.40625) });\n }\n }\n\n switch(this.__updateContext)\n {\n case \"hsbSpinner\":\n case \"hueSaturationField\":\n case \"hueModifier\":\n this._setRgbFromHue();\n }\n this._setBrightnessGradiant();\n if (this.__updateContext === \"hueModifier\") {\n this.__updateContext = null;\n }\n },\n\n\n // property apply\n _applySaturation : function(value, old)\n {\n if (this.__updateContext === null) {\n this.__updateContext = \"saturationModifier\";\n }\n\n if (this.__updateContext !== \"hsbSpinner\") {\n this.getChildControl(\"hsb-spinner-saturation\").setValue(value);\n }\n\n if (this.__updateContext !== \"hueSaturationField\")\n {\n this._setBrightnessGradiant();\n if (this.getChildControl(\"hue-saturation-handle\").getBounds()) {\n this.getChildControl(\"hue-saturation-handle\").setDomTop(256 - Math.round(value * 2.56) + this.getChildControl(\"hue-saturation-pane\").getPaddingTop());\n } else {\n this.getChildControl(\"hue-saturation-handle\").setLayoutProperties({ top : 256 - Math.round(value * 2.56)});\n }\n }\n\n switch(this.__updateContext)\n {\n case \"hsbSpinner\":\n case \"hueSaturationField\":\n case \"saturationModifier\":\n this._setRgbFromHue();\n }\n\n if (this.__updateContext === \"saturationModifier\") {\n this.__updateContext = null;\n }\n },\n\n\n // property apply\n _applyBrightness : function(value, old)\n {\n if (this.__updateContext === null) {\n this.__updateContext = \"brightnessModifier\";\n }\n\n if (this.__updateContext !== \"hsbSpinner\") {\n this.getChildControl(\"hsb-spinner-brightness\").setValue(value);\n }\n\n if (this.__updateContext !== \"brightnessField\")\n {\n var topValue = 256 - Math.round(value * 2.56);\n\n if (this.getChildControl(\"brightness-handle\").getBounds()) {\n this.getChildControl(\"brightness-handle\").setDomTop(topValue + this.getChildControl(\"brightness-pane\").getPaddingTop());\n } else {\n this.getChildControl(\"brightness-handle\").setLayoutProperties({ top : topValue });\n }\n }\n\n switch(this.__updateContext)\n {\n case \"hsbSpinner\":\n case \"brightnessField\":\n case \"brightnessModifier\":\n this._setRgbFromHue();\n }\n\n if (this.__updateContext === \"brightnessModifier\") {\n this.__updateContext = null;\n }\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n BRIGHTNESS IMPLEMENTATION\n ---------------------------------------------------------------------------\n */\n\n /**\n * Listener of pointerdown event on the brightness handle.\n * Adjusts the color by changing the brightness.\n *\n * @param e {qx.event.type.Pointer} Incoming event object\n */\n _onBrightnessHandlePointerDown : function(e)\n {\n // Activate Capturing\n this.getChildControl(\"brightness-handle\").capture();\n this.__capture = \"brightness-handle\";\n\n // Calculate subtract: Position of Brightness Field - Current Pointer Offset\n var locationBrightnessField = this.getChildControl(\"brightness-field\").getContentLocation();\n var locationBrightnessHandle = this.getChildControl(\"brightness-handle\").getContentLocation();\n var fieldBounds = this.getChildControl(\"brightness-field\").getBounds();\n\n this.__brightnessSubtract = locationBrightnessField.top +\n (e.getDocumentTop() - locationBrightnessHandle.top) - fieldBounds.top;\n\n // Block field event handling\n e.stopPropagation();\n },\n\n\n /**\n * Listener of pointerup event on the brightness handle.\n * Releases the capture.\n *\n * @param e {qx.event.type.Pointer} Incoming event object\n */\n _onBrightnessHandlePointerUp : function(e)\n {\n // Disabling capturing\n this.getChildControl(\"brightness-handle\").releaseCapture();\n this.__capture = null;\n },\n\n\n /**\n * Listener of pointermove event on the brightness handle.\n * Forwards the event to _setBrightnessOnFieldEvent().\n *\n * @param e {qx.event.type.Pointer} Incoming event object\n */\n _onBrightnessHandlePointerMove : function(e)\n {\n // Update if captured currently (through previous pointerdown)\n if (this.__capture === \"brightness-handle\") {\n this._setBrightnessOnFieldEvent(e);\n e.stopPropagation();\n }\n },\n\n\n /**\n * Listener of pointerdown event on the brightness field.\n * Adjusts the color by changing the brightness.\n *\n * @param e {qx.event.type.Pointer} Incoming event object\n */\n _onBrightnessFieldPointerDown : function(e)\n {\n // Calculate substract: Half height of handler\n var location = this.getChildControl(\"brightness-field\").getContentLocation();\n var bounds = this.getChildControl(\"brightness-handle\").getBounds();\n this.__brightnessSubtract = location.top + (bounds.height / 2);\n\n // Update\n this._setBrightnessOnFieldEvent(e);\n\n // Afterwards: Activate Capturing for handle\n this.getChildControl(\"brightness-handle\").capture();\n this.__capture = \"brightness-handle\";\n },\n\n\n /**\n * Listener of roll event on the brightness pane.\n * Adjusts the color by changing the brightness.\n *\n * @param e {qx.event.type.Roll} Incoming event object\n */\n _onBrightnessPaneRoll : function(e)\n {\n e.stop();\n\n // only wheel\n if (e.getPointerType() != \"wheel\") {\n return;\n }\n\n this.setBrightness(qx.lang.Number.limit((this.getBrightness() - (e.getDelta().y / 10)), 0, 100));\n },\n\n\n /**\n * Sets the brightness and moves the brightness handle.\n *\n * @param e {qx.event.type.Pointer} Incoming event object\n */\n _setBrightnessOnFieldEvent : function(e)\n {\n var value = qx.lang.Number.limit(e.getDocumentTop() - this.__brightnessSubtract, 0, 256);\n\n this.__updateContext = \"brightnessField\";\n\n if (this.getChildControl(\"brightness-handle\").getBounds()) {\n this.getChildControl(\"brightness-handle\").setDomTop(value);\n } else {\n this.getChildControl(\"brightness-handle\").setLayoutProperties({ top : value });\n }\n\n this.setBrightness(100 - Math.round(value / 2.56));\n\n this.__updateContext = null;\n },\n\n /*\n ---------------------------------------------------------------------------\n HUE/SATURATION IMPLEMENTATION\n ---------------------------------------------------------------------------\n */\n\n\n /**\n * Listener of pointerup event on the saturation handle.\n * Releases pointer capture.\n *\n * @param e {qx.event.type.Pointer} Incoming event object\n */\n _onHueSaturationHandlePointerUp : function(e)\n {\n // Disabling capturing\n if (this.__capture)\n {\n e.stopPropagation();\n this.getChildControl(\"hue-saturation-handle\").releaseCapture();\n this.__capture = null;\n }\n },\n\n\n /**\n * Listener of pointermove event on the saturation handle.\n * Forwards the event to _onHueSaturationHandlePointerMove().\n *\n * @param e {qx.event.type.Pointer} Incoming event object\n */\n _onHueSaturationHandlePointerMove : function(e)\n {\n\n // Update if captured currently (through previous pointerdown)\n if (this.__capture === \"hue-saturation-handle\")\n {\n this._setHueSaturationOnFieldEvent(e);\n e.stopPropagation();\n }\n },\n\n\n /**\n * Listener of pointerdown event on the saturation field.\n * Adjusts the color by changing the saturation.\n * Sets pointer capture.\n *\n * @param e {qx.event.type.Pointer} Incoming event object\n */\n _onHueSaturationFieldPointerDown : function(e)\n {\n // Calculate substract: Half width/height of handler\n var location = this.getChildControl(\"hue-saturation-field\").getContentLocation();\n var handleBounds = this.getChildControl(\"hue-saturation-handle\").getBounds();\n var fieldBounds = this.getChildControl(\"hue-saturation-field\").getBounds();\n\n this.__hueSaturationSubtractTop = location.top + (handleBounds.height / 2) - fieldBounds.top;\n this.__hueSaturationSubtractLeft = location.left + (handleBounds.width / 2) - fieldBounds.left;\n\n // Update\n this._setHueSaturationOnFieldEvent(e);\n\n // Afterwards: Activate Capturing for handle\n this.getChildControl(\"hue-saturation-handle\").capture();\n this.__capture = \"hue-saturation-handle\";\n },\n\n\n /**\n * Listener of roll event on the saturation pane.\n * Adjusts the color by changing the saturation.\n *\n * @param e {qx.event.type.Roll} Incoming event object\n */\n _onHueSaturationPaneRoll : function(e)\n {\n e.stop();\n\n // only wheel\n if (e.getPointerType() != \"wheel\") {\n return;\n }\n\n var delta = e.getDelta();\n this.setSaturation(qx.lang.Number.limit(this.getSaturation() - delta.y / 10, 0, 100));\n this.setHue(qx.lang.Number.limit(this.getHue() + delta.x / 10, 0, 360));\n },\n\n\n /**\n * Sets the saturation and moves the saturation handle.\n *\n * @param e {qx.event.type.Pointer} Incoming event object\n */\n _setHueSaturationOnFieldEvent : function(e)\n {\n var vTop = qx.lang.Number.limit(e.getDocumentTop() - this.__hueSaturationSubtractTop, 0, 256);\n var vLeft = qx.lang.Number.limit(e.getDocumentLeft() - this.__hueSaturationSubtractLeft, 0, 256);\n\n this.getChildControl(\"hue-saturation-handle\").setDomPosition(vLeft, vTop);\n\n this.__updateContext = \"hueSaturationField\";\n\n this.setSaturation(100 - Math.round(vTop / 2.56));\n this.setHue(Math.round(vLeft * 1.40625));\n\n this.__updateContext = null;\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n RGB SPINNER\n ---------------------------------------------------------------------------\n */\n\n /**\n * Sets widget's red value to spinner's value.\n */\n _setRedFromSpinner : function()\n {\n if (this.__updateContext !== null) {\n return;\n }\n\n this.__updateContext = \"rgbSpinner\";\n this.setRed(this.getChildControl(\"rgb-spinner-red\").getValue());\n this.__updateContext = null;\n },\n\n\n /**\n * Sets widget's green value to spinner's value.\n */\n _setGreenFromSpinner : function()\n {\n if (this.__updateContext !== null) {\n return;\n }\n\n this.__updateContext = \"rgbSpinner\";\n this.setGreen(this.getChildControl(\"rgb-spinner-green\").getValue());\n this.__updateContext = null;\n },\n\n\n /**\n * Sets widget's blue value to spinner's value.\n */\n _setBlueFromSpinner : function()\n {\n if (this.__updateContext !== null) {\n return;\n }\n\n this.__updateContext = \"rgbSpinner\";\n this.setBlue(this.getChildControl(\"rgb-spinner-blue\").getValue());\n this.__updateContext = null;\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n HSB SPINNER\n ---------------------------------------------------------------------------\n */\n\n /**\n * Sets widget's hue value to spinner's value.\n */\n _setHueFromSpinner : function()\n {\n if (this.__updateContext !== null) {\n return;\n }\n\n this.__updateContext = \"hsbSpinner\";\n this.setHue(this.getChildControl(\"hsb-spinner-hue\").getValue());\n this.__updateContext = null;\n },\n\n\n /**\n * Sets widget's saturation value to spinner's value.\n */\n _setSaturationFromSpinner : function()\n {\n if (this.__updateContext !== null) {\n return;\n }\n\n this.__updateContext = \"hsbSpinner\";\n this.setSaturation(this.getChildControl(\"hsb-spinner-saturation\").getValue());\n this.__updateContext = null;\n },\n\n\n /**\n * Sets widget's brightness value to spinner's value.\n */\n _setBrightnessFromSpinner : function()\n {\n if (this.__updateContext !== null) {\n return;\n }\n\n this.__updateContext = \"hsbSpinner\";\n this.setBrightness(this.getChildControl(\"hsb-spinner-brightness\").getValue());\n this.__updateContext = null;\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n HEX FIELD\n ---------------------------------------------------------------------------\n */\n\n /**\n * Changes red, green and blue value to the corresponding hexfield value.\n * @param e {qx.event.type.Data} Incoming event object\n */\n _onHexFieldChange : function(e)\n {\n if (this.__updateContext !== null) {\n return;\n }\n\n try\n {\n var hexField = this.getChildControl(\"hex-field\");\n var rgb = qx.util.ColorUtil.hexStringToRgb(\"#\" + hexField.getValue());\n } catch(ex) {\n return;\n };\n\n this.__updateContext = \"hexField\";\n this.setRed(rgb[0]);\n this.setGreen(rgb[1]);\n this.setBlue(rgb[2]);\n this.__updateContext = null;\n },\n\n\n /**\n * Sets hexfield value to it's corresponding red, green and blue value.\n */\n _setHexFromRgb : function()\n {\n var value = qx.util.ColorUtil.rgbToHexString(\n [this.getRed(),this.getGreen(),this.getBlue()]\n );\n\n // get rid of the starting '#'\n value = value.substring(1, value.length);\n\n this.getChildControl(\"hex-field\").setValue(value);\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n COLOR FIELD\n ---------------------------------------------------------------------------\n */\n\n /**\n * Listener of tap event on the color field.\n * Sets red, green and blue values to tapped color field's background color.\n *\n * @param e {qx.event.type.Pointer} Incoming event object\n */\n _onColorFieldTap : function(e)\n {\n var vColor = e.getTarget().getBackgroundColor();\n\n if (!vColor) {\n this.error(\"Missing backgroundColor value for field: \" + e.getTarget());\n return;\n }\n\n var rgb = qx.util.ColorUtil.stringToRgb(vColor);\n\n this.setRed(rgb[0]);\n this.setGreen(rgb[1]);\n this.setBlue(rgb[2]);\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n RGB/HSB SYNC\n ---------------------------------------------------------------------------\n */\n\n /**\n * Sets hue value to it's corresponding red, green and blue value.\n */\n _setHueFromRgb : function()\n {\n switch(this.__updateContext)\n {\n case \"hsbSpinner\":\n case \"hueSaturationField\":\n case \"brightnessField\":\n break;\n\n default:\n var hsb = qx.util.ColorUtil.rgbToHsb([this.getRed(), this.getGreen(), this.getBlue()]);\n\n this.setHue(hsb[0]);\n this.setSaturation(hsb[1]);\n this.setBrightness(hsb[2]);\n }\n },\n\n\n /**\n * Sets red, green and blue value to corresponding hue value.\n */\n _setRgbFromHue : function()\n {\n switch(this.__updateContext)\n {\n case \"rgbSpinner\":\n case \"hexField\":\n break;\n\n default:\n var vRgb = qx.util.ColorUtil.hsbToRgb([this.getHue(), this.getSaturation(), this.getBrightness()]);\n\n this.setRed(vRgb[0]);\n this.setGreen(vRgb[1]);\n this.setBlue(vRgb[2]);\n }\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n PREVIEW SYNC\n ---------------------------------------------------------------------------\n */\n\n /**\n * Sets preview pane's background color to corresponding red, green and blue color values.\n */\n _setPreviewFromRgb : function()\n {\n var rgbString = qx.util.ColorUtil.rgbToRgbString([this.getRed(), this.getGreen(), this.getBlue()]);\n this.getChildControl(\"preview-content-new\").setBackgroundColor(rgbString);\n },\n\n\n /**\n * Sets previous color's to given values.\n *\n * @param red {Number} Red color value.\n * @param green {Number} Green color value.\n * @param blue {Number} Blue color value.\n */\n setPreviousColor : function(red, green, blue)\n {\n var color = qx.util.ColorUtil.rgbToRgbString([red, green, blue]);\n this.getChildControl(\"preview-content-old\").setBackgroundColor(color);\n\n this.setRed(red);\n this.setGreen(green);\n this.setBlue(blue);\n },\n\n /**\n * Updates the background of the brightness field to give a nicer gradient\n */\n _setBrightnessGradiant : function()\n {\n var ColorUtil = qx.util.ColorUtil;\n var helpRgb = ColorUtil.hsbToRgb([this.getHue(), this.getSaturation(), 255]);\n var helpRgbString = ColorUtil.rgbToRgbString(helpRgb);\n this.getChildControl(\"brightness-field\").setBackgroundColor(helpRgbString);\n },\n\n /**\n * Listener for appear.\n * Sets preview pane's background color to the current color.\n *\n * @param e {qx.event.type.Data} Incoming event object\n */\n _onAppear : function(e)\n {\n var color = qx.util.ColorUtil.rgbToRgbString([this.getRed(),\n this.getGreen(), this.getBlue()]);\n\n this.getChildControl(\"preview-content-old\").setBackgroundColor(color);\n this.getChildControl(\"preview-content-new\").setBackgroundColor(color);\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.pricing.Plans\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(5));\n\n this.getChildControl(\"pricing-plans-filter\");\n this.__createList();\n this.fetchPlans();\n this.getChildControl(\"create-pricing-plan\");\n },\n\n events: {\n \"pricingPlanSelected\": \"qx.event.type.Data\"\n },\n\n members: {\n __model: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"pricing-plans-filter\":\n control = new osparc.filter.TextFilter(\"text\", \"pricingPlansList\").set({\n allowStretchX: true,\n margin: 0\n });\n this._addAt(control, 0);\n break;\n case \"pricing-plans-container\":\n control = new qx.ui.container.Scroll();\n this._addAt(control, 1, {\n flex: 1\n });\n break;\n case \"pricing-plans-list\":\n control = new qx.ui.form.List().set({\n decorator: \"no-border\",\n spacing: 3\n });\n control.addListener(\"changeSelection\", e => {\n const selection = e.getData();\n if (selection.length) {\n const ppSelected = selection[0];\n this.fireDataEvent(\"pricingPlanSelected\", ppSelected);\n }\n }, this);\n this.getChildControl(\"pricing-plans-container\").add(control);\n break;\n case \"create-pricing-plan\":\n control = new qx.ui.form.Button().set({\n appearance: \"form-button\",\n label: this.tr(\"New Pricing Plan\"),\n alignX: \"center\",\n icon: \"@FontAwesome5Solid/plus/14\",\n allowGrowX: false\n });\n control.addListener(\"execute\", () => this.__openCreatePricingPlan());\n this._addAt(control, 2);\n }\n return control || this.base(arguments, id);\n },\n\n __createList: function() {\n const list = this.getChildControl(\"pricing-plans-list\");\n\n const model = this.__model = new qx.data.Array();\n const ppsCtrl = new qx.data.controller.List(model, list, \"label\");\n ppsCtrl.setDelegate({\n createItem: () => new osparc.pricing.PlanListItem(),\n bindItem: (ctrl, item, id) => {\n ctrl.bindProperty(\"pricingPlanId\", \"model\", null, item, id);\n ctrl.bindProperty(\"pricingPlanId\", \"ppId\", null, item, id);\n ctrl.bindProperty(\"pricingPlanKey\", \"ppKey\", null, item, id);\n ctrl.bindProperty(\"name\", \"title\", null, item, id);\n ctrl.bindProperty(\"description\", \"description\", null, item, id);\n ctrl.bindProperty(\"classification\", \"classification\", null, item, id);\n ctrl.bindProperty(\"isActive\", \"isActive\", null, item, id);\n },\n configureItem: item => {\n item.subscribeToFilterGroup(\"pricingPlansList\");\n item.addListener(\"editPricingPlan\", () => this.__openUpdatePricingPlan(item.getModel()));\n }\n });\n },\n\n fetchPlans: function() {\n osparc.store.Pricing.getInstance().fetchPricingPlans()\n .then(data => this.__populateList(data));\n },\n\n __populateList: function(pricingPlans) {\n this.__model.removeAll();\n pricingPlans.forEach(pricingPlan => this.__model.append(pricingPlan));\n },\n\n __openCreatePricingPlan: function() {\n const ppCreator = new osparc.pricing.PlanEditor();\n const title = this.tr(\"Pricing Plan Creator\");\n const win = osparc.ui.window.Window.popUpInWindow(ppCreator, title, 400, 250);\n ppCreator.addListener(\"done\", () => {\n win.close();\n this.fetchPlans();\n });\n ppCreator.addListener(\"cancel\", () => win.close());\n },\n\n __openUpdatePricingPlan: function(pricingPlanId) {\n osparc.store.Pricing.getInstance().fetchPricingUnits(pricingPlanId)\n .then(pricingPlan => {\n const ppEditor = new osparc.pricing.PlanEditor(pricingPlan);\n const title = this.tr(\"Pricing Plan Editor\");\n const win = osparc.ui.window.Window.popUpInWindow(ppEditor, title, 400, 250);\n ppEditor.addListener(\"done\", () => {\n win.close();\n this.fetchPlans();\n });\n ppEditor.addListener(\"cancel\", () => win.close());\n });\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.pricing.PlanDetails\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(5));\n\n this.getChildControl(\"back-to-pp-button\");\n this.getChildControl(\"pricing-plan-details\");\n this.getChildControl(\"pricing-units\");\n this.getChildControl(\"service-list\");\n },\n\n events: {\n \"backToPricingPlans\": \"qx.event.type.Event\"\n },\n\n statics: {\n createTabPage: function(label, icon) {\n const tabPage = new qx.ui.tabview.Page().set({\n layout: new qx.ui.layout.VBox()\n });\n if (label) {\n tabPage.setLabel(label);\n }\n if (icon) {\n tabPage.setIcon(icon);\n }\n tabPage.getChildControl(\"button\").set({\n font: \"text-13\"\n });\n return tabPage;\n }\n },\n\n members: {\n __servicesPage: null,\n\n _createChildControlImpl: function(id) {\n let control;\n let layout;\n switch (id) {\n case \"title-layout\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\n this._addAt(control, 0);\n break;\n case \"back-to-pp-button\":\n control = new qx.ui.form.Button().set({\n toolTipText: this.tr(\"Back to Pricing Plans\"),\n icon: \"@FontAwesome5Solid/arrow-left/20\",\n backgroundColor: \"transparent\"\n });\n control.addListener(\"execute\", () => this.fireEvent(\"backToPricingPlans\"));\n this.getChildControl(\"title-layout\").add(control);\n break;\n case \"pricing-plan-details\":\n control = new osparc.pricing.PlanListItem();\n control.getChildControl(\"edit-button\").exclude();\n this.getChildControl(\"title-layout\").add(control, {\n flex: 1\n });\n break;\n case \"resources-view\":\n control = new qx.ui.tabview.TabView().set({\n contentPadding: 10\n });\n this._addAt(control, 1, {\n flex: 1\n });\n break;\n case \"pricing-units\": {\n control = new osparc.pricing.UnitsList();\n const tabPage = this.self().createTabPage(this.tr(\"Pricing Units\"), \"@FontAwesome5Solid/paw/14\");\n tabPage.add(control, {\n flex: 1\n });\n layout = this.getChildControl(\"resources-view\");\n layout.add(tabPage);\n break;\n }\n case \"service-list\": {\n control = new osparc.pricing.ServicesList();\n const tabPage = this.__servicesPage = this.self().createTabPage(this.tr(\"Services\"), \"@FontAwesome5Solid/cogs/14\");\n tabPage.add(control, {\n flex: 1\n });\n layout = this.getChildControl(\"resources-view\");\n layout.add(tabPage);\n break;\n }\n }\n return control || this.base(arguments, id);\n },\n\n setCurrentPricingPlan: function(pricingPlan) {\n if (pricingPlan === null) {\n return;\n }\n\n const pricingPlanListItem = this.getChildControl(\"pricing-plan-details\");\n pricingPlan.bind(\"model\", pricingPlanListItem, \"model\");\n pricingPlan.bind(\"ppId\", pricingPlanListItem, \"ppId\");\n pricingPlan.bind(\"ppKey\", pricingPlanListItem, \"ppKey\");\n pricingPlan.bind(\"title\", pricingPlanListItem, \"title\");\n pricingPlan.bind(\"description\", pricingPlanListItem, \"description\");\n pricingPlan.bind(\"isActive\", pricingPlanListItem, \"isActive\");\n\n // set PricingPlanId to the tab views\n this.getChildControl(\"pricing-units\").setPricingPlanId(pricingPlan.getModel());\n this.getChildControl(\"service-list\").setPricingPlanId(pricingPlan.getModel());\n\n // show services only if it's a TIER pricing plan\n this.__servicesPage.getChildControl(\"button\").set({\n visibility: pricingPlan.getClassification() === \"TIER\" ? \"visible\" : \"excluded\"\n });\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.editor.HtmlEditor\", {\n extend: osparc.editor.TextEditor,\n\n /**\n * @param initText {String} Initialization text\n */\n construct: function(initText = \"\") {\n this.base(arguments, initText);\n\n this.getChildControl(\"preview-html\");\n this.getChildControl(\"subtitle\").set({\n value: this.tr(\"Supports HTML\")\n });\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"preview-html\": {\n control = new qx.ui.embed.Html();\n const textArea = this.getChildControl(\"text-area\");\n textArea.bind(\"value\", control, \"html\");\n const tabs = this.getChildControl(\"tabs\");\n const previewPage = new qx.ui.tabview.Page(this.tr(\"Preview\")).set({\n layout: new qx.ui.layout.VBox(5)\n });\n previewPage.getChildControl(\"button\").getChildControl(\"label\").set({\n font: \"text-13\"\n });\n const scrollContainer = new qx.ui.container.Scroll();\n scrollContainer.add(control);\n previewPage.add(scrollContainer, {\n flex: 1\n });\n tabs.add(previewPage);\n break;\n }\n }\n return control || this.base(arguments, id);\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2007 by Tartan Solutions, Inc, http://www.tartansolutions.com\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Dan Hummon\n\n************************************************************************ */\n\n/**\n * A filtered table model to provide support for hiding and filtering table\n * rows. Any rows that match any applied filters will be hidden.\n\n\nvar model = new qx.ui.table.model.Filtered();\nmodel.setColumns([\"Login\", \"Name\", \"Email\"], [\"login\", \"name\", \"email\"]);\n\nvar table = new qx.ui.table.Table(model);\n\nvar data = [{\n login : \"darthvader\",\n name : \"Darth Vader\",\n email : \"darthvader@tatooine.org\"\n}, {\n login : \"anakin\",\n name : \"Anakin Skywalker\",\n email : \"anakin@skywalker.org\"\n}, {\n login : \"luke\",\n name : \"Luke Skywalker\",\n email : \"luke@tatooine.org\"\n}, {\n login : \"obi-wan\",\n name : \"Obi-Wan Kenobi\",\n email : \"obiwan@jedi.org\"\n}, {\n login : \"rey\",\n name : \"Rey\",\n email : \"rey@jakku.sw\"\n}];\n\nmodel.setDataAsMapArray(data);\n\nthis.getRoot().add(table);\n\nvar search = new qx.ui.form.TextField();\nsearch.set({\n liveUpdate : true,\n placeholder : \"Search login\"\n});\n\nsearch.addListener(\"changeValue\", function(e) {\n var value = e.getData();\n\n model.resetHiddenRows();\n model.addNotRegex(value, \"login\", true);\n model.applyFilters();\n});\n\nthis.getRoot().add(search, {top : 500, left : 10});\n
\n *\n * @deprecated {6.0} You should use\n * Array.filter\n * method to filter the table model\n */\nqx.Class.define(\"qx.ui.table.model.Filtered\",\n{\n extend : qx.ui.table.model.Simple,\n\n\n construct : function()\n {\n this.base(arguments);\n\n this.__filterTypes = {\n \"==\" : \"numeric\",\n \"!=\" : \"numeric\",\n \">\" : \"numeric\",\n \"<\" : \"numeric\",\n \"<=\" : \"numeric\",\n \">=\" : \"numeric\",\n \"between\": \"between\",\n \"!between\": \"between\"\n };\n\n this.__applyingFilters = false;\n this.Filters = [];\n\n },\n\n\n members :\n {\n __fullArr : null,\n __applyingFilters : null,\n __filterTypes : null,\n\n /**\n * Function to get the full array of the filtered model\n * @return {Array} the full array of model (with no changes)\n */\n getFullArray: function ()\n {\n return this.__fullArr;\n },\n\n /**\n * Whether the given string (needle) is in the array (haystack)\n *\n * @param the_needle {String} String to search\n * @param the_haystack {Array} Array, which should be searched\n * @return {Boolean} whether the search string was found.\n * @deprecated {6.0}\n */\n _js_in_array : function(the_needle, the_haystack)\n {\n var the_hay = the_haystack.toString();\n\n if (the_hay == '') {\n return false;\n }\n\n var the_pattern = new RegExp(the_needle, 'g');\n var matched = the_pattern.test(the_haystack);\n return matched;\n },\n\n\n /**\n * The addBetweenFilter method is used to add a between filter to the\n * table model.\n *\n * @param filter {String}\n * The type of filter. Accepted strings are \"between\" and \"!between\".\n *\n * @param value1 {Integer}\n * The first value to compare against.\n *\n * @param value2 {Integer}\n * The second value to compare against.\n *\n * @param target {String}\n * The text value of the column to compare against.\n *\n *\n * @throws {Error} If the filter can not recognized or one of the values\n * is null.\n */\n addBetweenFilter : function(filter, value1, value2, target)\n {\n if (this.__filterTypes[filter] === \"between\" && target != null)\n {\n if (value1 != null && value2 != null) {\n var temp = new Array(filter, value1, value2, target);\n }\n }\n\n if (temp != null) {\n this.Filters.push(temp);\n } else {\n throw new Error(\"Filter not recognized or value1/value2 is null!\");\n }\n },\n\n\n /**\n * The addNumericFilter method is used to add a basic numeric filter to\n * the table model.\n *\n * @param filter {String}\n * The type of filter. Accepted strings are:\n * \"==\", \"!=\", \">\", \"<\", \">=\", and \"<=\".\n *\n * @param value1 {Integer}\n * The value to compare against.\n *\n * @param target {String}\n * The text value of the column to compare against.\n *\n *\n * @throws {Error} If the filter can not recognized or the target is null.\n */\n addNumericFilter : function(filter, value1, target)\n {\n var temp = null;\n\n if (this.__filterTypes[filter] === \"numeric\" && target != null)\n {\n if (value1 != null) {\n temp = [filter, value1, target];\n }\n }\n\n if (temp != null) {\n this.Filters.push(temp);\n } else {\n throw new Error(\"Filter not recognized: value or target is null!\");\n }\n },\n\n\n /**\n * The addRegex method is used to add a regular expression filter to the\n * table model.\n *\n * @param regex {String}\n * The regular expression to match against.\n *\n * @param target {String}\n * The text value of the column to compare against.\n *\n * @param ignorecase {Boolean}\n * If true, the regular expression will ignore case.\n *\n *\n * @throws {Error} If the regex is not valid.\n */\n addRegex : function(regex, target, ignorecase)\n {\n var regexarg;\n if (ignorecase) {\n regexarg ='gi';\n } else {\n regexarg ='g';\n }\n\n if (regex != null && target != null) {\n var temp = new Array(\"regex\", regex, target, regexarg);\n }\n\n if (temp != null) {\n this.Filters.push(temp);\n } else {\n throw new Error(\"regex cannot be null!\");\n }\n },\n\n\n /**\n * The addNotRegex method is used to add a regular expression filter to the\n * table model and filter cells that do not match.\n *\n * @param regex {String}\n * The regular expression to match against.\n *\n * @param target {String}\n * The text value of the column to compare against.\n *\n * @param ignorecase {Boolean}\n * If true, the regular expression will ignore case.\n *\n *\n * @throws {Error} If the regex is null.\n */\n addNotRegex : function(regex, target, ignorecase)\n {\n var regexarg;\n if (ignorecase) {\n regexarg ='gi';\n } else {\n regexarg ='g';\n }\n\n if (regex != null && target != null) {\n var temp = new Array(\"notregex\", regex, target, regexarg);\n }\n\n if (temp != null) {\n this.Filters.push(temp);\n } else {\n throw new Error(\"notregex cannot be null!\");\n }\n },\n\n\n /**\n * The applyFilters method is called to apply filters to the table model.\n */\n applyFilters : function()\n {\n var i;\n var filter_test;\n var compareValue;\n var rowArr = this.getData();\n var rowLength = rowArr.length;\n var rowsToHide = [];\n\n for (var row = 0; row < rowLength; row++)\n {\n filter_test = false;\n for (i in this.Filters)\n {\n\n if (this.__filterTypes[this.Filters[i][0]] === \"numeric\")\n {\n compareValue = this.getValueById(this.Filters[i][2], row);\n switch(this.Filters[i][0])\n {\n case \"==\":\n if (compareValue == this.Filters[i][1]) {\n filter_test = true;\n }\n\n break;\n\n case \"!=\":\n if (compareValue != this.Filters[i][1]) {\n filter_test = true;\n }\n\n break;\n\n case \">\":\n if (compareValue > this.Filters[i][1]) {\n filter_test = true;\n }\n\n break;\n\n case \"<\":\n if (compareValue < this.Filters[i][1]) {\n filter_test = true;\n }\n\n break;\n\n case \">=\":\n if (compareValue >= this.Filters[i][1]) {\n filter_test = true;\n }\n\n break;\n\n case \"<=\":\n if (compareValue <= this.Filters[i][1]) {\n filter_test = true;\n }\n\n break;\n }\n }\n else if (this.__filterTypes[this.Filters[i][0]] === \"between\")\n {\n compareValue = this.getValueById(this.Filters[i][3], row);\n\n switch(this.Filters[i][0])\n {\n case \"between\":\n if (compareValue >= this.Filters[i][1] &&\n compareValue <= this.Filters[i][2]) {\n filter_test = true;\n }\n\n break;\n\n case \"!between\":\n if (compareValue < this.Filters[i][1] ||\n compareValue > this.Filters[i][2]) {\n filter_test = true;\n }\n\n break;\n }\n }\n else if (this.Filters[i][0] === \"regex\")\n {\n compareValue = this.getValueById(this.Filters[i][2], row);\n\n var the_pattern = new RegExp(this.Filters[i][1], this.Filters[i][3]);\n filter_test = the_pattern.test(compareValue);\n }\n else if (this.Filters[i][0] === \"notregex\")\n {\n compareValue = this.getValueById(this.Filters[i][2], row);\n\n var the_pattern = new RegExp(this.Filters[i][1], this.Filters[i][3]);\n filter_test = !the_pattern.test(compareValue);\n }\n\n if (filter_test === true) {\n break;\n }\n }\n\n // instead of hiding a single row, push it into the hiding-store for later hiding.\n if (filter_test === true) {\n rowsToHide.push(row);\n }\n }\n\n if (!this.__applyingFilters) {\n this.__fullArr = rowArr.slice(0);\n this.__applyingFilters = true;\n }\n\n rowArr = rowArr.filter(function(row, index) {\n return !rowsToHide.includes(index);\n });\n\n this._rowArr = rowArr;\n\n var data = {\n firstRow : 0,\n lastRow : this._rowArr.length - 1,\n firstColumn : 0,\n lastColumn : this.getColumnCount() - 1\n };\n\n // Inform the listeners\n this.fireDataEvent(\"dataChanged\", data);\n },\n\n\n /**\n * Hides a specified number of rows.\n *\n * @param rowNum {Integer}\n * Index of the first row to be hidden in the table.\n *\n * @param numOfRows {Integer}\n * The number of rows to be hidden sequentially after rowNum.\n *\n * @param dispatchEvent {Boolean?true} Whether a model change event should\n * be fired.\n *\n */\n hideRows : function(rowNum, numOfRows, dispatchEvent)\n {\n var rowArr = this.getData();\n\n dispatchEvent = (dispatchEvent != null ? dispatchEvent : true);\n if (!this.__applyingFilters) {\n this.__fullArr = rowArr.slice(0);\n this.__applyingFilters = true;\n }\n\n if (numOfRows == null || numOfRows < 1) {\n numOfRows = 1;\n }\n\n for (var kludge = rowNum;\n kludge<(rowArr.length - numOfRows);\n kludge++) {\n rowArr[kludge] = rowArr[kludge + numOfRows];\n }\n this.removeRows(kludge, numOfRows);\n\n // Inform the listeners\n if (dispatchEvent)\n {\n var data =\n {\n firstRow : 0,\n lastRow : rowArr.length - 1,\n firstColumn : 0,\n lastColumn : this.getColumnCount() - 1\n };\n\n this.fireDataEvent(\"dataChanged\", data);\n }\n },\n\n\n /**\n * Return the table to the original state with all rows shown and clears\n * all filters.\n *\n */\n resetHiddenRows : function()\n {\n if (!this.__fullArr) {\n // nothing to reset\n return;\n }\n this.Filters = [];\n\n this.setData(qx.lang.Array.clone(this.__fullArr));\n },\n\n\n // overridden\n setData : function(rowArr, clearSorting)\n {\n this.__fullArr = qx.lang.Array.clone(rowArr);\n this.Filters = [];\n this.base(arguments, rowArr, clearSorting);\n }\n },\n\n\n destruct : function()\n {\n this.__fullArr = this.__filterTypes = this.Filters = null;\n }\n});\n","/*\n * oSPARC - The SIMCORE frontend - https://osparc.io\n * Copyright: 2025 IT'IS Foundation - https://itis.swiss\n * License: MIT - https://opensource.org/licenses/MIT\n * Authors: Odei Maiz (odeimaiz)\n */\n\nqx.Class.define(\"osparc.ui.markdown.MarkdownWindow\", {\n extend: osparc.ui.window.Window,\n\n construct: function(markdownUrl) {\n this.base(arguments);\n\n this.set({\n layout: new qx.ui.layout.VBox(),\n resizable: true,\n showMaximize: false,\n showMinimize: false,\n centerOnAppear: true,\n clickAwayClose: true,\n modal: true\n });\n\n const markdown = new osparc.ui.markdown.Markdown().set({\n padding: 15,\n });\n const scrollContainer = new qx.ui.container.Scroll();\n scrollContainer.add(markdown);\n this._add(scrollContainer, {\n flex: 1,\n });\n\n if (markdownUrl) {\n fetch(markdownUrl)\n .then(res => res.text())\n .then(text => markdown.setValue(text));\n }\n },\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.study.PricingUnitLicense\", {\n extend: osparc.study.PricingUnit,\n\n events: {\n \"rentPricingUnit\": \"qx.event.type.Event\",\n },\n\n properties: {\n showRentButton: {\n check: \"Boolean\",\n init: false,\n nullable: true,\n event: \"changeShowRentButton\"\n },\n },\n\n statics: {\n getExpirationDate: function() {\n const expirationDate = new Date();\n expirationDate.setFullYear(expirationDate.getFullYear() + 1); // hardcoded for now: rented for one year from now\n return expirationDate;\n },\n },\n\n members: {\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"rental-period\":\n control = new qx.ui.basic.Label().set({\n value: this.tr(\"Duration: 1 year\"), // hardcoded for now\n font: \"text-14\",\n });\n this._add(control);\n break;\n case \"rent-button\":\n control = new qx.ui.form.Button(this.tr(\"Rent\")).set({\n appearance: \"strong-button\",\n center: true,\n });\n this.bind(\"showRentButton\", control, \"visibility\", {\n converter: show => show ? \"visible\" : \"excluded\"\n });\n control.addListener(\"execute\", () => this.__rentUnit());\n this._add(control);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n // override\n _buildLayout: function(pricingUnit) {\n this.base(arguments, pricingUnit);\n\n this.getChildControl(\"rental-period\");\n\n // add price info\n const price = this.getChildControl(\"price\");\n pricingUnit.bind(\"cost\", price, \"value\", {\n converter: v => this.tr(\"Credits\") + \": \" + osparc.utils.Utils.addWhiteSpaces(v)\n });\n\n // add edit button\n this.getChildControl(\"edit-button\");\n\n // add rent button\n this.getChildControl(\"rent-button\");\n },\n\n __rentUnit: function() {\n const nSeats = parseInt(this.getUnitData().getExtraInfo()[\"num_of_seats\"]);\n const nCredits = this.getUnitData().getCost();\n const expirationDate = osparc.study.PricingUnitLicense.getExpirationDate();\n let msg = nSeats + \" seat\" + (nSeats > 1 ? \"s \" : \" \") + this.tr(\"will be available until \") + osparc.utils.Utils.formatDate(expirationDate);\n msg += `
The rental will cost ${nCredits} credits`;\n msg += `
I hereby accept the Terms and Conditions`;\n const confirmationWin = new osparc.ui.window.Confirmation(msg).set({\n caption: this.tr(\"Rent\"),\n confirmText: this.tr(\"Rent\"),\n });\n\n confirmationWin.open();\n confirmationWin.addListener(\"close\", () => {\n if (confirmationWin.getConfirmed()) {\n this.fireEvent(\"rentPricingUnit\");\n }\n }, this);\n },\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.pricing.PlanListItem\", {\n extend: qx.ui.core.Widget,\n implement : [qx.ui.form.IModel, osparc.filter.IFilterable],\n include : [qx.ui.form.MModelProperty, osparc.filter.MFilterable],\n\n construct: function() {\n this.base(arguments);\n\n const layout = new qx.ui.layout.Grid(20, 5);\n layout.setColumnFlex(2, 1);\n this._setLayout(layout);\n this.setPadding(10);\n\n this.getChildControl(\"title\");\n this.getChildControl(\"description\");\n this.getChildControl(\"classification\");\n this.getChildControl(\"edit-button\");\n\n this.addListener(\"pointerover\", this._onPointerOver, this);\n this.addListener(\"pointerout\", this._onPointerOut, this);\n },\n\n events: {\n /** (Fired by {@link qx.ui.form.List}) */\n \"action\": \"qx.event.type.Event\",\n \"editPricingPlan\": \"qx.event.type.Event\"\n },\n\n properties: {\n appearance: {\n refine: true,\n init: \"selectable\"\n },\n\n ppId: {\n check: \"Number\",\n nullable: true,\n apply: \"__applyPpId\",\n event: \"changePpId\"\n },\n\n ppKey: {\n check: \"String\",\n apply: \"__applyPpKey\",\n nullable: true,\n event: \"changePpKey\"\n },\n\n title: {\n check: \"String\",\n nullable: true,\n event: \"changeTitle\"\n },\n\n description: {\n check: \"String\",\n nullable: true,\n event: \"changeDescription\"\n },\n\n classification: {\n check: \"String\",\n nullable: true,\n event: \"changeClassification\"\n },\n\n isActive: {\n check: \"Boolean\",\n apply: \"__applyIsActive\",\n nullable : true,\n event: \"changeIsActive\"\n }\n },\n\n members: { // eslint-disable-line qx-rules/no-refs-in-members\n // overridden\n _forwardStates: {\n focused : true,\n hovered : true,\n selected : true,\n dragover : true\n },\n\n /**\n * Event handler for the pointer over event.\n */\n _onPointerOver: function() {\n this.addState(\"hovered\");\n },\n\n\n /**\n * Event handler for the pointer out event.\n */\n _onPointerOut : function() {\n this.removeState(\"hovered\");\n },\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"pp-id\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\",\n alignY: \"middle\",\n width: 35,\n });\n this._add(control, {\n row: 0,\n column: 0,\n rowSpan: 2\n });\n break;\n case \"pp-key\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\",\n alignY: \"middle\",\n width: 80,\n });\n this._add(control, {\n row: 0,\n column: 1,\n rowSpan: 2\n });\n break;\n case \"title\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\"\n });\n this.bind(\"title\", control, \"value\");\n this._add(control, {\n row: 0,\n column: 2\n });\n break;\n case \"description\":\n control = new qx.ui.basic.Label().set({\n font: \"text-13\"\n });\n this.bind(\"description\", control, \"value\");\n this._add(control, {\n row: 1,\n column: 2\n });\n break;\n case \"classification\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\",\n alignY: \"middle\",\n width: 60,\n });\n this.bind(\"classification\", control, \"value\");\n this._add(control, {\n row: 0,\n column: 3,\n rowSpan: 2\n });\n break;\n case \"is-active\":\n control = new qx.ui.basic.Label().set({\n font: \"text-14\",\n alignY: \"middle\"\n });\n this._add(control, {\n row: 0,\n column: 4,\n rowSpan: 2\n });\n break;\n case \"edit-button\":\n control = new qx.ui.form.Button(this.tr(\"Edit\")).set({\n alignY: \"middle\",\n allowGrowY: false\n });\n control.addListener(\"tap\", () => this.fireEvent(\"editPricingPlan\"));\n this._add(control, {\n row: 0,\n column: 5,\n rowSpan: 2\n });\n break;\n }\n if (control && id !== \"edit-button\") {\n // make edit button tappable\n control.set({\n anonymous: true\n });\n }\n\n return control || this.base(arguments, id);\n },\n\n __applyPpId: function(id) {\n if (id === null) {\n return;\n }\n const label = this.getChildControl(\"pp-id\");\n label.setValue(\"Id: \" + id);\n },\n\n __applyPpKey: function(id) {\n if (id === null) {\n return;\n }\n const label = this.getChildControl(\"pp-key\");\n label.setValue(\"Key: \" + id);\n },\n\n __applyIsActive: function(value) {\n if (value === null) {\n return;\n }\n const label = this.getChildControl(\"is-active\");\n label.setValue(value ? \"Active\" : \"Inactive\");\n },\n\n /**\n * Event handler for filtering events.\n */\n _filter: function() {\n this.exclude();\n },\n\n _unfilter: function() {\n this.show();\n },\n\n _shouldApplyFilter: function(data) {\n if (data.text) {\n const checks = [\n this.getTitle(),\n this.getDescription()\n ];\n if (checks.filter(check => check && check.toLowerCase().trim().includes(data.text)).length == 0) {\n return true;\n }\n }\n return false;\n },\n\n _shouldReactToFilter: function(data) {\n if (data.text && data.text.length > 1) {\n return true;\n }\n return false;\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.pricing.PlanEditor\", {\n extend: qx.ui.core.Widget,\n\n construct: function(pricingPlan) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n const ppKey = this.getChildControl(\"pp-key\");\n const name = this.getChildControl(\"name\");\n this.getChildControl(\"description\");\n this.getChildControl(\"classification\");\n const isActive = this.getChildControl(\"is-active\");\n\n const manager = this.__validator = new qx.ui.form.validation.Manager();\n ppKey.setRequired(true);\n name.setRequired(true);\n manager.add(ppKey);\n manager.add(name);\n\n if (pricingPlan) {\n this.__pricingPlan = osparc.utils.Utils.deepCloneObject(pricingPlan);\n this.set({\n ppKey: pricingPlan.getPricingPlanKey(),\n name: pricingPlan.getName(),\n description: pricingPlan.getDescription(),\n classification: pricingPlan.getClassification(),\n isActive: pricingPlan.getIsActive(),\n });\n ppKey.setEnabled(false);\n this.getChildControl(\"save\");\n } else {\n isActive.setEnabled(false);\n this.getChildControl(\"create\");\n }\n },\n\n properties: {\n ppKey: {\n check: \"String\",\n init: \"\",\n nullable: false,\n event: \"changePpKey\"\n },\n\n name: {\n check: \"String\",\n init: \"\",\n nullable: false,\n event: \"changeName\"\n },\n\n description: {\n check: \"String\",\n init: \"\",\n nullable: false,\n event: \"changeDescription\"\n },\n\n classification: {\n check: [\"TIER\", \"LICENSE\"],\n init: \"\",\n nullable: false,\n event: \"changeClassification\"\n },\n\n isActive: {\n check: \"Boolean\",\n init: true,\n nullable: false,\n event: \"changeIsActive\"\n }\n },\n\n events: {\n \"done\": \"qx.event.type.Event\",\n \"cancel\": \"qx.event.type.Event\"\n },\n\n members: {\n __pricingPlan: null,\n __validator: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"pp-key\": {\n control = new qx.ui.form.TextField().set({\n font: \"text-14\",\n placeholder: this.tr(\"Pricing Plan Key\")\n });\n this.bind(\"ppKey\", control, \"value\");\n control.bind(\"value\", this, \"ppKey\");\n this._add(control);\n break;\n }\n case \"name\": {\n control = new qx.ui.form.TextField().set({\n font: \"text-14\",\n placeholder: this.tr(\"Name\")\n });\n this.bind(\"name\", control, \"value\");\n control.bind(\"value\", this, \"name\");\n this._add(control);\n break;\n }\n case \"description\": {\n control = new qx.ui.form.TextArea().set({\n font: \"text-14\",\n placeholder: this.tr(\"Description\")\n });\n this.bind(\"description\", control, \"value\");\n control.bind(\"value\", this, \"description\");\n this._add(control);\n break;\n }\n case \"classification\": {\n control = new qx.ui.form.SelectBox().set({\n font: \"text-14\",\n });\n [\n \"TIER\",\n \"LICENSE\",\n ].forEach(c => {\n const cItem = new qx.ui.form.ListItem(c);\n control.add(cItem);\n });\n this.bind(\"classification\", control, \"value\");\n control.addListener(\"changeValue\", e => {\n const currentSelection = e.getData();\n this.setClassification(currentSelection.getLabel());\n }, this);\n this._add(control);\n break;\n }\n case \"is-active\": {\n control = new qx.ui.form.CheckBox().set({\n value: true\n });\n this.bind(\"isActive\", control, \"value\");\n control.bind(\"value\", this, \"isActive\");\n this._add(control);\n break;\n }\n case \"buttonsLayout\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(8).set({\n alignX: \"right\"\n }));\n const cancelButton = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"form-button-text\"\n });\n cancelButton.addListener(\"execute\", () => this.fireEvent(\"cancel\"), this);\n control.addAt(cancelButton, 0);\n this._add(control);\n break;\n }\n case \"create\": {\n const buttons = this.getChildControl(\"buttonsLayout\");\n control = new osparc.ui.form.FetchButton(this.tr(\"Create\")).set({\n appearance: \"form-button\"\n });\n control.addListener(\"execute\", () => {\n if (this.__validator.validate()) {\n control.setFetching(true);\n this.__createPricingPlan();\n }\n }, this);\n buttons.addAt(control, 1);\n break;\n }\n case \"save\": {\n const buttons = this.getChildControl(\"buttonsLayout\");\n control = new osparc.ui.form.FetchButton(this.tr(\"Save\")).set({\n appearance: \"form-button\"\n });\n control.addListener(\"execute\", () => {\n if (this.__validator.validate()) {\n control.setFetching(true);\n this.__updatePricingPlan();\n }\n }, this);\n buttons.addAt(control, 1);\n break;\n }\n }\n\n return control || this.base(arguments, id);\n },\n\n __createPricingPlan: function() {\n const ppKey = this.getPpKey();\n const name = this.getName();\n const description = this.getDescription();\n const classification = this.getClassification();\n const newPricingPlanData = {\n \"pricingPlanKey\": ppKey,\n \"displayName\": name,\n \"description\": description,\n \"classification\": classification,\n };\n osparc.store.Pricing.getInstance().postPricingPlan(newPricingPlanData)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(name + this.tr(\" successfully created\"));\n this.fireEvent(\"done\");\n })\n .catch(err => {\n const errorMsg = err.message || this.tr(\"Something went wrong creating \") + name;\n osparc.FlashMessenger.getInstance().logAs(errorMsg, \"ERROR\");\n console.error(err);\n })\n .finally(() => this.getChildControl(\"create\").setFetching(false));\n },\n\n __updatePricingPlan: function() {\n const updateData = {\n \"pricingPlanKey\": this.getPpKey(),\n \"displayName\": this.getName(),\n \"description\": this.getDescription(),\n \"classification\": this.getClassification(),\n \"isActive\": this.getIsActive(),\n };\n osparc.store.Pricing.getInstance().putPricingPlan(this.__pricingPlan[\"pricingPlanId\"], updateData)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Successfully updated\"));\n this.fireEvent(\"done\");\n })\n .catch(err => {\n const errorMsg = err.message || this.tr(\"Something went wrong\");\n osparc.FlashMessenger.getInstance().logAs(errorMsg, \"ERROR\");\n console.error(err);\n })\n .finally(() => this.getChildControl(\"save\").setFetching(false));\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2024 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.pricing.UnitsList\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(5));\n\n this.getChildControl(\"pricing-units-container\");\n this.getChildControl(\"create-pricing-unit\");\n },\n\n properties: {\n pricingPlanId: {\n check: \"Number\",\n init: null,\n nullable: false,\n apply: \"__fetchUnits\"\n }\n },\n\n members: {\n __model: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"pricing-units-container\":\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(10));\n this._addAt(control, 0, {\n flex: 1\n });\n break;\n case \"create-pricing-unit\":\n control = new qx.ui.form.Button().set({\n appearance: \"form-button\",\n label: this.tr(\"New Pricing Unit\"),\n alignX: \"center\",\n icon: \"@FontAwesome5Solid/plus/14\",\n allowGrowX: false\n });\n control.addListener(\"execute\", () => this.__openCreatePricingUnit());\n this._addAt(control, 1);\n }\n return control || this.base(arguments, id);\n },\n\n __fetchUnits: function() {\n osparc.store.Pricing.getInstance().fetchPricingUnits(this.getPricingPlanId())\n .then(pricingUnits => this.__populateList(pricingUnits));\n },\n\n __populateList: function(pricingUnits) {\n this.getChildControl(\"pricing-units-container\").removeAll();\n\n if (pricingUnits === null) {\n return;\n }\n\n pricingUnits.forEach(pricingUnit => {\n let pUnit = null;\n if (pricingUnit.getClassification() === \"LICENSE\") {\n pUnit = new osparc.study.PricingUnitLicense(pricingUnit).set({\n showRentButton: false,\n });\n } else {\n pUnit = new osparc.study.PricingUnitTier(pricingUnit).set({\n showAwsSpecificInfo: true,\n });\n }\n pUnit.set({\n showEditButton: true,\n });\n pUnit.addListener(\"editPricingUnit\", () => this.__openUpdatePricingUnit(pricingUnit));\n this.getChildControl(\"pricing-units-container\").add(pUnit);\n });\n\n const buttons = this.getChildControl(\"pricing-units-container\").getChildren();\n buttons.forEach(btn => {\n btn.setSelected(btn.getUnitData().getIsDefault());\n });\n },\n\n __openCreatePricingUnit: function() {\n const puCreator = new osparc.pricing.UnitEditor(this.getPricingPlanId(), null);\n const title = this.tr(\"Pricing Unit Creator\");\n const win = osparc.ui.window.Window.popUpInWindow(puCreator, title, 400, 250);\n puCreator.addListener(\"done\", () => {\n win.close();\n this.__fetchUnits();\n });\n puCreator.addListener(\"cancel\", () => win.close());\n },\n\n __openUpdatePricingUnit: function(pricingUnit) {\n const puEditor = new osparc.pricing.UnitEditor(this.getPricingPlanId(), pricingUnit);\n const title = this.tr(\"Pricing Unit Editor\");\n const win = osparc.ui.window.Window.popUpInWindow(puEditor, title, 400, 250);\n puEditor.addListener(\"done\", () => {\n win.close();\n this.__fetchUnits();\n });\n puEditor.addListener(\"cancel\", () => win.close());\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.pricing.ServicesList\", {\n extend: qx.ui.core.Widget,\n\n construct: function() {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(5));\n\n this.getChildControl(\"services-list\");\n this.getChildControl(\"add-service\");\n },\n\n properties: {\n pricingPlanId: {\n check: \"Number\",\n init: null,\n nullable: false,\n apply: \"__fetchServices\"\n }\n },\n\n members: {\n __model: null,\n __servicesModel: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"services-list\": {\n control = new osparc.service.ServiceList(\"adminPanel\");\n const scrolledServices = new qx.ui.container.Scroll();\n scrolledServices.add(control);\n this._addAt(scrolledServices, 0, {\n flex: 1\n });\n break;\n }\n case \"add-service\":\n control = new qx.ui.form.Button().set({\n appearance: \"form-button\",\n label: this.tr(\"Add Service\"),\n alignX: \"center\",\n icon: \"@FontAwesome5Solid/plus/14\",\n allowGrowX: false\n });\n control.addListener(\"execute\", () => this.__openAddServiceToPlan());\n this._addAt(control, 1);\n break;\n }\n return control || this.base(arguments, id);\n },\n\n __fetchServices: function() {\n const params = {\n url: {\n pricingPlanId: this.getPricingPlanId()\n }\n };\n osparc.data.Resources.fetch(\"billableServices\", \"get\", params)\n .then(data => this.__populateList(data));\n },\n\n __populateList: function(services) {\n // before accessing the metadata in a sync way, we need to bring them to the cache\n const metadataPromises = [];\n services.forEach(service => {\n const key = service[\"serviceKey\"];\n const version = service[\"serviceVersion\"];\n metadataPromises.push(osparc.store.Services.getService(key, version));\n });\n Promise.all(metadataPromises)\n .catch(err => console.error(err))\n .finally(() => {\n const sList = [];\n services.forEach(service => {\n const key = service[\"serviceKey\"];\n const version = service[\"serviceVersion\"];\n const serviceMetadata = osparc.store.Services.getMetadata(key, version);\n if (serviceMetadata) {\n sList.push(new osparc.data.model.Service(serviceMetadata));\n }\n });\n const servicesList = this.getChildControl(\"services-list\");\n servicesList.setModel(new qx.data.Array(sList));\n })\n },\n\n __openAddServiceToPlan: function() {\n const srvCat = new osparc.workbench.ServiceCatalog();\n srvCat.addListener(\"addService\", e => {\n const data = e.getData();\n const service = data.service;\n const params = {\n url: {\n pricingPlanId: this.getPricingPlanId()\n },\n data: {\n serviceKey: service.getKey(),\n serviceVersion: service.getVersion()\n }\n };\n osparc.data.Resources.fetch(\"billableServices\", \"post\", params)\n .then(() => this.__fetchServices());\n });\n srvCat.center();\n srvCat.open();\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2020 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Class.define(\"osparc.pricing.UnitEditor\", {\n extend: qx.ui.core.Widget,\n\n construct: function(pricingPlanId, pricingUnit) {\n this.base(arguments);\n\n this._setLayout(new qx.ui.layout.VBox(10));\n\n this.__validator = new qx.ui.form.validation.Manager();\n\n this.set({\n pricingPlanId\n });\n\n if (pricingUnit) {\n this.set({\n pricingUnitId: pricingUnit.getPricingUnitId(),\n unitName: pricingUnit.getName(),\n costPerUnit: pricingUnit.getCost(),\n default: pricingUnit.getIsDefault(),\n });\n const extraInfo = osparc.utils.Utils.deepCloneObject(pricingUnit.getExtraInfo());\n if (pricingUnit.getClassification() === \"TIER\") {\n this.set({\n specificInfo: pricingUnit.getSpecificInfo() && pricingUnit.getSpecificInfo()[\"aws_ec2_instances\"] ? pricingUnit.getSpecificInfo()[\"aws_ec2_instances\"].toString() : \"\",\n });\n // extract the required fields from the unitExtraInfo\n this.set({\n unitExtraInfoCPU: extraInfo[\"CPU\"],\n unitExtraInfoRAM: extraInfo[\"RAM\"],\n unitExtraInfoVRAM: extraInfo[\"VRAM\"]\n });\n delete extraInfo[\"CPU\"];\n delete extraInfo[\"RAM\"];\n delete extraInfo[\"VRAM\"];\n this.set({\n unitExtraInfo: extraInfo\n });\n } else if (pricingUnit.getClassification() === \"LICENSE\") {\n // extract the required fields from the unitExtraInfo\n this.set({\n unitExtraInfoNSeats: extraInfo[\"num_of_seats\"],\n });\n }\n this.getChildControl(\"save\");\n } else {\n this.getChildControl(\"create\");\n }\n },\n\n properties: {\n pricingPlanId: {\n check: \"Number\",\n init: null,\n nullable: false,\n apply: \"__applyPricingPlanId\"\n },\n\n pricingUnitId: {\n check: \"Number\",\n nullable: true,\n init: null,\n event: \"changePricingUnitId\"\n },\n\n unitName: {\n check: \"String\",\n init: \"\",\n nullable: false,\n event: \"changeUnitName\"\n },\n\n costPerUnit: {\n check: \"Number\",\n init: 0,\n nullable: false,\n event: \"changeCostPerUnit\"\n },\n\n comment: {\n check: \"String\",\n init: \"\",\n nullable: false,\n event: \"changeComment\"\n },\n\n specificInfo: {\n check: \"String\",\n init: null,\n nullable: true,\n event: \"changeSpecificInfo\"\n },\n\n unitExtraInfoCPU: {\n check: \"Number\",\n init: 0,\n nullable: false,\n event: \"changeUnitExtraInfoCPU\"\n },\n\n unitExtraInfoRAM: {\n check: \"Number\",\n init: 0,\n nullable: false,\n event: \"changeUnitExtraInfoRAM\"\n },\n\n unitExtraInfoVRAM: {\n check: \"Number\",\n init: 0,\n nullable: false,\n event: \"changeUnitExtraInfoVRAM\"\n },\n\n unitExtraInfo: {\n check: \"Object\",\n init: {},\n nullable: false,\n event: \"changeUnitExtraInfo\"\n },\n\n unitExtraInfoNSeats: {\n check: \"Number\",\n init: 1,\n nullable: false,\n event: \"changeUnitExtraInfoNSeats\"\n },\n\n default: {\n check: \"Boolean\",\n init: true,\n nullable: false,\n event: \"changeDefault\"\n }\n },\n\n events: {\n \"done\": \"qx.event.type.Event\",\n \"cancel\": \"qx.event.type.Event\"\n },\n\n members: {\n __validator: null,\n\n _createChildControlImpl: function(id) {\n let control;\n switch (id) {\n case \"unit-form\": {\n control = new qx.ui.form.Form();\n const formRenderer = new qx.ui.form.renderer.Single(control);\n this._add(formRenderer);\n break;\n }\n case \"unit-name\":\n control = new qx.ui.form.TextField().set({\n font: \"text-14\"\n });\n control.setRequired(true);\n this.__validator.add(control);\n this.bind(\"unitName\", control, \"value\");\n control.bind(\"value\", this, \"unitName\");\n this.getChildControl(\"unit-form\").add(control, this.tr(\"Unit Name\"));\n break;\n case \"cost-per-unit\":\n control = new qx.ui.form.Spinner().set({\n minimum: 0,\n maximum: 10000\n });\n control.setRequired(true);\n this.__validator.add(control);\n this.bind(\"costPerUnit\", control, \"value\");\n control.bind(\"value\", this, \"costPerUnit\");\n this.getChildControl(\"unit-form\").add(control, this.tr(\"Cost per unit\"));\n break;\n case \"comment\":\n control = new qx.ui.form.TextField().set({\n font: \"text-14\"\n });\n this.bind(\"comment\", control, \"value\");\n control.bind(\"value\", this, \"comment\");\n this.getChildControl(\"unit-form\").add(control, this.tr(\"Comment\"));\n break;\n case \"specific-info\": {\n control = new qx.ui.form.TextArea().set({\n font: \"text-14\"\n });\n this.__validator.add(control);\n this.bind(\"specificInfo\", control, \"value\");\n control.bind(\"value\", this, \"specificInfo\");\n this.getChildControl(\"unit-form\").add(control, this.tr(\"Specific info\"));\n break;\n }\n case \"unit-extra-info-cpu\": {\n control = new qx.ui.form.Spinner().set({\n minimum: 0,\n maximum: 10000\n });\n control.setRequired(true);\n this.bind(\"unitExtraInfoCPU\", control, \"value\");\n control.bind(\"value\", this, \"unitExtraInfoCPU\");\n this.getChildControl(\"unit-form\").add(control, this.tr(\"CPU\"));\n break;\n }\n case \"unit-extra-info-ram\": {\n control = new qx.ui.form.Spinner().set({\n minimum: 0,\n maximum: 10000\n });\n control.setRequired(true);\n this.bind(\"unitExtraInfoRAM\", control, \"value\");\n control.bind(\"value\", this, \"unitExtraInfoRAM\");\n this.getChildControl(\"unit-form\").add(control, this.tr(\"RAM\"));\n break;\n }\n case \"unit-extra-info-vram\": {\n control = new qx.ui.form.Spinner().set({\n minimum: 0,\n maximum: 10000\n });\n control.setRequired(true);\n this.bind(\"unitExtraInfoVRAM\", control, \"value\");\n control.bind(\"value\", this, \"unitExtraInfoVRAM\");\n this.getChildControl(\"unit-form\").add(control, this.tr(\"VRAM\"));\n break;\n }\n case \"unit-extra-info\": {\n control = new qx.ui.form.TextField().set({\n font: \"text-14\"\n });\n control.setRequired(true);\n this.__validator.add(control);\n this.bind(\"unitExtraInfo\", control, \"value\", {\n converter: v => JSON.stringify(v)\n });\n control.bind(\"value\", this, \"unitExtraInfo\", {\n converter: v => JSON.parse(v)\n });\n this.getChildControl(\"unit-form\").add(control, this.tr(\"More Extra Info\"));\n break;\n }\n case \"unit-extra-info-n-seats\": {\n control = new qx.ui.form.Spinner().set({\n minimum: 1,\n maximum: 10000\n });\n control.setRequired(true);\n this.__validator.add(control);\n this.bind(\"unitExtraInfoNSeats\", control, \"value\");\n control.bind(\"value\", this, \"unitExtraInfoNSeats\");\n this.getChildControl(\"unit-form\").add(control, this.tr(\"Number of Seats\"));\n break;\n }\n case \"is-default\": {\n control = new qx.ui.form.CheckBox().set({\n value: true\n });\n this.bind(\"default\", control, \"value\");\n control.bind(\"value\", this, \"default\");\n this.getChildControl(\"unit-form\").add(control, this.tr(\"Default\"));\n break;\n }\n case \"buttonsLayout\": {\n control = new qx.ui.container.Composite(new qx.ui.layout.HBox(8).set({\n alignX: \"right\"\n }));\n const cancelButton = new qx.ui.form.Button(this.tr(\"Cancel\")).set({\n appearance: \"form-button-text\"\n });\n cancelButton.addListener(\"execute\", () => this.fireEvent(\"cancel\"), this);\n control.addAt(cancelButton, 0);\n this._add(control);\n break;\n }\n case \"create\": {\n const buttons = this.getChildControl(\"buttonsLayout\");\n control = new osparc.ui.form.FetchButton(this.tr(\"Create\")).set({\n appearance: \"form-button\"\n });\n control.addListener(\"execute\", () => {\n if (this.__validator.validate()) {\n control.setFetching(true);\n this.__createPricingUnit();\n }\n }, this);\n buttons.addAt(control, 1);\n break;\n }\n case \"save\": {\n const buttons = this.getChildControl(\"buttonsLayout\");\n control = new osparc.ui.form.FetchButton(this.tr(\"Save\")).set({\n appearance: \"form-button\"\n });\n control.addListener(\"execute\", () => {\n if (this.__validator.validate()) {\n control.setFetching(true);\n this.__updatePricingUnit();\n }\n }, this);\n buttons.addAt(control, 1);\n break;\n }\n }\n\n return control || this.base(arguments, id);\n },\n\n __applyPricingPlanId: function(pricingPlanId) {\n const pricingPlan = osparc.store.Pricing.getInstance().getPricingPlan(pricingPlanId);\n if (pricingPlan) {\n this.getChildControl(\"unit-name\");\n this.getChildControl(\"cost-per-unit\");\n this.getChildControl(\"comment\");\n if (pricingPlan.getClassification() === \"TIER\") {\n this.getChildControl(\"specific-info\");\n this.getChildControl(\"unit-extra-info-cpu\");\n this.getChildControl(\"unit-extra-info-ram\");\n this.getChildControl(\"unit-extra-info-vram\");\n this.getChildControl(\"unit-extra-info\");\n } else if (pricingPlan.getClassification() === \"LICENSE\") {\n this.getChildControl(\"unit-extra-info-n-seats\");\n }\n this.getChildControl(\"is-default\");\n }\n },\n\n __createPricingUnit: function() {\n const data = {\n \"unitName\": this.getUnitName(),\n \"costPerUnit\": this.getCostPerUnit(),\n \"comment\": this.getComment(),\n \"default\": this.getDefault(),\n };\n\n const pricingPlan = osparc.store.Pricing.getInstance().getPricingPlan(this.getPricingPlanId());\n if (pricingPlan) {\n if (pricingPlan.getClassification() === \"TIER\") {\n const awsEc2Instances = [];\n const specificInfo = this.getSpecificInfo();\n if (specificInfo) {\n awsEc2Instances.push(specificInfo);\n }\n data[\"specificInfo\"] = {\n \"aws_ec2_instances\": awsEc2Instances\n };\n const extraInfo = {\n \"CPU\": this.getUnitExtraInfoCPU(),\n \"RAM\": this.getUnitExtraInfoRAM(),\n \"VRAM\": this.getUnitExtraInfoVRAM(),\n };\n Object.assign(extraInfo, this.getUnitExtraInfo());\n data[\"unitExtraInfo\"] = extraInfo;\n } else if (pricingPlan.getClassification() === \"LICENSE\") {\n data[\"specificInfo\"] = {\n \"aws_ec2_instances\": [],\n };\n data[\"unitExtraInfo\"] = {\n \"num_of_seats\": this.getUnitExtraInfoNSeats(),\n };\n }\n }\n\n osparc.store.Pricing.getInstance().createPricingUnit(this.getPricingPlanId(), data)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Successfully created\"));\n this.fireEvent(\"done\");\n })\n .catch(err => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong\"), \"ERROR\");\n console.error(err);\n })\n .finally(() => this.getChildControl(\"create\").setFetching(false));\n },\n\n __updatePricingUnit: function() {\n const data = {\n \"unitName\": this.getUnitName(),\n \"pricingUnitCostUpdate\": {\n \"costPerUnit\": this.getCostPerUnit(),\n \"comment\": this.getComment(),\n },\n \"default\": this.getDefault(),\n };\n\n const pricingPlan = osparc.store.Pricing.getInstance().getPricingPlan(this.getPricingPlanId());\n if (pricingPlan) {\n if (pricingPlan.getClassification() === \"TIER\") {\n const specificInfo = this.getSpecificInfo();\n data[\"specificInfo\"] = {\n \"aws_ec2_instances\": [specificInfo]\n };\n const extraInfo = {\n \"CPU\": this.getUnitExtraInfoCPU(),\n \"RAM\": this.getUnitExtraInfoRAM(),\n \"VRAM\": this.getUnitExtraInfoVRAM(),\n };\n Object.assign(extraInfo, this.getUnitExtraInfo());\n data[\"unitExtraInfo\"] = extraInfo;\n } else if (pricingPlan.getClassification() === \"LICENSE\") {\n const specificInfo = this.getSpecificInfo();\n data[\"specificInfo\"] = {\n \"aws_ec2_instances\": [specificInfo]\n };\n data[\"unitExtraInfo\"] = {\n \"num_of_seats\": this.getUnitExtraInfoNSeats(),\n };\n }\n }\n\n osparc.store.Pricing.getInstance().updatePricingUnit(this.getPricingPlanId(), this.getPricingUnitId(), data)\n .then(() => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Successfully updated\"));\n this.fireEvent(\"done\");\n })\n .catch(err => {\n osparc.FlashMessenger.getInstance().logAs(this.tr(\"Something went wrong\"), \"ERROR\");\n console.error(err);\n })\n .finally(() => this.getChildControl(\"save\").setFetching(false));\n }\n }\n});\n","qx.Theme.define(\"osparc.theme.mixin.Color\", {\n colors: {\n \"activitytree-background-cpu\": \"#2C7CCE\",\n \"activitytree-background-memory\": \"#358475\",\n\n \"ready-green\": \"#58A6FF\", // It is not really green because of reasons\n \"warning-yellow\": \"#F8DB1F\", // Speag yellow\n \"busy-orange\": \"#FFA500\",\n \"failed-red\": \"#FF2D2D\",\n \"danger-red\": \"#E00020\", // Z43 red\n \"text-on-warning\": \"#141414\",\n\n \"info\": \"rgba(9, 89, 122, 1)\", // #09597A\n \"info-bg\": \"rgba(9, 89, 122, 0.1)\", // #09597A1A\n \"success\": \"rgba(10, 182, 255, 1)\", // #0AB6FF\n \"success-bg\": \"rgba(10, 182, 255, 0.1)\", // #0AB6FF1A\n \"warning\": \"rgba(255, 205, 108, 1)\", // #FFCD6C\n \"warning-bg\": \"rgba(255, 205, 108, 0.1)\", // #FFCD6C1A\n \"error\": \"rgba(255, 108, 108, 1)\", // #FF6C6C\n \"error-bg\": \"rgba(255, 108, 108, 0.1)\", // #FF6C6C1A\n \"disclaimer-bg\": \"rgba(228, 234, 237, 1)\", // #E4EAEDAA\n\n \"pb-new\": \"rgba(10, 182, 255, 0.25)\",\n \"pb-study\": \"rgba(10, 182, 255, 0.4)\",\n \"pb-template\": \"rgba(9, 89, 122, 0.4)\",\n \"pb-service\": \"rgba(248, 219, 31, 0.4)\",\n \"pb-computational\": \"rgba(255, 165, 0, 0.4)\",\n \"pb-dynamic\": \"rgba(248, 219, 31, 0.4)\",\n \"pb-locked\": \"rgba(113, 157, 181, 0.4)\",\n\n // button\n \"default-button-text-outline\": \"contrasted-text-light\",\n \"default-button-text-action\": \"contrasted-text-dark\",\n \"default-button\": \"product-color\",\n \"default-button-background\": \"rgba(10, 182, 255, 0.1)\",\n \"default-button-hover\": \"rgba(4, 73, 102, 1)\",\n \"default-button-hover-background\": \"rgba(10, 182, 255, 0.25)\",\n \"default-button-active\": \"rgba(9, 89, 122, 1)\",\n \"default-button-active-background\": \"rgba(4, 73, 102, 0.4)\",\n \"default-button-focus\": \"product-color\",\n \"default-button-focus-background\": \"rgba(4, 73, 102, 0.4)\",\n \"default-button-disabled\": \"text-disabled\",\n \"default-button-disabled-background\": \"rgba(113, 157, 181, 0.25)\",\n \"default-button-focus-blur\": \"rgba(254, 233, 86, 1)\",\n\n // separator\n \"border-separator\": \"product-color\",\n\n \"visual-blue\": \"#007fd4\", // Visual Studio blue\n\n \"logger-warning-message\": \"warning-yellow\",\n \"logger-error-message\": \"failed-red\",\n\n \"workbench-edge-selected\": \"busy-orange\",\n\n\n // table\n \"table-header\": \"transparent\",\n \"table-header-foreground\": \"text\", // text color\n \"table-header-border\": \"text\", // header underline\n \"table-header-cell\": \"transparent\",\n\n // used in table code\n \"table-focus-indicator\": \"transparent\",\n \"table-row-background-even\": \"transparent\",\n \"table-row-background-odd\": \"transparent\",\n \"table-row-background-focused\": \"transparent\",\n \"table-row-background-focused-selected\": \"background-main-2\",\n \"table-row-background-selected\": \"background-main-2\",\n\n // foreground\n \"table-row-selected\": \"text\",\n \"table-row\": \"text\",\n\n // table grid color\n \"table-row-line\": \"transparent\",\n \"table-column-line\": \"transparent\",\n }\n});\n","\nqx.Class.define(\"osparc.theme.colorProvider.ColorProvider\", {\n type: \"static\",\n\n statics: {\n // nested-zmt-dark.json\n colors: {\n \"color\": {\n \"scales\": {\n \"static\": {\n \"base\": {\n \"0\": [\n 255,\n 255,\n 255,\n 1\n ],\n \"1\": [\n 248,\n 249,\n 249,\n 1\n ],\n \"2\": [\n 246,\n 247,\n 248,\n 1\n ],\n \"3\": [\n 244,\n 245,\n 246,\n 1\n ],\n \"4\": [\n 242,\n 244,\n 245,\n 1\n ],\n \"5\": [\n 240,\n 242,\n 243,\n 1\n ],\n \"6\": [\n 238,\n 240,\n 242,\n 1\n ],\n \"7\": [\n 236,\n 238,\n 240,\n 1\n ],\n \"8\": [\n 234,\n 237,\n 239,\n 1\n ],\n \"9\": [\n 232,\n 235,\n 237,\n 1\n ],\n \"10\": [\n 230,\n 233,\n 236,\n 1\n ],\n \"15\": [\n 220,\n 225,\n 228,\n 1\n ],\n \"20\": [\n 210,\n 216,\n 220,\n 1\n ],\n \"25\": [\n 199,\n 207,\n 212,\n 1\n ],\n \"30\": [\n 189,\n 197,\n 203,\n 1\n ],\n \"35\": [\n 179,\n 188,\n 195,\n 1\n ],\n \"40\": [\n 168,\n 178,\n 185,\n 1\n ],\n \"45\": [\n 158,\n 169,\n 176,\n 1\n ],\n \"50\": [\n 148,\n 159,\n 166,\n 1\n ],\n \"55\": [\n 137,\n 148,\n 156,\n 1\n ],\n \"60\": [\n 127,\n 138,\n 145,\n 1\n ],\n \"65\": [\n 116,\n 127,\n 134,\n 1\n ],\n \"70\": [\n 106,\n 116,\n 123,\n 1\n ],\n \"75\": [\n 95,\n 104,\n 110,\n 1\n ],\n \"80\": [\n 83,\n 92,\n 98,\n 1\n ],\n \"85\": [\n 72,\n 79,\n 84,\n 1\n ],\n \"90\": [\n 59,\n 66,\n 70,\n 1\n ],\n \"95\": [\n 46,\n 52,\n 55,\n 1\n ],\n \"100\": [\n 32,\n 36,\n 38,\n 1\n ],\n \"101\": [\n 28,\n 31,\n 34,\n 1\n ],\n \"102\": [\n 24,\n 27,\n 29,\n 1\n ],\n \"103\": [\n 19,\n 22,\n 24,\n 1\n ],\n \"104\": [\n 13,\n 16,\n 17,\n 1\n ],\n \"105\": [\n 7,\n 8,\n 9,\n 1\n ]\n },\n \"warning\": {\n \"2\": [\n 255,\n 245,\n 238,\n 1\n ],\n \"4\": [\n 255,\n 241,\n 230,\n 1\n ],\n \"5\": [\n 255,\n 239,\n 226,\n 1\n ],\n \"6\": [\n 255,\n 237,\n 222,\n 1\n ],\n \"8\": [\n 255,\n 233,\n 215,\n 1\n ],\n \"10\": [\n 255,\n 228,\n 207,\n 1\n ],\n \"15\": [\n 255,\n 217,\n 186,\n 1\n ],\n \"20\": [\n 255,\n 205,\n 165,\n 1\n ],\n \"25\": [\n 254,\n 193,\n 142,\n 1\n ],\n \"30\": [\n 254,\n 181,\n 117,\n 1\n ],\n \"35\": [\n 253,\n 168,\n 89,\n 1\n ],\n \"40\": [\n 251,\n 154,\n 56,\n 1\n ],\n \"45\": [\n 243,\n 143,\n 32,\n 1\n ],\n \"50\": [\n 229,\n 133,\n 22,\n 1\n ],\n \"55\": [\n 215,\n 124,\n 16,\n 1\n ],\n \"60\": [\n 201,\n 115,\n 12,\n 1\n ],\n \"65\": [\n 185,\n 106,\n 9,\n 1\n ],\n \"70\": [\n 169,\n 96,\n 7,\n 1\n ],\n \"75\": [\n 153,\n 86,\n 5,\n 1\n ],\n \"80\": [\n 136,\n 76,\n 4,\n 1\n ],\n \"85\": [\n 118,\n 65,\n 3,\n 1\n ],\n \"90\": [\n 99,\n 54,\n 2,\n 1\n ],\n \"95\": [\n 79,\n 42,\n 1,\n 1\n ],\n \"100\": [\n 56,\n 28,\n 1,\n 1\n ],\n \"101\": [\n 50,\n 24,\n 1,\n 1\n ],\n \"102\": [\n 44,\n 21,\n 0,\n 1\n ],\n \"103\": [\n 36,\n 16,\n 0,\n 1\n ],\n \"104\": [\n 28,\n 11,\n 0,\n 1\n ],\n \"105\": [\n 17,\n 5,\n 0,\n 1\n ]\n },\n \"danger\": {\n \"2\": [\n 255,\n 245,\n 243,\n 1\n ],\n \"4\": [\n 255,\n 240,\n 238,\n 1\n ],\n \"5\": [\n 255,\n 238,\n 236,\n 1\n ],\n \"6\": [\n 255,\n 236,\n 233,\n 1\n ],\n \"8\": [\n 255,\n 231,\n 228,\n 1\n ],\n \"10\": [\n 255,\n 227,\n 223,\n 1\n ],\n \"15\": [\n 254,\n 215,\n 210,\n 1\n ],\n \"20\": [\n 254,\n 203,\n 197,\n 1\n ],\n \"25\": [\n 254,\n 190,\n 183,\n 1\n ],\n \"30\": [\n 254,\n 177,\n 168,\n 1\n ],\n \"35\": [\n 254,\n 163,\n 153,\n 1\n ],\n \"40\": [\n 253,\n 148,\n 138,\n 1\n ],\n \"45\": [\n 253,\n 132,\n 121,\n 1\n ],\n \"50\": [\n 252,\n 114,\n 104,\n 1\n ],\n \"55\": [\n 250,\n 94,\n 86,\n 1\n ],\n \"60\": [\n 248,\n 70,\n 66,\n 1\n ],\n \"65\": [\n 240,\n 45,\n 49,\n 1\n ],\n \"70\": [\n 221,\n 36,\n 42,\n 1\n ],\n \"75\": [\n 201,\n 30,\n 36,\n 1\n ],\n \"80\": [\n 179,\n 24,\n 30,\n 1\n ],\n \"85\": [\n 156,\n 19,\n 25,\n 1\n ],\n \"90\": [\n 132,\n 15,\n 19,\n 1\n ],\n \"95\": [\n 106,\n 10,\n 13,\n 1\n ],\n \"100\": [\n 76,\n 5,\n 7,\n 1\n ],\n \"101\": [\n 69,\n 4,\n 6,\n 1\n ],\n \"102\": [\n 60,\n 3,\n 4,\n 1\n ],\n \"103\": [\n 51,\n 2,\n 3,\n 1\n ],\n \"104\": [\n 40,\n 1,\n 2,\n 1\n ],\n \"105\": [\n 26,\n 1,\n 1,\n 1\n ]\n },\n \"zmt\": {\n \"2\": [\n 239,\n 248,\n 255,\n 1\n ],\n \"4\": [\n 232,\n 245,\n 255,\n 1\n ],\n \"5\": [\n 229,\n 244,\n 254,\n 1\n ],\n \"6\": [\n 225,\n 242,\n 254,\n 1\n ],\n \"8\": [\n 218,\n 239,\n 254,\n 1\n ],\n \"10\": [\n 211,\n 236,\n 254,\n 1\n ],\n \"15\": [\n 193,\n 229,\n 254,\n 1\n ],\n \"20\": [\n 173,\n 221,\n 254,\n 1\n ],\n \"25\": [\n 153,\n 213,\n 253,\n 1\n ],\n \"30\": [\n 132,\n 204,\n 252,\n 1\n ],\n \"35\": [\n 109,\n 195,\n 251,\n 1\n ],\n \"40\": [\n 85,\n 186,\n 248,\n 1\n ],\n \"45\": [\n 59,\n 176,\n 243,\n 1\n ],\n \"50\": [\n 45,\n 166,\n 232,\n 1\n ],\n \"55\": [\n 35,\n 155,\n 219,\n 1\n ],\n \"60\": [\n 27,\n 144,\n 205,\n 1\n ],\n \"65\": [\n 22,\n 133,\n 190,\n 1\n ],\n \"70\": [\n 17,\n 121,\n 173,\n 1\n ],\n \"75\": [\n 14,\n 109,\n 157,\n 1\n ],\n \"80\": [\n 11,\n 96,\n 139,\n 1\n ],\n \"85\": [\n 8,\n 83,\n 121,\n 1\n ],\n \"90\": [\n 6,\n 69,\n 102,\n 1\n ],\n \"95\": [\n 4,\n 54,\n 81,\n 1\n ],\n \"100\": [\n 2,\n 38,\n 58,\n 1\n ],\n \"101\": [\n 1,\n 33,\n 52,\n 1\n ],\n \"102\": [\n 1,\n 28,\n 45,\n 1\n ],\n \"103\": [\n 1,\n 23,\n 38,\n 1\n ],\n \"104\": [\n 1,\n 17,\n 29,\n 1\n ],\n \"105\": [\n 0,\n 9,\n 18,\n 1\n ]\n },\n \"speag\": {\n \"2\": [\n 255,\n 248,\n 211,\n 1\n ],\n \"4\": [\n 255,\n 244,\n 192,\n 1\n ],\n \"5\": [\n 255,\n 243,\n 182,\n 1\n ],\n \"6\": [\n 255,\n 241,\n 172,\n 1\n ],\n \"8\": [\n 255,\n 237,\n 151,\n 1\n ],\n \"10\": [\n 255,\n 233,\n 129,\n 1\n ],\n \"15\": [\n 255,\n 223,\n 50,\n 1\n ],\n \"20\": [\n 247,\n 214,\n 0,\n 1\n ],\n \"25\": [\n 236,\n 205,\n 0,\n 1\n ],\n \"30\": [\n 226,\n 195,\n 0,\n 1\n ],\n \"35\": [\n 215,\n 186,\n 0,\n 1\n ],\n \"40\": [\n 204,\n 176,\n 0,\n 1\n ],\n \"45\": [\n 192,\n 166,\n 0,\n 1\n ],\n \"50\": [\n 181,\n 156,\n 0,\n 1\n ],\n \"55\": [\n 169,\n 146,\n 0,\n 1\n ],\n \"60\": [\n 157,\n 135,\n 0,\n 1\n ],\n \"65\": [\n 145,\n 125,\n 0,\n 1\n ],\n \"70\": [\n 132,\n 114,\n 0,\n 1\n ],\n \"75\": [\n 119,\n 102,\n 0,\n 1\n ],\n \"80\": [\n 105,\n 90,\n 0,\n 1\n ],\n \"85\": [\n 91,\n 78,\n 0,\n 1\n ],\n \"90\": [\n 76,\n 65,\n 0,\n 1\n ],\n \"95\": [\n 60,\n 51,\n 0,\n 1\n ],\n \"100\": [\n 42,\n 35,\n 0,\n 1\n ],\n \"101\": [\n 37,\n 31,\n 0,\n 1\n ],\n \"102\": [\n 32,\n 26,\n 0,\n 1\n ],\n \"103\": [\n 26,\n 21,\n 0,\n 1\n ],\n \"104\": [\n 19,\n 15,\n 0,\n 1\n ],\n \"105\": [\n 11,\n 8,\n 0,\n 1\n ]\n },\n \"inversed\": {\n \"base\": {\n \"0\": [\n 255,\n 255,\n 255,\n 1\n ],\n \"1\": [\n 248,\n 249,\n 249,\n 1\n ],\n \"2\": [\n 246,\n 247,\n 248,\n 1\n ],\n \"3\": [\n 244,\n 245,\n 246,\n 1\n ],\n \"4\": [\n 242,\n 244,\n 245,\n 1\n ],\n \"5\": [\n 240,\n 242,\n 243,\n 1\n ],\n \"6\": [\n 238,\n 240,\n 242,\n 1\n ],\n \"7\": [\n 236,\n 238,\n 240,\n 1\n ],\n \"8\": [\n 234,\n 237,\n 239,\n 1\n ],\n \"9\": [\n 232,\n 235,\n 237,\n 1\n ],\n \"10\": [\n 230,\n 233,\n 236,\n 1\n ],\n \"15\": [\n 220,\n 225,\n 228,\n 1\n ],\n \"20\": [\n 210,\n 216,\n 220,\n 1\n ],\n \"25\": [\n 199,\n 207,\n 212,\n 1\n ],\n \"30\": [\n 189,\n 197,\n 203,\n 1\n ],\n \"35\": [\n 179,\n 188,\n 195,\n 1\n ],\n \"40\": [\n 168,\n 178,\n 185,\n 1\n ],\n \"45\": [\n 158,\n 169,\n 176,\n 1\n ],\n \"50\": [\n 148,\n 159,\n 166,\n 1\n ],\n \"55\": [\n 137,\n 148,\n 156,\n 1\n ],\n \"60\": [\n 127,\n 138,\n 145,\n 1\n ],\n \"65\": [\n 116,\n 127,\n 134,\n 1\n ],\n \"70\": [\n 106,\n 116,\n 123,\n 1\n ],\n \"75\": [\n 95,\n 104,\n 110,\n 1\n ],\n \"80\": [\n 83,\n 92,\n 98,\n 1\n ],\n \"85\": [\n 72,\n 79,\n 84,\n 1\n ],\n \"90\": [\n 59,\n 66,\n 70,\n 1\n ],\n \"95\": [\n 46,\n 52,\n 55,\n 1\n ],\n \"100\": [\n 32,\n 36,\n 38,\n 1\n ],\n \"101\": [\n 28,\n 31,\n 34,\n 1\n ],\n \"102\": [\n 24,\n 27,\n 29,\n 1\n ],\n \"103\": [\n 19,\n 22,\n 24,\n 1\n ],\n \"104\": [\n 13,\n 16,\n 17,\n 1\n ],\n \"105\": [\n 7,\n 8,\n 9,\n 1\n ]\n },\n \"warning\": {\n \"2\": [\n 255,\n 245,\n 238,\n 1\n ],\n \"4\": [\n 255,\n 241,\n 230,\n 1\n ],\n \"5\": [\n 255,\n 239,\n 226,\n 1\n ],\n \"6\": [\n 255,\n 237,\n 222,\n 1\n ],\n \"8\": [\n 255,\n 233,\n 215,\n 1\n ],\n \"10\": [\n 255,\n 228,\n 207,\n 1\n ],\n \"15\": [\n 255,\n 217,\n 186,\n 1\n ],\n \"20\": [\n 255,\n 205,\n 165,\n 1\n ],\n \"25\": [\n 254,\n 193,\n 142,\n 1\n ],\n \"30\": [\n 254,\n 181,\n 117,\n 1\n ],\n \"35\": [\n 253,\n 168,\n 89,\n 1\n ],\n \"40\": [\n 251,\n 154,\n 56,\n 1\n ],\n \"45\": [\n 243,\n 143,\n 32,\n 1\n ],\n \"50\": [\n 229,\n 133,\n 22,\n 1\n ],\n \"55\": [\n 215,\n 124,\n 16,\n 1\n ],\n \"60\": [\n 201,\n 115,\n 12,\n 1\n ],\n \"65\": [\n 185,\n 106,\n 9,\n 1\n ],\n \"70\": [\n 169,\n 96,\n 7,\n 1\n ],\n \"75\": [\n 153,\n 86,\n 5,\n 1\n ],\n \"80\": [\n 136,\n 76,\n 4,\n 1\n ],\n \"85\": [\n 118,\n 65,\n 3,\n 1\n ],\n \"90\": [\n 99,\n 54,\n 2,\n 1\n ],\n \"95\": [\n 79,\n 42,\n 1,\n 1\n ],\n \"100\": [\n 56,\n 28,\n 1,\n 1\n ],\n \"101\": [\n 50,\n 24,\n 1,\n 1\n ],\n \"102\": [\n 44,\n 21,\n 0,\n 1\n ],\n \"103\": [\n 36,\n 16,\n 0,\n 1\n ],\n \"104\": [\n 28,\n 11,\n 0,\n 1\n ],\n \"105\": [\n 17,\n 5,\n 0,\n 1\n ]\n },\n \"danger\": {\n \"2\": [\n 255,\n 245,\n 243,\n 1\n ],\n \"4\": [\n 255,\n 240,\n 238,\n 1\n ],\n \"5\": [\n 255,\n 238,\n 236,\n 1\n ],\n \"6\": [\n 255,\n 236,\n 233,\n 1\n ],\n \"8\": [\n 255,\n 231,\n 228,\n 1\n ],\n \"10\": [\n 255,\n 227,\n 223,\n 1\n ],\n \"15\": [\n 254,\n 215,\n 210,\n 1\n ],\n \"20\": [\n 254,\n 203,\n 197,\n 1\n ],\n \"25\": [\n 254,\n 190,\n 183,\n 1\n ],\n \"30\": [\n 254,\n 177,\n 168,\n 1\n ],\n \"35\": [\n 254,\n 163,\n 153,\n 1\n ],\n \"40\": [\n 253,\n 148,\n 138,\n 1\n ],\n \"45\": [\n 253,\n 132,\n 121,\n 1\n ],\n \"50\": [\n 252,\n 114,\n 104,\n 1\n ],\n \"55\": [\n 250,\n 94,\n 86,\n 1\n ],\n \"60\": [\n 248,\n 70,\n 66,\n 1\n ],\n \"65\": [\n 240,\n 45,\n 49,\n 1\n ],\n \"70\": [\n 221,\n 36,\n 42,\n 1\n ],\n \"75\": [\n 201,\n 30,\n 36,\n 1\n ],\n \"80\": [\n 179,\n 24,\n 30,\n 1\n ],\n \"85\": [\n 156,\n 19,\n 25,\n 1\n ],\n \"90\": [\n 132,\n 15,\n 19,\n 1\n ],\n \"95\": [\n 106,\n 10,\n 13,\n 1\n ],\n \"100\": [\n 76,\n 5,\n 7,\n 1\n ],\n \"101\": [\n 69,\n 4,\n 6,\n 1\n ],\n \"102\": [\n 60,\n 3,\n 4,\n 1\n ],\n \"103\": [\n 51,\n 2,\n 3,\n 1\n ],\n \"104\": [\n 40,\n 1,\n 2,\n 1\n ],\n \"105\": [\n 26,\n 1,\n 1,\n 1\n ]\n },\n \"zmt\": {\n \"2\": [\n 239,\n 248,\n 255,\n 1\n ],\n \"4\": [\n 232,\n 245,\n 255,\n 1\n ],\n \"5\": [\n 229,\n 244,\n 254,\n 1\n ],\n \"6\": [\n 225,\n 242,\n 254,\n 1\n ],\n \"8\": [\n 218,\n 239,\n 254,\n 1\n ],\n \"10\": [\n 211,\n 236,\n 254,\n 1\n ],\n \"15\": [\n 193,\n 229,\n 254,\n 1\n ],\n \"20\": [\n 173,\n 221,\n 254,\n 1\n ],\n \"25\": [\n 153,\n 213,\n 253,\n 1\n ],\n \"30\": [\n 132,\n 204,\n 252,\n 1\n ],\n \"35\": [\n 109,\n 195,\n 251,\n 1\n ],\n \"40\": [\n 85,\n 186,\n 248,\n 1\n ],\n \"45\": [\n 59,\n 176,\n 243,\n 1\n ],\n \"50\": [\n 45,\n 166,\n 232,\n 1\n ],\n \"55\": [\n 35,\n 155,\n 219,\n 1\n ],\n \"60\": [\n 27,\n 144,\n 205,\n 1\n ],\n \"65\": [\n 22,\n 133,\n 190,\n 1\n ],\n \"70\": [\n 17,\n 121,\n 173,\n 1\n ],\n \"75\": [\n 14,\n 109,\n 157,\n 1\n ],\n \"80\": [\n 11,\n 96,\n 139,\n 1\n ],\n \"85\": [\n 8,\n 83,\n 121,\n 1\n ],\n \"90\": [\n 6,\n 69,\n 102,\n 1\n ],\n \"95\": [\n 4,\n 54,\n 81,\n 1\n ],\n \"100\": [\n 2,\n 38,\n 58,\n 1\n ],\n \"101\": [\n 1,\n 33,\n 52,\n 1\n ],\n \"102\": [\n 1,\n 28,\n 45,\n 1\n ],\n \"103\": [\n 1,\n 23,\n 38,\n 1\n ],\n \"104\": [\n 1,\n 17,\n 29,\n 1\n ],\n \"105\": [\n 0,\n 9,\n 18,\n 1\n ]\n },\n \"speag\": {\n \"2\": [\n 255,\n 248,\n 211,\n 1\n ],\n \"4\": [\n 255,\n 244,\n 192,\n 1\n ],\n \"5\": [\n 255,\n 243,\n 182,\n 1\n ],\n \"6\": [\n 255,\n 241,\n 172,\n 1\n ],\n \"8\": [\n 255,\n 237,\n 151,\n 1\n ],\n \"10\": [\n 255,\n 233,\n 129,\n 1\n ],\n \"15\": [\n 255,\n 223,\n 50,\n 1\n ],\n \"20\": [\n 247,\n 214,\n 0,\n 1\n ],\n \"25\": [\n 236,\n 205,\n 0,\n 1\n ],\n \"30\": [\n 226,\n 195,\n 0,\n 1\n ],\n \"35\": [\n 215,\n 186,\n 0,\n 1\n ],\n \"40\": [\n 204,\n 176,\n 0,\n 1\n ],\n \"45\": [\n 192,\n 166,\n 0,\n 1\n ],\n \"50\": [\n 181,\n 156,\n 0,\n 1\n ],\n \"55\": [\n 169,\n 146,\n 0,\n 1\n ],\n \"60\": [\n 157,\n 135,\n 0,\n 1\n ],\n \"65\": [\n 145,\n 125,\n 0,\n 1\n ],\n \"70\": [\n 132,\n 114,\n 0,\n 1\n ],\n \"75\": [\n 119,\n 102,\n 0,\n 1\n ],\n \"80\": [\n 105,\n 90,\n 0,\n 1\n ],\n \"85\": [\n 91,\n 78,\n 0,\n 1\n ],\n \"90\": [\n 76,\n 65,\n 0,\n 1\n ],\n \"95\": [\n 60,\n 51,\n 0,\n 1\n ],\n \"100\": [\n 42,\n 35,\n 0,\n 1\n ],\n \"101\": [\n 37,\n 31,\n 0,\n 1\n ],\n \"102\": [\n 32,\n 26,\n 0,\n 1\n ],\n \"103\": [\n 26,\n 21,\n 0,\n 1\n ],\n \"104\": [\n 19,\n 15,\n 0,\n 1\n ],\n \"105\": [\n 11,\n 8,\n 0,\n 1\n ]\n }\n }\n },\n \"zmt\": {\n \"2\": [\n 1,\n 32,\n 50,\n 1\n ],\n \"4\": [\n 2,\n 42,\n 63,\n 1\n ],\n \"5\": [\n 3,\n 45,\n 68,\n 1\n ],\n \"6\": [\n 3,\n 49,\n 73,\n 1\n ],\n \"8\": [\n 4,\n 56,\n 83,\n 1\n ],\n \"10\": [\n 5,\n 62,\n 92,\n 1\n ],\n \"15\": [\n 7,\n 77,\n 113,\n 1\n ],\n \"20\": [\n 10,\n 91,\n 132,\n 1\n ],\n \"25\": [\n 13,\n 105,\n 151,\n 1\n ],\n \"30\": [\n 16,\n 117,\n 168,\n 1\n ],\n \"35\": [\n 20,\n 129,\n 184,\n 1\n ],\n \"40\": [\n 25,\n 140,\n 200,\n 1\n ],\n \"45\": [\n 32,\n 151,\n 214,\n 1\n ],\n \"50\": [\n 41,\n 162,\n 227,\n 1\n ],\n \"55\": [\n 53,\n 172,\n 239,\n 1\n ],\n \"60\": [\n 74,\n 182,\n 246,\n 1\n ],\n \"65\": [\n 97,\n 191,\n 250,\n 1\n ],\n \"70\": [\n 120,\n 200,\n 252,\n 1\n ],\n \"75\": [\n 141,\n 208,\n 253,\n 1\n ],\n \"80\": [\n 161,\n 216,\n 253,\n 1\n ],\n \"85\": [\n 179,\n 223,\n 254,\n 1\n ],\n \"90\": [\n 197,\n 231,\n 254,\n 1\n ],\n \"95\": [\n 214,\n 238,\n 254,\n 1\n ],\n \"100\": [\n 230,\n 245,\n 255,\n 1\n ],\n \"101\": [\n 234,\n 246,\n 255,\n 1\n ],\n \"102\": [\n 237,\n 247,\n 255,\n 1\n ],\n \"103\": [\n 240,\n 249,\n 255,\n 1\n ],\n \"104\": [\n 243,\n 250,\n 255,\n 1\n ],\n \"105\": [\n 246,\n 251,\n 255,\n 1\n ]\n },\n \"speag\": {\n \"2\": [\n 36,\n 30,\n 0,\n 1\n ],\n \"4\": [\n 46,\n 38,\n 0,\n 1\n ],\n \"5\": [\n 50,\n 42,\n 0,\n 1\n ],\n \"6\": [\n 54,\n 45,\n 0,\n 1\n ],\n \"8\": [\n 61,\n 52,\n 0,\n 1\n ],\n \"10\": [\n 68,\n 58,\n 0,\n 1\n ],\n \"15\": [\n 85,\n 72,\n 0,\n 1\n ],\n \"20\": [\n 100,\n 86,\n 0,\n 1\n ],\n \"25\": [\n 114,\n 98,\n 0,\n 1\n ],\n \"30\": [\n 128,\n 110,\n 0,\n 1\n ],\n \"35\": [\n 141,\n 121,\n 0,\n 1\n ],\n \"40\": [\n 153,\n 132,\n 0,\n 1\n ],\n \"45\": [\n 165,\n 142,\n 0,\n 1\n ],\n \"50\": [\n 176,\n 152,\n 0,\n 1\n ],\n \"55\": [\n 188,\n 162,\n 0,\n 1\n ],\n \"60\": [\n 199,\n 172,\n 0,\n 1\n ],\n \"65\": [\n 209,\n 181,\n 0,\n 1\n ],\n \"70\": [\n 220,\n 190,\n 0,\n 1\n ],\n \"75\": [\n 230,\n 199,\n 0,\n 1\n ],\n \"80\": [\n 240,\n 208,\n 0,\n 1\n ],\n \"85\": [\n 250,\n 216,\n 0,\n 1\n ],\n \"90\": [\n 255,\n 226,\n 75,\n 1\n ],\n \"95\": [\n 255,\n 235,\n 138,\n 1\n ],\n \"100\": [\n 255,\n 243,\n 186,\n 1\n ],\n \"101\": [\n 255,\n 245,\n 195,\n 1\n ],\n \"102\": [\n 255,\n 246,\n 204,\n 1\n ],\n \"103\": [\n 255,\n 248,\n 213,\n 1\n ],\n \"104\": [\n 255,\n 249,\n 221,\n 1\n ],\n \"105\": [\n 255,\n 251,\n 230,\n 1\n ]\n },\n \"base\": {\n \"0\": [\n 0,\n 0,\n 0,\n 1\n ],\n \"1\": [\n 22,\n 25,\n 27,\n 1\n ],\n \"2\": [\n 27,\n 30,\n 33,\n 1\n ],\n \"3\": [\n 31,\n 35,\n 38,\n 1\n ],\n \"4\": [\n 35,\n 39,\n 42,\n 1\n ],\n \"5\": [\n 38,\n 43,\n 46,\n 1\n ],\n \"6\": [\n 41,\n 46,\n 50,\n 1\n ],\n \"7\": [\n 45,\n 50,\n 53,\n 1\n ],\n \"8\": [\n 47,\n 53,\n 57,\n 1\n ],\n \"9\": [\n 50,\n 56,\n 60,\n 1\n ],\n \"10\": [\n 53,\n 59,\n 63,\n 1\n ],\n \"15\": [\n 67,\n 74,\n 79,\n 1\n ],\n \"20\": [\n 79,\n 87,\n 93,\n 1\n ],\n \"25\": [\n 91,\n 100,\n 106,\n 1\n ],\n \"30\": [\n 102,\n 112,\n 119,\n 1\n ],\n \"35\": [\n 113,\n 123,\n 130,\n 1\n ],\n \"40\": [\n 123,\n 134,\n 142,\n 1\n ],\n \"45\": [\n 134,\n 145,\n 152,\n 1\n ],\n \"50\": [\n 144,\n 155,\n 162,\n 1\n ],\n \"55\": [\n 154,\n 165,\n 172,\n 1\n ],\n \"60\": [\n 164,\n 174,\n 181,\n 1\n ],\n \"65\": [\n 174,\n 183,\n 190,\n 1\n ],\n \"70\": [\n 184,\n 192,\n 199,\n 1\n ],\n \"75\": [\n 193,\n 201,\n 207,\n 1\n ],\n \"80\": [\n 203,\n 210,\n 215,\n 1\n ],\n \"85\": [\n 213,\n 218,\n 222,\n 1\n ],\n \"90\": [\n 222,\n 227,\n 230,\n 1\n ],\n \"95\": [\n 231,\n 235,\n 237,\n 1\n ],\n \"100\": [\n 241,\n 243,\n 244,\n 1\n ],\n \"101\": [\n 243,\n 244,\n 245,\n 1\n ],\n \"102\": [\n 244,\n 246,\n 247,\n 1\n ],\n \"103\": [\n 246,\n 247,\n 248,\n 1\n ],\n \"104\": [\n 248,\n 249,\n 250,\n 1\n ],\n \"105\": [\n 250,\n 251,\n 251,\n 1\n ],\n \"translucent\": {\n \"0\": {\n \"0\": [\n 0,\n 0,\n 0,\n 0\n ],\n \"5\": [\n 0,\n 0,\n 0,\n 0.05\n ],\n \"10\": [\n 0,\n 0,\n 0,\n 0.1\n ],\n \"15\": [\n 0,\n 0,\n 0,\n 0.15\n ],\n \"20\": [\n 0,\n 0,\n 0,\n 0.2\n ],\n \"25\": [\n 0,\n 0,\n 0,\n 0.25\n ],\n \"30\": [\n 0,\n 0,\n 0,\n 0.3\n ],\n \"35\": [\n 0,\n 0,\n 0,\n 0.35\n ],\n \"40\": [\n 0,\n 0,\n 0,\n 0.4\n ],\n \"45\": [\n 0,\n 0,\n 0,\n 0.45\n ],\n \"50\": [\n 0,\n 0,\n 0,\n 0.5\n ],\n \"55\": [\n 0,\n 0,\n 0,\n 0.55\n ],\n \"60\": [\n 0,\n 0,\n 0,\n 0.6\n ],\n \"65\": [\n 0,\n 0,\n 0,\n 0.65\n ],\n \"70\": [\n 0,\n 0,\n 0,\n 0.7\n ],\n \"75\": [\n 0,\n 0,\n 0,\n 0.75\n ],\n \"80\": [\n 0,\n 0,\n 0,\n 0.8\n ],\n \"85\": [\n 0,\n 0,\n 0,\n 0.85\n ],\n \"90\": [\n 0,\n 0,\n 0,\n 0.9\n ],\n \"95\": [\n 0,\n 0,\n 0,\n 0.95\n ],\n \"100\": [\n 0,\n 0,\n 0,\n 1\n ]\n },\n \"50\": {\n \"0\": [\n 144,\n 155,\n 162,\n 0\n ],\n \"5\": [\n 144,\n 155,\n 162,\n 0.05\n ],\n \"10\": [\n 144,\n 155,\n 162,\n 0.1\n ],\n \"15\": [\n 144,\n 155,\n 162,\n 0.15\n ],\n \"20\": [\n 144,\n 155,\n 162,\n 0.2\n ],\n \"25\": [\n 144,\n 155,\n 162,\n 0.25\n ],\n \"30\": [\n 144,\n 155,\n 162,\n 0.3\n ],\n \"35\": [\n 144,\n 155,\n 162,\n 0.35\n ],\n \"40\": [\n 144,\n 155,\n 162,\n 0.4\n ],\n \"45\": [\n 144,\n 155,\n 162,\n 0.45\n ],\n \"50\": [\n 144,\n 155,\n 162,\n 0.5\n ],\n \"55\": [\n 144,\n 155,\n 162,\n 0.55\n ],\n \"60\": [\n 144,\n 155,\n 162,\n 0.6\n ],\n \"65\": [\n 144,\n 155,\n 162,\n 0.65\n ],\n \"70\": [\n 144,\n 155,\n 162,\n 0.7\n ],\n \"75\": [\n 144,\n 155,\n 162,\n 0.75\n ],\n \"80\": [\n 144,\n 155,\n 162,\n 0.8\n ],\n \"85\": [\n 144,\n 155,\n 162,\n 0.85\n ],\n \"90\": [\n 144,\n 155,\n 162,\n 0.9\n ],\n \"95\": [\n 144,\n 155,\n 162,\n 0.95\n ],\n \"100\": [\n 144,\n 155,\n 162,\n 1\n ]\n },\n \"100\": {\n \"0\": [\n 241,\n 243,\n 244,\n 0\n ],\n \"5\": [\n 241,\n 243,\n 244,\n 0.05\n ],\n \"10\": [\n 241,\n 243,\n 244,\n 0.1\n ],\n \"15\": [\n 241,\n 243,\n 244,\n 0.15\n ],\n \"20\": [\n 241,\n 243,\n 244,\n 0.2\n ],\n \"25\": [\n 241,\n 243,\n 244,\n 0.25\n ],\n \"30\": [\n 241,\n 243,\n 244,\n 0.3\n ],\n \"35\": [\n 241,\n 243,\n 244,\n 0.35\n ],\n \"40\": [\n 241,\n 243,\n 244,\n 0.4\n ],\n \"45\": [\n 241,\n 243,\n 244,\n 0.45\n ],\n \"50\": [\n 241,\n 243,\n 244,\n 0.5\n ],\n \"55\": [\n 241,\n 243,\n 244,\n 0.55\n ],\n \"60\": [\n 241,\n 243,\n 244,\n 0.6\n ],\n \"65\": [\n 241,\n 243,\n 244,\n 0.65\n ],\n \"70\": [\n 241,\n 243,\n 244,\n 0.7\n ],\n \"75\": [\n 241,\n 243,\n 244,\n 0.75\n ],\n \"80\": [\n 241,\n 243,\n 244,\n 0.8\n ],\n \"85\": [\n 241,\n 243,\n 244,\n 0.85\n ],\n \"90\": [\n 241,\n 243,\n 244,\n 0.9\n ],\n \"95\": [\n 241,\n 243,\n 244,\n 0.95\n ],\n \"100\": [\n 241,\n 243,\n 244,\n 1\n ]\n }\n }\n },\n \"warning\": {\n \"2\": [\n 49,\n 24,\n 1,\n 1\n ],\n \"4\": [\n 61,\n 31,\n 1,\n 1\n ],\n \"5\": [\n 67,\n 34,\n 1,\n 1\n ],\n \"6\": [\n 71,\n 37,\n 1,\n 1\n ],\n \"8\": [\n 81,\n 43,\n 1,\n 1\n ],\n \"10\": [\n 89,\n 48,\n 2,\n 1\n ],\n \"15\": [\n 110,\n 60,\n 3,\n 1\n ],\n \"20\": [\n 129,\n 72,\n 4,\n 1\n ],\n \"25\": [\n 147,\n 83,\n 5,\n 1\n ],\n \"30\": [\n 164,\n 93,\n 6,\n 1\n ],\n \"35\": [\n 180,\n 102,\n 8,\n 1\n ],\n \"40\": [\n 195,\n 112,\n 10,\n 1\n ],\n \"45\": [\n 210,\n 121,\n 14,\n 1\n ],\n \"50\": [\n 224,\n 130,\n 19,\n 1\n ],\n \"55\": [\n 237,\n 139,\n 27,\n 1\n ],\n \"60\": [\n 249,\n 148,\n 39,\n 1\n ],\n \"65\": [\n 252,\n 161,\n 74,\n 1\n ],\n \"70\": [\n 253,\n 174,\n 103,\n 1\n ],\n \"75\": [\n 254,\n 186,\n 128,\n 1\n ],\n \"80\": [\n 254,\n 198,\n 150,\n 1\n ],\n \"85\": [\n 255,\n 209,\n 171,\n 1\n ],\n \"90\": [\n 255,\n 220,\n 191,\n 1\n ],\n \"95\": [\n 255,\n 230,\n 210,\n 1\n ],\n \"100\": [\n 255,\n 240,\n 228,\n 1\n ],\n \"101\": [\n 255,\n 242,\n 231,\n 1\n ],\n \"102\": [\n 255,\n 244,\n 235,\n 1\n ],\n \"103\": [\n 255,\n 246,\n 238,\n 1\n ],\n \"104\": [\n 255,\n 248,\n 242,\n 1\n ],\n \"105\": [\n 255,\n 250,\n 245,\n 1\n ]\n },\n \"danger\": {\n \"2\": [\n 67,\n 4,\n 5,\n 1\n ],\n \"4\": [\n 83,\n 6,\n 8,\n 1\n ],\n \"5\": [\n 90,\n 7,\n 10,\n 1\n ],\n \"6\": [\n 96,\n 8,\n 11,\n 1\n ],\n \"8\": [\n 108,\n 10,\n 14,\n 1\n ],\n \"10\": [\n 119,\n 12,\n 17,\n 1\n ],\n \"15\": [\n 146,\n 17,\n 23,\n 1\n ],\n \"20\": [\n 171,\n 22,\n 28,\n 1\n ],\n \"25\": [\n 193,\n 28,\n 34,\n 1\n ],\n \"30\": [\n 214,\n 34,\n 40,\n 1\n ],\n \"35\": [\n 234,\n 42,\n 47,\n 1\n ],\n \"40\": [\n 247,\n 60,\n 59,\n 1\n ],\n \"45\": [\n 250,\n 86,\n 79,\n 1\n ],\n \"50\": [\n 251,\n 106,\n 97,\n 1\n ],\n \"55\": [\n 253,\n 125,\n 114,\n 1\n ],\n \"60\": [\n 253,\n 141,\n 130,\n 1\n ],\n \"65\": [\n 254,\n 156,\n 146,\n 1\n ],\n \"70\": [\n 254,\n 169,\n 160,\n 1\n ],\n \"75\": [\n 254,\n 182,\n 174,\n 1\n ],\n \"80\": [\n 254,\n 195,\n 188,\n 1\n ],\n \"85\": [\n 254,\n 206,\n 201,\n 1\n ],\n \"90\": [\n 254,\n 218,\n 213,\n 1\n ],\n \"95\": [\n 255,\n 229,\n 225,\n 1\n ],\n \"100\": [\n 255,\n 239,\n 237,\n 1\n ],\n \"101\": [\n 255,\n 241,\n 239,\n 1\n ],\n \"102\": [\n 255,\n 243,\n 242,\n 1\n ],\n \"103\": [\n 255,\n 245,\n 244,\n 1\n ],\n \"104\": [\n 255,\n 247,\n 246,\n 1\n ],\n \"105\": [\n 255,\n 249,\n 248,\n 1\n ],\n \"translucent\": {\n \"50\": {\n \"0\": [\n 251,\n 106,\n 97,\n 0\n ],\n \"5\": [\n 251,\n 106,\n 97,\n 0.05\n ],\n \"10\": [\n 251,\n 106,\n 97,\n 0.1\n ],\n \"15\": [\n 251,\n 106,\n 97,\n 0.15\n ],\n \"20\": [\n 251,\n 106,\n 97,\n 0.2\n ],\n \"25\": [\n 251,\n 106,\n 97,\n 0.25\n ],\n \"30\": [\n 251,\n 106,\n 97,\n 0.3\n ],\n \"35\": [\n 251,\n 106,\n 97,\n 0.35\n ],\n \"40\": [\n 251,\n 106,\n 97,\n 0.4\n ],\n \"45\": [\n 251,\n 106,\n 97,\n 0.45\n ],\n \"50\": [\n 251,\n 106,\n 97,\n 0.5\n ],\n \"55\": [\n 251,\n 106,\n 97,\n 0.55\n ],\n \"60\": [\n 251,\n 106,\n 97,\n 0.6\n ],\n \"65\": [\n 251,\n 106,\n 97,\n 0.65\n ],\n \"70\": [\n 251,\n 106,\n 97,\n 0.7\n ],\n \"75\": [\n 251,\n 106,\n 97,\n 0.75\n ],\n \"80\": [\n 251,\n 106,\n 97,\n 0.8\n ],\n \"85\": [\n 251,\n 106,\n 97,\n 0.85\n ],\n \"90\": [\n 251,\n 106,\n 97,\n 0.9\n ],\n \"95\": [\n 251,\n 106,\n 97,\n 0.95\n ],\n \"100\": [\n 251,\n 106,\n 97,\n 1\n ]\n },\n \"100\": {\n \"0\": [\n 255,\n 239,\n 237,\n 0\n ],\n \"5\": [\n 255,\n 239,\n 237,\n 0.05\n ],\n \"10\": [\n 255,\n 239,\n 237,\n 0.1\n ],\n \"15\": [\n 255,\n 239,\n 237,\n 0.15\n ],\n \"20\": [\n 255,\n 239,\n 237,\n 0.2\n ],\n \"25\": [\n 255,\n 239,\n 237,\n 0.25\n ],\n \"30\": [\n 255,\n 239,\n 237,\n 0.3\n ],\n \"35\": [\n 255,\n 239,\n 237,\n 0.35\n ],\n \"40\": [\n 255,\n 239,\n 237,\n 0.4\n ],\n \"45\": [\n 255,\n 239,\n 237,\n 0.45\n ],\n \"50\": [\n 255,\n 239,\n 237,\n 0.5\n ],\n \"55\": [\n 255,\n 239,\n 237,\n 0.55\n ],\n \"60\": [\n 255,\n 239,\n 237,\n 0.6\n ],\n \"65\": [\n 255,\n 239,\n 237,\n 0.65\n ],\n \"70\": [\n 255,\n 239,\n 237,\n 0.7\n ],\n \"75\": [\n 255,\n 239,\n 237,\n 0.75\n ],\n \"80\": [\n 255,\n 239,\n 237,\n 0.8\n ],\n \"85\": [\n 255,\n 239,\n 237,\n 0.85\n ],\n \"90\": [\n 255,\n 239,\n 237,\n 0.9\n ],\n \"95\": [\n 255,\n 239,\n 237,\n 0.95\n ],\n \"100\": [\n 255,\n 239,\n 237,\n 1\n ]\n }\n }\n },\n \"primary\": {\n \"2\": [\n 1,\n 32,\n 50,\n 1\n ],\n \"4\": [\n 2,\n 42,\n 63,\n 1\n ],\n \"5\": [\n 3,\n 45,\n 68,\n 1\n ],\n \"6\": [\n 3,\n 49,\n 73,\n 1\n ],\n \"8\": [\n 4,\n 56,\n 83,\n 1\n ],\n \"10\": [\n 5,\n 62,\n 92,\n 1\n ],\n \"15\": [\n 7,\n 77,\n 113,\n 1\n ],\n \"20\": [\n 10,\n 91,\n 132,\n 1\n ],\n \"25\": [\n 13,\n 105,\n 151,\n 1\n ],\n \"30\": [\n 16,\n 117,\n 168,\n 1\n ],\n \"35\": [\n 20,\n 129,\n 184,\n 1\n ],\n \"40\": [\n 25,\n 140,\n 200,\n 1\n ],\n \"45\": [\n 32,\n 151,\n 214,\n 1\n ],\n \"50\": [\n 41,\n 162,\n 227,\n 1\n ],\n \"55\": [\n 53,\n 172,\n 239,\n 1\n ],\n \"60\": [\n 74,\n 182,\n 246,\n 1\n ],\n \"65\": [\n 97,\n 191,\n 250,\n 1\n ],\n \"70\": [\n 120,\n 200,\n 252,\n 1\n ],\n \"75\": [\n 141,\n 208,\n 253,\n 1\n ],\n \"80\": [\n 161,\n 216,\n 253,\n 1\n ],\n \"85\": [\n 179,\n 223,\n 254,\n 1\n ],\n \"90\": [\n 197,\n 231,\n 254,\n 1\n ],\n \"95\": [\n 214,\n 238,\n 254,\n 1\n ],\n \"100\": [\n 230,\n 245,\n 255,\n 1\n ],\n \"101\": [\n 234,\n 246,\n 255,\n 1\n ],\n \"102\": [\n 237,\n 247,\n 255,\n 1\n ],\n \"103\": [\n 240,\n 249,\n 255,\n 1\n ],\n \"104\": [\n 243,\n 250,\n 255,\n 1\n ],\n \"105\": [\n 246,\n 251,\n 255,\n 1\n ],\n \"translucent\": {\n \"10\": {\n \"0\": [\n 5,\n 62,\n 92,\n 0\n ],\n \"5\": [\n 5,\n 62,\n 92,\n 0.05\n ],\n \"10\": [\n 5,\n 62,\n 92,\n 0.1\n ],\n \"15\": [\n 5,\n 62,\n 92,\n 0.15\n ],\n \"20\": [\n 5,\n 62,\n 92,\n 0.2\n ],\n \"25\": [\n 5,\n 62,\n 92,\n 0.25\n ],\n \"30\": [\n 5,\n 62,\n 92,\n 0.3\n ],\n \"35\": [\n 5,\n 62,\n 92,\n 0.35\n ],\n \"40\": [\n 5,\n 62,\n 92,\n 0.4\n ],\n \"45\": [\n 5,\n 62,\n 92,\n 0.45\n ],\n \"50\": [\n 5,\n 62,\n 92,\n 0.5\n ],\n \"55\": [\n 5,\n 62,\n 92,\n 0.55\n ],\n \"60\": [\n 5,\n 62,\n 92,\n 0.6\n ],\n \"65\": [\n 5,\n 62,\n 92,\n 0.65\n ],\n \"70\": [\n 5,\n 62,\n 92,\n 0.7\n ],\n \"75\": [\n 5,\n 62,\n 92,\n 0.75\n ],\n \"80\": [\n 5,\n 62,\n 92,\n 0.8\n ],\n \"85\": [\n 5,\n 62,\n 92,\n 0.85\n ],\n \"90\": [\n 5,\n 62,\n 92,\n 0.9\n ],\n \"95\": [\n 5,\n 62,\n 92,\n 0.95\n ],\n \"100\": [\n 5,\n 62,\n 92,\n 1\n ]\n },\n \"50\": {\n \"0\": [\n 41,\n 162,\n 227,\n 0\n ],\n \"5\": [\n 41,\n 162,\n 227,\n 0.05\n ],\n \"10\": [\n 41,\n 162,\n 227,\n 0.1\n ],\n \"15\": [\n 41,\n 162,\n 227,\n 0.15\n ],\n \"20\": [\n 41,\n 162,\n 227,\n 0.2\n ],\n \"25\": [\n 41,\n 162,\n 227,\n 0.25\n ],\n \"30\": [\n 41,\n 162,\n 227,\n 0.3\n ],\n \"35\": [\n 41,\n 162,\n 227,\n 0.35\n ],\n \"40\": [\n 41,\n 162,\n 227,\n 0.4\n ],\n \"45\": [\n 41,\n 162,\n 227,\n 0.45\n ],\n \"50\": [\n 41,\n 162,\n 227,\n 0.5\n ],\n \"55\": [\n 41,\n 162,\n 227,\n 0.55\n ],\n \"60\": [\n 41,\n 162,\n 227,\n 0.6\n ],\n \"65\": [\n 41,\n 162,\n 227,\n 0.65\n ],\n \"70\": [\n 41,\n 162,\n 227,\n 0.7\n ],\n \"75\": [\n 41,\n 162,\n 227,\n 0.75\n ],\n \"80\": [\n 41,\n 162,\n 227,\n 0.8\n ],\n \"85\": [\n 41,\n 162,\n 227,\n 0.85\n ],\n \"90\": [\n 41,\n 162,\n 227,\n 0.9\n ],\n \"95\": [\n 41,\n 162,\n 227,\n 0.95\n ],\n \"100\": [\n 41,\n 162,\n 227,\n 1\n ]\n },\n \"100\": {\n \"0\": [\n 230,\n 245,\n 255,\n 0\n ],\n \"5\": [\n 230,\n 245,\n 255,\n 0.05\n ],\n \"10\": [\n 230,\n 245,\n 255,\n 0.1\n ],\n \"15\": [\n 230,\n 245,\n 255,\n 0.15\n ],\n \"20\": [\n 230,\n 245,\n 255,\n 0.2\n ],\n \"25\": [\n 230,\n 245,\n 255,\n 0.25\n ],\n \"30\": [\n 230,\n 245,\n 255,\n 0.3\n ],\n \"35\": [\n 230,\n 245,\n 255,\n 0.35\n ],\n \"40\": [\n 230,\n 245,\n 255,\n 0.4\n ],\n \"45\": [\n 230,\n 245,\n 255,\n 0.45\n ],\n \"50\": [\n 230,\n 245,\n 255,\n 0.5\n ],\n \"55\": [\n 230,\n 245,\n 255,\n 0.55\n ],\n \"60\": [\n 230,\n 245,\n 255,\n 0.6\n ],\n \"65\": [\n 230,\n 245,\n 255,\n 0.65\n ],\n \"70\": [\n 230,\n 245,\n 255,\n 0.7\n ],\n \"75\": [\n 230,\n 245,\n 255,\n 0.75\n ],\n \"80\": [\n 230,\n 245,\n 255,\n 0.8\n ],\n \"85\": [\n 230,\n 245,\n 255,\n 0.85\n ],\n \"90\": [\n 230,\n 245,\n 255,\n 0.9\n ],\n \"95\": [\n 230,\n 245,\n 255,\n 0.95\n ],\n \"100\": [\n 230,\n 245,\n 255,\n 1\n ]\n }\n }\n },\n \"secondary\": {\n \"2\": [\n 36,\n 30,\n 0,\n 1\n ],\n \"4\": [\n 46,\n 38,\n 0,\n 1\n ],\n \"5\": [\n 50,\n 42,\n 0,\n 1\n ],\n \"6\": [\n 54,\n 45,\n 0,\n 1\n ],\n \"8\": [\n 61,\n 52,\n 0,\n 1\n ],\n \"10\": [\n 68,\n 58,\n 0,\n 1\n ],\n \"15\": [\n 85,\n 72,\n 0,\n 1\n ],\n \"20\": [\n 100,\n 86,\n 0,\n 1\n ],\n \"25\": [\n 114,\n 98,\n 0,\n 1\n ],\n \"30\": [\n 128,\n 110,\n 0,\n 1\n ],\n \"35\": [\n 141,\n 121,\n 0,\n 1\n ],\n \"40\": [\n 153,\n 132,\n 0,\n 1\n ],\n \"45\": [\n 165,\n 142,\n 0,\n 1\n ],\n \"50\": [\n 176,\n 152,\n 0,\n 1\n ],\n \"55\": [\n 188,\n 162,\n 0,\n 1\n ],\n \"60\": [\n 199,\n 172,\n 0,\n 1\n ],\n \"65\": [\n 209,\n 181,\n 0,\n 1\n ],\n \"70\": [\n 220,\n 190,\n 0,\n 1\n ],\n \"75\": [\n 230,\n 199,\n 0,\n 1\n ],\n \"80\": [\n 240,\n 208,\n 0,\n 1\n ],\n \"85\": [\n 250,\n 216,\n 0,\n 1\n ],\n \"90\": [\n 255,\n 226,\n 75,\n 1\n ],\n \"95\": [\n 255,\n 235,\n 138,\n 1\n ],\n \"100\": [\n 255,\n 243,\n 186,\n 1\n ],\n \"101\": [\n 255,\n 245,\n 195,\n 1\n ],\n \"102\": [\n 255,\n 246,\n 204,\n 1\n ],\n \"103\": [\n 255,\n 248,\n 213,\n 1\n ],\n \"104\": [\n 255,\n 249,\n 221,\n 1\n ],\n \"105\": [\n 255,\n 251,\n 230,\n 1\n ],\n \"translucent\": {\n \"10\": {\n \"0\": [\n 68,\n 58,\n 0,\n 0\n ],\n \"5\": [\n 68,\n 58,\n 0,\n 0.05\n ],\n \"10\": [\n 68,\n 58,\n 0,\n 0.1\n ],\n \"15\": [\n 68,\n 58,\n 0,\n 0.15\n ],\n \"20\": [\n 68,\n 58,\n 0,\n 0.2\n ],\n \"25\": [\n 68,\n 58,\n 0,\n 0.25\n ],\n \"30\": [\n 68,\n 58,\n 0,\n 0.3\n ],\n \"35\": [\n 68,\n 58,\n 0,\n 0.35\n ],\n \"40\": [\n 68,\n 58,\n 0,\n 0.4\n ],\n \"45\": [\n 68,\n 58,\n 0,\n 0.45\n ],\n \"50\": [\n 68,\n 58,\n 0,\n 0.5\n ],\n \"55\": [\n 68,\n 58,\n 0,\n 0.55\n ],\n \"60\": [\n 68,\n 58,\n 0,\n 0.6\n ],\n \"65\": [\n 68,\n 58,\n 0,\n 0.65\n ],\n \"70\": [\n 68,\n 58,\n 0,\n 0.7\n ],\n \"75\": [\n 68,\n 58,\n 0,\n 0.75\n ],\n \"80\": [\n 68,\n 58,\n 0,\n 0.8\n ],\n \"85\": [\n 68,\n 58,\n 0,\n 0.85\n ],\n \"90\": [\n 68,\n 58,\n 0,\n 0.9\n ],\n \"95\": [\n 68,\n 58,\n 0,\n 0.95\n ],\n \"100\": [\n 68,\n 58,\n 0,\n 1\n ]\n },\n \"50\": {\n \"0\": [\n 176,\n 152,\n 0,\n 0\n ],\n \"5\": [\n 176,\n 152,\n 0,\n 0.05\n ],\n \"10\": [\n 176,\n 152,\n 0,\n 0.1\n ],\n \"15\": [\n 176,\n 152,\n 0,\n 0.15\n ],\n \"20\": [\n 176,\n 152,\n 0,\n 0.2\n ],\n \"25\": [\n 176,\n 152,\n 0,\n 0.25\n ],\n \"30\": [\n 176,\n 152,\n 0,\n 0.3\n ],\n \"35\": [\n 176,\n 152,\n 0,\n 0.35\n ],\n \"40\": [\n 176,\n 152,\n 0,\n 0.4\n ],\n \"45\": [\n 176,\n 152,\n 0,\n 0.45\n ],\n \"50\": [\n 176,\n 152,\n 0,\n 0.5\n ],\n \"55\": [\n 176,\n 152,\n 0,\n 0.55\n ],\n \"60\": [\n 176,\n 152,\n 0,\n 0.6\n ],\n \"65\": [\n 176,\n 152,\n 0,\n 0.65\n ],\n \"70\": [\n 176,\n 152,\n 0,\n 0.7\n ],\n \"75\": [\n 176,\n 152,\n 0,\n 0.75\n ],\n \"80\": [\n 176,\n 152,\n 0,\n 0.8\n ],\n \"85\": [\n 176,\n 152,\n 0,\n 0.85\n ],\n \"90\": [\n 176,\n 152,\n 0,\n 0.9\n ],\n \"95\": [\n 176,\n 152,\n 0,\n 0.95\n ],\n \"100\": [\n 176,\n 152,\n 0,\n 1\n ]\n },\n \"100\": {\n \"0\": [\n 255,\n 243,\n 186,\n 0\n ],\n \"5\": [\n 255,\n 243,\n 186,\n 0.05\n ],\n \"10\": [\n 255,\n 243,\n 186,\n 0.1\n ],\n \"15\": [\n 255,\n 243,\n 186,\n 0.15\n ],\n \"20\": [\n 255,\n 243,\n 186,\n 0.2\n ],\n \"25\": [\n 255,\n 243,\n 186,\n 0.25\n ],\n \"30\": [\n 255,\n 243,\n 186,\n 0.3\n ],\n \"35\": [\n 255,\n 243,\n 186,\n 0.35\n ],\n \"40\": [\n 255,\n 243,\n 186,\n 0.4\n ],\n \"45\": [\n 255,\n 243,\n 186,\n 0.45\n ],\n \"50\": [\n 255,\n 243,\n 186,\n 0.5\n ],\n \"55\": [\n 255,\n 243,\n 186,\n 0.55\n ],\n \"60\": [\n 255,\n 243,\n 186,\n 0.6\n ],\n \"65\": [\n 255,\n 243,\n 186,\n 0.65\n ],\n \"70\": [\n 255,\n 243,\n 186,\n 0.7\n ],\n \"75\": [\n 255,\n 243,\n 186,\n 0.75\n ],\n \"80\": [\n 255,\n 243,\n 186,\n 0.8\n ],\n \"85\": [\n 255,\n 243,\n 186,\n 0.85\n ],\n \"90\": [\n 255,\n 243,\n 186,\n 0.9\n ],\n \"95\": [\n 255,\n 243,\n 186,\n 0.95\n ],\n \"100\": [\n 255,\n 243,\n 186,\n 1\n ]\n }\n }\n }\n },\n \"bg\": {\n \"button\": {\n \"regular\": {\n \"base\": [\n 67,\n 74,\n 79,\n 1\n ],\n \"hover\": [\n 91,\n 100,\n 106,\n 1\n ],\n \"active\": [\n 79,\n 87,\n 93,\n 1\n ],\n \"disabled\": [\n 53,\n 59,\n 63,\n 1\n ],\n \"on\": [\n 25,\n 140,\n 200,\n 1\n ],\n \"on-hover\": [\n 32,\n 151,\n 214,\n 1\n ],\n \"on-active\": [\n 20,\n 129,\n 184,\n 1\n ],\n \"off\": [\n 67,\n 74,\n 79,\n 1\n ],\n \"off-hover\": [\n 91,\n 100,\n 106,\n 1\n ],\n \"off-active\": [\n 79,\n 87,\n 93,\n 1\n ]\n },\n \"outline\": {\n \"base\": [\n 144,\n 155,\n 162,\n 0\n ],\n \"hover\": [\n 144,\n 155,\n 162,\n 0.1\n ],\n \"active\": [\n 144,\n 155,\n 162,\n 0.2\n ],\n \"disabled\": [\n 144,\n 155,\n 162,\n 0\n ],\n \"on\": [\n 41,\n 162,\n 227,\n 0.2\n ],\n \"on-hover\": [\n 41,\n 162,\n 227,\n 0.3\n ],\n \"on-active\": [\n 41,\n 162,\n 227,\n 0.4\n ],\n \"off\": [\n 144,\n 155,\n 162,\n 0\n ],\n \"off-hover\": [\n 144,\n 155,\n 162,\n 0.1\n ],\n \"off-active\": [\n 144,\n 155,\n 162,\n 0.2\n ]\n },\n \"minimal\": {\n \"base\": [\n 144,\n 155,\n 162,\n 0\n ],\n \"hover\": [\n 144,\n 155,\n 162,\n 0.1\n ],\n \"active\": [\n 144,\n 155,\n 162,\n 0.2\n ],\n \"disabled\": [\n 144,\n 155,\n 162,\n 0\n ],\n \"on\": [\n 144,\n 155,\n 162,\n 0.25\n ],\n \"on-hover\": [\n 144,\n 155,\n 162,\n 0.3\n ],\n \"on-active\": [\n 144,\n 155,\n 162,\n 0.4\n ],\n \"off\": [\n 144,\n 155,\n 162,\n 0\n ],\n \"off-hover\": [\n 144,\n 155,\n 162,\n 0.1\n ],\n \"off-active\": [\n 144,\n 155,\n 162,\n 0.2\n ]\n }\n },\n \"default\": [\n 38,\n 43,\n 46,\n 1\n ],\n \"overlay\": [\n 47,\n 53,\n 57,\n 1\n ],\n \"inset\": [\n 31,\n 35,\n 38,\n 1\n ],\n \"subtle\": [\n 38,\n 43,\n 46,\n 1\n ],\n \"strong\": [\n 203,\n 210,\n 215,\n 1\n ],\n \"muted\": [\n 45,\n 50,\n 53,\n 0.6\n ],\n \"alternating\": {\n \"odd\": [\n 0,\n 0,\n 0,\n 0.1\n ],\n \"even\": [\n 53,\n 59,\n 63,\n 0.5\n ]\n },\n \"accent\": {\n \"primary\": {\n \"subtle\": [\n 5,\n 62,\n 92,\n 1\n ],\n \"strong\": [\n 161,\n 216,\n 253,\n 1\n ],\n \"strong-v\": [\n 74,\n 182,\n 246,\n 1\n ],\n \"muted\": [\n 5,\n 62,\n 92,\n 0.5\n ]\n },\n \"secondary\": {\n \"subtle\": [\n 68,\n 58,\n 0,\n 1\n ],\n \"strong\": [\n 240,\n 208,\n 0,\n 1\n ],\n \"strong-v\": [\n 199,\n 172,\n 0,\n 1\n ],\n \"muted\": [\n 68,\n 58,\n 0,\n 0.4\n ]\n },\n \"warning\": {\n \"subtle\": [\n 89,\n 48,\n 2,\n 1\n ],\n \"strong\": [\n 254,\n 198,\n 150,\n 1\n ],\n \"strong-v\": [\n 249,\n 148,\n 39,\n 1\n ],\n \"muted\": [\n 89,\n 48,\n 2,\n 0.4\n ]\n },\n \"danger\": {\n \"subtle\": [\n 119,\n 12,\n 17,\n 1\n ],\n \"strong\": [\n 254,\n 195,\n 188,\n 1\n ],\n \"strong-v\": [\n 253,\n 141,\n 130,\n 1\n ],\n \"muted\": [\n 119,\n 12,\n 17,\n 0.4\n ]\n }\n }\n },\n \"fg\": {\n \"button\": {\n \"regular\": {\n \"base\": [\n 241,\n 243,\n 244,\n 1\n ],\n \"hover\": [\n 250,\n 251,\n 251,\n 1\n ],\n \"active\": [\n 250,\n 251,\n 251,\n 1\n ],\n \"disabled\": [\n 184,\n 192,\n 199,\n 0.5\n ],\n \"on\": [\n 241,\n 243,\n 244,\n 1\n ],\n \"on-hover\": [\n 250,\n 251,\n 251,\n 1\n ],\n \"on-active\": [\n 250,\n 251,\n 251,\n 1\n ],\n \"off\": [\n 184,\n 192,\n 199,\n 1\n ],\n \"off-hover\": [\n 241,\n 243,\n 244,\n 1\n ],\n \"off-active\": [\n 250,\n 251,\n 251,\n 1\n ]\n },\n \"outline\": {\n \"base\": [\n 241,\n 243,\n 244,\n 1\n ],\n \"hover\": [\n 250,\n 251,\n 251,\n 1\n ],\n \"active\": [\n 250,\n 251,\n 251,\n 1\n ],\n \"disabled\": [\n 184,\n 192,\n 199,\n 0.5\n ],\n \"on\": [\n 197,\n 231,\n 254,\n 1\n ],\n \"on-hover\": [\n 179,\n 223,\n 254,\n 1\n ],\n \"on-active\": [\n 161,\n 216,\n 253,\n 1\n ],\n \"off\": [\n 184,\n 192,\n 199,\n 1\n ],\n \"off-hover\": [\n 241,\n 243,\n 244,\n 1\n ],\n \"off-active\": [\n 250,\n 251,\n 251,\n 1\n ]\n },\n \"minimal\": {\n \"base\": [\n 241,\n 243,\n 244,\n 1\n ],\n \"hover\": [\n 250,\n 251,\n 251,\n 1\n ],\n \"active\": [\n 250,\n 251,\n 251,\n 1\n ],\n \"disabled\": [\n 184,\n 192,\n 199,\n 0.5\n ],\n \"on\": [\n 179,\n 223,\n 254,\n 1\n ],\n \"on-hover\": [\n 179,\n 223,\n 254,\n 1\n ],\n \"on-active\": [\n 179,\n 223,\n 254,\n 1\n ],\n \"off\": [\n 184,\n 192,\n 199,\n 1\n ],\n \"off-hover\": [\n 241,\n 243,\n 244,\n 1\n ],\n \"off-active\": [\n 250,\n 251,\n 251,\n 1\n ]\n }\n },\n \"default\": [\n 241,\n 243,\n 244,\n 1\n ],\n \"strong\": [\n 250,\n 251,\n 251,\n 1\n ],\n \"subtle\": [\n 184,\n 192,\n 199,\n 1\n ],\n \"disabled\": [\n 184,\n 192,\n 199,\n 0.5\n ],\n \"on-strong\": [\n 38,\n 43,\n 46,\n 1\n ],\n \"on-strong-v\": [\n 0,\n 0,\n 0,\n 1\n ],\n \"inversed\": {\n \"default\": [\n 38,\n 43,\n 46,\n 1\n ],\n \"strong\": [\n 0,\n 0,\n 0,\n 1\n ],\n \"subtle\": [\n 102,\n 112,\n 119,\n 1\n ]\n },\n \"translucent\": {\n \"default\": [\n 250,\n 251,\n 251,\n 0.9\n ],\n \"strong\": [\n 250,\n 251,\n 251,\n 1\n ],\n \"subtle\": [\n 241,\n 243,\n 244,\n 0.6\n ],\n \"disabled\": [\n 184,\n 192,\n 199,\n 0.5\n ],\n \"on-strong\": [\n 0,\n 0,\n 0,\n 0.9\n ],\n \"on-strong-v\": [\n 0,\n 0,\n 0,\n 0.8\n ]\n },\n \"accent\": {\n \"primary\": [\n 179,\n 223,\n 254,\n 1\n ],\n \"secondary\": [\n 220,\n 190,\n 0,\n 1\n ],\n \"warning\": [\n 253,\n 174,\n 103,\n 1\n ],\n \"danger\": [\n 254,\n 206,\n 201,\n 1\n ],\n \"primary-v\": [\n 120,\n 200,\n 252,\n 1\n ],\n \"secondary-v\": [\n 199,\n 172,\n 0,\n 1\n ],\n \"warning-v\": [\n 249,\n 148,\n 39,\n 1\n ],\n \"danger-v\": [\n 254,\n 169,\n 160,\n 1\n ]\n }\n },\n \"border\": {\n \"button\": {\n \"regular\": {\n \"base\": [\n 79,\n 87,\n 93,\n 1\n ],\n \"hover\": [\n 184,\n 192,\n 199,\n 1\n ],\n \"active\": [\n 113,\n 123,\n 130,\n 1\n ],\n \"disabled\": [\n 144,\n 155,\n 162,\n 0.4\n ],\n \"on\": [\n 20,\n 129,\n 184,\n 1\n ],\n \"on-hover\": [\n 120,\n 200,\n 252,\n 1\n ],\n \"on-active\": [\n 120,\n 200,\n 252,\n 1\n ],\n \"off\": [\n 79,\n 87,\n 93,\n 1\n ],\n \"off-hover\": [\n 184,\n 192,\n 199,\n 1\n ],\n \"off-active\": [\n 113,\n 123,\n 130,\n 1\n ]\n },\n \"outline\": {\n \"base\": [\n 113,\n 123,\n 130,\n 1\n ],\n \"hover\": [\n 184,\n 192,\n 199,\n 1\n ],\n \"active\": [\n 113,\n 123,\n 130,\n 1\n ],\n \"disabled\": [\n 144,\n 155,\n 162,\n 0.4\n ],\n \"on\": [\n 120,\n 200,\n 252,\n 1\n ],\n \"on-hover\": [\n 120,\n 200,\n 252,\n 1\n ],\n \"on-active\": [\n 120,\n 200,\n 252,\n 1\n ],\n \"off\": [\n 79,\n 87,\n 93,\n 1\n ],\n \"off-hover\": [\n 184,\n 192,\n 199,\n 1\n ],\n \"off-active\": [\n 113,\n 123,\n 130,\n 1\n ]\n }\n },\n \"default\": [\n 113,\n 123,\n 130,\n 1\n ],\n \"subtle\": [\n 79,\n 87,\n 93,\n 1\n ],\n \"strong\": [\n 184,\n 192,\n 199,\n 1\n ],\n \"muted\": [\n 144,\n 155,\n 162,\n 0.4\n ],\n \"accent\": {\n \"primary\": {\n \"default\": [\n 20,\n 129,\n 184,\n 1\n ],\n \"strong\": [\n 120,\n 200,\n 252,\n 1\n ]\n },\n \"secondary\": {\n \"default\": [\n 141,\n 121,\n 0,\n 1\n ],\n \"strong\": [\n 220,\n 190,\n 0,\n 1\n ]\n },\n \"warning\": {\n \"default\": [\n 210,\n 121,\n 14,\n 1\n ],\n \"strong\": [\n 253,\n 174,\n 103,\n 1\n ]\n },\n \"danger\": {\n \"default\": [\n 234,\n 42,\n 47,\n 1\n ],\n \"strong\": [\n 254,\n 169,\n 160,\n 1\n ]\n }\n }\n }\n },\n \"shadow\": {\n \"button\": {\n \"regular\": {\n \"base\": {},\n \"active\": {},\n \"disabled\": {}\n }\n }\n }\n },\n\n __resolvePath: function(path, obj, defaultValue = null, separator=\".\") {\n const keys = Array.isArray(path) ? path : path.split(separator);\n return keys.reduce((prev, curr) => prev ? prev[curr] : defaultValue, obj);\n },\n\n getColor(path, cKey) {\n return this.__resolvePath(path, this.colors)[cKey];\n }\n }\n});\n","qx.Theme.define(\"osparc.theme.ColorLight\", {\n include: osparc.theme.mixin.Color,\n\n colors: {\n // 0-105\n \"c00\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 0),\n \"c01\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 0+5),\n \"c02\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 0+10),\n \"c03\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 0+20),\n \"c04\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 0+25),\n \"c05\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 0+35),\n \"c06\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 0+50),\n \"c07\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 0+60),\n \"c08\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 0+70),\n \"c09\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 0+75),\n \"c10\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 0+80),\n \"c12\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 0+90),\n \"c14\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 0+105),\n\n \"product-color\": \"rgba(0, 144, 208, 1)\", // override in product\n \"strong-main\": \"product-color\",\n \"a-bit-transparent\": \"rgba(255, 255, 255, 0.4)\",\n\n // main\n \"background-main\": \"c01\",\n \"background-main-1\": \"c02\",\n \"background-main-2\": \"c03\",\n \"background-main-3\": \"c04\",\n \"background-main-4\": \"c05\",\n \"background-main-5\": \"c06\",\n\n \"background-card-overlay\": \"rgba(229, 229, 229, 0.8)\",\n \"background-workspace-card-overlay\": \"rgb(165, 223, 252)\",\n\n \"navigation_bar_background_color\": \"rgba(229, 229, 229, 0.8)\",\n \"fab_text\": \"contrasted-text-dark\",\n \"fab-background\": \"rgba(255, 255, 255, 0.2)\",\n \"input_background\": \"rgba(209, 214, 218, 1)\",\n \"input_background_disable\": \"rgba(113, 157, 181, 0.04)\",\n \"hint-background\": \"rgba(201, 201, 201, 1)\",\n \"transparent_overlay\": \"rgba(1, 18, 26, 0.1)\",\n\n \"flash_message_bg\": \"input_background\",\n\n // text\n \"text\": \"rgba(40, 40, 40, 1)\",\n \"text-disabled\": \"rgba(113, 157, 181, 1)\",\n \"text-selected\": \"rgba(20, 20, 20, 1)\",\n \"text-placeholder\": \"rgba(90, 100, 110, 1)\",\n \"text-darker\": \"rgba(20, 20, 20, 1)\",\n \"contrasted-text-dark\": \"rgba(20, 20, 20, 1)\",\n \"contrasted-text-light\": \"rgba(40, 40, 40, 1)\",\n \"link\": \"rgba(10, 182, 255, 1)\",\n\n // shadows\n \"bg-shadow\": \"background-main-5\",\n \"box-shadow\": \"rgba(0, 0, 0, 0.15)\",\n \"shadow\": qx.core.Environment.get(\"css.rgba\") ? \"a-bit-transparent\" : \"bg-shadow\",\n\n // window\n // OM here\n \"window-popup-background\": \"rgba(225, 225, 225, 1)\",\n \"window-caption-background\": \"background-main\",\n \"window-caption-background-active\": \"background-main-3\",\n \"window-caption-text\": \"text\",\n \"window-caption-text-active\": \"c12\",\n \"window-border\": \"background-main-2\",\n \"window-border-inner\": \"background-main-1\",\n\n // material-button\n \"material-button-background\": \"fab-background\",\n \"material-button-background-disabled\": \"default-button-disabled-background\",\n \"material-button-background-hovered\": \"default-button-hover-background\",\n \"material-button-background-pressed\": \"default-button-active-background\",\n \"material-button-text-disabled\": \"default-button-disabled-background\",\n \"material-button-text\": \"default-button-text-outline\",\n\n // material-textfield\n \"material-textfield\": \"input_background\",\n \"material-textfield-focused\": \"product-color\",\n \"material-textfield-disabled\": \"default-button-disabled\",\n \"material-textfield-invalid\": \"error\",\n \"invalid\": \"error\",\n\n // backgrounds\n \"background-selected\": \"default-button-background\",\n \"background-selected-disabled\": \"default-button-disabled\",\n \"background-selected-dark\": \"product-color\",\n \"background-disabled\": \"background-main\",\n \"background-disabled-checked\": \"background-main-1\",\n \"background-pane\": \"background-main\",\n\n // tabview\n \"tabview-unselected\": \"c14\",\n \"tabview-button-border\": \"product-color\",\n \"tabview-label-active-disabled\": \"c10\",\n \"tabview-pane-background\": \"transparent\",\n \"tabview-button-background\": \"transparent\",\n\n // scrollbar\n \"scrollbar-passive\": \"background-main-4\",\n \"scrollbar-active\": \"background-main-5\",\n\n // form\n \"button\": \"background-main-4\",\n \"button-border\": \"background-main-5\",\n \"button-border-hovered\": \"c07\",\n \"button-box\": \"background-main-3\",\n \"button-box-pressed\": \"background-main-4\",\n \"border-lead\": \"c07\",\n\n // group box\n \"white-box-border\": \"background-main-2\",\n\n // borders\n // 'border-main' is an alias of 'background-selected' (compatibility reasons)\n \"border\": \"background-main-3\",\n \"border-focused\": \"c09\",\n \"border-invalid\": \"failed-red\",\n \"border-disabled\": \"background-main\",\n\n // tooltip\n \"tooltip\": \"flash_message_bg\",\n \"tooltip-text\": \"text\",\n\n\n // used in progressive code\n \"progressive-table-header\": \"c08\",\n \"progressive-table-row-background-even\": \"background-main\",\n \"progressive-table-row-background-odd\": \"background-main\",\n \"progressive-progressbar-background\": \"background-main\",\n \"progressive-progressbar-indicator-done\": \"background-main\",\n \"progressive-progressbar-indicator-undone\": \"background-main-1\",\n \"progressive-progressbar-percent-background\": \"background-main\",\n \"progressive-progressbar-percent-text\": \"background-main-1\",\n\n\n // OSPARC\n \"workbench-edge-comp-active\": \"#888888\",\n \"workbench-edge-api-active\": \"#444444\",\n \"workbench-start-hint\": \"#AFAFAF\",\n \"workbench-view-navbar\": \"c02\",\n \"workbench-view-splitter\": \"background-main-3\",\n\n \"node-background\": \"rgba(113, 157, 181, 0.35)\",\n \"node-selected-background\": \"strong-main\",\n \"node-title-text\": \"#232323\",\n \"node-port-text\": \"#454545\",\n\n \"logger-debug-message\": \"#000000\",\n \"logger-info-message\": \"#000000\",\n\n \"service-window-hint\": \"#7F7F7F\",\n\n \"progressbar\": \"success\",\n \"progressbar-disabled\": \"rgba(113, 157, 181, 0.25)\",\n \"progressbar-runner\": \"rgba(228, 234, 237, 1)\",\n\n \"haloProgressbar\": \"progressbar\",\n \"haloProgressbar-disabled\": \"progressbar-disabled\",\n \"haloProgressbar-runner\": \"progressbar-runner\",\n \"haloProgressbar-fill\": \"background-card-overlay\",\n\n \"loading-page-background-color\": \"background-main\",\n \"loading-page-text\": \"#000000\",\n \"loading-page-spinner\": \"#222222\"\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Theme.define(\"osparc.theme.products.s4l.ColorLight\", {\n include: osparc.theme.ColorLight,\n\n colors: {\n \"product-color\": \"rgba(0, 144, 208, 1)\",\n \"default-button\": \"product-color\",\n \"default-button-background\": \"rgba(0, 144, 208, 0.25)\"\n }\n});\n","/* ************************************************************************\n\n OSparc Dark Theme for Qooxdoo\n\n Copyright:\n 2018 IT'IS Foundation\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Tobias Oetiker (oetiker)\n\n Origin:\n This theme is based in large parts on the the Simple\n theme included with Qooxdoo.\n************************************************************************ */\n/**\n * The simple qooxdoo decoration theme.\n */\nqx.Theme.define(\"osparc.theme.common.Decoration\",\n {\n aliases: {decoration: \"qx/decoration/Simple\"},\n\n decorations: {\n\n /*\n ---------------------------------------------------------------------------\n MATERIAL TEXT FIELD\n ---------------------------------------------------------------------------\n */\n \"material-textfield\": {\n style: {\n styleBottom: \"solid\",\n widthBottom: 1,\n colorBottom: \"material-textfield\"\n }\n },\n \"material-textfield-focused\": {\n include: \"material-textfield\",\n style: {\n widthBottom: 2,\n colorBottom: \"material-textfield-focused\"\n }\n },\n \"material-textfield-focused-invalid\": {\n include: \"material-textfield\",\n style: {\n widthBottom: 2,\n colorBottom: \"material-textfield-invalid\"\n }\n },\n \"material-textfield-invalid\": {\n include: \"material-textfield\",\n style: {\n widthBottom: 1,\n colorBottom: \"material-textfield-invalid\"\n }\n },\n \"material-textfield-disabled\": {\n include: \"material-textfield\",\n style: {\n widthBottom: 1,\n colorBottom: \"material-textfield-disabled\"\n }\n },\n\n \"material-textfield-readonly\": {style: {}},\n\n /*\n ---------------------------------------------------------------------------\n BUTTON\n ---------------------------------------------------------------------------\n */\n\n \"material-button\": {\n style: {\n radius: 2,\n backgroundColor: \"material-button-background\",\n shadowHorizontalLength: 0,\n shadowVerticalLength: [3, 2, 1],\n shadowBlurRadius: [1, 2, 5],\n shadowSpreadRadius: [-2, 0, 0],\n shadowColor: [\n \"rgba(0, 0, 0, 0.2)\",\n \"rgba(0, 0, 0, 0.14)\",\n \"rgba(0, 0, 0, 0.12)\"\n ],\n transitionProperty: [\"all\"],\n transitionDuration: \"0s\"\n }\n },\n \"material-button-hovered\": {\n include: \"material-button\",\n style: {\n backgroundColor: \"material-button-background-hovered\",\n shadowVerticalLength: [2, 4, 1],\n shadowBlurRadius: [4, 5, 10],\n shadowSpreadRadius: [-1, 0, 0],\n transitionDuration: \"0.2s\"\n }\n },\n \"material-button-pressed\": {\n include: \"material-button\",\n style: {\n backgroundColor: \"material-button-background-pressed\",\n shadowVerticalLength: [5, 8, 3],\n shadowBlurRadius: [5, 10, 14],\n shadowSpreadRadius: [-3, 1, 2],\n transitionDuration: \"0.2s\"\n }\n },\n \"material-button-disabled\": {\n include: \"material-button\",\n style: {backgroundColor: \"material-button-background-disabled\"}\n },\n\n \"material-button-left\": {\n include: \"material-button\",\n style: {radius: [2, 0, 0, 2]}\n },\n \"material-button-right\": {\n include: \"material-button\",\n style: {radius: [0, 2, 2, 0]}\n },\n \"material-button-hovered-left\": {\n include: \"material-button-hovered\",\n style: {radius: [2, 0, 0, 2]}\n },\n \"material-button-focused-left\": {\n include: \"material-button-hovered\",\n style: {radius: [2, 0, 0, 2]}\n },\n \"material-button-hovered-right\": {\n include: \"material-button-hovered\",\n style: {radius: [0, 2, 2, 0]}\n },\n \"material-button-focused-right\": {\n include: \"material-button-hovered\",\n style: {radius: [0, 2, 2, 0]}\n },\n \"material-button-pressed-left\": {\n include: \"material-button-pressed\",\n style: {radius: [2, 0, 0, 2]}\n },\n \"material-button-pressed-right\": {\n include: \"material-button-pressed\",\n style: {radius: [0, 2, 2, 0]}\n },\n \"material-button-disabled-left\": {\n include: \"material-button-disabled\",\n style: {radius: [2, 0, 0, 2]}\n },\n \"material-button-disabled-right\": {\n include: \"material-button-disabled\",\n style: {radius: [0, 2, 2, 0]}\n },\n /*\n ---------------------------------------------------------------------------\n CORE\n ---------------------------------------------------------------------------\n */\n \"border-blue\":\n {\n style:\n {\n width: 4,\n color: \"background-selected\"\n }\n },\n\n\n \"main\":\n {\n style:\n {\n width: 1,\n color: \"border\"\n }\n },\n \"main-top\":\n {\n include: \"main\",\n style:\n {width: [1, 0, 0, 0]}\n },\n \"main-right\":\n {\n include: \"main\",\n style:\n {width: [0, 1, 0, 0]}\n },\n // eslint-disable-next-line no-dupe-keys\n \"main-bottom\":\n {\n include: \"main\",\n style:\n {width: [0, 0, 1, 0]}\n },\n \"main-left\":\n {\n include: \"main\",\n style:\n {width: [0, 0, 0, 1]}\n },\n \"main-dark\":\n {\n style:\n {\n width: 1,\n color: \"button-border\"\n }\n },\n\n\n \"popup\":\n {\n style:\n {\n width: 1,\n color: \"window-border\",\n shadowLength: 2,\n shadowBlurRadius: 5,\n shadowColor: \"shadow\"\n }\n },\n\n\n \"dragover\":\n {style: {bottom: [2, \"solid\", \"dark-blue\"]}},\n\n\n\n /*\n ---------------------------------------------------------------------------\n BUTTON\n ---------------------------------------------------------------------------\n */\n\n\n\n\n \"button-box\":\n {\n style:\n {\n radius: 0,\n width: 0,\n color: \"button-border\",\n backgroundColor: \"button-box\"\n }\n },\n\n \"button-box-pressed\":\n {\n include: \"button-box\",\n\n style:\n {backgroundColor: \"button-box-pressed\"}\n },\n\n \"button-box-pressed-hovered\":\n {\n include: \"button-box-pressed\",\n\n style:\n {color: \"button-border-hovered\"}\n },\n\n \"button-box-hovered\":\n {\n include: \"button-box\",\n\n style:\n {color: \"button-border-hovered\"}\n },\n\n\n /*\n ---------------------------------------------------------------------------\n BUTTON INVALID\n ---------------------------------------------------------------------------\n */\n \"button-box-invalid\":\n {\n include: \"button-box\",\n\n style:\n {color: \"invalid\"}\n },\n\n \"button-box-pressed-invalid\":\n {\n include: \"button-box-pressed\",\n\n style:\n {color: \"invalid\"}\n },\n\n \"button-box-hovered-invalid\": {include: \"button-box-invalid\"},\n\n \"button-box-pressed-hovered-invalid\": {include: \"button-box-pressed-invalid\"},\n\n\n /*\n ---------------------------------------------------------------------------\n BUTTON FOCUSED\n ---------------------------------------------------------------------------\n */\n \"button-box-focused\":\n {\n include: \"button-box\",\n\n style:\n {color: \"background-selected\"}\n },\n\n \"button-box-pressed-focused\":\n {\n include: \"button-box-pressed\",\n\n style:\n {color: \"background-selected\"}\n },\n\n \"button-box-hovered-focused\": {include: \"button-box-focused\"},\n\n \"button-box-pressed-hovered-focused\": {include: \"button-box-pressed-focused\"},\n\n\n /*\n ---------------------------------------------------------------------------\n BUTTON RIGHT\n ---------------------------------------------------------------------------\n */\n \"button-box-right\":\n {\n include: \"button-box\",\n\n style:\n {radius: [0, 1, 1, 0]}\n },\n\n \"button-box-pressed-right\":\n {\n include: \"button-box-pressed\",\n\n style:\n {radius: [0, 1, 1, 0]}\n },\n\n \"button-box-pressed-hovered-right\":\n {\n include: \"button-box-pressed-hovered\",\n\n style:\n {radius: [0, 1, 1, 0]}\n },\n\n \"button-box-hovered-right\":\n {\n include: \"button-box-hovered\",\n\n style:\n {radius: [0, 1, 1, 0]}\n },\n\n \"button-box-focused-right\":\n {\n include: \"button-box-focused\",\n\n style:\n {radius: [0, 1, 1, 0]}\n },\n\n \"button-box-hovered-focused-right\":\n {\n include: \"button-box-hovered-focused\",\n\n style:\n {radius: [0, 1, 1, 0]}\n },\n\n \"button-box-pressed-focused-right\":\n {\n include: \"button-box-pressed-focused\",\n\n style:\n {radius: [0, 1, 1, 0]}\n },\n\n \"button-box-pressed-hovered-focused-right\":\n {\n include: \"button-box-pressed-hovered-focused\",\n\n style:\n {radius: [0, 1, 1, 0]}\n },\n\n\n /*\n ---------------------------------------------------------------------------\n BUTTON BORDERLESS RIGHT\n ---------------------------------------------------------------------------\n\n \"button-box-right-borderless\":\n {\n include: \"button-box\",\n\n style:\n {\n radius: [0, 1, 1, 0],\n width: [1, 1, 1, 0]\n }\n },\n\n \"button-box-pressed-right-borderless\":\n {\n include: \"button-box-pressed\",\n\n style:\n {\n radius: [0, 1, 1, 0],\n width: [1, 1, 1, 0]\n }\n },\n\n \"button-box-pressed-hovered-right-borderless\":\n {\n include: \"button-box-pressed-hovered\",\n\n style:\n {\n radius: [0, 1, 1, 0],\n width: [1, 1, 1, 0]\n }\n },\n\n \"button-box-hovered-right-borderless\":\n {\n include: \"button-box-hovered\",\n\n style:\n {\n radius: [0, 1, 1, 0],\n width: [1, 1, 1, 0]\n }\n },\n*/\n\n /*\n ---------------------------------------------------------------------------\n BUTTON TOP RIGHT\n ---------------------------------------------------------------------------\n */\n \"button-box-top-right\":\n {\n include: \"button-box\",\n\n style:\n {radius: [0, 1, 0, 0]}\n },\n\n \"button-box-pressed-top-right\":\n {\n include: \"button-box-pressed\",\n\n style:\n {radius: [0, 1, 0, 0]}\n },\n\n \"button-box-pressed-hovered-top-right\":\n {\n include: \"button-box-pressed-hovered\",\n\n style:\n {radius: [0, 1, 0, 0]}\n },\n\n \"button-box-hovered-top-right\":\n {\n include: \"button-box-hovered\",\n\n style:\n {radius: [0, 1, 0, 0]}\n },\n\n\n /*\n ---------------------------------------------------------------------------\n BUTTON BOTOM RIGHT\n ---------------------------------------------------------------------------\n */\n \"button-box-bottom-right\":\n {\n include: \"button-box\",\n\n style:\n {\n radius: [0, 0, 1, 0],\n width: [0, 1, 1, 0]\n }\n },\n\n \"button-box-pressed-bottom-right\":\n {\n include: \"button-box-pressed\",\n\n style:\n {\n radius: [0, 0, 1, 0],\n width: [0, 1, 1, 0]\n }\n },\n\n \"button-box-pressed-hovered-bottom-right\":\n {\n include: \"button-box-pressed-hovered\",\n\n style:\n {\n radius: [0, 0, 1, 0],\n width: [0, 1, 1, 0]\n }\n },\n\n \"button-box-hovered-bottom-right\":\n {\n include: \"button-box-hovered\",\n\n style:\n {\n radius: [0, 0, 1, 0],\n width: [0, 1, 1, 0]\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n BUTTON BOTOM LEFT\n ---------------------------------------------------------------------------\n */\n \"button-box-bottom-left\":\n {\n include: \"button-box\",\n\n style:\n {\n radius: [0, 0, 0, 1],\n width: [0, 0, 1, 1]\n }\n },\n\n \"button-box-pressed-bottom-left\":\n {\n include: \"button-box-pressed\",\n\n style:\n {\n radius: [0, 0, 0, 1],\n width: [0, 0, 1, 1]\n }\n },\n\n \"button-box-pressed-hovered-bottom-left\":\n {\n include: \"button-box-pressed-hovered\",\n\n style:\n {\n radius: [0, 0, 0, 1],\n width: [0, 0, 1, 1]\n }\n },\n\n \"button-box-hovered-bottom-left\":\n {\n include: \"button-box-hovered\",\n\n style:\n {\n radius: [0, 0, 0, 1],\n width: [0, 0, 1, 1]\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n BUTTON TOP LEFT\n ---------------------------------------------------------------------------\n */\n \"button-box-top-left\":\n {\n include: \"button-box\",\n\n style:\n {\n radius: [1, 0, 0, 0],\n width: [1, 0, 0, 1]\n }\n },\n\n \"button-box-pressed-top-left\":\n {\n include: \"button-box-pressed\",\n\n style:\n {\n radius: [1, 0, 0, 0],\n width: [1, 0, 0, 1]\n }\n },\n\n \"button-box-pressed-hovered-top-left\":\n {\n include: \"button-box-pressed-hovered\",\n\n style:\n {\n radius: [1, 0, 0, 0],\n width: [1, 0, 0, 1]\n }\n },\n\n \"button-box-hovered-top-left\":\n {\n include: \"button-box-hovered\",\n\n style:\n {\n radius: [1, 0, 0, 0],\n width: [1, 0, 0, 1]\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n BUTTON MIDDLE\n ---------------------------------------------------------------------------\n */\n \"button-box-middle\":\n {\n include: \"button-box\",\n\n style:\n {\n radius: 0,\n width: [1, 0, 1, 1]\n }\n },\n\n \"button-box-pressed-middle\":\n {\n include: \"button-box-pressed\",\n\n style:\n {\n radius: 0,\n width: [1, 0, 1, 1]\n }\n },\n\n \"button-box-pressed-hovered-middle\":\n {\n include: \"button-box-pressed-hovered\",\n\n style:\n {\n radius: 0,\n width: [1, 0, 1, 1]\n }\n },\n\n \"button-box-hovered-middle\":\n {\n include: \"button-box-hovered\",\n\n style:\n {\n radius: 0,\n width: [1, 0, 1, 1]\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n BUTTON LEFT\n ---------------------------------------------------------------------------\n */\n \"button-box-left\":\n {\n include: \"button-box\",\n\n style:\n {\n radius: [1, 0, 0, 1],\n width: [1, 0, 1, 1]\n }\n },\n\n \"button-box-pressed-left\":\n {\n include: \"button-box-pressed\",\n\n style:\n {\n radius: [1, 0, 0, 1],\n width: [1, 0, 1, 1]\n }\n },\n\n \"button-box-pressed-hovered-left\":\n {\n include: \"button-box-pressed-hovered\",\n\n style:\n {\n radius: [1, 0, 0, 1],\n width: [1, 0, 1, 1]\n }\n },\n\n \"button-box-hovered-left\":\n {\n include: \"button-box-hovered\",\n\n style:\n {\n radius: [1, 0, 0, 1],\n width: [1, 0, 1, 1]\n }\n },\n\n \"button-box-focused-left\":\n {\n include: \"button-box-focused\",\n\n style:\n {\n radius: [1, 0, 0, 1],\n width: [1, 0, 1, 1]\n }\n },\n\n \"button-box-hovered-focused-left\":\n {\n include: \"button-box-hovered-focused\",\n\n style:\n {\n radius: [1, 0, 0, 1],\n width: [1, 0, 1, 1]\n }\n },\n\n \"button-box-pressed-hovered-focused-left\":\n {\n include: \"button-box-pressed-hovered-focused\",\n\n style:\n {\n radius: [1, 0, 0, 1],\n width: [1, 0, 1, 1]\n }\n },\n\n \"button-box-pressed-focused-left\":\n {\n include: \"button-box-pressed-focused\",\n\n style:\n {\n radius: [1, 0, 0, 1],\n width: [1, 0, 1, 1]\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n SEPARATOR\n ---------------------------------------------------------------------------\n */\n\n \"separator-horizontal\":\n {\n style:\n {\n widthLeft: 1,\n colorLeft: \"border-separator\"\n }\n },\n\n \"separator-vertical\":\n {\n style:\n {\n widthTop: 1,\n colorTop: \"border-separator\"\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n SCROLL KNOB\n ---------------------------------------------------------------------------\n */\n \"scroll-knob\":\n {\n style:\n {\n radius: 4,\n width: 0,\n color: \"button-border\",\n backgroundColor: \"scrollbar-passive\"\n }\n },\n\n \"scroll-knob-pressed\":\n {\n include: \"scroll-knob\",\n\n style:\n {backgroundColor: \"scrollbar-active\"}\n },\n\n \"scroll-knob-hovered\":\n {include: \"scroll-knob\"},\n\n \"scroll-knob-pressed-hovered\":\n {include: \"scroll-knob-pressed\"},\n\n /*\n ---------------------------------------------------------------------------\n HOVER BUTTON\n ---------------------------------------------------------------------------\n */\n \"button-hover\":\n {\n style:\n {\n backgroundColor: \"button\",\n radius: 1\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n WINDOW\n ---------------------------------------------------------------------------\n */\n \"window\":\n {\n style:\n {\n width: 1,\n color: \"window-border\",\n innerWidth: 0,\n innerColor: \"window-border-inner\",\n shadowLength: 1,\n shadowBlurRadius: 3,\n shadowColor: \"shadow\",\n backgroundColor: \"background-main\"\n }\n },\n\n \"window-active\":\n {\n include: \"window\",\n\n style:\n {\n shadowLength: 2,\n shadowBlurRadius: 5\n }\n },\n\n\n \"window-caption\": {\n style:\n {\n width: [0, 0, 2, 0],\n color: \"window-border-inner\"\n }\n },\n\n /*\n ---------------------------------------------------------------------------\n GROUP BOX\n ---------------------------------------------------------------------------\n */\n\n \"white-box\":\n {\n style:\n {\n width: 1,\n radius: 2,\n color: \"white-box-border\",\n backgroundColor: \"background-main\"\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n FRAME BOX\n ---------------------------------------------------------------------------\n */\n \"border\":\n {\n style:\n {\n width: 1,\n color: \"border\"\n }\n },\n \"border-disabled\":\n {\n style:\n {\n width: 1,\n color: \"border-disabled\"\n }\n },\n\n \"border-focused\":\n {\n style:\n {\n width: 1,\n color: \"border-focused\"\n }\n },\n\n \"border-invalid\":\n {\n style:\n {\n width: 1,\n color: \"border-invalid\"\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n LIST ITEM\n ---------------------------------------------------------------------------\n */\n\n \"lead-item\":\n {\n style:\n {\n width: 1,\n style: \"dotted\",\n color: \"border-lead\"\n }\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n TOOL TIP\n ---------------------------------------------------------------------------\n */\n\n \"tooltip\":\n {\n style:\n {\n width: 1,\n color: \"tooltip-text\",\n shadowLength: 1,\n shadowBlurRadius: 2,\n shadowColor: \"shadow\"\n }\n },\n\n\n \"tooltip-error\":\n {\n style: {\n radius: 5,\n backgroundColor: \"invalid\"\n }\n },\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n TOOLBAR\n ---------------------------------------------------------------------------\n */\n\n \"toolbar-separator\":\n {\n style:\n {\n widthLeft: 1,\n colorLeft: \"button-border\"\n }\n },\n \"toolbar-button\": {\n include: \"material-button\",\n style: {\n shadowHorizontalLength: 0,\n shadowVerticalLength: 0,\n shadowBlurRadius: 0,\n shadowSpreadRadius: 0\n }\n },\n \"toolbar-button-hovered\": {include: \"material-button-hovered\"},\n\n \"toolbar-button-left\": {\n include: \"material-button-left\",\n style: {\n shadowHorizontalLength: 0,\n shadowVerticalLength: 0,\n shadowBlurRadius: 0,\n shadowSpreadRadius: 0\n }\n },\n \"toolbar-button-hovered-left\": {include: \"material-button-hovered-left\"},\n \"toolbar-button-right\": {\n include: \"material-button-right\",\n style: {\n shadowHorizontalLength: 0,\n shadowVerticalLength: 0,\n shadowBlurRadius: 0,\n shadowSpreadRadius: 0\n }\n },\n \"toolbar-button-hovered-right\": {include: \"material-button-hovered-right\"},\n\n /*\n ---------------------------------------------------------------------------\n MENU\n ---------------------------------------------------------------------------\n */\n \"menu-separator\":\n {\n style:\n {\n widthTop: 1,\n colorTop: \"background-selected\"\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n MENU BAR\n ---------------------------------------------------------------------------\n */\n \"menubar-button-hovered\":\n {\n style:\n {backgroundColor: \"material-button-background-hovered\"}\n },\n\n\n \"menubar-button-pressed\":\n {\n include: \"menubar-button-hovered\",\n\n style:\n {backgroundColor: \"material-button-background-pressed\"}\n },\n\n\n /*\n ---------------------------------------------------------------------------\n DATE CHOOSER\n ---------------------------------------------------------------------------\n */\n\n \"datechooser-date-pane\":\n {\n style:\n {\n widthTop: 1,\n colorTop: \"gray\",\n style: \"solid\"\n }\n },\n\n\n \"datechooser-weekday\":\n {\n style:\n {\n widthBottom: 1,\n colorBottom: \"gray\",\n style: \"solid\"\n }\n },\n\n \"datechooser-week\":\n {\n style:\n {\n widthRight: 1,\n colorRight: \"gray\",\n style: \"solid\"\n }\n },\n\n \"datechooser-week-header\":\n {\n style:\n {\n widthBottom: 1,\n colorBottom: \"gray\",\n widthRight: 1,\n colorRight: \"gray\",\n style: \"solid\"\n }\n },\n\n\n\n\n\n /*\n ---------------------------------------------------------------------------\n TAB VIEW\n ---------------------------------------------------------------------------\n */\n\n \"tabview-page-button-top\":\n {\n style:\n {\n width: [0, 0, 2, 0],\n backgroundColor: \"tabview-button-background\",\n color: \"tabview-button-border\"\n }\n },\n\n \"tabview-page-button-bottom\": {\n include: \"tabview-page-button-top\",\n\n style:\n {width: [2, 0, 0, 0]}\n },\n\n \"tabview-page-button-left\": {\n include: \"tabview-page-button-top\",\n\n style:\n {width: [0, 2, 0, 0]}\n },\n\n \"tabview-page-button-right\": {\n include: \"tabview-page-button-top\",\n\n style:\n {width: [0, 0, 0, 2]}\n },\n\n\n /*\n ---------------------------------------------------------------------------\n TABLE\n ---------------------------------------------------------------------------\n */\n\n \"statusbar\":\n {\n style:\n {\n widthTop: 1,\n colorTop: \"background-selected\",\n styleTop: \"solid\"\n }\n },\n\n \"table-scroller-focus-indicator\":\n {\n style:\n {\n width: 2,\n color: \"table-focus-indicator\",\n style: \"solid\"\n }\n },\n\n \"table-header\":\n {\n include: \"button-box\",\n\n style:\n {\n radius: 0,\n color: \"table-header-border\",\n width: [0, 0, 2, 0]\n }\n },\n\n \"table-header-column-button\":\n {include: \"table-header\"},\n\n \"table-header-cell\":\n {\n style:\n {}\n },\n\n \"table-header-cell-first\":\n {include: \"table-header-cell\"},\n\n \"progressive-table-header\":\n {\n include: \"button-box\",\n\n style:\n {\n radius: 0,\n width: [1, 0, 1, 1]\n }\n },\n\n \"progressive-table-header-cell\":\n {\n style:\n {\n widthRight: 1,\n color: \"button-border\"\n }\n },\n\n\n /*\n ---------------------------------------------------------------------------\n PROGRESSBAR\n ---------------------------------------------------------------------------\n */\n\n \"progressbar\":\n {\n style:\n {\n width: 1,\n color: \"border-separator\"\n }\n },\n\n\n\n /*\n ---------------------------------------------------------------------------\n RADIO BUTTON\n ---------------------------------------------------------------------------\n */\n \"radiobutton\":\n {\n style:\n {color: \"text\"}\n },\n /*\n ---------------------------------------------------------------------------\n CHECK BOX\n ---------------------------------------------------------------------------\n */\n\n \"checkbox\":\n {\n style:\n {color: \"text\"}\n }\n }\n });\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Tobias Oetiker (oetiker)\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Theme.define(\"osparc.theme.Decoration\", {\n extend: osparc.theme.common.Decoration,\n\n decorations: {\n \"rounded\": {\n style: {\n radius: 4\n }\n },\n\n \"border-simple\": {\n include: \"border\",\n style: {\n radius: 4\n }\n },\n\n \"no-border\": {\n style: {\n radius: 4,\n width: 1,\n color: \"transparent\"\n }\n },\n\n \"material-button-invalid\": {},\n \"material-button\": {\n style: {\n radius: 4,\n backgroundColor: \"material-button-background\",\n transitionProperty: [\"background-color\", \"border-color\", \"opacity\"],\n transitionDuration: \"0.25s\",\n transitionTimingFunction: \"linear\",\n shadowColor: \"transparent\"\n }\n },\n\n \"indicator-border\": {\n include: \"material-button\",\n style: {\n radius: 4,\n width: 1,\n color: \"text\"\n }\n },\n\n \"form-input\": {\n style: {\n radius: [4, 4, 0, 0],\n width: [0, 0, 1, 0],\n style: \"solid\",\n color: \"info\"\n }\n },\n\n \"form-password\": {\n include: \"form-input\",\n style: {\n radius: 0,\n width: 0,\n backgroundColor: \"transparent\"\n }\n },\n\n \"form-input-focused\": {\n include: \"form-input\",\n style: {\n color: \"product-color\"\n }\n },\n\n \"form-input-disabled\": {\n include: \"form-input\",\n style: {\n color: \"text-disabled\"\n }\n },\n\n \"form-input-invalid\": {\n include: \"form-input\",\n style: {\n color: \"error\"\n }\n },\n\n \"form-input-focused-invalid\": {\n include: \"form-input-invalid\"\n },\n\n \"form-array-container\": {\n style: {\n radius: 2,\n width: 1\n }\n },\n\n \"service-tree\": {\n decorator: qx.ui.decoration.MSingleBorder,\n style: {\n width: 0\n }\n },\n\n \"panelview\": {\n style: {\n transitionProperty: \"top\",\n transitionDuration: \"0.2s\",\n transitionTimingFunction: \"ease-in\"\n }\n },\n\n \"panelview-content\": {\n style: {\n transitionProperty: \"height\",\n transitionDuration: \"0.2s\",\n transitionTimingFunction: \"ease-in\"\n }\n },\n\n \"outputPortHighlighted\": {\n style: {\n backgroundColor: \"background-main-2\"\n }\n },\n\n \"node-ui-cap\": {\n include: \"service-window\",\n style: {\n shadowBlurRadius: 0,\n shadowLength: 0,\n width: 0,\n radius: 4,\n transitionProperty: \"opacity\",\n transitionDuration: \"0.05s\",\n transitionTimingFunction: \"ease-in\"\n }\n },\n\n \"node-ui-cap-maximized\": {\n include: \"service-window-maximized\",\n style: {\n width: 1,\n transitionProperty: \"opacity\",\n transitionDuration: \"0.05s\",\n transitionTimingFunction: \"ease-in\"\n }\n },\n\n \"workbench-small-cap-captionbar\": {\n style: {\n width: 0\n }\n },\n\n \"service-window\": {\n include: \"window\",\n style: {\n radius: 4,\n width: 1\n }\n },\n\n \"service-window-maximized\": {\n include: \"window\",\n style: {\n width: 1\n }\n },\n\n \"sidepanel\": {\n style: {\n transitionProperty: [\"left\", \"width\"],\n transitionDuration: \"0.2s\",\n transitionTimingFunction: \"ease-in\"\n }\n },\n\n \"service-browser\": {\n style: {\n color: \"background-main-2\"\n }\n },\n\n \"flash\": {\n style: {\n radius: 4,\n transitionProperty: \"top\",\n transitionDuration: \"0.2s\",\n transitionTimingFunction: \"ease-in\"\n }\n },\n\n \"flash-message\": {\n style: {\n radius: 4,\n width: 1,\n style: \"solid\"\n }\n },\n\n \"flash-info\": {\n include: \"flash-message\",\n style: {\n color: \"info\"\n }\n },\n\n \"flash-success\": {\n include: \"flash-message\",\n style: {\n color: \"success\"\n }\n },\n\n \"flash-warning\": {\n include: \"flash-message\",\n style: {\n color: \"warning\"\n }\n },\n\n \"flash-error\": {\n include: \"flash-message\",\n style: {\n color: \"error\"\n }\n },\n\n \"flash-badge\": {\n style: {\n radius: 4\n }\n },\n\n \"flash-container-transitioned\": {\n style: {\n transitionProperty: \"height\",\n transitionDuration: \"0.2s\",\n transitionTimingFunction: \"ease-in\"\n }\n },\n\n \"no-border-2\": {\n style: {\n width: 0\n }\n },\n\n \"border-status\": {\n decorator: qx.ui.decoration.MSingleBorder,\n style: {\n width: 1\n }\n },\n\n \"border-ok\": {\n include: \"border-status\",\n style: {\n color: \"ready-green\"\n }\n },\n\n \"border-warning\": {\n include: \"border-status\",\n style: {\n color: \"warning-yellow\"\n }\n },\n\n \"border-error\": {\n include: \"border-status\",\n style: {\n color: \"failed-red\"\n }\n },\n\n \"border-busy\": {\n include: \"border-status\",\n style: {\n color: \"busy-orange\"\n }\n },\n\n \"border-editable\": {\n style: {\n width: 1,\n radius: 4,\n color: \"text-disabled\"\n }\n },\n\n \"hint\": {\n style: {\n radius: 4\n }\n },\n\n \"chip\": {\n style: {\n radius: 4\n }\n },\n\n \"chip-button\": {\n style: {\n width: 1,\n radius: 4,\n color: \"text\",\n backgroundColor: \"transparent\"\n }\n },\n\n \"filter-toggle-button\": {\n style: {\n width: 1,\n radius: 4,\n color: \"transparent\"\n }\n },\n\n \"filter-toggle-button-selected\": {\n include: \"filter-toggle-button\",\n style: {\n color: \"text\"\n }\n },\n\n \"pb-listitem\": {\n style: {\n radius: 4\n }\n },\n\n \"pb-locked\": {\n style: {\n backgroundColor: \"pb-locked\"\n }\n },\n\n \"no-radius-button\": {\n style: {\n radius: 0\n }\n },\n\n \"tag\": {\n style: {\n radius: 4\n }\n },\n \"tagitem\": {\n style: {\n radius: 4\n }\n },\n \"tagitem-colorbutton\": {\n include: \"material-button\",\n style: {\n radiusBottomRight: 0,\n radiusTopRight: 0\n }\n },\n \"tagbutton\": {\n include: \"material-button\",\n style: {\n backgroundColor: \"transparent\",\n shadowColor: \"transparent\",\n radius: 0\n }\n },\n \"bordered-button\": {\n include: \"material-button\",\n style: {\n width: 1,\n color: \"background-main-4\"\n }\n },\n \"strong-bordered-button\": {\n include: \"material-button\",\n style: {\n width: 1,\n color: \"text\"\n }\n },\n \"tab-button\": {\n style: {\n style: \"solid\",\n width: [0, 0, 2, 0],\n color: \"transparent\",\n radius: [4, 4, 0, 0]\n }\n },\n \"tab-button-selected\": {\n style: {\n style: \"solid\",\n width: [0, 0, 2, 0],\n color: \"default-button-focus\",\n radius: [4, 4, 0, 0]\n }\n },\n\n // Button types\n \"form-button\": {\n include: \"material-button\",\n style: {\n style: \"solid\",\n width: 1,\n color: \"default-button\",\n radius: 4,\n backgroundColor: \"default-button\"\n }\n },\n \"fab-button\": {\n include: \"form-button\",\n style: {\n style: \"solid\",\n width: 1,\n radius: 4,\n color: \"fab-background\",\n backgroundColor: \"fab-background\",\n shadowSpreadRadius: 0,\n shadowBlurRadius: 3,\n shadowLength: 0,\n shadowColor: \"box-shadow\"\n }\n },\n \"form-button-outlined\": {\n include: \"form-button\",\n style: {\n color: \"default-button\",\n backgroundColor: \"default-button-background\"\n }\n },\n \"form-button-text\": {\n style: {\n width: 0,\n radius: 0,\n color: null,\n backgroundColor: null\n }\n },\n\n // Button States\n \"form-button-hovered\": {\n include: \"form-button\",\n style: {\n color: \"default-button-hover\",\n backgroundColor: \"default-button-hover-background\"\n }\n },\n \"form-button-hovered-checked\": {\n include: \"form-button\",\n style: {\n color: \"default-button-disabled\",\n backgroundColor: \"default-button\"\n }\n },\n \"form-button-checked\": {\n include: \"form-button\",\n style: {\n color: \"default-button-disabled\",\n backgroundColor: \"default-button-disabled-background\"\n }\n },\n \"form-button-focused\": {\n include: \"form-button\",\n style: {\n color: \"default-button-focus\",\n backgroundColor: \"default-button-focus-background\"\n }\n },\n \"form-button-active\": {\n include: \"form-button\",\n style: {\n color: \"default-button-active\",\n backgroundColor: \"default-button-focus-background\"\n }\n },\n \"form-button-disabled\": {\n include: \"form-button\",\n style: {\n color: \"transparent\",\n backgroundColor: \"transparent\"\n }\n },\n\n // Split buttons\n // Middle\n \"form-button-outlined-middle\": {\n include: \"form-button-outlined\",\n style: {\n width: [1, 0],\n radius: 0\n }\n },\n\n // Right\n \"form-button-outlined-right\": {\n include: \"form-button-outlined\",\n style: {\n width: [1, 1, 1, 1],\n radius: [0, 4, 4, 0]\n }\n },\n \"form-button-outlined-hovered-right\": {\n include: \"form-button-outlined-right\",\n style: {\n color: \"default-button-hover\",\n backgroundColor: \"default-button-hover-background\"\n }\n },\n \"form-button-outlined-checked-right\": {\n include: \"form-button-outlined-right\",\n style: {\n color: \"default-button\",\n backgroundColor: \"default-button\"\n }\n },\n\n // Left\n \"form-button-outlined-left\": {\n include: \"form-button-outlined\",\n style: {\n width: [1, 0, 1, 1],\n radius: [4, 0, 0, 4]\n }\n },\n \"form-button-outlined-hovered-left\": {\n include: \"form-button-outlined-left\",\n style: {\n color: \"default-button-hover\",\n backgroundColor: \"default-button-hover-background\"\n }\n },\n \"form-button-outlined-checked-left\": {\n include: \"form-button-outlined-left\",\n style: {\n color: \"default-button\",\n backgroundColor: \"default-button\"\n }\n },\n\n // Warning button\n \"form-button-warning\": {\n include:\"form-button-outlined\",\n style: {\n color: \"warning\",\n width: 1,\n style: \"solid\"\n }\n },\n \"form-button-warning-hover\": {\n include:\"form-button-outlined\",\n style: {\n color: \"warning\",\n width: 1,\n style: \"solid\"\n }\n },\n\n // Delete button\n \"form-button-danger\": {\n include:\"form-button-outlined\",\n style: {\n color: \"error\",\n width: 1,\n style: \"solid\"\n }\n },\n \"form-button-danger-hover\": {\n include:\"form-button-outlined\",\n style: {\n color: \"error\",\n width: 1,\n style: \"solid\"\n }\n },\n\n \"toolbar-button\": {\n include: \"form-button-outlined\"\n },\n\n \"toolbar-button-hovered\": {\n include: \"form-button-outlined\",\n style: {\n backgroundColor: \"default-button-hover-background\"\n }\n },\n\n \"selected-light\": {\n include: \"material-button\",\n style: {\n style: \"solid\",\n width: 1,\n color: \"background-selected-dark\",\n backgroundColor: \"background-selected\"\n }\n },\n\n \"selected-dark\": {\n include: \"material-button\",\n style: {\n style: \"solid\",\n width: 1,\n color: \"background-selected-dark\",\n backgroundColor: \"background-selected-dark\"\n }\n },\n\n \"thumbnail\": {\n include: \"material-button\",\n style: {\n style: \"solid\",\n width: 1,\n color: \"box-shadow\",\n backgroundColor: \"fab-background\",\n }\n },\n\n \"thumbnail-selected\": {\n include: \"thumbnail\",\n style: {\n style: \"solid\",\n width: 1,\n color: \"background-selected-dark\",\n backgroundColor: \"background-selected\"\n }\n },\n\n \"progressbar\": {\n style: {\n style: \"solid\",\n width: 0,\n color: \"transparent\",\n backgroundColor: \"progressbar-runner\",\n }\n },\n\n /*\n ---------------------------------------------------------------------------\n Tooltip\n ---------------------------------------------------------------------------\n */\n \"tooltip\": {\n style: {\n style: \"solid\",\n width: 1,\n color: \"info\",\n backgroundColor: \"tooltip\",\n }\n },\n\n /*\n ---------------------------------------------------------------------------\n Appmotion\n ---------------------------------------------------------------------------\n */\n \"appmotion-buy-credits-input\": {\n style: {\n radius: 4\n }\n }\n }\n});\n","/* ************************************************************************\n\n OSparc Dark Theme for Qooxdoo\n\n Copyright:\n 2018 IT'IS Foundation\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Tobias Oetiker (oetiker)\n\n Origin:\n This theme is based in large parts on the the Simple\n theme included with Qooxdoo.\n************************************************************************ */\n/**\n * @asset(osparc/theme/font/*.woff)\n * @asset(osparc/theme/font/*.woff2)\n * @asset(osparc/theme/font/*.eot)\n * @asset(osparc/theme/font/*.ttf)\n */\n/**\n * The simple qooxdoo font theme.\n */\nqx.Theme.define(\"osparc.theme.common.Font\", {\n fonts: {\n \"default\": {\n size: 13,\n family: [\"sans-serif\"],\n color: \"text\",\n sources: [\n {\n family: \"Roboto\",\n source: [\n \"osparc/theme/font/Roboto/roboto-v18-latin_latin-ext-regular.eot\",\n \"osparc/theme/font/Roboto/roboto-v18-latin_latin-ext-regular.woff2\",\n \"osparc/theme/font/Roboto/roboto-v18-latin_latin-ext-regular.woff\",\n \"osparc/theme/font/Roboto/roboto-v18-latin_latin-ext-regular.ttf\"\n ]\n }\n ]\n },\n\n \"bold\":\n {\n size: 13,\n family: [\"sans-serif\"],\n bold: true,\n color: \"text\",\n sources: [\n {\n family: \"Roboto\",\n source: [\n \"osparc/theme/font/Roboto/roboto-v18-latin_latin-ext-700.eot\",\n \"osparc/theme/font/Roboto/roboto-v18-latin_latin-ext-700.woff2\",\n \"osparc/theme/font/Roboto/roboto-v18-latin_latin-ext-700.woff\",\n \"osparc/theme/font/Roboto/roboto-v18-latin_latin-ext-700.ttf\"\n ]\n }\n ]\n },\n\n \"headline\":\n {\n size: 24,\n family: [\"sans-serif\"],\n color: \"text\",\n sources: [\n {\n family: \"Roboto\",\n source: [\n \"osparc/theme/font/Roboto/roboto-v18-latin_latin-ext-regular.eot\",\n \"osparc/theme/font/Roboto/roboto-v18-latin_latin-ext-regular.woff2\",\n \"osparc/theme/font/Roboto/roboto-v18-latin_latin-ext-regular.woff\",\n \"osparc/theme/font/Roboto/roboto-v18-latin_latin-ext-regular.ttf\"\n ]\n }\n ]\n },\n\n \"small\":\n {\n size: 12,\n family: [\"sans-serif\"],\n color: \"text\",\n sources: [\n {\n family: \"Roboto\",\n source: [\n \"osparc/theme/font/Roboto/roboto-v18-latin_latin-ext-regular.eot\",\n \"osparc/theme/font/Roboto/roboto-v18-latin_latin-ext-regular.woff2\",\n \"osparc/theme/font/Roboto/roboto-v18-latin_latin-ext-regular.woff\",\n \"osparc/theme/font/Roboto/roboto-v18-latin_latin-ext-regular.ttf\"\n ]\n }\n ]\n },\n\n \"monospace\":\n {\n size: 14,\n family: [\"monospace\"],\n color: \"text\",\n sources: [\n {\n family: \"Roboto Mono\",\n source: [\n \"osparc/theme/font/Roboto/roboto-mono-v6-latin_latin-ext-regular.eot\",\n \"osparc/theme/font/Roboto/roboto-mono-v6-latin_latin-ext-regular.woff2\",\n \"osparc/theme/font/Roboto/roboto-mono-v6-latin_latin-ext-regular.woff\",\n \"osparc/theme/font/Roboto/roboto-mono-v6-latin_latin-ext-regular.ttf\"\n ]\n }\n ]\n }\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2018 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Tobias Oetiker (oetiker)\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Theme.define(\"osparc.theme.Font\", {\n extend: osparc.theme.common.Font,\n\n fonts: {\n \"defaults\": {\n family: [\"sans-serif\"],\n color: \"text\",\n sources: [\n {\n family: \"Manrope\",\n source: [\n \"common/Manrope/Manrope-VariableFont_wght.ttf\"\n ]\n }\n ]\n },\n\n \"default\": {\n include: \"defaults\",\n size: 13\n },\n\n \"title-18\": {\n include: \"defaults\",\n size: 18,\n bold: true\n },\n\n \"text-18\": {\n include: \"defaults\",\n size: 18\n },\n\n \"title-16\": {\n include: \"defaults\",\n size: 16,\n bold: true\n },\n\n \"text-16\": {\n include: \"defaults\",\n size: 16\n },\n\n \"title-14\": {\n include: \"defaults\",\n size: 14,\n bold: true\n },\n\n \"text-14\": {\n include: \"defaults\",\n size: 14\n },\n\n \"link-label-14\": {\n include: \"defaults\",\n size: 14,\n color: \"text-darker\",\n decoration: \"underline\"\n },\n\n \"text-13\": {\n include: \"defaults\",\n size: 13\n },\n\n \"text-13-italic\": {\n include: \"defaults\",\n size: 13,\n italic: true\n },\n\n \"text-12\": {\n include: \"defaults\",\n size: 12\n },\n\n \"link-label-12\": {\n include: \"defaults\",\n size: 12,\n color: \"text-darker\",\n decoration: \"underline\"\n },\n\n \"text-11\": {\n include: \"defaults\",\n size: 11\n },\n\n \"text-11-italic\": {\n include: \"defaults\",\n size: 11,\n italic: true\n },\n\n \"text-10\": {\n include: \"defaults\",\n size: 10\n },\n\n \"text-9\": {\n include: \"defaults\",\n size: 9\n },\n\n \"workbench-start-hint\": {\n include: \"defaults\",\n size: 20,\n color: \"workbench-start-hint\",\n bold: true\n }\n }\n});\n","/* ************************************************************************\n\n qooxdoo - the new era of web development\n\n http://qooxdoo.org\n\n Copyright:\n 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de\n\n License:\n MIT: https://opensource.org/licenses/MIT\n See the LICENSE file in the project's top-level directory for details.\n\n Authors:\n * Sebastian Werner (wpbasti)\n * Andreas Ecker (ecker)\n\n************************************************************************ */\n/**\n * KDE Oxygen icons\n */\nqx.Theme.define(\"qx.theme.icon.Oxygen\",\n{\n title : \"Oxygen\",\n aliases : {\n \"icon\" : \"qx/icon/Oxygen\"\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Theme.define(\"osparc.theme.products.s4l.ThemeLight\", {\n meta: {\n color: osparc.theme.products.s4l.ColorLight,\n decoration: osparc.theme.Decoration,\n font: osparc.theme.Font,\n icon: qx.theme.icon.Oxygen,\n appearance: osparc.theme.Appearance,\n }\n});\n","qx.Theme.define(\"osparc.theme.ColorDark\", {\n include: osparc.theme.mixin.Color,\n\n colors: {\n // 105-0\n \"c00\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 105),\n \"c01\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 105-5),\n \"c02\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 105-10),\n \"c03\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 105-20),\n \"c04\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 105-25),\n \"c05\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 105-35),\n \"c06\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 105-50),\n \"c07\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 105-60),\n \"c08\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 105-70),\n \"c09\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 105-75),\n \"c10\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 105-80),\n \"c12\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 105-90),\n \"c14\": osparc.theme.colorProvider.ColorProvider.getColor(\"color.scales.static.base\", 105-105),\n\n \"product-color\": \"rgba(0, 144, 208, 1)\", // override in product\n \"strong-main\": \"product-color\",\n \"a-bit-transparent\": \"rgba(0, 0, 0, 0.4)\",\n\n // main\n \"background-main\": \"c01\",\n \"background-main-1\": \"c02\",\n \"background-main-2\": \"c03\",\n \"background-main-3\": \"c04\",\n \"background-main-4\": \"c05\",\n \"background-main-5\": \"c06\",\n\n \"background-card-overlay\": \"rgba(25, 33, 37, 0.8)\",\n \"background-workspace-card-overlay\": \"rgb(35, 93, 122)\",\n\n \"navigation_bar_background_color\": \"rgba(1, 18, 26, 0.8)\",\n \"fab_text\": \"contrasted-text-dark\",\n \"fab-background\": \"rgba(255, 255, 255, 0.2)\",\n \"input_background\": \"#213248\",\n \"input_background_disable\": \"rgba(113, 157, 181, 0.25)\",\n \"hint-background\": \"rgba(82, 82, 82, 1)\",\n \"transparent_overlay\": \"rgba(1, 18, 26, 0.1)\",\n\n \"flash_message_bg\": \"input_background\",\n\n // text\n \"text\": \"rgba(216, 216, 216, 1)\",\n \"text-disabled\": \"rgba(113, 157, 181, 1)\",\n \"text-selected\": \"rgba(255, 255, 255, 1)\",\n \"text-placeholder\": \"rgba(174, 191, 207, 1)\",\n \"text-darker\": \"rgba(255, 255, 255, 1)\",\n \"contrasted-text-dark\": \"rgba(216, 216, 216, 1)\",\n \"contrasted-text-light\": \"rgba(255, 255, 255, 1)\",\n \"link\": \"rgba(10, 182, 255, 1)\",\n\n // shadows\n \"bg-shadow\": \"background-main-5\",\n \"box-shadow\": \"rgba(0, 0, 0, 0.15)\",\n \"shadow\": qx.core.Environment.get(\"css.rgba\") ? \"a-bit-transparent\" : \"bg-shadow\",\n\n // window\n \"window-popup-background\": \"rgba(66, 66, 66, 1)\",\n \"window-caption-background\": \"background-main\",\n \"window-caption-background-active\": \"background-main-3\",\n \"window-caption-text\": \"text\",\n \"window-caption-text-active\": \"c12\",\n \"window-border\": \"background-main-2\",\n \"window-border-inner\": \"background-main-1\",\n\n // material-button\n \"material-button-background\": \"fab-background\",\n \"material-button-background-disabled\": \"default-button-disabled-background\",\n \"material-button-background-hovered\": \"default-button-hover-background\",\n \"material-button-background-pressed\": \"default-button-active-background\",\n \"material-button-text-disabled\": \"default-button-disabled-background\",\n \"material-button-text\": \"default-button-text-outline\",\n\n // material-textfield\n \"material-textfield\": \"input_background\",\n \"material-textfield-focused\": \"product-color\",\n \"material-textfield-disabled\": \"default-button-disabled\",\n \"material-textfield-invalid\": \"error\",\n \"invalid\": \"error\",\n\n // backgrounds\n \"background-selected\": \"default-button-background\",\n \"background-selected-disabled\": \"default-button-disabled\",\n \"background-selected-dark\": \"product-color\",\n \"background-disabled\": \"background-main\",\n \"background-disabled-checked\": \"background-main-1\",\n \"background-pane\": \"background-main\",\n\n // tabview\n \"tabview-unselected\": \"c14\",\n \"tabview-button-border\": \"product-color\",\n \"tabview-label-active-disabled\": \"c10\",\n \"tabview-pane-background\": \"transparent\",\n \"tabview-button-background\": \"transparent\",\n\n // scrollbar\n \"scrollbar-passive\": \"background-main-4\",\n \"scrollbar-active\": \"background-main-5\",\n\n // form\n \"button\": \"background-main-4\",\n \"button-border\": \"background-main-5\",\n \"button-border-hovered\": \"c07\",\n \"button-box\": \"background-main-3\",\n \"button-box-pressed\": \"background-main-4\",\n \"border-lead\": \"c07\",\n\n // group box\n \"white-box-border\": \"background-main-2\",\n\n // borders\n // 'border-main' is an alias of 'background-selected' (compatibility reasons)\n \"border\": \"background-main-3\",\n \"border-focused\": \"c09\",\n \"border-invalid\": \"failed-red\",\n \"border-disabled\": \"background-main\",\n\n // tooltip\n \"tooltip\": \"flash_message_bg\",\n \"tooltip-text\": \"text\",\n\n // used in progressive code\n \"progressive-table-header\": \"c08\",\n \"progressive-table-row-background-even\": \"background-main\",\n \"progressive-table-row-background-odd\": \"background-main\",\n \"progressive-progressbar-background\": \"background-main\",\n \"progressive-progressbar-indicator-done\": \"background-main\",\n \"progressive-progressbar-indicator-undone\": \"background-main-1\",\n \"progressive-progressbar-percent-background\": \"background-main\",\n \"progressive-progressbar-percent-text\": \"background-main-1\",\n\n\n\n // OSPARC\n \"workbench-edge-comp-active\": \"#777777\",\n \"workbench-edge-api-active\": \"#BBBBBB\",\n \"workbench-start-hint\": \"#505050\",\n \"workbench-view-navbar\": \"c00\",\n \"workbench-view-splitter\": \"#000000\",\n\n \"node-background\": \"rgba(113, 157, 181, 0.5)\",\n \"node-selected-background\": \"strong-main\",\n \"node-title-text\": \"text-selected\",\n \"node-port-text\": \"#454545\",\n\n \"logger-debug-message\": \"#FFFFFF\",\n \"logger-info-message\": \"#FFFFFF\",\n\n \"service-window-hint\": \"#808080\",\n\n \"progressbar\": \"success\",\n \"progressbar-disabled\": \"rgba(113, 157, 181, 0.25)\",\n \"progressbar-runner\": \"rgba(228, 234, 237, 0.5)\",\n\n \"haloProgressbar\": \"progressbar\",\n \"haloProgressbar-disabled\": \"progressbar-disabled\",\n \"haloProgressbar-runner\": \"progressbar-runner\",\n \"haloProgressbar-fill\": \"background-card-overlay\",\n\n \"loading-page-background-color\": \"#202020\",\n \"loading-page-text\": \"#FFFFFF\",\n \"loading-page-spinner\": \"#DDDDDD\"\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Theme.define(\"osparc.theme.products.s4l.ColorDark\", {\n include: osparc.theme.ColorDark,\n\n colors: {\n \"product-color\": \"rgba(0, 144, 208, 1)\",\n \"default-button\": \"product-color\",\n \"default-button-background\": \"rgba(0, 144, 208, 0.25)\"\n }\n});\n","/* ************************************************************************\n\n osparc - the simcore frontend\n\n https://osparc.io\n\n Copyright:\n 2023 IT'IS Foundation, https://itis.swiss\n\n License:\n MIT: https://opensource.org/licenses/MIT\n\n Authors:\n * Odei Maiz (odeimaiz)\n\n************************************************************************ */\n\nqx.Theme.define(\"osparc.theme.products.s4l.ThemeDark\", {\n meta: {\n color: osparc.theme.products.s4l.ColorDark,\n decoration: osparc.theme.Decoration,\n font: osparc.theme.Font,\n icon: qx.theme.icon.Oxygen,\n appearance: osparc.theme.Appearance,\n }\n});\n"]}