{"version":3,"sources":["components/App/ScrollToTop.js","routes.js","sharedConstants.js","reducers/authenticatedUser.reducer.js","models/acl.model.js","models/user.model.js","models/dawg.model.js","models/workspace.model.js","models/workspaceJob.model.js","models/selectionSettings.model.js","reducers/workspace.reducer.js","reducers/user.reducer.js","models/tag.model.js","reducers/tag.reducer.js","models/oauth.model.js","reducers/acl.reducer.js","reducers/toast.reducer.js","models/component.model.js","models/configuration.model.js","reducers/configuration.reducer.js","models/trashedItem.model.js","reducers/trash.reducer.js","models/configurationJob.model.js","reducers/projectConfigurationJob.reducer.js","reducers/projectWorkspaceJob.reducer.js","reducers/configurationJob.reducer.js","reducers/workspaceJob.reducer.js","models/workspaceHistory.model.js","reducers/workspaceHistory.reducer.js","models/configurationHistory.model.js","reducers/configurationHistory.reducer.js","models/dataPreview.model.js","reducers/dataPreview.reducer.js","reducers/workspaceConfigurationJob.reducer.js","reducers/fulltextSearch.reducer.js","models/dawgJob.model.js","reducers/dawg.reducer.js","reducers/dawgJob.reducer.js","models/dawgHistory.model.js","reducers/dawgHistory.reducer.js","reducers/dawgWorkspace.reducer.js","reducers/dawgWorkspaceJob.reducer.js","reducers/index.js","reducers/usersAcl.reducer.js","reducers/oauth.reducer.js","reducers/component.reducer.js","reducers/workersCount.reducer.js","store.js","helpers/authenticatedUser.helper.js","auth.js","actions/toast.action.js","components/UI/elements/TextField/index.js","helpers/disabledTooltip.helper.js","components/UI/elements/Button/index.js","helpers/validators.helper.js","helpers/pendingPromise.helper.js","api.js","actions/authenticatedUser.action.js","images/meiro-symbol-white-transparent.svg","components/Login/index.js","images/meiro-labyrinth.svg","components/UI/elements/WholePageLoading/index.js","components/Login/oktaCallback.js","images/wave.svg","components/Page/LogoutPage.js","images/team/0.png","images/team/1.png","images/team/2.png","images/team/3.png","images/team/4.png","images/team/5.png","images/team/6.png","images/team/7.png","images/team/8.png","images/team/9.png","images/team/10.png","images/team/11.png","images/team/12.png","images/team/13.png","images/team/14.png","images/team/15.png","images/team/16.png","images/team/17.png","images/team/18.png","images/team/19.png","images/team/20.png","images/team/21.png","images/team/22.png","images/team/23.png","images/team/24.png","images/team/25.png","images/team/26.png","images/team/27.png","components/UI/elements/DropdownMenu/index.js","helpers/gravatar.helper.js","images/default-avatar-bg.svg","components/UI/elements/Avatar/index.js","components/UI/elements/IconButton/index.js","helpers/string.helper.js","selectors/workspace.selector.js","components/UI/components/HeaderContainer/SubmenuComponent/WorkspaceDetailSubmenu.js","actions/workspace.action.js","components/UI/components/HeaderContainer/SubmenuComponent/WorkspaceConfigurationCreateSubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/WorkspaceConfigurationJobsSubmenu.js","helpers/table.helper.js","selectors/configuration.selector.js","components/UI/components/HeaderContainer/SubmenuComponent/WorkspaceConfigurationSubmenu.js","helpers/AllResourceItemsFetcher.helper.js","actions/configuration.action.js","components/UI/components/HeaderContainer/SubmenuComponent/DataPreviewSubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/DataPreviewListSubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/WorkspaceConfigurationConfigurationJobsSubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/WorkspaceConfigurationConfigurationJobSubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/WorkspaceConfigurationConfigurationJobHistorySubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/WorkspaceJobsSubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/WorkspaceJobSubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/WorkspaceJobHistorySubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/WorkspaceHistorySubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/WorkspaceHistoryDetailSubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/ConfigurationHistorySubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/ConfigurationHistoryDetailSubmenu.js","selectors/dawg.selector.js","components/UI/components/HeaderContainer/SubmenuComponent/DawgDetailSubmenu.js","actions/dawg.action.js","components/UI/components/HeaderContainer/SubmenuComponent/DawgHistorySubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/DawgHistoryDetailSubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/DawgJobsSubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/DawgJobSubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/DawgJobHistorySubmenu.js","components/UI/components/HeaderContainer/SubmenuComponent/DawgWorkspaceJobsSubmenu.js","images/client-dummy.png","components/UI/components/HeaderContainer/index.js","components/UI/components/FooterContainer/index.js","images/meiro-wide-grey.png","components/UI/AdminProtectedRoute.js","components/UI/elements/PaperHeader/index.js","components/UI/components/NameForm/index.js","components/UI/elements/ToggleSwitch/index.js","components/UI/elements/WsConfStickyNav/index.js","helpers/component.helper.js","components/Configuration/pages/Header/index.js","components/UI/elements/Modal/index.js","components/UI/components/ConfirmModal/index.js","helpers/customSelectStyle.helper.js","components/UI/elements/SelectField/index.js","components/Configuration/pages/CloneModal/index.js","components/UI/elements/Paper/index.js","components/UI/components/DescriptionCard/CodeBlock.js","components/UI/components/DescriptionCard/index.js","components/UI/elements/Duration/index.js","components/UI/elements/StatusElement/index.js","components/UI/elements/DateTimeWithTooltip/index.js","selectors/user.selector.js","helpers/Username.helper.js","components/Configuration/pages/cards/Jobs/index.js","components/UI/elements/InfoTooltip/index.js","components/Configuration/pages/cards/SettingsForm/OauthNoteModal/index.js","components/UI/components/JsonFormFieldTemplate/ArrayFieldReadOnlyTemplate.js","components/UI/components/JsonFormFieldTemplate/ArrayFieldTemplate.js","components/UI/components/JsonFormFieldTemplate/ObjectFieldTemplate.js","components/UI/components/JsonFormFieldTemplate/ObjectFieldTemplateCollapsable.js","components/UI/components/JsonFormFieldTemplate/FieldTemplate.js","helpers/jsonForm.helper.js","helpers/ErrorBoundary.helper.js","components/Configuration/pages/cards/SettingsForm/processors/DefaultSettingsProcessor.js","components/Configuration/pages/cards/SettingsForm/processors/AutoIncrementSettingsProcessor.js","components/Configuration/pages/cards/SettingsForm/processors/ObjectKeysToArraySettingsProcessor.js","components/Configuration/pages/cards/SettingsForm/processors/ObjectToArraySettingsProcessor.js","components/Configuration/pages/cards/SettingsForm/processors/Processor.js","components/UI/elements/CodeEditorTheme/meiro.js","components/Configuration/pages/cards/SettingsForm/index.js","components/Configuration/pages/cards/CodeEditor/index.js","helpers/filename.helper.js","components/Configuration/pages/cards/DataOut/index.js","components/Configuration/pages/cards/DataIn/index.js","components/Configuration/pages/cards/VariablesInjection/index.js","images/bars.svg","actions/configurationJob.action.js","actions/loadingBar.action.js","actions/workspaceJob.action.js","actions/workspaceHistory.action.js","actions/configurationHistory.action.js","actions/dataPreview.action.js","selectors/configurationJob.selector.js","selectors/usersAcl.selector.js","selectors/component.selector.js","selectors/dataPreview.selector.js","helpers/backButton.helper.js","components/Configuration/pages/ConfigurationShow.js","components/UI/elements/SearchField/index.js","components/UI/components/SearchForm/index.js","components/Configuration/CreateConfigurationForm.js","components/Configuration/pages/ConfigurationCreate.js","components/UI/elements/LoadingCircle/index.js","selectors/fulltextSearch.selector.js","components/Search/pages/Search.js","actions/fulltextSearch.action.js","selectors/projectConfigurationJob.selector.js","selectors/tag.selector.js","actions/table.action.js","actions/acl.action.js","components/Workspace/pages/cards/WorkspacesActivityDrawer/IntegrationsActivity/WorkspaceGanttChart/index.js","components/Workspace/pages/cards/WorkspacesActivityDrawer/IntegrationsActivity/index.js","components/Workspace/pages/cards/WorkspacesActivityDrawer/index.js","images/cols.svg","components/UI/DawgWsShared/Header/index.js","components/UI/elements/Tag/index.js","components/UI/components/TagPicker/index.js","components/UI/DawgWsShared/FilterForm/index.js","components/UI/DawgWsShared/SortingForm/OrderField/index.js","components/UI/DawgWsShared/SortingForm/index.js","components/UI/DawgWsShared/SubHeader/index.js","components/UI/DawgWsShared/CreateActionModal/index.js","components/UI/elements/WorkspaceIcon/index.js","components/UI/DawgWsShared/ProjectJobsCard/index.js","helpers/dataUnits.helper.js","helpers/schedules.helper.js","components/UI/elements/DawgLink/index.js","components/UI/elements/WorkspaceLink/index.js","components/UI/DawgWsShared/ListItem/index.js","components/Workspace/WorkspaceListItem/index.js","components/Workspace/pages/WorkspaceList.js","components/UI/elements/ToggleSwitch/ToggleSwitchField.js","components/UI/DawgWsShared/DetailHeader/AddUserAclModal/index.js","components/UI/DawgWsShared/DetailHeader/EditUserAclModal/index.js","components/UI/components/DeleteDataCheckbox/index.js","selectors/workersCount.selector.js","components/UI/components/WorkersCount/index.js","actions/workersCount.action.js","components/UI/DawgWsShared/DetailHeader/TransferOwnershipModal/index.js","components/UI/DawgWsShared/DetailHeader/index.js","helpers/romanNumeral.helper.js","components/UI/components/AddInputbox/AddInputbox.js","components/UI/DawgWsShared/SetSchedule/SubForms/CommonHeader.js","components/UI/DawgWsShared/SetSchedule/SubForms/DayOfMonthForm.js","components/UI/DawgWsShared/SetSchedule/SubForms/DayOfWeekForm.js","components/UI/DawgWsShared/SetSchedule/SetScheduleForm.js","components/UI/DawgWsShared/SetSchedule/index.js","components/Workspace/pages/cards/Variables/index.js","components/UI/DawgWsShared/EntityJobsCard/index.js","components/UI/DawgWsShared/EntityChildrenJobsCard/index.js","components/UI/DawgWsShared/Dag/images/arrow.png","components/UI/DawgWsShared/Dag/images/disable.png","components/UI/DawgWsShared/Dag/images/play.png","components/UI/DawgWsShared/Dag/images/trash.png","components/UI/DawgWsShared/Dag/images/waiting.png","components/UI/DawgWsShared/Dag/images/warning.png","components/UI/DawgWsShared/Dag/images/running.png","components/UI/DawgWsShared/Dag/images/error.png","components/UI/DawgWsShared/Dag/images/finished.png","components/UI/DawgWsShared/Dag/images/canceled.png","components/UI/DawgWsShared/Dag/CytoscapeConf.js","components/UI/DawgWsShared/Dag/images/delete.png","components/UI/DawgWsShared/Dag/images/exclamation.png","components/UI/DawgWsShared/Dag/index.js","components/UI/DawgWsShared/DataFlow/index.js","selectors/acl.selector.js","selectors/workspaceJob.selector.js","selectors/workspaceConfigurationJob.selector.js","components/Workspace/pages/WorkspaceShow.js","components/UI/elements/JobsLineChart/index.js","components/UI/DawgWsShared/JobList/index.js","components/WorkspaceJob/WorkspaceJobList.js","components/UI/DawgWsShared/JobDetail/JobsGanttChart/index.js","components/UI/DawgWsShared/JobDetail/index.js","components/WorkspaceJob/WorkspaceJobShow.js","components/WorkspaceJobHistory/index.js","selectors/workspaceHistory.selector.js","components/UI/DawgWsShared/EntityHistoryList/index.js","helpers/objectChanges.helper.js","components/WorkspaceHistory/WorkspaceHistoryList.js","components/UI/DawgWsShared/EntityHistoryDetail/index.js","components/WorkspaceHistory/WorkspaceHistoryDetail.js","actions/dawgJob.action.js","actions/dawgHistory.action.js","selectors/projectWorkspaceJob.selector.js","components/Dawg/DawgListItem/index.js","components/Dawg/DawgList.js","selectors/dawgJob.selector.js","selectors/dawgWorkspace.selector.js","selectors/dawgWorkspaceJob.selector.js","components/Dawg/DawgDetail.js","actions/dawgWorkspace.action.js","selectors/dawgHistory.selector.js","components/DawgHistory/DawgHistoryList.js","components/DawgHistory/DawgHistoryDetail.js","components/DawgJob/DawgJobList.js","components/DawgJob/DawgJobShow.js","components/Dawg/DawgWorkspaceAdd.js","components/DawgJobHistory/index.js","components/UI/DawgWsShared/EntityChildrenJobsList/index.js","components/DawgWorkspaceJob/DawgWorkspaceJobList.js","actions/user.action.js","components/UI/elements/ToggleButton/index.js","components/UI/elements/CheckboxField/index.js","components/User/pages/CreateUserModal/index.js","actions/inviteForm.action.js","components/User/pages/ModifyUserModal/index.js","components/User/pages/UserList.js","actions/tag.action.js","components/UI/elements/TextField/TagTextField/index.js","components/UI/components/ColorRadioGroup/index.js","components/Tag/pages/TagList/TagForm/index.js","components/Tag/pages/TagList/index.js","selectors/oauth.selector.js","components/Oauth/pages/OAuthModal/index.js","actions/oauth.action.js","components/Oauth/pages/OAuthList.js","selectors/trash.selector.js","components/Trash/pages/ConfigurationModal/index.js","components/Trash/pages/TrashList.js","actions/trash.action.js","components/DataPreview/DataPreviewDetail/index.js","components/DataPreview/DataPreviewList/index.js","components/ConfigurationJob/ConfigurationJobList.js","components/ConfigurationJob/ConfigurationJobShow.js","components/ConfigurationJobHistory/index.js","selectors/configurationHistory.selector.js","components/ConfigurationHistory/ConfigurationHistoryList.js","components/ConfigurationHistory/ConfigurationHistoryDetail.js","components/UI/components/PasswordField/index.js","components/DropDown/pages/UserSettings/index.js","images/access.png","components/Page/NotAuthorizedPage.js","images/404-graph.png","components/Page/NotFoundPage.js","components/Project/PageComponent.js","components/Project/ConfigurationJob.js","components/Project/WorkspaceJob.js","components/WorkspaceConfigurationJob/WorkspaceConfigurationJobList.js","components/UserPermissions/pages/UserPermissionsList.js","components/UI/AuthenticatedRoutesSwitch.js","components/UI/AuthenticatedLayout.js","actions/component.action.js","components/Password/pages/PasswordReset/index.js","components/Password/pages/PasswordSet/index.js","components/App/getUserConfirmation.js","components/App/AppUpdateModal/index.js","components/App/index.js","registerServiceWorker.js","index.js","components/UI/DawgWsShared/DetailHeader/TransferOwnershipModal/TransferOwnershipModal.module.scss","components/UserPermissions/pages/UserPermissionsList.module.scss"],"names":["ScrollToTop","prevProps","this","props","location","window","scrollTo","children","Component","withRouter","mapping","dashboard","path","regex","title","headerTitle","login","logout","search","previous","administration","getRoutePath","getRoute","name","params","prefix","route","Object","keys","length","Error","replaceParamsInPath","applyPrefixToPath","paramsKeys","forEach","property","reg","RegExp","replace","USER","LOGGING_IN","LOGGED_IN","LOGGED_OUT","RETRIEVE_LOGGED_IN_USER","DISABLE_LOGOUT","ENABLE_LOGOUT","MODIFY_AUTH_USER","LIST","RETRIEVE","CREATE","DELETE","MODIFY","REFRESH_TOKEN","SET_UI_ATTRIBUTE","ACTION","ADMIN","SYSTEM","PASSWORD_SET","INVITATION","TOAST","SHOW","ERROR","SUCCESS","INFO","WORKSPACE","LIST_LAST_JOBS","RUN","REFRESH_LAST","CLEAR_CACHE","CANCEL","LIST_PROJECT","LOADING_LIMIT","GET_LAST_TWO","JOB","DAWG","MODIFY_BULK","ADD","TAG","ASSIGN_TAG_TO_WORKSPACE","DELETE_TAG_FROM_WORKSPACE","ASSIGN_TAG_TO_DAWG","DELETE_TAG_FROM_DAWG","TABLE","SET_SORT_OPTIONS","SET_SELECTED_TAGS","SET_SORTING_SEARCHTEXT_AND_TAGS","SET_SEARCH_TEXT","SET_FILTER_BY","OAUTH","COMPONENT","CONFIGURATION","CLONE","REVERT","IN","OUT","LOG","TRASH","RESTORE_USER","RESTORE_CONFIGURATION","RESTORE_WORKSPACE","ACL","GET_WORKERS_COUNT","SEARCH","CLEAR","ADD_INPUTBOX_TYPE","REPEAT","ONCE","SCHEDULE_FORM_TYPE","PERMISSION","MODAL","ERASE","INVITE_FORM","SET_DEFAULT_READ_PERMISSIONS","MARK_ALL_WORKSPACES","SET_PERMISSIONS_MARK_ALL","SET_ACTIVE_USER","TOGGLE_ALL_SWITCH","TOGGLE_ALL_USER_PERMISSIONS","MOMENT","GANTT_DATETIME_FORMAT","INTERVAL","initialState","token","data","isFetching","loginTimestamp","logoutDisabled","ui","workspacesListLayout","Acl","Record","id","permission","created","user_id","workspace_id","DawgAclModel","dawg_id","User","email","role","disabled","deleted","can_create_workspaces","can_create_dawgs","last_login","Dawg","user","UserModel","description","settings","tags","List","frontend_settings","last_run","last_run_duration","owner","example_workspaces","workspaces_count","Workspace","input_settings","variables","continue_on_failure","last_activity","dawg","disk_usage","high_disk_usage","WorkspaceSimple","tag_ids","owner_id","createWorkspaceModel","workspace","fromJS","DawgModel","WorkspaceJob","status","stats","origin_created","WorkspaceJobFull","SelectionSetting","limit","offset","order_dir","order_by","item_type","searched_text","name_filter","show_enabled","show_disabled","Map","workspaces","selectionSettings","SelectionSettingModel","hasMoreItems","lastJobs","active","removed","Tag","color","isFetched","OAuth","credentials","type","default_settings","settings_template","icon","in_progress","hidden","Configuration","component_id","oauth_settings","auth_link","ConfigurationFullStructure","component","TrashedItem","entity","ConfigurationJobFull","configuration","ConfigurationJob","configuration_id","WorkspaceHistory","previous_history","isFulfilled","SelectionSettingsModel","ConfigurationHistory","file_download_token","file_name","file_rows_count","file_size","first_lines","last_modified_date","parent_configuration_id","DawgJob","dawgs","createDawgModel","DawgHistory","rootReducer","combineReducers","authenticatedUser","state","payload","_get","Date","now","attribute","value","usersAcls","set","_mapKeys","_map","acl","selection_settings","ws","get","concat","isAlreadyInList","find","map","push","filterNot","workspaceIndex","findIndex","setIn","getIn","tag","tag_id","lastJob","WorkspaceJobModel","last_job","merge","users","userObj","deleteIn","_toString","isMap","oauthRepos","oauth","OAuthModel","acls","workspaceId","AclModel","dawgId","insert","aclId","components","ComponentModel","configurations","meta","conf","ConfigurationModel","changedConfsMap","configurationId","trash","trashed_items","item","TrashedItemModel","toast","timestamp","projectConfigurationJobs","configuration_jobs","confJob","projectWorkspaceJobs","workspace_jobs","wsJob","configurationJobs","addNewJobToExistingList","stateTemp","unshift","ConfigurationJobModel","job","jobs","lastSavedJob","isList","jobIndex","workspaceJobs","workspace_job","workspaceHistory","history_list","historyItem","WorkspaceHistoryModel","historyItemIndex","history","splice","configurationHistory","ConfigurationHistoryModel","dataPreviews","filter","_","key","input_data_preview","file","DataPreviewModel","download_token","files_total_count","total_data_volume","OrderedMap","downloadToken","filesTotalCount","totalDataVolume","output_data_preview","workspaceConfigurationJobs","fulltextSearch","dawgIndex","DawgJobModel","dawgJobs","dawg_job","dawg_jobs","dawgHistory","DawgHistoryModel","dawgWorkspaces","WorkspaceModel","changedWsMap","dawgWorkspaceJobs","workersCount","count","undefined","form","formReducer","plugin","WorkspaceFilter","action","values","orderBy","column","orderDir","order","selectedTags","SET_SORTING_AND_TAGS","filterBy","DawgFilter","UsersSearch","SearchForm","CreateUserForm","index","inviteUser","workspaceIds","reduce","acc","cur","_reduce","res","val","loadingBar","loadingBarReducer","persistConfig","storage","transforms","createWhitelistFilter","whitelist","persistedReducer","persistReducer","store","createStore","compose","applyMiddleware","promiseMiddleware","thunk","loadingBarMiddleware","persistor","persistStore","getState","isAdmin","hasWritePermission","canCreateDawgs","loggedUser","locationHelper","locationHelperBuilder","userIsAuthenticatedDefaults","authenticatedSelector","authenticatingSelector","wrapperDisplayName","userIsAuthenticatedRedir","connectedAuthWrapper","connectedRouterRedirect","redirectPath","userIsNotAuthenticatedDefaults","userIsNotAuthenticatedRedir","ownProps","getRedirectQueryParam","allowRedirectBack","showToast","message","dispatch","TextField","toggleFieldType","setState","prevState","passwordFieldContentVisible","input","label","touched","error","fullWidth","className","placeholder","autoFocus","multiline","rows","setFieldToBeFocused","fieldAttrs","errorMessage","inputType","ref","onClick","PureComponent","renderTooltip","tooltipId","currentlyEditing","place","Button","React","forwardRef","size","href","buttonAttrs","Fragment","isEmailValid","test","_trim","required","minLength12","optionRequired","_isEmpty","isJSONString","str","JSON","parse","e","isJSONObject","obj","_isPlainObject","getUndefinedWorkspaceVariables","undefinedVariables","variablesKeys","deepForEach","_isString","trimmed","console","log","some","includes","passwordStrength","strResults","zxcvbn","score","_isArray","feedback","suggestions","PendingPromise","pendingPromises","promise","hasCanceled_","cancelablePromise","then","result","isCanceled","cancel","_appendPendingPromise","p","BASE_API_URL","origin","DISCONNECTED_MESSAGE","SOMETHING_WENT_WRONG_MESSAGE","ERR_404_PREVENT_REDIRECT","axios","defaults","baseURL","withCredentials","headers","common","Accept","responseSuccessHandler","response","responseErrorHandler","preventNotFoundRedirect","previousTimestamp","errorType","requestFactory","method","url","body","originData","useToken","ownToken","config","toString","toLowerCase","_isEqual","errMessage","assign","catch","api","oktaLogin","refreshToken","me","args","resetPassword","setPassword","sendInvitation","resendInvitation","getInvitationLink","userId","retrieve","list","load_full_structure","create","modify","delete","restore","aclReport","include_deleted","modifyWorkspace","clone","listLastJobs","workspace_ids","configuration_ids","include_settings","run","job_id","history_id","configurationJob","include_deleted_configuration_jobs","revertTo","dawg_ids","modifyBulk","workspaceJob","include_deleted_workspace_jobs","previousData","show_hidden","dataPreview","in","preview_id","out","project","include_deleted_entities_jobs","include_deleted_workspaces_jobs","systemInfo","authOptions","configurationSettigsSearch","search_text","enableLogout","disableLogout","redirect","_userMe","credentialsLoginEnabled","oktaLoginEnabled","recaptchaSiteKey","Login","onSubmit","loading","recaptchaToken","recaptcha_token","localStorage","getItem","setItem","err","show_recaptcha","showRecaptcha","redirectToOktaAuthLink","auth","oktaLink","open","loginWithOkta","URLSearchParams","oktaLoading","toggleGeneralTermsCheckboxValue","generalTermsCheckboxValue","renderTermsGuidelinesCheckbox","showGeneralTermsCheckbox","target","rel","checked","onChange","setRecaptchaToken","meiroGeneralTermsAccepted","options","authOptionsRequest","authentication_options","remove","document","classList","add","cancelAll","handleSubmit","showLoginForm","_toInteger","showOktaButton","src","logo","alt","autoComplete","Field","validate","sitekey","to","reduxForm","touchOnBlur","connect","messages","WholePageLoading","_random","loadingError","errorCallback","customMessage","fullHeight","customErrorMessage","MeiroLabyrinthSrc","_isFunction","defaultProps","OktaCallback","urlParams","code","error_description","team","person0","person1","person2","person3","person4","person5","person6","person7","person8","person9","person10","person11","person12","person13","person14","person15","person16","person17","person18","person19","person20","person21","person22","person23","person24","person25","person26","person27","LogoutPage","intervalId","genArrayOfUniqueNumbers","maxNumber","array","num","getUniqueRandomPersonNumber","selectedPersons","PERSONS_COUNT","visiblePersons","animationIndex","setInterval","clearInterval","PERSONS_VISIBLE","setTimeout","waveSrc","idx","DropdownContext","createContext","DropdownToggle","Consumer","toggle","DropdownContent","align","timeout","classNames","unmountOnExit","DropdownMenuItem","anchorOnclick","hideMenuOnClick","link","DropdownMenu","_handleOutsideClick","evt","_isNull","dropdown","contains","addEventListener","removeEventListener","Provider","node","getGravatarImgUrl","queryEmailHash","md5","_toLower","Avatar","renderInicials","inicials","nameSplit","split","gravatarSize","disabledLook","rest","IconButton","shortenString","string","end","stringStart","slice","capitalize","s","charAt","toUpperCase","copyStringToClipboard","dummy","createElement","appendChild","select","execCommand","removeChild","getWorkspaces","getWorkspacesSelectionSettings","getWorkspacesHasMoreItems","getLastWorkspacesJobs","getWorkspaceRecord","WorkspaceDetailSubmenu","workspaceTooltipProps","getContent","dataTip","match","retrieveWorkspace","WorkspaceConfigurationCreateSubmenu","_noop","WorkspaceConfigurationJobsSubmenu","prevId","initFuseImmutableSearch","columns","findAllMatches","threshold","distance","maxPatternLength","minMatchCharLength","FuseImmutable","getIsConfigurationsFetching","isConfigurationsFulfilled","getIsWorkspaceConfigurationsModifying","getWorkspaceConfigurationsData","getWorkspaceConfigurationData","getWorkspaceConfigurationsFuseData","createSelector","toArray","WorkspaceConfigurationSubmenu","configurationTooltipProps","cid","AllResourceItemsFetcher","loadFullStructure","dataPath","endpointCall","apiCall","output","lastPage","_fetchPage","fetchConfigurationList","caller","setEndpointCall","setDataPath","setLoadFullStructure","retrieveConfiguration","deleteConfiguration","modifyConfiguration","DataPreviewSubmenu","DataPreviewListSubmenu","WorkspaceConfigurationConfigurationJobsSubmenu","WorkspaceConfigurationConfigurationJobSubmenu","WorkspaceConfigurationConfigurationJobHistorySubmenu","aid","WorkspaceJobsSubmenu","WorkspaceJobSubmenu","WorkspaceHistorySubmenu","WorkspaceHistoryDetailSubmenu","ConfigurationHistorySubmenu","ConfigurationHistoryDetailSubmenu","getDawgs","getDawgsSelectionSettings","getDawgsHasMoreItem","getLastDawgsJobs","getDawgRecord","DawgDetailSubmenu","dawgTooltipProps","retrieveDawg","DawgHistorySubmenu","DawgHistoryDetailSubmenu","DawgJobsSubmenu","DawgJobSubmenu","DawgJobHistory","DawgWorkspaceJobsSubmenu","meiroClientLogoSrc","process","meiroLocation","meiroClient","AdminSubmenu","activeClassName","WorkspacesListSubmenu","DawgListSubmenu","SearchSubmenu","ProjectConfigurationJobListSubmenu","ProjectWorkspaceJobListSubmenu","TrashListSubmenu","DropDownSubmenu","HeaderContainer","toggleUserMenu","userMenu","authenticatedUserLogout","openLink","retrieveSystemInfo","systemInfoRequest","monitoring","system_info","toggleMonitoringSection","renderDiskUsageMessage","totalSpace","_isNumber","disk_space","usedSpace","used","c","f","Math","floor","parseFloat","pow","toFixed","getDiskUsagePercentage","round","drawPie","usedDiskPercent","degrees","radians","PI","x","sin","y","cos","cx","cy","r","d","goToLogs","goToSqlClient","wrapperRef","createRef","onError","clientDummyLogo","_size","version","build_date","moment","format","exact","WorkspaceJobHistorySubmenu","DawgJobHistorySubmenu","delayHide","effect","system_one_minute_load","cpu_cores_count","mi_workers_count","FooterContainer","onClientLogoError","clientLogoExists","onClientLogoLoad","clientLogoLoaded","pathname","onLoad","AdminProtectedRoute","render","PaperHeader","titleText","subTitleText","NameForm","getFontSizeBasedOnName","fontSize","updateFontSize","handleNameChange","toggleEditMode","toggleNameForm","editMode","fieldRef","focus","cancelEditing","reset","namePrev","nameNow","isEditable","initialValues","readOnlySign","readyToEdit","showTooltipOnHover","scrollWidth","clientWidth","Form","enableReinitialize","ToggleSwitch","leftValue","rightValue","leftText","rightText","handleToggle","width","attrs","style","htmlFor","WsConfStickyNav","onScroll","stickyNav","stickyNavRef","current","scrollTop","documentElement","top","getComponentIconSrc","white","publicUrl","Header","changeConfigurationName","handleConfigurationModify","toggleConfigurationDisabled","toggleConfigurationContinueOnFailure","renderComponentBox","renderBackButton","backFunction","renderConfigurationName","renderConfActionButtons","placement","handleConfigurationDelete","handleConfigurationClone","handleDataErase","renderRunButton","handleConfigurationRun","handleConfigurationCancel","configurationStatus","toggleNameFormEditMode","nameFormEditMode","isConfigurationReloading","date","utc","local","Modal","handleKeyUp","handleClose","preventDefault","keyCode","hideCloseButton","ConfirmModal","handleConfirm","text","htmlText","what","isLoading","selectStyles","border","maxMenuListHeight","height","control","base","borderColor","borderWidth","borderStyle","isFocused","boxShadow","borderRadius","borderTopLeftRadius","borderBottomLeftRadius","borderLeftWidth","minHeight","outline","backgroundColor","cursor","valueContainer","opacity","menu","marginTop","menuList","maxHeight","option","isSelected","noOptionsMessage","DropdownIndicator","SingleValue","Option","SelectField","isSearchable","async","loadOptions","maxDropdownHeight","onInputChange","styles","cacheOptions","defaultOptions","inputId","isDisabled","classNamePrefix","CloneConfigurationModal","cloneConfiguration","destinationWorkspaceId","closeModal","fetchWorkspacesListForSelect","filterText","toggleCurrent","change","onSelectFieldChange","Paper","hasHeader","CodeBlock","highlightCode","hljs","highlightBlock","codeEl","language","DescriptionCard","toggleForm","toggleDescriptionExpand","expanded","viewOnly","desc","expandable","removeMd","source","renderers","shortEnglishHumanizer","humanizeDuration","humanizer","languages","shortEn","mo","w","h","m","ms","delimiter","spacer","Duration","refreshSeconds","seconds","runningSeconds","_includes","duration","diff","asSeconds","showRunningTime","StatusElement","showDuration","showActualRunningDuration","durationOneLine","DateTimeWithTooltip","dateTime","uniqueTooltipId","momentDateTime","isMoment","delayShow","getActiveUsers","getUsersData","getAllUsersMap","getUsersFuseData","Username","ConfigurationJobsCard","InfoTooltip","otherProps","OauthNoteModal","authLink","note","ArrayFieldReadOnlyTemplate","items","element","ArrayFieldTemplate","onDropIndexClick","canAdd","onAddClick","ObjectFieldTemplate","properties","prop","content","ObjectFieldTemplateCollapsable","toggleExpanded","uiSchema","prevExpandAll","prevCollapseAll","expandAll","collapseAll","FieldTemplate","autoHideTooltip","hideTooltip","timer","clearTimeout","help","errors","readOnly","onMouseEnter","mode","theme","newValue","errorSchema","formData","editorProps","$blockScrolling","maxLines","wrapEnabled","generateJsonFormUiSchema","dataSchema","collapsable","uiSchemaComposed","hasCollapsableElements","subject","isPlainObject","has","pathUiSchema","ErrorBoundary","hasError","fallbackText","DefaultSettingsProcessor","AutoIncrementSettingsProcessor","start","dataType","part","pathIndex","_autoIncrementRecursion","ObjectKeysToArraySettingsProcessor","objectPath","objectPathIndex","_preProcessRecursion","_postProcessRecursion","_keyBy","ObjectToArraySettingsProcessor","keyProperty","Processor","processors","processor","data_type","object_path","key_property","settingsTransformation","_cloneDeep","processorInstance","preProcessSettings","postProcessSettings","ace","define","acequire","exports","module","isDark","cssClass","cssText","importCssString","FORM_TYPE","JSON_TYPE","SettingsFormCard","_isAuthorized","oauthSettings","_isNil","_preProcessSettings","stringify","settingsProcessor","toJS","_postProcessSettings","jsonSettingsString","isJsonInvalid","externallySubmitForm","submitButtonRef","click","onJsonSettingsChange","toggleFormType","submitSettings","engine","_unset","onFormSubmit","toggleResetConfirmModal","actionType","resetConfirmModal","handleOauthReset","customValidate","flattenDataSchema","flat","castTypes","_forEach","cast_type","castType","parts","ended","tmpPath","errorObj","hasOwnProperty","addError","copyOAuthLink","copyMessageFunc","setAttribute","transformErrors","incrementExpandAllVar","expandAllVar","viewUiSchema","incrementCollapseAllVar","collapseAllVar","toggleAuthAccountModal","authAccountModalOpen","SettingsProcessor","codeParameters","editUiSchema","isAuthorized","onFormError","schema","showErrorList","noHtml5Validate","autocomplete","setOptions","CodeEditor","initCodeEditors","codeEditorsTmp","_code","settings_path","saveCodeEditorsValues","codeEditors","valid","_each","_set","_idx","onCodeSave","cancelCodeEditorsValues","onCodeChange","editor","shortenFilename","filename","filenameEnd","isCsv","DataOutCard","renderWaypoint","loadMoreFiles","filesLoading","onEnter","bottomOffset","files","did","download","DataInCard","inputs","handleFilterChange","filterId","removeFilter","addFilter","saveInputs","onInputsSave","lastConfigurationsStatuses","inputConf","inputComponent","inputConfStatus","parentConf","parentComponent","sourceConfiguration","VariablesInjection","oAuthSettings","cancelVariablesEditing","saveVariablesValues","onInjectionSave","settingsToStore","renderVariables","fields","selectedVarsKeys","selectedVars","fieldOptions","member","saveVariableValues","vars","FieldArray","selector","formValueSelector","_path","runConfigurationJob","listConfigurationJob","refreshLastConfigurationJob","clearCachedConfigurationJobs","cancelConfigurationJob","jobId","listProjectConfigurationJob","listWorkspaceConfigurationJob","showLoadingBar","showLoading","hideLoadingBar","hideLoading","runWorkspaceJob","listWorkspaceJob","refreshLastWorkspaceJob","clearCachedWorkspaceJobs","cancelWorkspaceJob","listProjectWorkspaceJob","listDawgWorkspaceJob","revertWorkspaceTo","historyId","updateRedux","clearCachedWorkspaceHistory","revertConfigurationTo","clearCachedConfigurationHistory","fetchInDataPreviews","fetchOutDataPreviews","getConfigurationJobsData","getConfigurationJobsSelectionSettings","haveConfigurationJobsMoreItems","getLastConfigurationJobsData","isConfigurationJobsFetching","getConfigurationJobData","jobIdInt","getUsersWorkspaceAclsData","getUsersWorkspaceAcl","getUsersDawgAcl","getComponentsData","getComponentsFuseData","toList","sortBy","getConfigurationsDataPreviews","goBackInHistory","alternativePath","goBack","confirmModalVariables","cloneModalOpen","outDataPreviews","editModes","configurationName","codeEditor","dataIn","undefinedPlaceholdersModal","placeholders","ConfigurationShow","runningCalls","lastConfigurationJobs","configurationsLastJobs","parameters","originParameters","toggleDeleteModal","fetchLastConfigurationsJobs","_cleanup","toggleConfigurationCancelModal","runConfiguration","toggleRunModal","undefinedPlaceholders","join","toggleDataEraseModal","eraseConfigurationData","eraseConfigurationDataRequest","fetchOutputLiveDataPreviews","fetchInputLiveDataPreviews","_fetchBothLiveDataPreviews","configurationIds","lastConfJobsPromise","last_configuration_jobs","currentStatuses","returnObj","equals","toggleCloneModal","resetOauth","onSettingsFormError","errorsCount","onSettingsFormSubmit","onWorkspaceVariablesInjectionSubmit","onJsonInvalidMessage","onCodeEditorsSaveSubmit","onConfigurationInputsSubmit","undefinedPlaceholdersModalClose","cb","isEditing","onCopyAuthLinkSuccessMessage","_init","resetFilterForm","clearState","clearCache","previousLastJob","currentLastJob","usersAcl","isConfigurationsFetching","inDataPreviews","hasVariablesInjectionCard","variablesInitialValues","SettingsForm","onJsonInvalid","DataIn","DataOut","CloneModal","when","SearchField","handleClear","handleChange","onSearchFieldChange","typingTimeout","submitter","destroyOnUnmount","SearchFormUndestroyable","CreateConfigurationForm","ConfigurationCreate","createLoading","createConfiguration","requestData","toggleFilterType","filterType","toggleComponent","_renderComponent","searchValues","filterTerm","componentsList","getFormValues","LoadingCircle","getSelectionSettings","getFulltextSearchData","searchedItems","Search","onSearchSubmit","searchTerm","clearFulltextSearch","_lodaMoreResults","loadingMore","hasMoreResults","renderSearchResults","searchResults","startIndex","endIndex","arrayOfLines","searchTermLineIndex","line","vKey","_findKey","variable","gapSize","resultToRender","gap","_trimStart","substring","maxIndexLength","searchText","getDashboardConfJobs","take","getProjectConfJobs","getProjectConfJobsSelectionSettings","getTags","getTagsMap","areTagsAlreadyFetched","getTagsSortedByName","setSortingOptions","setFilterBy","setFilterByTags","setFilterAndSorting","fetchUsersAcl","fetchDawgUsersAcl","WorkspaceGanttChart","gantt","metaKey","handleKeyDown","tasks","startDate","endDate","Gantt","containerDOM","on_click","task","URL","date_format","bar_height","header_height","is_editable","popup_trigger","min_columns_count","responsive","hide_horizontal_lines","padding","start_date","end_date","start_end_force","popup_enabled","chart","getElementById","offsetWidth","scrollableArea","scrollLeft","workspaceNames","getElementsByClassName","refresh","el","IntegrationsActivity","processedData","parseInt","isBetween","dependencies","custom_class","_pick","charts","workspaceChartData","workspaceName","subtract","lineChartOptions","maintainAspectRatio","legend","display","layout","scales","yAxes","xAxes","onHover","chartElement","WorkspacesActivityDrawer","toggleDrawer","opened","retrieveData","timeSpan","nowRoundedUpToHours","millisecond","second","minute","tresholdDate","abs","dataPromise","continueLoading","jobAppendIfValid","jobCountsInHours","iterDate","i","hour","_sortBy","startSelector","endSelector","withMutations","startDateLocal","endDateLocal","endDateAdapted","pointColors","keySplit","chartData","labels","datasets","fill","borderJoinStyle","pointRadius","pointHoverRadius","pointBackgroundColor","pointBorderColor","getUpdatedChartData","updatedChartData","changeRangeValue","prevTimeSpan","actualTimeSpan","changeRangeValueBy","onChartNodeClick","elements","_index","stardDate","sliderRef","getElementAtEvent","min","max","step","_extends","bind","arguments","prototype","call","apply","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgBars","_ref","svgRef","titleId","viewBox","xmlns","fillRule","clipRule","ForwardRef","SvgCols","searchFormName","toggleCreateActionModal","isAbleToCreateEntity","entityName","isViewPickerEnabled","currentViewLayout","setViewLayout","clickable","tagAttrs","TagPicker","handleMouseHover","tagId","isHovering","toggleOpen","handleOutsideClick","onTagClick","onTagSelect","selectedTagIds","allTags","displayTags","Array","isArray","onMouseLeave","FilterForm","previousValues","submit","OrderField","SortingForm","dawgSelectOptions","wsSelectOptions","filterBySelectOptions","SubHeader","filterValues","tagsList","sortingFormName","filterFormName","onSortSubmit","onFilterBySubmit","selectFilterTag","deselectFilterTag","sortingFormSelectOptions","stringTagId","globalFormName","CreateActionModal","createAction","WorkspaceIcon","ProjectJobsCard","projectJobs","projectJob","entityPathname","jobPathName","iconComponent","formatBytes","a","b","dayMappings","generateSchedulesReadableObject","schedules","schedulesReadable","schedule","first","days","hours","minutes","repeat","_last","startingAt","_first","from","repeatHoursNumber","toParse","hourParts","daysArray","day","computeNextSchedulesDates","schedulesCronStrings","nextSchedulesDates","cronString","parser","parseExpression","interval","dates","next","toISOString","flatten","sort","DawgLink","maxChars","WorkspaceLink","DataProcessed","inFilesCount","outFilesCount","DiskUsage","markDiskSpaceUsed","Schedules","expandedSchedules","expandItemSchedules","readableSchedules","scheduleSettingDescriptionArray","getSetSchedulesDescriptionArray","nextSchedules","scheduleSettingDescription","entry","Author","authorName","ItemName","LastRun","datetime","labelText","PartOfDawg","Row","ItemStatus","Tags","DawgWorkspaces","exampleWorkspaces","workspacesCount","anotherWsCount","isCompact","isInvisible","innerRef","WorkspaceListItem","onInit","invisible","expandWorkspaceSchedules","schedulesSetting","scheduleExists","WorkspaceList","toggleCreateWorkspaceModalOpen","createWorkspaceModalOpen","_loadMoreWorkspaces","fetchWorkspaceList","fetchLastWorkspaceJobs","hasWorkspacesMoreItems","_determineSortOptions","sortOpt","_determineShowEnabled","_determineShowDisabled","filterName","newTags","setLayout","setUiAttribute","renderWorkspaces","lastWorkspacesJobs","compactWorkspaceBoxesHeights","renderWorkspace","isLast","compactWorkspaceBoxesRefs","compactWorkspaceBoxesHeightsTmp","getBoundingClientRect","compactView","leftColHeight","rightColHeight","left","right","lastWorkspace","last","position","projectConfJobs","createWorkspace","isAbleToCreateWorkspaces","canCreateWorkspaces","currentLayout","nameFilter","tagIds","showEnabled","showDisabled","ToggleSwitchField","leftLabel","rightLabel","AddUserAclModal","createAcls","isSuccess","inviteUsers","cbFn","createAcl","pop","userSelectOptions","inviteUserIds","entityUsers","authUserId","entityUsersInMap","convertListToMapByKey","searchKey","currentValue","renderInviteUsers","inviteUserIdList","getAll","field","defaultInviteUser","userIdValue","isAdminSelected","rerenderOnEveryChange","EditUserAclModal","closeAndReset","changingOwnPermissionToView","modifyAcl","deleteEntityUser","deleteAcl","checkChangingOwnPermissionToView","DeleteDataCheckbox","getWorkersCount","WorkersCount","getWorkersCountValue","initialValue","maxWorkersCount","changeWorkersCountValue","workersCountValue","saveWorkersCountValue","modifyEntity","max_workers_used","increaseWorkersCount","decreaseWorkersCount","fetchWorkersCount","onBlur","TransferOwnershipModal","isOpen","onClose","currentOwnerId","useSelector","usersOptions","toLower","useState","selectedUserId","setSelectedUserId","selectedUser","setIsLoading","buttons","openAddUserAclModal","addUserAclModalOpen","closeAddUserAclModal","openEditUserAclModal","editUserAclModal","closeEditUserAclModal","changeEntityName","handleEntityModify","assignTag","assignTagToEntity","existingTagId","unassignTag","unassignTagFromEntity","toggleEntityDisabled","toggleEntityContinueOnFailure","showAllUsers","allUsersShown","altBackPath","renderEntityActionButtons","handleEntityClone","handleEntityDelete","renderEntityName","handleEntityRun","handleEntityCancel","entityStatus","renderTagsPart","isEntityReloading","transferOwnershipModalOpen","handleDataDeleteCheckboxToggle","transferOwnership","mappings","convertToRomanNum","number","AddInputbox","handleValueChange","inputValue","handleKeyPress","addValue","handleValueAdd","removeValue","handleValueDelete","onKeyPress","CommonHeader","formType","handleFormTypeChange","handleEntireSchedulesDelete","DayOfMonthForm","handleCalendarButtonsResize","addSchedule","activeTab","deleteSchedule","sidx","selectActiveSchedule","isScheduleTimeValid","_isNaN","_inRange","schedulesCheck","schedulesUtc","handleTimeChange","isDayOfMonthSelected","dayNumber","toggleDayOfMonth","renderCalendarButtons","schedulesTransformed","notificationEmails","handleEmailDelete","handleEmailAdd","handleFormClose","maxLength","repeatOptions","DayOfWeekForm","once","handleRepeatFormSubmit","unit","handleRepeatValueInputChange","handleRepeatFromValueInputChange","_isInteger","handleRepeatToValueInputChange","handleStartingAtValueInputChange","handleOnceFormSubmit","dayOfWeekActive","unsetDayOfWeek","setDayOfWeek","toggleDayOfWeek","toggleDayOfWeekFormType","repeatDefaults","onceDefaults","startingAtDisabled","startingAtOptions","selectedValue","v","k","fromToDisabled","startingAtDisabledDueToFromToFilled","endsWith","isClearable","SetScheduleForm","selectFormVariant","submitForm","onCloseAction","month","day_of_week","_join","notification_emails","fromToVariant","overDay","endScheduleFrom","addNotificationEmail","deleteNotificationEmail","notificationEmail","deleteEntireSchedulesFunc","SetScheduleCard","checkAndUpdateNextSchedulesDates","toggleDeleteDialog","deleteDialog","disabledScheduleForm","enabledScheduleForm","renderReadableSchedules","getSetSchedulesDescription","nextSchedulesCheckInterval","deleteModal","momentObject","VariablesCard","enableVariablesForm","startsWith","renderVariablesMessage","addVariablesRow","removeVariablesRowModalOpen","removeVariablesRow","removeVariablesRowModalClose","rowIndex","handleVariablesRowChange","saveVariables","variablesJsonString","formCheck","row","isVariablesJsonStringValid","jsonError","renderVariablesSummary","longValue","longKey","copyVariableToClipboard","renderVariablesForm","_startsWith","renderCodeEditor","formToVariables","copyVariablesJsonToClipboard","showToastMessage","cardView","EntityJobsCard","allPathname","hideViewAll","entityId","EntityChildrenJobsCard","rootEntityName","entityPath","jobPath","entityPathParams","jobPathParams","shape","waiting","running","warning","finished","canceled","disable","play","arrow","userZoomingEnabled","userPanningEnabled","boxSelectionEnabled","minZoom","maxZoom","DELETE_TYPE","cytoscape","use","edgehandles","klay","Dag","eh","nodesPositionChangeCompleted","ctrlKey","autounselectify","quickTipClose","stopPropagation","quickTipShown","quickTipOpen","_setNodesStatuses","entityStatuses","_getBorderColor","_setHighlightedNodes","highlightedEntities","$","_renderDag","center","childEntities","edges","statusNodes","hasIn","keySeq","stringNodeId","isHidden","statuschip","locked","nodeIcon","isEntity","exclamationImg","json","centerDag","fit","closeDeleteModal","confirmDeleteModal","deleteEntity","ids","closeRunModal","runModal","confirmRunModal","runEntityJob","rootEntityId","routeParams","closeCancelModal","cancelModal","confirmCancelModal","cancelEntityJob","moveQuickTipPage","direction","quickTipPage","arrangeDag","nodeDimensionsIncludeLabels","animate","animationDuration","addUnnecessaryBendpoints","aspectRatio","borderSpacing","compactComponents","crossingMinimization","cycleBreaking","edgeRouting","edgeSpacingFactor","feedbackEdges","fixedAlignment","inLayerSpacingFactor","layoutHierarchy","linearSegmentsDeflectionDampening","mergeEdges","mergeHierarchyCrossingEdges","nodeLayering","nodePlacement","randomizationSeed","routeSelfLoopInside","separateConnectedComponents","spacing","thoroughness","togglePreviewMode","arrangeDagConfirm","modifyEntitiesBulk","entitiesUpdate","feSettings","creatingEdge","container","cytoscapeDefaults","on","originalEvent","shiftKey","group","hide","targetPath","quickTipAlreadyClosed","preview","handleNodes","hoverDelay","loopAllowed","handlePosition","removeClass","stop","connectedEdges","addClass","selected","unselect","midpoint","nodeData","rootEntity","event","sourceNode","targetNode","addedEles","sourceNodeId","targetNodeId","originInputSettings","filters","selectedElements","nodePosition","unlock","lock","isChildrenFetching","arrangementCallbackValue","destroy","isEntitiesModifying","DataFlow","dag","setDagCallbackValue","searchEntities","entitiesFuseData","entitiesFuseSearchInstance","entitiesList","ent","previewMode","callbackValue","isEntitiesFulfilled","isChildrenModifying","childEntity","componentsReady","getWorkspaceAclsData","getDawgAclsData","getWorkspaceJobsData","getWorkspaceJobsSelectionSettings","haveWorkspaceJobsMoreItems","getWorkspaceJobData","isWorkspaceJobsFetching","getLastWorkspaceJobsData","getWorkspaceDashboardConfJobs","getWorkspaceConfJobs","getWorkspaceConfJobsSelectionSettings","configurationStatuses","isWorkspaceReloading","WorkspaceShow","lastWorkspaceJobs","workspaceConfigurationsLastJobs","previousParameters","toastType","deleteWorkspace","fetchLastConfigurationJobs","fetchWorkspaceConfigurationsLastJobs","runWorkspace","toggleWorkspaceCancelModal","eraseWorkspaceData","cloneWorkspace","eraseWorkspaceDataRequest","highlightedConfigurations","toggleDeleteDataCheckbox","clearWorkspaceCache","fetchWorkspaceAcl","workspaceUsers","assignTagToWorkspace","unassignTagFromWorkspace","configurationsFuseSearchInstance","isConfigurationsModifying","modifyConfigurationsBulk","Variables","SetSchedule","epoch_to_hh_mm_ss","epoch","substr","jobsChartOptions","hoverMode","stacked","usePointStyle","fontStyle","bottom","ticks","userCallback","_round","gridLines","drawOnChartArea","tooltips","callbacks","tooltipItem","datasetIndex","yLabel","JobsLineChart","constructChartData","durationData","volumeData","pointBackgroundColors","volume","yAxisID","JobList","refreshLastEntityJob","wid","renderDataCell","bytes","loadMoreJobs","listEntityJob","hasMoreJobs","cancelPromise","toggleCancelModal","backPath","WorkspaceJobList","DATE_TIME_FORMAT","JobsGanttChart","getTasksFromJobs","_keys","runningStart","renderSvgBackground","x1","x2","y1","y2","view_mode","column_width","custom_popup_html","overalDuration","runningDuration","JobShow","timelineFetcher","childJobsFetcher","fetchWholeTimeline","fetchEntityJobChildJobs","fetchEntityJobLogs","logs","refreshPageData","retrieveEntityJob","retJob","timelinePromise","timeline","childJobsPromise","childJobs","refreshLogsData","jobLogsPromise","retLogs","workspace_logs","dawg_logs","lastLogItem","_findIndex","loadMoreLogs","reverseLogsOrder","orderDirButtonEnabled","entityJob","retrieveEntity","ret","hid","colSpan","level","WorkspaceJobShow","retrieveWorkspaceJob","JobDetail","WorkspaceJobHistory","historyItemRequest","getWorkspaceHistoryList","getWorkspaceHistorySelectionSettings","hasWorkspaceHistoryMoreItems","getWorkspaceHistoryItem","historyItemId","isWorkspaceHistoryFulfilled","EntityHistoryList","loadMoreHistoryItems","listEntityHistory","hasMoreHistoryItems","confirmEntityRevert","confirmModal","revertEntityTo","revertToPromise","toggleConfirmModal","nextPath","historyList","isHistoryListFulfilled","getEntityChangedKeys","pathParams","getChangedKeys","omitKeys","diffKeys","it","done","getDawgChangedKeys","getWorkspaceChangedKeys","getConfigurationChangedKeys","WorkspaceHistoryList","listWorkspaceHistory","EntityHistoryDetail","retrieveEntityHistoryItem","splitView","oldValue","WorkspaceHistoryDetail","retrieveWorkspaceHistoryItem","listDawgJob","refreshLastDawgJob","cancelDawgJob","revertDawgTo","getDashboardWsJobs","getProjectWsJobs","getProjectWsJobsSelectionSettings","DawgListItem","expandDawgSchedules","DawgList","_getDawgsFilterOptions","fetchLastDawgsJobs","dawgIds","toggleCreateDawgModalOpen","createDawgModalOpen","_loadMoreDawgs","fetchDawgList","filterVars","hasDawgsMoreItems","renderDawgs","lastDawgsJobs","dawgJob","renderDawg","clearCachedDawgJobs","clearCachedDawgHistory","createDawg","projectWsJobs","getDawgJobsData","getDawgJobsSelectionSettings","haveDawgJobsMoreItems","getDawgJobData","isDawgJobsFetching","getLastDawgJobsData","getAreDawgWorkspacesFetching","areDawgWorkspacesFulfilled","getAreDawgWorkspacesModifying","getDawgWorkspacesData","getDawgWorkspacesFuseData","getDawgDashboardWorkspaceJobs","getDawgWorkspaceJobs","getDawgWorkspaceJobsSelectionSettings","highlightedWorkspaces","dawgName","workspaceStatuses","isDawgReloading","DawgDetail","lastDawgJobs","dawgWorkspacesLastJobs","fetchDawgWorkspacesLastJobs","lastWsJobsPromise","last_workspace_jobs","stopInterval","deleteDawg","modifyDawg","runDawg","runDawgJob","fetchDawgAcl","fetchDawgWorkspaceList","createDawgAcl","modifyDawgAcl","deleteDawgAcl","dawgUsers","assignTagToDawg","unassignTagFromDawg","dawgWorkspacesFuseData","areDawgWorkspacesFetching","areDawgWorkspacesModifying","modifyDawgWorkspace","deleteWorkspaceFromDawg","modifyDawgWorkspacesBulk","getDawgHistoryList","getDawgHistorySelectionSettings","hasDawgHistoryMoreItems","getDawgHistoryItem","isDawgHistoryFulfilled","DawgHistoryList","listDawgHistory","DawgHistoryDetail","retrieveDawgHistoryItem","DawgJobList","DawgJobShow","retrieveDawgJob","DawgWorkspaceAdd","runningWsJobCall","fetchWorkspaces","workspaceList","loadMoreWorkspaces","addWorkspaceToDawg","workspacesParam","EntityChildrenJobsList","refreshEntityChildrenJobs","listEntityChildrenJobs","renderLoadMoreButton","DawgWorkspaceJobList","modifyUser","ToggleButton","CheckboxField","CreateUserModal","page","changeNextPage","usersCreated","createUsers","send_invitation_emails","toastMessage","apiCallType","createUser","password","workspacesAcl","Number","setPermissionsDefault","setDefaultPermissions","setWorkspaceDefaultPermissionsAndMarkThem","userIndex","markValue","setPermisionsAndMarkWorkspaces","sg","emailUnique","formValues","otherFormUsers","occurences","existingUser","onMarkAllChange","allWorkspacesLoaded","markAllWorkspaces","currentTarget","loadingAllWorkspaces","onToggleAllChange","toggleAllSwitch","toggleAllSwitchesIfMarked","toggleAllUserPermissions","SelectionSettings","renderCreateUsers","showPasswordFields","blur","renderPermissions","activeUser","setActiveUser","isNext","renderActionBtns","renderFieldArray","ModifyUserModal","initialUser","filtered","exists","UserList","openDeleteModal","deleteUser","toggleUsersRole","closeToggleUserRoleConfirmationModal","openToggleUserRoleConfirmationModal","toggleUserRoleConfirmationModal","toggleUsersDisabled","toggleUsersCanCreateWorkspace","toggleCreateUserModal","userType","createUserModalOpen","openUserModal","userModal","closeUserModal","resendingInvitation","sortUsersBy","copyInvitationLink","copyingLink","user_invitation_link","usersFiltered","usersSorted","_orderBy","fetchTagsList","TagTextField","inputWidth","helperRef","calculatedWidth","ColorRadioGroup","colors","TagForm","onDeleteButtonClick","handleTagDelete","onCloseButtonClick","selectedColor","isCreate","TagList","showTagForm","tagForm","hideTagForm","submitTagForm","createTag","modifyTag","deleteModalOpen","deleteTag","show","getOAuthRepositories","getOAuthRepositoriesFuseData","repos","OAuthModal","modifyOAuth","previousOauth","closeWithoutSave","FormSection","OAuthList","openOauthModal","repository","oauthModal","closeOauthModal","fetchOAuthList","repositories","repositoriesList","getHasMoreItems","getTrashData","trashedItems","ConfigurationModal","TrashList","fetchTrashItems","_loadMoreTrashItems","restoreConfirmModalToggle","restoreConfirmModal","configDetailModalToggle","configDetailModal","restoreConfirmModalConfirm","restoreItem","getTrashedItemAuthor","renderUserName","isUserAbleToRestore","TABLE_VIEW","DataPreviewDetail","renderComponentsIcon","componentId","_parseCsvHead","csvOutput","Papa","columnName","_parseCsvContent","contentString","valueKey","renderContent","viewType","head","toggleViewType","configurationPromise","input_file_preview","output_file_preview","DataPreviewList","loadMoreDataPreviews","goToFile","configurationsData","renderName","fileName","parentConfigurationId","fileId","componentsData","basicFilename","ConfigurationJobList","ConfigurationJobShow","appendPendingPromise","removePendingPromise","fetchConfigurationJobLogs","retrieveConfigurationJob","configuration_logs","ConfigurationJobHistory","configuration_job","getConfigurationHistoryList","getConfigurationHistorySelectionSettings","hasConfigurationHistoryMoreItems","getConfigurationHistoryItem","isConfigurationHistoryFulfilled","ConfigurationHistoryList","listConfigurationHistory","confirmConfigurationRevert","ConfigurationHistoryDetail","retrieveConfigurationHistoryItem","PasswordField","_evaluatePasswordStrength","strength","setPasswordStrength","renderPasswordStrengthMessage","onChangePassword","passwordFieldLabel","pwdStrengthValidate","UserSettings","editPassword","isPasswordEditable","isNameEditable","editName","savePassword","modifyAuthUser","newPassword","saveName","newName","cancelEditPassword","cancelEditName","passwordFormName","nameFormName","passwordContainer","headerButton","nameContainer","repeat_password","NotAuthorizedPage","accessImageUrl","NotFoundPage","notFoundImageUrl","ProjectJobList","refreshProjectJobs","listProjectJob","entityNameComponent","ProjectConfigurationJobList","PageComponent","ProjectWorkspaceJobList","WorkspaceConfigurationJobList","UserPermissionsList","showDeleted","setShowDeleted","setSearchTerm","setData","useDispatch","useEffect","fetchData","acl_reports","fuse","useMemo","Fuse","initFuseSearch","filteredData","removeDeleted","header","noResults","table","tableHeader","tableRow","tableCell","inactive","badge","owned_workspaces","linkedWorkspace","workspaces_permissions","adminAccess","owned_dawgs","linkedDawg","dawgs_permissions","userData","linkedEntity","AuthenticatedRoutesSwitch","redirectToWorkspaces","redirectToUsersAdministration","DawgJobHistoryDetail","DawgJobDetailPage","DawgJobListPage","DawgHistoryDetailPage","DawgHistoryListPage","DawgWorkspaceAddPage","DawgDetailPage","DawgListPage","DataPreviewDetailPage","DataPreviewListPage","ConfigurationJobShowHistoryPage","ConfigurationJobShowPage","ConfigurationJobListPage","ConfigurationHistoryDetailPage","ConfigurationHistoryListPage","WorkspaceJobHistoryPage","WorkspaceJobShowPage","WorkspaceJobListPage","WorkspaceHistoryDetailPage","WorkspaceHistoryListPage","WorkspaceConfigurationJobListPage","ConfigurationCreatePage","ConfigurationShowPage","WorkspaceShowPage","WorkspaceListPage","SearchPage","ProjectWorkspaceJobListPage","ProjectConfigurationJobListPage","UserListPage","UserPermissionsListPage","TagListPage","OAuthListPage","AuthenticatedLayout","fetchAppData","fetchComponentList","fetchUserList","fetchTrashedUserList","aclsFetched","dawgAclsFetched","refreshTokenAndData","verifyUser","tokenRefreshInterval","PasswordReset","PasswordSet","resetToken","referrer","password_reset_token","heading","submitButtonText","getUserConfirmation","callback","modal","withCleanup","answer","ReactDOM","unmountComponentAtNode","AppUpdateModal","unlisten","listenForHistoryChanges","listen","ownOpenState","unlistenForHistoryChanges","removeFocusFromInputs","querySelector","openModal","updateFn","meiroLogoSrc","createBrowserHistory","LoginSection","OktaCallbackSection","AuthenticatedSection","library","faEyeSolid","faPencilSolid","faCrown","faCaretUp","faCaretDown","faSignOut","faUser","faEnvelope","faQuestion","faSearch","faTimes","faTag","faChevronRight","faChevronLeft","faCodeBranch","faWrench","solidTrashAlt","chevronLeftSolid","faEye","faPencil","trashAltRegular","faLocation","faClone","faPowerOff","faPlay","faPlus","faPaperPlane","faUserEdit","faEdit","faRedo","faPlaySolid","faPause","faExclamation","faMinus","faCheck","faHourglass","faPowerOffRegular","faLevelUp","faStream","faFilter","faTrafficCone","faChevronUp","faChevronDown","faDownload","faTimesSolid","faCogsRegular","faUndo","faArrowAltCircleDown","faArrowAltCircleUp","faCopy","faEraser","faUserPlus","faCloud","faCode","faExclamationTriangle","faPlusCircleRegular","faInfoCircle","faEyeSlash","faEyeRegular","faStreamSolid","faFileContract","faUserSolid","faLifeRing","faTachometerFastest","faMicrochip","faCopySolid","faSortSizeDownAlt","faSortAlphaDown","faSortAlphaUp","faArrowCircleUp","faChartNetwork","faUserCircle","faSortAlt","faBan","faCog","faExclamationTriangleRegular","faCogsSolid","faTerminalSolid","faDatabaseSolid","faGearCode","faBinary","faMapMarkerAlt","faLockKeyhole","CloseButton","closeToast","ToastContent","renderToastIcon","faIcon","App","dismissAllToasts","toastShow","dismiss","notify","wider","POSITION","TOP_RIGHT","bodyClassName","closeButton","autoClose","draggable","closeOnClick","success","pauseOnHover","pauseOnFocusLoss","info","closeInvalidBrowserWarning","invalidBrowserWarningClosed","handleNewServiceWorker","registration","detail","newServiceWorkerDetected","isValidBrowser","Bowser","getParser","navigator","userAgent","satisfies","chrome","edge","firefox","chromium","safari","opera","toastId","onLoadNewServiceWorkerAccept","zIndex","PasswordResetSection","PasswordSetSection","hideProgressBar","Boolean","hostname","postMessage","serviceWorker","ready","unregister"],"mappings":"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","file":"static/js/main.c924861a.chunk.js","sourcesContent":["import React, { Component } from \"react\" // eslint-disable-line no-unused-vars\nimport { withRouter } from \"react-router-dom\"\n\nclass ScrollToTop extends Component {\n componentDidUpdate(prevProps) {\n if (this.props.location !== prevProps.location) {\n window.scrollTo(0, 0)\n }\n }\n\n render() {\n return this.props.children\n }\n}\n\nexport default withRouter(ScrollToTop)\n","const mapping = {\n dashboard: {\n path: \"/\",\n regex: \"\\\\/\",\n title: \"Workspaces\",\n headerTitle: \"Workspaces\"\n },\n login: {\n path: \"/login\",\n title: \"Login\"\n },\n \"okta.callback\": {\n path: \"/okta_login\",\n title: \"Okta Callback Page\"\n },\n logout: {\n path: \"/logout\",\n title: \"Logout\"\n },\n \"password.reset\": {\n path: \"/password-reset\",\n title: \"Password reset\"\n },\n \"password.set\": {\n path: \"/set_password\",\n title: \"Set your password\"\n },\n \"project.configurationJob\": {\n path: \"/project/configurations/activity\",\n title: \"All Configuration Activity\",\n regex: \"\\\\/project\\\\/configurations\\\\/activity\"\n },\n \"project.workspaceJob\": {\n path: \"/project/workspaces/activity\",\n title: \"All Workspace Activity\",\n regex: \"\\\\/project/\\\\/workspaces\\\\/activity\"\n },\n search: {\n path: \"/search\",\n regex: \"\\\\/search\",\n title: \"Search\"\n },\n \"dawg.list\": {\n path: \"/dawgs\",\n regex: \"\\\\/dawgs\",\n title: \"DAWGs\"\n },\n \"dawg.show\": {\n path: \"/dawgs/:id\",\n title: \"View dawg\",\n regex: \"\\\\/dawgs\\\\/(\\\\d+)\",\n previous: \"dawg.list\"\n },\n \"dawg.workspace.add\": {\n path: \"/dawgs/:id/add-workspace\",\n title: \"Add workspace to Dawg\",\n regex: \"\\\\/dawgs\\\\/(\\\\d+)\\\\/add-workspace\",\n previous: \"dawg.show\"\n },\n \"dawg.dawgHistory.list\": {\n path: \"/dawgs/:id/history\",\n title: \"Dawg Version History\"\n },\n \"dawg.dawgHistory.show\": {\n path: \"/dawgs/:id/history/:hid\",\n title: \"Dawg Version History Detail\"\n },\n \"dawg.dawgJob.show\": {\n path: \"/dawgs/:id/activity/:aid\",\n title: \"Dawg activity detail\"\n },\n \"dawg.dawgJob.show.history\": {\n path: \"/dawgs/:id/activity/:aid/history/:hid\",\n title: \"Dawg activity detail history\"\n },\n \"dawg.dawgJob.list\": {\n path: \"/dawgs/:id/activity\",\n title: \"Dawg activity\"\n },\n \"dawg.workspaceJob.list\": {\n path: \"/dawgs/:id/workspaces/activity\",\n title: \"Dawg workspace activity\"\n },\n \"workspace.list\": {\n path: \"/workspaces\",\n regex: \"\\\\/workspaces\",\n title: \"Workspaces\"\n },\n \"workspace.show\": {\n path: \"/workspaces/:id\",\n title: \"View workspace\",\n regex: \"\\\\/workspaces\\\\/(\\\\d+)\",\n previous: \"workspace.list\"\n },\n \"workspace.workspaceHistory.list\": {\n path: \"/workspaces/:id/history\",\n title: \"Workspace Version History\"\n },\n \"workspace.workspaceHistory.show\": {\n path: \"/workspaces/:id/history/:hid\",\n title: \"Workspace Version History Detail\"\n },\n \"workspace.workspaceJob.list\": {\n path: \"/workspaces/:id/activity\",\n title: \"Workspace activity\"\n },\n \"workspace.workspaceJob.show\": {\n path: \"/workspaces/:id/activity/:aid\",\n title: \"Workspace activity detail\"\n },\n \"workspace.workspaceJob.show.history\": {\n path: \"/workspaces/:id/activity/:aid/history/:hid\",\n title: \"Workspace activity detail history\"\n },\n \"workspace.configuration.create\": {\n path: \"/workspaces/:id/create-configuration\",\n title: \"Create configuration\"\n },\n \"workspace.configurationJob.list\": {\n path: \"/workspaces/:id/configurations/activity\",\n title: \"Workspace configuration activity\"\n },\n \"workspace.configuration.show\": {\n path: \"/workspaces/:id/configurations/:cid\",\n title: \"Configuration detail\"\n },\n \"workspace.configuration.configurationHistory.list\": {\n path: \"/workspaces/:id/configurations/:cid/history\",\n title: \"Configuration Version History\"\n },\n \"workspace.configuration.configurationHistory.show\": {\n path: \"/workspaces/:id/configurations/:cid/history/:hid\",\n title: \"Configuration Version History Detail\"\n },\n \"workspace.configuration.data.preview.list\": {\n path: \"/workspaces/:id/configurations/:cid/data-preview/:type\",\n title: \"List of files\"\n },\n \"workspace.configuration.data.preview\": {\n path: \"/workspaces/:id/configurations/:cid/data-preview/:type/:did\",\n title: \"Data preview\"\n },\n \"workspace.configuration.configurationJob.list\": {\n path: \"/workspaces/:id/configurations/:cid/activity\",\n title: \"Configuration activity\"\n },\n \"workspace.configuration.configurationJob.show\": {\n path: \"/workspaces/:id/configurations/:cid/activity/:aid\",\n title: \"Configuration activity detail\"\n },\n \"workspace.configuration.configurationJob.show.history\": {\n path: \"/workspaces/:id/configurations/:cid/activity/:aid/history/:hid\",\n title: \"Configuration activity detail history\"\n },\n \"trash.list\": {\n path: \"/trash\",\n title: \"Trash\"\n },\n administration: {\n path: \"/administration\",\n title: \"Admin\"\n },\n \"administration.users\": {\n path: \"/administration/users\",\n title: \"Users - Administration\"\n },\n \"administration.user-permissions\": {\n path: \"/administration/user-permissions\",\n title: \"User permissions - Administration\"\n },\n \"administration.tags\": {\n path: \"/administration/tags\",\n title: \"Tags - Administration\"\n },\n \"administration.oauth\": {\n path: \"/administration/oauth-repositories\",\n title: \"OAuth repositories - Administration\"\n },\n \"user-settings\": {\n path: \"/user-settings\",\n title: \"User Settings\"\n },\n \"not-authorized\": {\n path: \"/not-authorized\",\n title: \"Not Authorized\"\n },\n \"not-found\": {\n path: \"/not-found\",\n title: \"Not Found\"\n }\n}\n\nexport const getRoutesMapping = () => mapping\n\nexport const getRoutePath = (...args) => getRoute(...args).path\n\nexport const getRouteRegex = name => getRoute(name).regex\n\nexport const getRoute = (name, params = {}, prefix = \"\") => {\n let route = { ...mapping[name] }\n if (Object.keys(route).length === 0) {\n throw new Error(`Route with name ${name} does not exist`)\n }\n route.path = replaceParamsInPath(route.path, params)\n route.path = applyPrefixToPath(route.path, prefix)\n return route\n}\n\nexport const replaceParamsInPath = (path, params = {}) => {\n const paramsKeys = Object.keys(params)\n if (!paramsKeys.length) {\n return path\n }\n\n paramsKeys.forEach(property => {\n const reg = new RegExp(`:${property}(?![\\\\w\\\\d])`, \"i\")\n path = path.replace(reg, params[property])\n })\n\n return path\n}\n\nexport const applyPrefixToPath = (path, prefix = \"\") => {\n if (!prefix.length) {\n return path\n }\n\n return `${prefix}${path}`\n}\n\nexport const getRoutePrevious = pathname => {\n const routes = Object.keys(mapping)\n let previous = undefined\n routes.forEach(property => {\n if (mapping[property].regex) {\n const regExp = new RegExp(mapping[property].regex)\n const regexGroups = regExp.exec(pathname)\n if (regexGroups) {\n previous = {\n previous: mapping[property].previous,\n current: property,\n ...regexGroups\n }\n }\n }\n })\n return previous\n}\n\nexport const getRouteHeaderTitle = pathname => {\n const routes = Object.keys(mapping)\n let headerTitle = undefined\n routes.forEach(property => {\n if (mapping[property].regex) {\n const regExp = new RegExp(mapping[property].regex)\n const regexGroups = regExp.exec(pathname)\n if (regexGroups) {\n headerTitle = mapping[property].headerTitle\n }\n }\n })\n return headerTitle\n}\n","export const USER = {\n ACTION: {\n LOGGING_IN: \"USER_LOGGING_IN\",\n LOGGED_IN: \"USER_LOGGED_IN\",\n LOGGED_OUT: \"USER_LOGGED_OUT\",\n RETRIEVE_LOGGED_IN_USER: \"RETRIEVE_LOGGED_IN_USER\",\n DISABLE_LOGOUT: \"USER_LOGOUT_DISABLED\",\n ENABLE_LOGOUT: \"USER_LOGOUT_ENABLED\",\n MODIFY_AUTH_USER: \"MODIFY_AUTH_USER\",\n LIST: \"USER_LIST\",\n RETRIEVE: \"USER_RETRIEVE\",\n CREATE: \"USER_CREATE\",\n DELETE: \"USER_DELETE\",\n MODIFY: \"USER_MODIFY\",\n REFRESH_TOKEN: \"REFRESH_USER_TOKEN\",\n SET_UI_ATTRIBUTE: \"SET_UI_ATTRIBUTE\"\n },\n TRASH: {\n ACTION: {\n LIST: \"LIST_TRASHED_USERS\"\n }\n },\n ROLE: {\n ADMIN: \"admin\",\n USER: \"user\",\n SYSTEM: \"system\"\n }\n}\n\nexport const PASSWORD_SET = {\n REFERRER: {\n INVITATION: \"invitation\",\n PASSWORD_SET: \"password-set\"\n }\n}\n\nexport const TOAST = {\n ACTION: {\n SHOW: \"SHOW_TOAST\"\n },\n TYPE: {\n ERROR: \"TOAST_ERROR\",\n SUCCESS: \"TOAST_SUCCESS\",\n INFO: \"TOAST_INFO\"\n }\n}\n\nexport const WORKSPACE = {\n ACTION: {\n LIST: \"WORKSPACE_LIST\",\n CREATE: \"WORKSPACE_CREATE\",\n DELETE: \"WORKSPACE_DELETE\",\n MODIFY: \"WORKSPACE_MODIFY\",\n RETRIEVE: \"WORKSPACE_RETRIEVE\",\n LIST_LAST_JOBS: \"LIST_LAST_WORKSPACE_JOBS\"\n },\n LOADING_LIMIT: 20,\n JOB: {\n ACTION: {\n RUN: \"WORKSPACE_JOB_RUN\",\n LIST: \"WORKSPACE_JOB_LIST\",\n REFRESH_LAST: \"REFRESH_LAST_WORKSPACE_JOBS\",\n CLEAR_CACHE: \"CLEAR_WORKSPACE_JOBS_REDUCER\",\n RETRIEVE: \"WORKSPACE_JOB_RETRIEVE\",\n CANCEL: \"WORKSPACE_JOB_CANCEL\",\n LIST_PROJECT: \"PROJECT_WORKSPACE_JOB_LIST\"\n },\n LOADING_LIMIT: 20\n },\n HISTORY: {\n ACTION: {\n LIST: \"WORKSPACE_HISTORY_LIST\",\n CLEAR_CACHE: \"CLEAR_WORKSPACE_HISTORY_CACHE\",\n RETRIEVE: \"WORKSPACE_HISTORY_RETRIEVE\",\n GET_LAST_TWO: \"WORKSPACE_HISTORY_GET_LAST_TWO\"\n },\n LOADING_LIMIT: 20\n },\n CONFIGURATION: {\n JOB: {\n ACTION: {\n LIST: \"WORKSPACE_CONFIGURATION_JOBS_LIST\"\n },\n LOADING_LIMIT: 20\n }\n }\n}\n\nexport const DAWG = {\n ACTION: {\n LIST: \"DAWG_LIST\",\n CREATE: \"DAWG_CREATE\",\n DELETE: \"DAWG_DELETE\",\n MODIFY: \"DAWG_MODIFY\",\n RETRIEVE: \"DAWG_RETRIEVE\",\n LIST_LAST_JOBS: \"DAWGS_LAST_JOBS_LIST\"\n },\n JOB: {\n ACTION: {\n RUN: \"DAWG_JOB_RUN\",\n LIST: \"DAWG_JOB_LIST\",\n REFRESH_LAST: \"REFRESH_LAST_DAWG_JOBS\",\n CLEAR_CACHE: \"CLEAR_DAWG_JOBS_REDUCER\",\n RETRIEVE: \"DAWG_JOB_RETRIEVE\",\n CANCEL: \"DAWG_JOB_CANCEL\"\n },\n LOADING_LIMIT: 20\n },\n HISTORY: {\n ACTION: {\n LIST: \"DAWG_HISTORY_LIST\",\n CLEAR_CACHE: \"CLEAR_DAWG_HISTORY_CACHE\",\n RETRIEVE: \"DAWG_HISTORY_RETRIEVE\",\n GET_LAST_TWO: \"DAWG_HISTORY_GET_LAST_TWO\"\n }\n },\n WORKSPACE: {\n ACTION: {\n MODIFY: \"MODIFY_DAWG_WORKSPACE\",\n MODIFY_BULK: \"MODIFY_BULK_DAWG_WORKSPACE\",\n LIST: \"LIST_DAWG_WORKSPACE\",\n ADD: \"ADD_WORKSPACE_TO_DAWG\",\n DELETE: \"REMOVE_WORKSPACE_FROM_DAWG\"\n },\n JOB: {\n ACTION: {\n LIST: \"LIST_DAWG_WORKSPACE_JOB\"\n }\n }\n },\n LOADING_LIMIT: 20\n}\n\nexport const TAG = {\n ACTION: {\n LIST: \"TAG_LIST\",\n ASSIGN_TAG_TO_WORKSPACE: \"ASSIGN_TAG_TO_WORKSPACE\",\n DELETE_TAG_FROM_WORKSPACE: \"DELETE_TAG_FROM_WORKSPACE\",\n ASSIGN_TAG_TO_DAWG: \"ASSIGN_TAG_TO_DAWG\",\n DELETE_TAG_FROM_DAWG: \"DELETE_TAG_FROM_DAWG\",\n CREATE: \"TAG_CREATE\",\n MODIFY: \"TAG_MODIFY\",\n DELETE: \"TAG_DELETE\"\n }\n}\n\nexport const TABLE = {\n ACTION: {\n SET_SORT_OPTIONS: \"SET_TABLE_SORT\",\n SET_SELECTED_TAGS: \"SET_SELECTED_TAGS\",\n SET_SORTING_SEARCHTEXT_AND_TAGS: \"SET_SORTING_SEARCHTEXT_AND_TAGS\",\n SET_SEARCH_TEXT: \"SET_SEARCH_TEXT\",\n SET_FILTER_BY: \"SET_FILTER_BY\"\n }\n}\n\nexport const OAUTH = {\n ACTION: {\n LIST: \"OAUTH_LIST\",\n MODIFY: \"OAUTH_MODIFY\"\n }\n}\n\nexport const ERROR = {\n ACTION: {\n ADD: \"ERROR_MESSAGE_ADD\",\n REMOVE: \"ERROR_MESSAGE_REMOVE\"\n }\n}\n\nexport const SUCCESS = {\n ACTION: {\n ADD: \"SUCCESS_MESSAGE_ADD\",\n REMOVE: \"SUCCESS_MESSAGE_REMOVE\"\n }\n}\n\nexport const COMPONENT = {\n ACTION: {\n LIST: \"COMPONENT_LIST\"\n }\n}\n\nexport const CONFIGURATION = {\n ACTION: {\n LIST: \"CONFIGURATION_LIST\",\n CREATE: \"CONFIGURATION_CREATE\",\n MODIFY: \"CONFIGURATION_MODIFY\",\n MODIFY_BULK: \"CONFIGURATIONS_MODIFY_BULK\",\n CLONE: \"CONFIGURATION_CLONE\",\n DELETE: \"CONFIGURATION_DELETE\",\n REVERT: \"CONFIGURATION_REVERT\",\n RETRIEVE: \"CONFIGURATION_RETRIEVE\"\n },\n JOB: {\n ACTION: {\n RUN: \"CONFIGURATION_JOB_RUN\",\n LIST: \"CONFIGURATION_JOB_LIST\",\n REFRESH_LAST: \"CONFIGURATION_JOB_REFRESH\",\n LIST_PROJECT: \"PROJECT_CONFIGURATION_JOB_LIST\",\n CLEAR_CACHE: \"CONFIGURATION_JOB_CLEAR_REDUCER_CACHE\",\n CANCEL: \"CONFIGURATION_JOB_CANCEL\",\n RETRIEVE: \"CONFIGURATION_JOB_RETRIEVE\"\n },\n LOADING_LIMIT: 20\n },\n HISTORY: {\n ACTION: {\n LIST: \"CONFIGURATION_HISTORY_LIST\",\n CLEAR_CACHE: \"CLEAR_CONFIGURATION_HISTORY_CACHE\",\n RETRIEVE: \"CONFIGURATION_HISTORY_RETRIEVE\",\n GET_LAST_TWO: \"CONFIGURATION_HISTORY_GET_LAST_TWO\"\n },\n LOADING_LIMIT: 20\n },\n DATA_PREVIEW: {\n IN: {\n ACTION: {\n LIST: \"IN_DATA_PREVIEW_LIST\"\n }\n },\n OUT: {\n ACTION: {\n LIST: \"OUT_DATA_PREVIEW_LIST\"\n }\n },\n LOADING_LIMIT: 50\n }\n}\n\nexport const LOG = {\n LOADING_LIMIT: 20\n}\n\nexport const TRASH = {\n ACTION: {\n LIST: \"TRASH_ITEMS_LIST\",\n RESTORE_USER: \"TRASH_USER_RESTORE\",\n RESTORE_CONFIGURATION: \"TRASH_CONFIGURATION_RESTORE\",\n RESTORE_WORKSPACE: \"TRASH_WORKSPACE_RESTORE\"\n },\n LOADING_LIMIT: 20\n}\n\nexport const ACL = {\n ACTION: {\n LIST: \"WORKSPACE_ACL_LIST\",\n CREATE: \"WORKSPACE_ACL_CREATE\",\n RETRIEVE: \"WORKSPACE_ACL_FOR_USER\",\n MODIFY: \"MODIFY_USERS_WORKSPACE_ACL\",\n DELETE: \"DELETE_USERS_WORKSPACE_ACL\"\n },\n DAWG: {\n ACTION: {\n LIST: \"DAWG_ACL_LIST\",\n CREATE: \"DAWG_ACL_CREATE\",\n RETRIEVE: \"DAWG_ACL_RETRIEVE\",\n MODIFY: \"DAWG_ACL_MODIFY\",\n DELETE: \"DELETE_USERS_DAWG_ACL\"\n }\n },\n USER: {\n ACTION: {\n LIST: \"USERS_WORKSPACES_ACLS_RETRIEVE\"\n },\n DAWG: {\n ACTION: {\n LIST: \"USERS_DAWGS_ACLS_RETRIEVE\"\n }\n }\n }\n}\n\nexport const SYSTEM = {\n ACTION: {\n GET_WORKERS_COUNT: \"GET_WORKERS_COUNT\"\n }\n}\n\nexport const REDUCERS = {\n ACTION: {\n RESET: \"REDUCERS_RESET\"\n }\n}\n\nexport const SEARCH = {\n ACTION: {\n LIST: \"SEARCH_LIST\",\n CLEAR: \"SEARCH_CLEAR\"\n },\n LOADING_LIMIT: 20\n}\n\nexport const ADD_INPUTBOX_TYPE = {\n EMAIL: \"INPUTBOX_EMAIL\"\n}\n\nexport const REPEAT = \"Repeat\"\nexport const ONCE = \"Once\"\n\nexport const SCHEDULE_FORM_TYPE = {\n DAY_OF_WEEK: \"DAY_OF_WEEK\",\n DAY_OF_MONTH: \"DAY_OF_MONTH\"\n}\n\nexport const PERMISSION = {\n READ: \"read\",\n WRITE: \"write\"\n}\n\nexport const MODAL = {\n TYPE: {\n DELETE: \"delete\",\n SUCCESS: \"success\",\n CANCEL: \"cancel\",\n ERASE: \"erase\"\n }\n}\n\nexport const INVITE_FORM = {\n ACTION: {\n SET_DEFAULT_READ_PERMISSIONS: \"SET_DEFAULT_READ_PERMISSIONS\",\n MARK_ALL_WORKSPACES: \"MARK_ALL_WORKSPACES\",\n SET_PERMISSIONS_MARK_ALL: \"SET_PERMISSIONS_MARK_ALL\",\n SET_ACTIVE_USER: \"SET_ACTIVE_USER\",\n TOGGLE_ALL_SWITCH: \"TOGGLE_ALL_SWITCH\",\n TOGGLE_ALL_USER_PERMISSIONS: \"TOGGLE_ALL_USER_PERMISSIONS\"\n }\n}\n\nexport const MOMENT = {\n DATE_TIME_WITH_SECONDS: \"HH:mm:ss, D.M.YYYY\",\n DATE_TIME_FORMAT: \"HH:mm, D.M.YYYY\",\n DATE_FORMAT: \"D.M.YYYY\"\n}\n\nexport const GANTT_DATETIME_FORMAT = \"YYYY-MM-DD HH:mm:ss\"\n\nexport const INTERVAL = {\n WORKSPACE_LIST: 5000,\n DAWG_LIST: 5000,\n WORKSPACE_SHOW: 5000,\n DAWG_SHOW: 5000,\n CONFIGURATION_SHOW: 5000,\n CONFIGURATION_JOB_REFRESH: 5000,\n WORKSPACE_JOB_REFRESH: 5000,\n LAST_WORKSPACE_CONFIGURATION_JOBS_REFRESH: 5000,\n DAWG_WS_JOBLIST_REFRESH: 5000,\n DAWG_WS_JOB_REFRESH: 5000\n}\n","import { USER } from \"sharedConstants\"\nimport _get from \"lodash/get\"\n\nconst initialState = {\n token: \"\",\n data: null,\n isFetching: null,\n loginTimestamp: null,\n // disabled logout button when f.e. configuration is in edit mode\n logoutDisabled: false,\n ui: {\n workspacesListLayout: \"one-col\"\n }\n}\n\nexport default function authenticatedUserUpdate(state = initialState, { type, payload }) {\n switch (type) {\n case USER.ACTION.LOGGING_IN:\n return {\n ...state,\n isFetching: true\n }\n case `${USER.ACTION.LOGGED_IN}_FULFILLED`: {\n return {\n ...state,\n isFetching: false,\n token: _get(payload, \"token\", \"\"),\n loginTimestamp: Date.now()\n }\n }\n case USER.ACTION.RETRIEVE_LOGGED_IN_USER: {\n const { ...data } = payload\n return {\n ...state,\n data,\n isFetching: false\n }\n }\n case `${USER.ACTION.REFRESH_TOKEN}_FULFILLED`:\n return {\n ...state,\n loginTimestamp: Date.now(),\n token: _get(payload, \"token\", \"\")\n }\n case USER.ACTION.LOGGED_OUT:\n return {\n ...initialState,\n ui: {\n ...state.ui\n },\n isFetching: false\n }\n case `${USER.ACTION.MODIFY_AUTH_USER}_FULFILLED`:\n return {\n ...state,\n isFetching: false,\n data: {\n ...payload\n }\n }\n case `${USER.ACTION.MODIFY}_FULFILLED`:\n if (payload.id === state.data.id) {\n return {\n ...state,\n isFetching: false,\n data: {\n ...payload\n }\n }\n }\n return state\n case USER.ACTION.DISABLE_LOGOUT:\n return {\n ...state,\n logoutDisabled: true\n }\n case USER.ACTION.ENABLE_LOGOUT:\n return {\n ...state,\n logoutDisabled: false\n }\n case USER.ACTION.SET_UI_ATTRIBUTE: {\n return {\n ...state,\n ui: {\n ...state.ui,\n [payload.attribute]: payload.value\n }\n }\n }\n default:\n return state\n }\n}\n","import { Record } from \"immutable\"\n\nconst Acl = Record({\n id: 0,\n permission: \"\",\n created: \"\",\n user_id: null,\n workspace_id: null\n})\n\nexport const DawgAclModel = Record({\n id: 0,\n permission: \"\",\n created: \"\",\n user_id: null,\n dawg_id: null\n})\n\nexport default Acl\n","import { Record } from \"immutable\"\n\nconst User = Record({\n id: 0,\n name: \"\",\n email: \"\",\n role: \"\",\n created: \"\",\n disabled: 0,\n deleted: 0,\n can_create_workspaces: 0,\n can_create_dawgs: 0,\n last_login: \"\"\n})\n\nexport default User\n","import { Record, List } from \"immutable\"\nimport UserModel from \"./user.model\"\n\nconst Dawg = Record({\n id: 0,\n user: new UserModel(),\n name: \"\",\n description: \"\",\n settings: null,\n tags: List(),\n frontend_settings: null,\n disabled: 0,\n last_run: \"\",\n last_run_duration: \"\",\n owner: new UserModel(),\n created: \"\",\n example_workspaces: List(),\n workspaces_count: 0\n})\n\nexport default Dawg\n","import { Record, List, fromJS } from \"immutable\"\nimport UserModel from \"./user.model\"\nimport DawgModel from \"./dawg.model\"\n\nconst Workspace = Record({\n id: 0,\n user: null,\n name: \"\",\n description: \"\",\n settings: null,\n tags: List(),\n frontend_settings: null,\n input_settings: null,\n variables: null,\n disabled: 0,\n continue_on_failure: 0,\n created: \"\",\n last_run: \"\",\n last_activity: \"\",\n owner: null,\n dawg: null,\n disk_usage: 0,\n high_disk_usage: 0\n})\n\nexport const WorkspaceSimple = Record({\n id: 0,\n user_id: null,\n name: \"\",\n description: \"\",\n settings: null,\n tag_ids: List(),\n frontend_settings: null,\n input_settings: null,\n variables: null,\n disabled: 0,\n continue_on_failure: 0,\n created: \"\",\n last_run: \"\",\n last_activity: \"\",\n owner_id: null,\n dawg_id: null,\n disk_usage: null,\n high_disk_usage: 0\n})\n\nexport const createWorkspaceModel = workspace =>\n new Workspace({\n ...workspace,\n user: new UserModel(workspace.user),\n settings: fromJS(workspace.settings),\n tags: List(workspace.tags),\n frontend_settings: fromJS(workspace.frontend_settings),\n input_settings: fromJS(workspace.input_settings),\n variables: fromJS(workspace.variables),\n owner: new UserModel(workspace.owner),\n dawg: workspace.dawg\n ? new DawgModel({\n id: workspace.dawg.id,\n name: workspace.dawg.name\n })\n : null\n })\n\nexport default Workspace\n","import { Record } from \"immutable\"\n\nconst WorkspaceJob = Record({\n id: 0,\n user_id: 0,\n workspace_id: 0,\n status: \"\",\n stats: null,\n created: \"\",\n origin_created: \"\"\n})\n\nexport const WorkspaceJobFull = Record({\n id: 0,\n user: null,\n workspace: null,\n status: \"\",\n stats: null,\n created: \"\",\n origin_created: \"\"\n})\n\nexport default WorkspaceJob\n","import { Record } from \"immutable\"\n\nconst SelectionSetting = Record({\n limit: 0,\n offset: null,\n order_dir: \"ASC\",\n order_by: \"\",\n item_type: \"\",\n searched_text: \"\",\n name_filter: \"\",\n show_enabled: 1,\n show_disabled: 1\n})\n\nexport default SelectionSetting\n","import { WORKSPACE, TAG } from \"sharedConstants\"\nimport { fromJS, List, Map } from \"immutable\"\nimport _map from \"lodash/map\"\nimport _mapKeys from \"lodash/mapKeys\"\nimport { createWorkspaceModel } from \"models/workspace.model\"\nimport WorkspaceJobModel from \"models/workspaceJob.model\"\nimport SelectionSettingModel from \"models/selectionSettings.model\"\n\nconst initialState = Map({\n workspaces: null,\n selectionSettings: new SelectionSettingModel(),\n hasMoreItems: false,\n lastJobs: null\n})\n\nexport default (state = initialState, { type, payload }) => {\n switch (type) {\n case `${WORKSPACE.ACTION.LIST}_FULFILLED`:\n if (payload.selection_settings.offset === 0) {\n return state\n .set(\"workspaces\", List(_map(payload.workspaces, ws => createWorkspaceModel(ws))))\n .set(\"selectionSettings\", fromJS(new SelectionSettingModel(payload.selection_settings)))\n .set(\"hasMoreItems\", payload.workspaces.length === payload.selection_settings.limit)\n } else {\n return state\n .set(\n \"workspaces\",\n state.get(\"workspaces\").concat(_map(payload.workspaces, ws => createWorkspaceModel(ws)))\n )\n .set(\"selectionSettings\", fromJS(new SelectionSettingModel(payload.selection_settings)))\n .set(\"hasMoreItems\", payload.workspaces.length === payload.selection_settings.limit)\n }\n\n case `${WORKSPACE.ACTION.RETRIEVE}_FULFILLED`:\n /*\n * Two situations may occur:\n * 1) state is null -> direct acces to workspace detail\n * 2) state is List() -> access to workspace detail from workspace list\n */\n if (state.get(\"workspaces\") === null) {\n return state.set(\"workspaces\", List([createWorkspaceModel(payload)]))\n } else {\n const isAlreadyInList = state.get(\"workspaces\").find(ws => ws.id === payload.id)\n if (isAlreadyInList) {\n return state.set(\n \"workspaces\",\n state\n .get(\"workspaces\")\n .map(ws => (ws.id === payload.id ? createWorkspaceModel(payload) : ws))\n )\n } else {\n return state.set(\n \"workspaces\",\n state.get(\"workspaces\").push(createWorkspaceModel(payload))\n )\n }\n }\n\n case `${WORKSPACE.ACTION.MODIFY}_FULFILLED`:\n return state.set(\n \"workspaces\",\n state\n .get(\"workspaces\")\n .map(workspace =>\n workspace.id === payload.id ? createWorkspaceModel(payload) : workspace\n )\n )\n\n case `${WORKSPACE.ACTION.DELETE}_FULFILLED`:\n // payload === workspace id\n return state.set(\n \"workspaces\",\n state.get(\"workspaces\").filterNot(workspace => workspace.id === payload)\n )\n\n case `${TAG.ACTION.ASSIGN_TAG_TO_WORKSPACE}_FULFILLED`: {\n const workspaceIndex = state.get(\"workspaces\").findIndex(ws => ws.id === payload.workspace.id)\n if (workspaceIndex !== -1) {\n return state.setIn(\n [\"workspaces\", workspaceIndex, \"tags\"],\n state.getIn([\"workspaces\", workspaceIndex, \"tags\"]).concat(payload.tag)\n )\n }\n return state\n }\n\n case `${TAG.ACTION.DELETE_TAG_FROM_WORKSPACE}_FULFILLED`: {\n const workspaceIndex = state.get(\"workspaces\").findIndex(ws => ws.id === payload.workspace_id)\n if (workspaceIndex !== -1) {\n return state.setIn(\n [\"workspaces\", workspaceIndex, \"tags\"],\n state.getIn([\"workspaces\", workspaceIndex, \"tags\"]).filterNot(tag => {\n return tag.id === payload.tag_id\n })\n )\n }\n return state\n }\n\n case WORKSPACE.ACTION.LIST_LAST_JOBS:\n if (state.get(\"lastJobs\") === null) {\n return state.set(\n \"lastJobs\",\n Map(\n _mapKeys(\n _map(payload, lastJob => new WorkspaceJobModel(fromJS(lastJob.last_job))),\n \"workspace_id\"\n )\n )\n )\n } else {\n return state.set(\n \"lastJobs\",\n state.get(\"lastJobs\").merge(\n _mapKeys(\n _map(payload, lastJob => new WorkspaceJobModel(fromJS(lastJob.last_job))),\n \"workspace_id\"\n )\n )\n )\n }\n\n // create action calls dispatches LIST action because we haven't got fetched all the data ->\n // it's not possible to insert newly create item somewhere if there exists some filter or sorting rule\n // case `${WORKSPACE.ACTION.CREATE}_FULFILLED`:\n // case `${WORKSPACE.ACTION.CLONE}_FULFILLED`:\n\n default:\n return state\n }\n}\n","import { USER, TRASH } from \"sharedConstants\"\nimport { Map, fromJS } from \"immutable\"\nimport _map from \"lodash/map\"\nimport _mapKeys from \"lodash/mapKeys\"\nimport _toString from \"lodash/toString\"\nimport UserModel from \"models/user.model\"\n\n/*\n null if not fetched yet, otherwise\n Map({\n \"userId\": userObject\n })\n*/\n\nconst initialState = Map({\n active: null,\n removed: null\n})\n\nexport default function userUpdate(state = initialState, { type, payload }) {\n switch (type) {\n case `${USER.ACTION.LIST}_FULFILLED`:\n return state.set(\n \"active\",\n Map(\n _mapKeys(\n _map(payload, user => new UserModel(user)),\n \"id\"\n )\n )\n )\n\n case `${USER.TRASH.ACTION.LIST}_FULFILLED`:\n return state.set(\n \"removed\",\n Map(\n _mapKeys(\n _map(payload, user => new UserModel(user)),\n \"id\"\n )\n )\n )\n\n case `${USER.ACTION.RETRIEVE}_FULFILLED`:\n case `${USER.ACTION.CREATE}_FULFILLED`:\n case `${USER.ACTION.MODIFY}_FULFILLED`:\n return state.set(\n \"active\",\n state.get(\"active\").merge(fromJS({ [payload.id]: new UserModel(payload) }))\n )\n\n case `${TRASH.ACTION.RESTORE_USER}_FULFILLED`:\n const userObj = {\n ...payload,\n deleted: 0\n }\n return state\n .set(\"active\", state.get(\"active\").merge(fromJS({ [payload.id]: new UserModel(userObj) })))\n .deleteIn([\"removed\", _toString(payload.id)])\n\n case `${USER.ACTION.DELETE}_FULFILLED`: {\n // there's id in payload\n const user = state.getIn([\"active\", _toString(payload)]).set(\"deleted\", 1)\n if (Map.isMap(state.get(\"removed\"))) {\n return state\n .deleteIn([\"active\", _toString(payload)])\n .set(\"removed\", state.get(\"removed\").merge(Map({ [user.id]: user })))\n } else {\n return state\n .deleteIn([\"active\", _toString(payload)])\n .set(\"removed\", Map({ [user.id]: user }))\n }\n }\n default:\n return state\n }\n}\n","import { Record } from \"immutable\"\n\nconst Tag = Record({\n id: 0,\n name: \"\",\n color: \"\"\n})\n\nexport default Tag\n","import { TAG } from \"sharedConstants\"\nimport { Map, fromJS } from \"immutable\"\nimport _map from \"lodash/map\"\nimport _mapKeys from \"lodash/mapKeys\"\nimport Tag from \"models/tag.model\"\n\nconst initialState = Map(\n fromJS({\n data: {},\n isFetched: false\n })\n)\n\nexport default (state = initialState, { type, payload }) => {\n switch (type) {\n case `${TAG.ACTION.LIST}_FULFILLED`:\n return state\n .set(\n \"data\",\n state.get(\"data\").merge(\n _mapKeys(\n _map(payload, tag => new Tag(tag)),\n \"id\"\n )\n )\n )\n .set(\"isFetched\", true)\n\n case `${TAG.ACTION.CREATE}_FULFILLED`:\n case `${TAG.ACTION.MODIFY}_FULFILLED`:\n return state.set(\"data\", state.get(\"data\").merge({ [payload.id]: new Tag(payload) }))\n\n case `${TAG.ACTION.DELETE}_FULFILLED`:\n return state.set(\n \"data\",\n state.get(\"data\").filterNot(tag => tag.id === payload)\n )\n\n default:\n return state\n }\n}\n","import { Record } from \"immutable\"\n\n/*\n * settings and credentials are plain JS objects, because we don't\n * need to access inside or manipulate with them on frontend\n */\nconst OAuth = Record({\n id: 0,\n name: \"\",\n description: \"\",\n settings: {},\n credentials: {},\n created: \"\"\n})\n\nexport default OAuth\n","import { ACL } from \"sharedConstants\"\nimport { Map, fromJS } from \"immutable\"\nimport _map from \"lodash/map\"\nimport AclModel, { DawgAclModel } from \"models/acl.model\"\nimport _toString from \"lodash/toString\"\n\nexport default (state = Map({ workspaces: null, dawgs: null }), { type, payload }) => {\n switch (type) {\n case `${ACL.ACTION.LIST}_FULFILLED`:\n if (state.get(\"workspaces\")) {\n return state.set(\n \"workspaces\",\n state.get(\"workspaces\").merge({\n [payload.workspaceId]: fromJS(_map(payload.data, acl => new AclModel(acl)))\n })\n )\n } else {\n return state.set(\n \"workspaces\",\n Map({\n [payload.workspaceId]: fromJS(_map(payload.data, acl => new AclModel(acl)))\n })\n )\n }\n case `${ACL.DAWG.ACTION.LIST}_FULFILLED`:\n if (state.get(\"dawgs\")) {\n return state.set(\n \"dawgs\",\n state.get(\"dawgs\").merge({\n [payload.dawgId]: fromJS(_map(payload.data, acl => new DawgAclModel(acl)))\n })\n )\n } else {\n return state.set(\n \"dawgs\",\n Map({\n [payload.dawgId]: fromJS(_map(payload.data, acl => new DawgAclModel(acl)))\n })\n )\n }\n case `${ACL.ACTION.CREATE}_FULFILLED`:\n return state.setIn(\n [\"workspaces\", _toString(payload.workspace_id)],\n state\n .getIn([\"workspaces\", _toString(payload.workspace_id)])\n .insert(0, new AclModel(payload))\n )\n case `${ACL.DAWG.ACTION.CREATE}_FULFILLED`:\n return state.setIn(\n [\"dawgs\", _toString(payload.dawg_id)],\n state.getIn([\"dawgs\", _toString(payload.dawg_id)]).insert(0, new DawgAclModel(payload))\n )\n case `${ACL.ACTION.MODIFY}_FULFILLED`:\n return state.setIn(\n [\"workspaces\", _toString(payload.workspace_id)],\n state\n .getIn([\"workspaces\", _toString(payload.workspace_id)])\n .map(acl => (acl.id === payload.id ? new AclModel(payload) : acl))\n )\n case `${ACL.DAWG.ACTION.MODIFY}_FULFILLED`:\n return state.setIn(\n [\"dawgs\", _toString(payload.dawg_id)],\n state\n .getIn([\"dawgs\", _toString(payload.dawg_id)])\n .map(acl => (acl.id === payload.id ? new DawgAclModel(payload) : acl))\n )\n case `${ACL.ACTION.DELETE}_FULFILLED`:\n return state.setIn(\n [\"workspaces\", _toString(payload.workspaceId)],\n state\n .getIn([\"workspaces\", _toString(payload.workspaceId)])\n .filterNot(acl => acl.id === payload.aclId)\n )\n case `${ACL.DAWG.ACTION.DELETE}_FULFILLED`:\n return state.setIn(\n [\"dawgs\", _toString(payload.dawgId)],\n state.getIn([\"dawgs\", _toString(payload.dawgId)]).filterNot(acl => acl.id === payload.aclId)\n )\n default:\n return state\n }\n}\n","import { TOAST } from \"sharedConstants\"\n\nconst initialState = {\n id: 0\n}\n\nexport default (state = initialState, { type, payload }) => {\n switch (type) {\n case TOAST.ACTION.SHOW:\n return {\n id: state.id + 1,\n timestamp: Date.now(),\n ...payload\n }\n default:\n return state\n }\n}\n","import { Record } from \"immutable\"\n\nconst Component = Record({\n id: 0,\n name: \"\",\n type: \"\",\n description: \"\",\n default_settings: {},\n settings_template: {},\n icon: \"\",\n in_progress: 0,\n hidden: 0\n})\n\nexport default Component\n","import { Record } from \"immutable\"\n\nconst Configuration = Record({\n id: 0,\n user_id: 0,\n workspace_id: 0,\n component_id: 0,\n name: \"\",\n description: \"\",\n input_settings: null,\n settings: null,\n oauth_settings: null,\n frontend_settings: null,\n continue_on_failure: 0,\n disabled: 0,\n deleted: 0,\n auth_link: \"\",\n created: \"\"\n})\n\nexport const ConfigurationFullStructure = Record({\n id: 0,\n user: null,\n workspace: null,\n component: null,\n name: \"\",\n description: \"\",\n input_settings: null,\n settings: null,\n oauth_settings: null,\n frontend_settings: null,\n continue_on_failure: 0,\n disabled: 0,\n deleted: 0,\n auth_link: \"\",\n created: \"\"\n})\n\nexport default Configuration\n","import { CONFIGURATION } from \"sharedConstants\"\nimport ConfigurationModel from \"models/configuration.model\"\nimport { Map, fromJS } from \"immutable\"\nimport _toString from \"lodash/toString\"\nimport _map from \"lodash/map\"\nimport _mapKeys from \"lodash/mapKeys\"\n\n/*\n * {\n * isFetching: true/false\n * data: {\n * workspaceId: {\n * isFulfilled: false,\n * configurations: {\n * confId: confObject, confId2, confObject2\n * }\n * }\n * }\n * }\n */\n\nconst initialState = Map({\n isFetching: true,\n data: Map()\n})\n\nexport default (state = initialState, { type, payload, meta }) => {\n switch (type) {\n case `${CONFIGURATION.ACTION.MODIFY}_PENDING`:\n case `${CONFIGURATION.ACTION.MODIFY_BULK}_PENDING`:\n return state.setIn([\"data\", _toString(meta.workspaceId), \"isModifying\"], true)\n\n case `${CONFIGURATION.ACTION.LIST}_PENDING`:\n return state.set(\"isFetching\", true)\n\n case `${CONFIGURATION.ACTION.LIST}_FULFILLED`:\n return state.set(\"isFetching\", false).set(\n \"data\",\n Map({\n [payload.workspaceId]: Map({\n isFulfilled: true,\n configurations: Map(\n _mapKeys(\n _map(payload.data, conf => new ConfigurationModel(fromJS(conf))),\n \"id\"\n )\n )\n })\n })\n )\n\n case `${CONFIGURATION.ACTION.CLONE}_FULFILLED`:\n case `${CONFIGURATION.ACTION.CREATE}_FULFILLED`:\n case `${CONFIGURATION.ACTION.RETRIEVE}_FULFILLED`:\n return state.setIn(\n [\"data\", _toString(payload.workspace_id), \"configurations\", _toString(payload.id)],\n new ConfigurationModel(fromJS(payload))\n )\n\n case `${CONFIGURATION.ACTION.MODIFY}_FULFILLED`:\n return state\n .setIn(\n [\"data\", _toString(payload.workspace_id), \"configurations\", _toString(payload.id)],\n new ConfigurationModel(fromJS(payload))\n )\n .setIn([\"data\", _toString(payload.workspace_id), \"isModifying\"], false)\n\n case `${CONFIGURATION.ACTION.MODIFY}_REJECTED`: {\n return state.setIn([\"data\", _toString(meta.workspaceId), \"isModifying\"], false)\n }\n\n case `${CONFIGURATION.ACTION.MODIFY_BULK}_FULFILLED`:\n const changedConfsMap = _mapKeys(\n _map(payload, conf => new ConfigurationModel(fromJS(conf))),\n \"id\"\n )\n return state\n .setIn([\"data\", _toString(meta.workspaceId), \"isModifying\"], false)\n .setIn(\n [\"data\", _toString(meta.workspaceId), \"configurations\"],\n state\n .getIn([\"data\", _toString(meta.workspaceId), \"configurations\"])\n .merge(changedConfsMap)\n )\n\n case `${CONFIGURATION.ACTION.DELETE}_FULFILLED`:\n return state.deleteIn([\n \"data\",\n _toString(payload.workspaceId),\n \"configurations\",\n _toString(payload.configurationId)\n ])\n\n default:\n return state\n }\n}\n","import { Record } from \"immutable\"\n\nconst TrashedItem = Record({\n type: \"\",\n entity: {}\n})\n\nexport default TrashedItem\n","import { TRASH } from \"sharedConstants\"\nimport TrashedItemModel from \"models/trashedItem.model\"\nimport SelectionSettingModel from \"models/selectionSettings.model\"\nimport _map from \"lodash/map\"\nimport { Map, fromJS, List } from \"immutable\"\n\nconst initialState = Map(\n fromJS({\n data: [],\n selectionSettings: null,\n hasMoreItems: false\n })\n)\n\nexport default (state = initialState, { type, payload }) => {\n switch (type) {\n case `${TRASH.ACTION.LIST}_FULFILLED`:\n if (payload.selection_settings.offset === 0) {\n return state\n .set(\"data\", List(_map(payload.trashed_items, item => new TrashedItemModel(item))))\n .set(\"selectionSettings\", new SelectionSettingModel(payload.selection_settings))\n .set(\"hasMoreItems\", payload.trashed_items.length === TRASH.LOADING_LIMIT)\n } else {\n return state\n .set(\n \"data\",\n state\n .get(\"data\")\n .concat(_map(payload.trashed_items, item => new TrashedItemModel(item)))\n )\n .set(\"selectionSettings\", new SelectionSettingModel(payload.selection_settings))\n .set(\"hasMoreItems\", payload.trashed_items.length === TRASH.LOADING_LIMIT)\n }\n case `${TRASH.ACTION.RESTORE_USER}_FULFILLED`:\n return state.set(\n \"data\",\n state.get(\"data\").filterNot(item => item.type === \"user\" && item.entity.id === payload.id)\n )\n case `${TRASH.ACTION.RESTORE_CONFIGURATION}_FULFILLED`:\n return state.set(\n \"data\",\n state\n .get(\"data\")\n .filterNot(item => item.type === \"configuration\" && item.entity.id === payload.id)\n )\n case `${TRASH.ACTION.RESTORE_WORKSPACE}_FULFILLED`:\n return state.set(\n \"data\",\n state\n .get(\"data\")\n .filterNot(item => item.type === \"workspace\" && item.entity.id === payload.id)\n )\n default:\n return state\n }\n}\n","import { Record } from \"immutable\"\n\nexport const ConfigurationJobFull = Record({\n id: 0,\n user: null,\n configuration: null,\n status: \"\",\n stats: null,\n created: \"\",\n origin_created: \"\"\n})\n\nexport const ConfigurationJob = Record({\n id: 0,\n user_id: null,\n configuration_id: null,\n status: \"\",\n stats: null,\n created: \"\",\n origin_created: \"\"\n})\n","import { CONFIGURATION } from \"sharedConstants\"\n\nimport { fromJS, List, Map } from \"immutable\"\nimport _map from \"lodash/map\"\nimport { ConfigurationJobFull } from \"models/configurationJob.model\"\nimport SelectionSettingModel from \"models/selectionSettings.model\"\n\nconst initialState = Map({\n data: null,\n selectionSettings: null\n})\n\nexport default (state = initialState, { type, payload }) => {\n switch (type) {\n case CONFIGURATION.JOB.ACTION.LIST_PROJECT:\n case `${CONFIGURATION.JOB.ACTION.LIST_PROJECT}_FULFILLED`:\n return state\n .set(\n \"data\",\n List(\n _map(payload.configuration_jobs, confJob => new ConfigurationJobFull(fromJS(confJob)))\n )\n )\n .set(\"selectionSettings\", new SelectionSettingModel(payload.selection_settings))\n default:\n return state\n }\n}\n","import { WORKSPACE } from \"sharedConstants\"\n\nimport { fromJS, List, Map } from \"immutable\"\nimport _map from \"lodash/map\"\nimport { WorkspaceJobFull } from \"models/workspaceJob.model\"\nimport SelectionSettingModel from \"models/selectionSettings.model\"\n\nconst initialState = Map({\n data: null,\n selectionSettings: null\n})\n\nexport default (state = initialState, { type, payload }) => {\n switch (type) {\n case WORKSPACE.JOB.ACTION.LIST_PROJECT:\n case `${WORKSPACE.JOB.ACTION.LIST_PROJECT}_FULFILLED`:\n return state\n .set(\n \"data\",\n List(_map(payload.workspace_jobs, wsJob => new WorkspaceJobFull(fromJS(wsJob))))\n )\n .set(\"selectionSettings\", new SelectionSettingModel(payload.selection_settings))\n default:\n return state\n }\n}\n","import { CONFIGURATION } from \"sharedConstants\"\nimport { ConfigurationJob as ConfigurationJobModel } from \"models/configurationJob.model\"\nimport SelectionSettingsModel from \"models/selectionSettings.model\"\nimport { Map, List, fromJS } from \"immutable\"\n\n/*\n * Number of cached configuration jobs for each visited configuration is limited to\n * {CONFIGURATION.JOB.LOADING_LIMIT}. It means that when user leaves 'Configuration\n * Jobs List' page, the number of stored configuration jobs should be decreased to\n * first {CONFIGURATION.JOB.LOADING_LIMIT}. Also, when the user completely leaves\n * browsing workspace, this reducer should be set to initial state.\n *\n * state example:\n * Map({\n * configurationId: Map({\n * selectionSettings: SelectionSettingsModel,\n * hasMoreItems: true/false,\n * data: List([ ConfigurationJobModel ]),\n * isFetching: false\n * })\n * })\n */\n\nconst initialState = Map()\n\nexport default (state = initialState, { type, payload, meta }) => {\n const addNewJobToExistingList = () => {\n const stateTemp = state\n .setIn(\n [meta.configurationId, \"data\"],\n state\n .getIn([meta.configurationId, \"data\"])\n .unshift(new ConfigurationJobModel(fromJS(payload.job)))\n )\n .setIn([meta.configurationId, \"isFetching\"], false)\n\n if (state.getIn([meta.configurationId, \"hasMoreItems\"])) {\n // increase selectionSettings offset by 1\n return stateTemp.setIn(\n [meta.configurationId, \"selectionSettings\", \"offset\"],\n stateTemp.getIn([meta.configurationId, \"selectionSettings\", \"offset\"]) + 1\n )\n }\n return stateTemp\n }\n\n switch (type) {\n case `${CONFIGURATION.JOB.ACTION.LIST}_PENDING`:\n case `${CONFIGURATION.JOB.ACTION.RUN}_PENDING`:\n case `${CONFIGURATION.JOB.ACTION.RETRIEVE}_PENDING`:\n return state.setIn([meta.configurationId, \"isFetching\"], true)\n\n case `${CONFIGURATION.JOB.ACTION.LIST}_FULFILLED`:\n if (payload.jobs.selection_settings.offset === 0) {\n // initial load\n return state\n .setIn(\n [meta.configurationId, \"selectionSettings\"],\n new SelectionSettingsModel(payload.jobs.selection_settings)\n )\n .setIn(\n [meta.configurationId, \"data\"],\n List(payload.jobs.configuration_jobs.map(job => new ConfigurationJobModel(fromJS(job))))\n )\n .setIn(\n [meta.configurationId, \"hasMoreItems\"],\n payload.jobs.configuration_jobs.length === payload.jobs.selection_settings.limit\n )\n .setIn([meta.configurationId, \"isFetching\"], false)\n } else {\n // concat\n return state\n .setIn(\n [meta.configurationId, \"selectionSettings\"],\n new SelectionSettingsModel(payload.jobs.selection_settings)\n )\n .setIn(\n [meta.configurationId, \"data\"],\n state\n .getIn([meta.configurationId, \"data\"])\n .concat(\n payload.jobs.configuration_jobs.map(job => new ConfigurationJobModel(fromJS(job)))\n )\n )\n .setIn(\n [meta.configurationId, \"hasMoreItems\"],\n payload.jobs.configuration_jobs.length === payload.jobs.selection_settings.limit\n )\n .setIn([meta.configurationId, \"isFetching\"], false)\n }\n\n case CONFIGURATION.JOB.ACTION.REFRESH_LAST:\n if (payload.job) {\n const lastSavedJob = state.getIn([meta.configurationId, \"data\", 0])\n if (lastSavedJob) {\n /*\n * Now three situations can occurs:\n * a) jobs are completely same (same -> they have same id & status) => do nothing\n * b) jobs are same, but have different statuses => replace the job\n * c) payload job is completely new => add to redux state on first position\n */\n if (payload.job.id === lastSavedJob.id && payload.job.status !== lastSavedJob.status) {\n // case b)\n return state.setIn(\n [meta.configurationId, \"data\", 0],\n new ConfigurationJobModel(fromJS(payload.job))\n )\n }\n if (payload.job.id !== lastSavedJob.id) {\n // case c)\n return addNewJobToExistingList()\n }\n // case a)\n return state\n } else {\n // first job ever\n return state\n .setIn(\n [meta.configurationId, \"selectionSettings\"],\n new SelectionSettingsModel({ offset: 0, limit: 20 })\n )\n .setIn([meta.configurationId, \"hasMoreItems\"], false)\n .setIn(\n [meta.configurationId, \"data\"],\n List([new ConfigurationJobModel(fromJS(payload.job))])\n )\n }\n }\n return state\n\n case `${CONFIGURATION.JOB.ACTION.RUN}_FULFILLED`:\n if (List.isList(state.getIn([meta.configurationId, \"data\"]))) {\n return addNewJobToExistingList()\n }\n // otherwise do nothing, configuration job has been started directly from dataflow\n return state\n\n case CONFIGURATION.JOB.ACTION.CLEAR_CACHE:\n return initialState\n\n case `${CONFIGURATION.JOB.ACTION.RETRIEVE}_FULFILLED`:\n case CONFIGURATION.JOB.ACTION.RETRIEVE:\n const data = state.getIn([meta.configurationId, \"data\"])\n if (List.isList(data)) {\n const jobIndex = data.findIndex(job => job.id === payload.job.id)\n if (jobIndex !== -1) {\n return state.setIn(\n [meta.configurationId, \"data\", jobIndex],\n new ConfigurationJobModel(fromJS(payload.job))\n )\n }\n return addNewJobToExistingList()\n }\n return state\n .setIn(\n [meta.configurationId, \"data\"],\n List([new ConfigurationJobModel(fromJS(payload.job))])\n )\n .setIn([meta.configurationId, \"isFetching\"], false)\n\n /*\n * it's not necessary to do something, because api cannot return job with canceled\n * status immediately\n */\n case `${CONFIGURATION.JOB.ACTION.CANCEL}_FULFILLED`:\n default:\n return state\n }\n}\n","import { WORKSPACE } from \"sharedConstants\"\nimport WorkspaceJobModel from \"models/workspaceJob.model\"\nimport SelectionSettingsModel from \"models/selectionSettings.model\"\nimport { Map, List, fromJS } from \"immutable\"\n\n/*\n * State need to be erased when user leaves the workspaces -> visits workspace\n * list page.\n *\n * state example:\n * Map({\n * data: List([ WorkspaceJobModel ]),\n * hasMoreItems: true/false,\n * selectionSettings: SelectionSettingsModel(),\n * isFetching: false\n * })\n */\n\nconst initialState = null\n\nexport default (state = initialState, { type, payload }) => {\n const addNewJobToExistingList = () => {\n const stateTemp = state\n .set(\"data\", state.get(\"data\").unshift(new WorkspaceJobModel(fromJS(payload.workspace_job))))\n .set(\"isFetching\", false)\n\n if (state.get(\"hasMoreItems\")) {\n return stateTemp.setIn(\n [\"selectionSettings\", \"offset\"],\n stateTemp.getIn([\"selectionSettings\", \"offset\"]) + 1\n )\n }\n return stateTemp\n }\n\n switch (type) {\n case `${WORKSPACE.JOB.ACTION.LIST}_PENDING`:\n case `${WORKSPACE.JOB.ACTION.RUN}_PENDING`:\n case `${WORKSPACE.JOB.ACTION.RETRIEVE}_PENDING`:\n case `${WORKSPACE.JOB.ACTION.CANCEL}_PENDING`:\n if (Map.isMap(state)) {\n return state.set(\"isFetching\", true)\n } else {\n return Map({ isFetching: true })\n }\n\n case `${WORKSPACE.JOB.ACTION.LIST}_FULFILLED`:\n if (payload.selection_settings.offset === 0) {\n // initial load\n return Map({\n selectionSettings: new SelectionSettingsModel(payload.selection_settings),\n hasMoreItems: payload.workspace_jobs.length === payload.selection_settings.limit,\n data: List(payload.workspace_jobs.map(job => new WorkspaceJobModel(fromJS(job)))),\n isFetching: false\n })\n } else {\n // concat\n return state\n .set(\"selectionSettings\", new SelectionSettingsModel(payload.selection_settings))\n .set(\"hasMoreItems\", payload.workspace_jobs.length === payload.selection_settings.limit)\n .set(\n \"data\",\n state\n .get(\"data\")\n .concat(payload.workspace_jobs.map(job => new WorkspaceJobModel(fromJS(job))))\n )\n .set(\"isFetching\", false)\n }\n\n case WORKSPACE.JOB.ACTION.REFRESH_LAST:\n if (payload.workspace_job) {\n if (state === null) {\n return Map({\n selectionSettings: new SelectionSettingsModel({\n offset: 0,\n limit: 20\n }),\n hasMoreItems: false,\n data: List([new WorkspaceJobModel(fromJS(payload.workspace_job))])\n })\n } else {\n const lastSavedJob = state.getIn([\"data\", 0])\n if (lastSavedJob) {\n /*\n * Now three situations can occurs:\n * a) jobs are completely same (same -> they have same id & status) => do nothing\n * b) jobs are same, but have different statuses => replace the job\n * c) payload job is completely new => add to redux state on first position\n */\n if (\n payload.workspace_job.id === lastSavedJob.id &&\n payload.workspace_job.status !== lastSavedJob.status\n ) {\n // case b)\n return state.setIn([\"data\", 0], new WorkspaceJobModel(fromJS(payload.workspace_job)))\n }\n if (payload.workspace_job.id !== lastSavedJob.id) {\n // case c)\n return addNewJobToExistingList()\n }\n // case a)\n return state\n } else {\n return state.set(\"data\", List([new WorkspaceJobModel(fromJS(payload.workspace_job))]))\n }\n }\n }\n return state\n\n case `${WORKSPACE.JOB.ACTION.RUN}_FULFILLED`:\n if (List.isList(state.get(\"data\"))) {\n return addNewJobToExistingList()\n } else {\n return state.set(\"isFetching\", false)\n }\n\n case WORKSPACE.JOB.ACTION.CLEAR_CACHE:\n return initialState\n\n case `${WORKSPACE.JOB.ACTION.RETRIEVE}_FULFILLED`:\n case WORKSPACE.JOB.ACTION.RETRIEVE:\n if (state === null || !List.isList(state.get(\"data\"))) {\n return Map({\n selectionSettings: new SelectionSettingsModel({\n offset: 0,\n limit: 20\n }),\n hasMoreItems: false,\n data: List([new WorkspaceJobModel(fromJS(payload.workspace_job))]),\n isFetching: false\n })\n } else {\n const jobIndex = state.get(\"data\").findIndex(job => job.id === payload.workspace_job.id)\n if (jobIndex !== -1) {\n return state\n .setIn([\"data\", jobIndex], new WorkspaceJobModel(fromJS(payload.workspace_job)))\n .set(\"isFetching\", false)\n }\n return addNewJobToExistingList()\n }\n\n case `${WORKSPACE.JOB.ACTION.CANCEL}_FULFILLED`:\n const jobIndex = state.get(\"data\").findIndex(job => job.id === payload.workspace_job.id)\n return state\n .setIn([\"data\", jobIndex], new WorkspaceJobModel(fromJS(payload.workspace_job)))\n .set(\"isFetching\", false)\n\n default:\n return state\n }\n}\n","import { Record, Map } from \"immutable\"\n\nconst WorkspaceHistory = Record({\n id: 0,\n workspace: Map(),\n previous_history: Map()\n})\n\nexport default WorkspaceHistory\n","import { WORKSPACE } from \"sharedConstants\"\nimport WorkspaceHistoryModel from \"models/workspaceHistory.model\"\nimport SelectionSettingsModel from \"models/selectionSettings.model\"\nimport { Map, List, fromJS } from \"immutable\"\n\n/*\n * State need to be erased when user leaves the workspaces -> visits workspace\n * list page.\n *\n * state example:\n * Map({\n * data: List([ WorkspaceHistoryModel ]),\n * hasMoreItems: true/false,\n * selectionSettings: SelectionSettingsModel(),\n * isFulfilled: false\n * })\n */\n\nconst initialState = Map({\n isFulfilled: false,\n data: List(),\n hasMoreItems: false,\n selectionSettings: SelectionSettingsModel()\n})\n\nexport default (state = initialState, { type, payload }) => {\n switch (type) {\n case `${WORKSPACE.HISTORY.ACTION.LIST}_FULFILLED`: {\n if (payload.selection_settings.offset === 0) {\n // initial load\n return Map({\n isFulfilled: true,\n data: List(\n payload.history_list.map(historyItem => new WorkspaceHistoryModel(fromJS(historyItem)))\n ),\n hasMoreItems: payload.history_list.length === payload.selection_settings.limit,\n selectionSettings: new SelectionSettingsModel(payload.selection_settings)\n })\n } else {\n // concat\n return state\n .set(\"selectionSettings\", new SelectionSettingsModel(payload.selection_settings))\n .set(\"hasMoreItems\", payload.history_list.length === payload.selection_settings.limit)\n .set(\"isFulfilled\", true)\n .set(\n \"data\",\n state\n .get(\"data\")\n .concat(\n payload.history_list.map(\n historyItem => new WorkspaceHistoryModel(fromJS(historyItem))\n )\n )\n )\n }\n }\n case `${WORKSPACE.HISTORY.ACTION.RETRIEVE}_FULFILLED`: {\n const historyItemIndex = state\n .get(\"data\")\n .findIndex(historyItem => historyItem.id === payload.history.id)\n if (historyItemIndex !== -1) {\n return state.setIn(\n [\"data\", historyItemIndex],\n new WorkspaceHistoryModel(fromJS(payload.history))\n )\n } else {\n return state.set(\n \"data\",\n state.get(\"data\").push(new WorkspaceHistoryModel(fromJS(payload.history)))\n )\n }\n }\n case `${WORKSPACE.HISTORY.ACTION.GET_LAST_TWO}_FULFILLED`: {\n return state\n .set(\n \"data\",\n state\n .get(\"data\")\n .splice(\n 0,\n 1,\n new WorkspaceHistoryModel(fromJS(payload.history_list[0])),\n new WorkspaceHistoryModel(fromJS(payload.history_list[1]))\n )\n )\n .setIn([\"selectionSettings\", \"offset\"], state.getIn([\"selectionSettings\", \"offset\"]) + 1)\n }\n case WORKSPACE.HISTORY.ACTION.CLEAR_CACHE: {\n return initialState\n }\n default:\n return state\n }\n}\n","import { Record, Map } from \"immutable\"\n\nconst ConfigurationHistory = Record({\n id: 0,\n configuration: Map(),\n previous_history: Map()\n})\n\nexport default ConfigurationHistory\n","import { CONFIGURATION } from \"sharedConstants\"\nimport ConfigurationHistoryModel from \"models/configurationHistory.model\"\nimport SelectionSettingsModel from \"models/selectionSettings.model\"\nimport { Map, List, fromJS } from \"immutable\"\n\n/*\n * State need to be erased when user leaves the configuration\n *\n * state example:\n * Map({\n * data: List([ ConfigurationHistoryModel ]),\n * hasMoreItems: true/false,\n * selectionSettings: SelectionSettingsModel(),\n * isFulfilled: false\n * })\n */\n\nconst initialState = Map({\n isFulfilled: false,\n data: List(),\n hasMoreItems: false,\n selectionSettings: SelectionSettingsModel()\n})\n\nexport default (state = initialState, { type, payload }) => {\n switch (type) {\n case `${CONFIGURATION.HISTORY.ACTION.LIST}_FULFILLED`: {\n if (payload.selection_settings.offset === 0) {\n // initial load\n return Map({\n isFulfilled: true,\n data: List(\n payload.history_list.map(\n historyItem => new ConfigurationHistoryModel(fromJS(historyItem))\n )\n ),\n hasMoreItems: payload.history_list.length === payload.selection_settings.limit,\n selectionSettings: new SelectionSettingsModel(payload.selection_settings)\n })\n } else {\n // concat\n return state\n .set(\"selectionSettings\", new SelectionSettingsModel(payload.selection_settings))\n .set(\"hasMoreItems\", payload.history_list.length === payload.selection_settings.limit)\n .set(\"isFulfilled\", true)\n .set(\n \"data\",\n state\n .get(\"data\")\n .concat(\n payload.history_list.map(\n historyItem => new ConfigurationHistoryModel(fromJS(historyItem))\n )\n )\n )\n }\n }\n case `${CONFIGURATION.HISTORY.ACTION.RETRIEVE}_FULFILLED`: {\n const historyItemIndex = state\n .get(\"data\")\n .findIndex(historyItem => historyItem.id === payload.history.id)\n if (historyItemIndex !== -1) {\n return state.setIn(\n [\"data\", historyItemIndex],\n new ConfigurationHistoryModel(fromJS(payload.history))\n )\n } else {\n return state.set(\n \"data\",\n state.get(\"data\").push(new ConfigurationHistoryModel(fromJS(payload.history)))\n )\n }\n }\n case `${CONFIGURATION.HISTORY.ACTION.GET_LAST_TWO}_FULFILLED`: {\n return state\n .set(\n \"data\",\n state\n .get(\"data\")\n .splice(\n 0,\n 1,\n new ConfigurationHistoryModel(fromJS(payload.history_list[0])),\n new ConfigurationHistoryModel(fromJS(payload.history_list[1]))\n )\n )\n .setIn([\"selectionSettings\", \"offset\"], state.getIn([\"selectionSettings\", \"offset\"]) + 1)\n }\n case CONFIGURATION.HISTORY.ACTION.CLEAR_CACHE: {\n return initialState\n }\n default:\n return state\n }\n}\n","import { Record } from \"immutable\"\n\nexport default Record({\n file_download_token: \"\",\n file_name: \"\",\n file_rows_count: null,\n file_size: null,\n first_lines: [],\n id: 0,\n last_modified_date: \"\",\n parent_configuration_id: null\n})\n","import { CONFIGURATION } from \"sharedConstants\"\nimport DataPreviewModel from \"models/dataPreview.model\"\nimport SelectionSettingsModel from \"models/selectionSettings.model\"\nimport { Map, OrderedMap } from \"immutable\"\nimport _toString from \"lodash/toString\"\nimport _mapKeys from \"lodash/mapKeys\"\nimport _map from \"lodash/map\"\n\n/**\n * Number of cached in/out data preview files for each visited configuration is limited\n * to {CONFIGURATION.DATA_PREVIEW.LOADING_LIMIT}. It means that when user leaves Data\n * Preview list page (up in page structure), the number of stored files should be decreased\n * to first {CONFIGURATION.DATA_PREVIEW.LOADING_LIMIT}. Also, when the user completely\n * leaves browsing workspace, this reducer should be se to initial state.\n *\n * state example:\n * Map({\n * configurationId: Map({\n * in: Map({\n * selectionSettings: SelectionSettingsModel,\n * hasMoreItems: true/false,\n * data: OrderedMap({ id: DataPreviewModel }),\n * isFetching: false,\n * downloadToken: \"\",\n * filesTotalCount: 0\n * }),\n * out: Map({\n * selectionSettings: SelectionSettingsModel,\n * hasMoreItems: true/false,\n * data: OrderedMap({ id: DataPreviewModel }),\n * isFetching: false,\n * downloadToken: \"\",\n * filesTotalCount: 0\n * })\n * })\n * })\n */\n\nconst initialState = Map()\n\nexport default (state = initialState, { type, payload, meta }) => {\n switch (type) {\n case `${CONFIGURATION.DATA_PREVIEW.IN.ACTION.LIST}_PENDING`: {\n return state\n .filter((_, key) => key === _toString(meta.configurationId))\n .setIn([_toString(meta.configurationId), \"in\", \"isFetching\"], true)\n }\n case `${CONFIGURATION.DATA_PREVIEW.OUT.ACTION.LIST}_PENDING`: {\n return state\n .filter((_, key) => key === _toString(meta.configurationId))\n .setIn([_toString(meta.configurationId), \"out\", \"isFetching\"], true)\n }\n case `${CONFIGURATION.DATA_PREVIEW.IN.ACTION.LIST}_FULFILLED`: {\n if (payload.selection_settings.offset !== 0) {\n return state\n .setIn(\n [_toString(meta.configurationId), \"in\", \"selectionSettings\"],\n new SelectionSettingsModel(payload.selection_settings)\n )\n .setIn(\n [_toString(meta.configurationId), \"in\", \"hasMoreItems\"],\n payload.input_data_preview.length === payload.selection_settings.limit\n )\n .setIn([_toString(meta.configurationId), \"in\", \"isFetching\"], false)\n .setIn(\n [_toString(meta.configurationId), \"in\", \"data\"],\n state.getIn([_toString(meta.configurationId), \"in\", \"data\"]).merge(\n _mapKeys(\n _map(payload.input_data_preview, file => new DataPreviewModel(file)),\n \"id\"\n )\n )\n )\n .setIn([_toString(meta.configurationId), \"in\", \"downloadToken\"], payload.download_token)\n .setIn(\n [_toString(meta.configurationId), \"in\", \"filesTotalCount\"],\n payload.files_total_count\n )\n .setIn(\n [_toString(meta.configurationId), \"in\", \"totalDataVolume\"],\n payload.total_data_volume\n )\n } else {\n return state.setIn(\n [_toString(meta.configurationId), \"in\"],\n Map({\n selectionSettings: new SelectionSettingsModel(payload.selection_settings),\n hasMoreItems: payload.input_data_preview.length === payload.selection_settings.limit,\n data: OrderedMap(\n _mapKeys(\n _map(payload.input_data_preview, file => new DataPreviewModel(file)),\n \"id\"\n )\n ),\n isFetching: false,\n downloadToken: payload.download_token,\n filesTotalCount: payload.files_total_count,\n totalDataVolume: payload.total_data_volume\n })\n )\n }\n }\n case `${CONFIGURATION.DATA_PREVIEW.OUT.ACTION.LIST}_FULFILLED`: {\n if (payload.selection_settings.offset !== 0) {\n return state\n .setIn(\n [_toString(meta.configurationId), \"out\", \"selectionSettings\"],\n new SelectionSettingsModel(payload.selection_settings)\n )\n .setIn(\n [_toString(meta.configurationId), \"out\", \"hasMoreItems\"],\n payload.output_data_preview.length === payload.selection_settings.limit\n )\n .setIn([_toString(meta.configurationId), \"out\", \"isFetching\"], false)\n .setIn(\n [_toString(meta.configurationId), \"out\", \"data\"],\n state.getIn([_toString(meta.configurationId), \"out\", \"data\"]).merge(\n _mapKeys(\n _map(payload.output_data_preview, file => new DataPreviewModel(file)),\n \"id\"\n )\n )\n )\n .setIn([_toString(meta.configurationId), \"out\", \"downloadToken\"], payload.download_token)\n .setIn(\n [_toString(meta.configurationId), \"out\", \"filesTotalCount\"],\n payload.files_total_count\n )\n .setIn(\n [_toString(meta.configurationId), \"out\", \"totalDataVolume\"],\n payload.total_data_volume\n )\n } else {\n return state.setIn(\n [_toString(meta.configurationId), \"out\"],\n Map({\n selectionSettings: new SelectionSettingsModel(payload.selection_settings),\n hasMoreItems: payload.output_data_preview.length === payload.selection_settings.limit,\n data: OrderedMap(\n _mapKeys(\n _map(payload.output_data_preview, file => new DataPreviewModel(file)),\n \"id\"\n )\n ),\n isFetching: false,\n downloadToken: payload.download_token,\n filesTotalCount: payload.files_total_count,\n totalDataVolume: payload.total_data_volume\n })\n )\n }\n }\n default:\n return state\n }\n}\n","import { WORKSPACE } from \"sharedConstants\"\n\nimport { fromJS, List, Map } from \"immutable\"\nimport _map from \"lodash/map\"\nimport { ConfigurationJobFull } from \"models/configurationJob.model\"\nimport SelectionSettingModel from \"models/selectionSettings.model\"\n\nconst initialState = Map()\n\nexport default (state = initialState, { type, payload, meta }) => {\n switch (type) {\n case WORKSPACE.CONFIGURATION.JOB.ACTION.LIST:\n case `${WORKSPACE.CONFIGURATION.JOB.ACTION.LIST}_FULFILLED`:\n return Map({\n [meta.workspaceId]: Map({\n data: List(\n _map(payload.configuration_jobs, confJob => new ConfigurationJobFull(fromJS(confJob)))\n ),\n selectionSettings: new SelectionSettingModel(payload.selection_settings)\n })\n })\n default:\n return state\n }\n}\n","import { SEARCH } from \"sharedConstants\"\nimport { ConfigurationFullStructure as ConfigurationModel } from \"models/configuration.model\"\nimport SelectionSettingModel from \"models/selectionSettings.model\"\nimport { Map, List } from \"immutable\"\n\nconst initialState = Map({\n data: List(),\n selectionSettings: null,\n hasMoreItems: false\n})\n\nexport default (state = initialState, { type, payload }) => {\n switch (type) {\n case `${SEARCH.ACTION.LIST}_FULFILLED`:\n if (payload.selection_settings.offset === 0) {\n return state\n .set(\"data\", List(payload.configurations.map(item => new ConfigurationModel(item))))\n .set(\"selectionSettings\", new SelectionSettingModel(payload.selection_settings))\n .set(\"hasMoreItems\", payload.configurations.length === SEARCH.LOADING_LIMIT)\n } else {\n return state\n .set(\n \"data\",\n state\n .get(\"data\")\n .concat(payload.configurations.map(item => new ConfigurationModel(item)))\n )\n .set(\"selectionSettings\", new SelectionSettingModel(payload.selection_settings))\n .set(\"hasMoreItems\", payload.configurations.length === SEARCH.LOADING_LIMIT)\n }\n case SEARCH.ACTION.CLEAR:\n return initialState\n default:\n return state\n }\n}\n","import { Record } from \"immutable\"\n\nconst DawgJob = Record({\n id: 0,\n user_id: 0,\n dawg_id: 0,\n status: \"\",\n stats: null,\n created: \"\",\n origin_created: \"\"\n})\n\nexport default DawgJob\n","import { DAWG, TAG } from \"sharedConstants\"\nimport { fromJS, List, Map } from \"immutable\"\nimport _map from \"lodash/map\"\nimport _mapKeys from \"lodash/mapKeys\"\nimport DawgModel from \"models/dawg.model\"\nimport UserModel from \"models/user.model\"\nimport DawgJobModel from \"models/dawgJob.model\"\nimport SelectionSettingModel from \"models/selectionSettings.model\"\n\nconst initialState = Map({\n dawgs: null,\n selectionSettings: new SelectionSettingModel(),\n hasMoreItems: false,\n lastJobs: null\n})\n\nconst createDawgModel = dawg =>\n new DawgModel({\n ...dawg,\n user: new UserModel(dawg.user),\n settings: fromJS(dawg.settings),\n frontend_settings: fromJS(dawg.frontend_settings),\n owner: new UserModel(dawg.owner),\n tags: List(dawg.tags),\n example_workspaces: List(dawg.example_workspaces)\n })\n\nexport default (state = initialState, { type, payload }) => {\n switch (type) {\n case `${DAWG.ACTION.LIST}_FULFILLED`:\n if (payload.selection_settings.offset === 0) {\n return state\n .set(\"dawgs\", List(_map(payload.dawgs, dawg => createDawgModel(dawg))))\n .set(\"selectionSettings\", new SelectionSettingModel(payload.selection_settings))\n .set(\"hasMoreItems\", payload.dawgs.length === payload.selection_settings.limit)\n } else {\n return state\n .set(\n \"dawgs\",\n state.get(\"dawgs\").concat(_map(payload.dawgs, dawg => createDawgModel(dawg)))\n )\n .set(\"selectionSettings\", new SelectionSettingModel(payload.selection_settings))\n .set(\"hasMoreItems\", payload.dawgs.length === payload.selection_settings.limit)\n }\n case `${DAWG.ACTION.RETRIEVE}_FULFILLED`:\n /*\n * Two situations may occur:\n * 1) state is null -> direct acces to dawg detail\n * 2) state is List() -> access to dawg detail from dawg list\n */\n if (state.get(\"dawgs\") === null) {\n return state.set(\"dawgs\", List([createDawgModel(payload)]))\n } else {\n const isAlreadyInList = state.get(\"dawgs\").find(dawg => dawg.id === payload.id)\n if (isAlreadyInList) {\n return state.set(\n \"dawgs\",\n state\n .get(\"dawgs\")\n .map(dawg => (dawg.id === payload.id ? createDawgModel(payload) : dawg))\n )\n } else {\n return state.set(\"dawgs\", state.get(\"dawgs\").push(createDawgModel(payload)))\n }\n }\n\n case `${DAWG.ACTION.MODIFY}_FULFILLED`:\n return state.set(\n \"dawgs\",\n state.get(\"dawgs\").map(dawg => (dawg.id === payload.id ? createDawgModel(payload) : dawg))\n )\n\n case `${DAWG.ACTION.DELETE}_FULFILLED`:\n // payload === dawg id\n return state.set(\n \"dawgs\",\n state.get(\"dawgs\").filterNot(dawg => dawg.id === payload)\n )\n\n case `${TAG.ACTION.ASSIGN_TAG_TO_DAWG}_FULFILLED`: {\n const dawgIndex = state.get(\"dawgs\").findIndex(dawg => dawg.id === payload.dawg.id)\n if (dawgIndex !== -1) {\n return state.setIn(\n [\"dawgs\", dawgIndex, \"tags\"],\n state.getIn([\"dawgs\", dawgIndex, \"tags\"]).concat(payload.tag)\n )\n }\n return state\n }\n\n case `${TAG.ACTION.DELETE_TAG_FROM_DAWG}_FULFILLED`: {\n const dawgIndex = state.get(\"dawgs\").findIndex(dawg => dawg.id === payload.dawg_id)\n if (dawgIndex !== -1) {\n return state.setIn(\n [\"dawgs\", dawgIndex, \"tags\"],\n state.getIn([\"dawgs\", dawgIndex, \"tags\"]).filterNot(tag => {\n return tag.id === payload.tag_id\n })\n )\n }\n return state\n }\n\n case DAWG.ACTION.LIST_LAST_JOBS:\n if (state.get(\"lastJobs\") === null) {\n return state.set(\n \"lastJobs\",\n Map(\n _mapKeys(\n _map(payload, lastJob => new DawgJobModel(fromJS(lastJob.last_job))),\n \"dawg_id\"\n )\n )\n )\n } else {\n return state.set(\n \"lastJobs\",\n state.get(\"lastJobs\").merge(\n _mapKeys(\n _map(payload, lastJob => new DawgJobModel(fromJS(lastJob.last_job))),\n \"dawg_id\"\n )\n )\n )\n }\n\n // create action calls dispatches LIST action because we haven't got fetched all the data ->\n // it's not possible to insert newly create item somewhere if there exists some filter or sorting rule\n // case `${DAWG.ACTION.CREATE}_FULFILLED`:\n // case `${DAWG.ACTION.CLONE}_FULFILLED`:\n\n default:\n return state\n }\n}\n","import { DAWG } from \"sharedConstants\"\nimport DawgJobModel from \"models/dawgJob.model\"\nimport SelectionSettingsModel from \"models/selectionSettings.model\"\nimport { Map, List, fromJS } from \"immutable\"\n\n/*\n * State need to be erased when user leaves the dawg -> visits dawg\n * list page.\n *\n * state example:\n * Map({\n * data: List([ DawgJobModel ]),\n * hasMoreItems: true/false,\n * selectionSettings: SelectionSettingsModel(),\n * isFetching: false\n * })\n */\n\nconst initialState = null\n\nexport default (state = initialState, { type, payload }) => {\n const addNewJobToExistingList = () => {\n const stateTemp = state\n .set(\"data\", state.get(\"data\").unshift(new DawgJobModel(fromJS(payload.dawg_job))))\n .set(\"isFetching\", false)\n\n if (state.get(\"hasMoreItems\")) {\n return stateTemp.setIn(\n [\"selectionSettings\", \"offset\"],\n stateTemp.getIn([\"selectionSettings\", \"offset\"]) + 1\n )\n }\n return stateTemp\n }\n\n switch (type) {\n case `${DAWG.JOB.ACTION.LIST}_PENDING`:\n case `${DAWG.JOB.ACTION.RUN}_PENDING`:\n case `${DAWG.JOB.ACTION.RETRIEVE}_PENDING`:\n case `${DAWG.JOB.ACTION.CANCEL}_PENDING`:\n if (Map.isMap(state)) {\n return state.set(\"isFetching\", true)\n } else {\n return Map({ isFetching: true })\n }\n\n case `${DAWG.JOB.ACTION.LIST}_FULFILLED`:\n if (payload.selection_settings.offset === 0) {\n // initial load\n return Map({\n selectionSettings: new SelectionSettingsModel(payload.selection_settings),\n hasMoreItems: payload.dawg_jobs.length === payload.selection_settings.limit,\n data: List(payload.dawg_jobs.map(job => new DawgJobModel(fromJS(job)))),\n isFetching: false\n })\n } else {\n // concat\n return state\n .set(\"selectionSettings\", new SelectionSettingsModel(payload.selection_settings))\n .set(\"hasMoreItems\", payload.dawg_jobs.length === payload.selection_settings.limit)\n .set(\n \"data\",\n state.get(\"data\").concat(payload.dawg_jobs.map(job => new DawgJobModel(fromJS(job))))\n )\n .set(\"isFetching\", false)\n }\n\n case DAWG.JOB.ACTION.REFRESH_LAST:\n if (payload.dawg_job) {\n if (state === null) {\n return Map({\n selectionSettings: new SelectionSettingsModel({\n offset: 0,\n limit: 20\n }),\n hasMoreItems: false,\n data: List([new DawgJobModel(fromJS(payload.dawg_job))])\n })\n } else {\n const lastSavedJob = state.getIn([\"data\", 0])\n if (lastSavedJob) {\n /*\n * Now three situations can occurs:\n * a) jobs are completely same (same -> they have same id & status) => do nothing\n * b) jobs are same, but have different statuses => replace the job\n * c) payload job is completely new => add to redux state on first position\n */\n if (\n payload.dawg_job.id === lastSavedJob.id &&\n payload.dawg_job.status !== lastSavedJob.status\n ) {\n // case b)\n return state.setIn([\"data\", 0], new DawgJobModel(fromJS(payload.dawg_job)))\n }\n if (payload.dawg_job.id !== lastSavedJob.id) {\n // case c)\n return addNewJobToExistingList()\n }\n // case a)\n return state\n } else {\n return state.set(\"data\", List([new DawgJobModel(fromJS(payload.dawg_job))]))\n }\n }\n }\n return state\n\n case `${DAWG.JOB.ACTION.RUN}_FULFILLED`:\n return addNewJobToExistingList()\n\n case DAWG.JOB.ACTION.CLEAR_CACHE:\n return initialState\n\n case `${DAWG.JOB.ACTION.RETRIEVE}_FULFILLED`:\n case DAWG.JOB.ACTION.RETRIEVE:\n if (state === null || !List.isList(state.get(\"data\"))) {\n return Map({\n selectionSettings: new SelectionSettingsModel({\n offset: 0,\n limit: 20\n }),\n hasMoreItems: false,\n data: List([new DawgJobModel(fromJS(payload.dawg_job))]),\n isFetching: false\n })\n } else {\n const jobIndex = state.get(\"data\").findIndex(job => job.id === payload.dawg_job.id)\n if (jobIndex !== -1) {\n return state\n .setIn([\"data\", jobIndex], new DawgJobModel(fromJS(payload.dawg_job)))\n .set(\"isFetching\", false)\n }\n return addNewJobToExistingList()\n }\n\n case `${DAWG.JOB.ACTION.CANCEL}_FULFILLED`:\n const jobIndex = state.get(\"data\").findIndex(job => job.id === payload.dawg_job.id)\n return state\n .setIn([\"data\", jobIndex], new DawgJobModel(fromJS(payload.dawg_job)))\n .set(\"isFetching\", false)\n\n default:\n return state\n }\n}\n","import { Record, Map } from \"immutable\"\n\nconst DawgHistory = Record({\n id: 0,\n dawg: Map(),\n previous_history: Map()\n})\n\nexport default DawgHistory\n","import { DAWG } from \"sharedConstants\"\nimport DawgHistoryModel from \"models/dawgHistory.model\"\nimport SelectionSettingsModel from \"models/selectionSettings.model\"\nimport { Map, List, fromJS } from \"immutable\"\n\n/*\n * State need to be erased when user leaves the dawg -> visits dawgs\n * list page.\n *\n * state example:\n * Map({\n * data: List([ DawgHistoryModel ]),\n * hasMoreItems: true/false,\n * selectionSettings: SelectionSettingsModel(),\n * isFulfilled: false\n * })\n */\n\nconst initialState = Map({\n isFulfilled: false,\n data: List(),\n hasMoreItems: false,\n selectionSettings: SelectionSettingsModel()\n})\n\nexport default (state = initialState, { type, payload }) => {\n switch (type) {\n case `${DAWG.HISTORY.ACTION.LIST}_FULFILLED`: {\n if (payload.selection_settings.offset === 0) {\n // initial load\n return Map({\n isFulfilled: true,\n data: List(\n payload.history_list.map(historyItem => new DawgHistoryModel(fromJS(historyItem)))\n ),\n hasMoreItems: payload.history_list.length === payload.selection_settings.limit,\n selectionSettings: new SelectionSettingsModel(payload.selection_settings)\n })\n } else {\n // concat\n return state\n .set(\"selectionSettings\", new SelectionSettingsModel(payload.selection_settings))\n .set(\"hasMoreItems\", payload.history_list.length === payload.selection_settings.limit)\n .set(\"isFulfilled\", true)\n .set(\n \"data\",\n state\n .get(\"data\")\n .concat(\n payload.history_list.map(historyItem => new DawgHistoryModel(fromJS(historyItem)))\n )\n )\n }\n }\n case `${DAWG.HISTORY.ACTION.RETRIEVE}_FULFILLED`: {\n const historyItemIndex = state\n .get(\"data\")\n .findIndex(historyItem => historyItem.id === payload.history.id)\n if (historyItemIndex !== -1) {\n return state.setIn(\n [\"data\", historyItemIndex],\n new DawgHistoryModel(fromJS(payload.history))\n )\n } else {\n return state.set(\n \"data\",\n state.get(\"data\").push(new DawgHistoryModel(fromJS(payload.history)))\n )\n }\n }\n case `${DAWG.HISTORY.ACTION.GET_LAST_TWO}_FULFILLED`: {\n return state\n .set(\n \"data\",\n state\n .get(\"data\")\n .splice(\n 0,\n 1,\n new DawgHistoryModel(fromJS(payload.history_list[0])),\n new DawgHistoryModel(fromJS(payload.history_list[1]))\n )\n )\n .setIn([\"selectionSettings\", \"offset\"], state.getIn([\"selectionSettings\", \"offset\"]) + 1)\n }\n case DAWG.HISTORY.ACTION.CLEAR_CACHE: {\n return initialState\n }\n default:\n return state\n }\n}\n","import { DAWG } from \"sharedConstants\"\nimport { WorkspaceSimple as WorkspaceModel } from \"models/workspace.model\"\nimport { Map, fromJS } from \"immutable\"\nimport _toString from \"lodash/toString\"\nimport _map from \"lodash/map\"\nimport _mapKeys from \"lodash/mapKeys\"\n\n/*\n * {\n * isFetching: true/false\n * data: {\n * dawgId: {\n * isFulfilled: false,\n * workspaces: {\n * wid: wObject, wid2, wObject2\n * }\n * }\n * }\n * }\n */\n\nconst initialState = Map({\n isFetching: true,\n data: Map()\n})\n\nexport default (state = initialState, { type, payload, meta }) => {\n switch (type) {\n case `${DAWG.WORKSPACE.ACTION.MODIFY}_PENDING`:\n case `${DAWG.WORKSPACE.ACTION.MODIFY_BULK}_PENDING`:\n return state.setIn([\"data\", _toString(meta.dawgId), \"isModifying\"], true)\n\n case `${DAWG.WORKSPACE.ACTION.LIST}_PENDING`:\n return state.set(\"isFetching\", true)\n\n case `${DAWG.WORKSPACE.ACTION.LIST}_FULFILLED`:\n return state.set(\"isFetching\", false).set(\n \"data\",\n Map({\n [payload.dawgId]: Map({\n isFulfilled: true,\n workspaces: Map(\n _mapKeys(\n _map(payload.data, ws => new WorkspaceModel(fromJS(ws))),\n \"id\"\n )\n )\n })\n })\n )\n\n case `${DAWG.WORKSPACE.ACTION.ADD}_FULFILLED`:\n return state.setIn(\n [\"data\", _toString(payload.dawg_id), \"workspaces\", _toString(payload.id)],\n new WorkspaceModel(fromJS(payload))\n )\n\n case `${DAWG.WORKSPACE.ACTION.MODIFY}_FULFILLED`:\n return state\n .setIn(\n [\"data\", _toString(payload.dawg_id), \"workspaces\", _toString(payload.id)],\n new WorkspaceModel(fromJS(payload))\n )\n .setIn([\"data\", _toString(payload.dawg_id), \"isModifying\"], false)\n\n case `${DAWG.WORKSPACE.ACTION.MODIFY}_REJECTED`: {\n return state.setIn([\"data\", _toString(meta.dawgId), \"isModifying\"], false)\n }\n\n case `${DAWG.WORKSPACE.ACTION.MODIFY_BULK}_FULFILLED`:\n const changedWsMap = _mapKeys(\n _map(payload, ws => new WorkspaceModel(fromJS(ws))),\n \"id\"\n )\n return state\n .setIn([\"data\", _toString(meta.dawgId), \"isModifying\"], false)\n .setIn(\n [\"data\", _toString(meta.dawgId), \"workspaces\"],\n state.getIn([\"data\", _toString(meta.dawgId), \"workspaces\"]).merge(changedWsMap)\n )\n\n case `${DAWG.WORKSPACE.ACTION.DELETE}_FULFILLED`:\n return state.deleteIn([\n \"data\",\n _toString(payload.dawgId),\n \"workspaces\",\n _toString(payload.workspaceId)\n ])\n\n default:\n return state\n }\n}\n","import { DAWG } from \"sharedConstants\"\n\nimport { fromJS, List, Map } from \"immutable\"\nimport _map from \"lodash/map\"\nimport { WorkspaceJobFull } from \"models/workspaceJob.model\"\nimport SelectionSettingModel from \"models/selectionSettings.model\"\n\nconst initialState = Map()\n\nexport default (state = initialState, { type, payload, meta }) => {\n switch (type) {\n case DAWG.WORKSPACE.JOB.ACTION.LIST:\n case `${DAWG.WORKSPACE.JOB.ACTION.LIST}_FULFILLED`:\n return Map({\n [meta.dawgId]: Map({\n data: List(_map(payload.workspace_jobs, wsJob => new WorkspaceJobFull(fromJS(wsJob)))),\n selectionSettings: new SelectionSettingModel(payload.selection_settings)\n })\n })\n default:\n return state\n }\n}\n","import { combineReducers } from \"redux\"\nimport { reducer as formReducer } from \"redux-form\"\nimport { loadingBarReducer } from \"react-redux-loading-bar\"\nimport _reduce from \"lodash/reduce\"\nimport _get from \"lodash/get\"\n\nimport { WORKSPACE, TABLE, INVITE_FORM, PERMISSION } from \"../sharedConstants\"\n\nimport authenticatedUser from \"./authenticatedUser.reducer\"\nimport usersAcls from \"./usersAcl.reducer\"\nimport workspaces from \"./workspace.reducer\"\nimport users from \"./user.reducer\"\nimport tags from \"./tag.reducer\"\nimport oauthRepos from \"./oauth.reducer\"\nimport acls from \"./acl.reducer\"\nimport toast from \"./toast.reducer\"\nimport components from \"./component.reducer\"\nimport configurations from \"./configuration.reducer\"\nimport trash from \"./trash.reducer\"\nimport projectConfigurationJobs from \"./projectConfigurationJob.reducer\"\nimport projectWorkspaceJobs from \"./projectWorkspaceJob.reducer\"\nimport configurationJobs from \"./configurationJob.reducer\"\nimport workspaceJobs from \"./workspaceJob.reducer\"\nimport workspaceHistory from \"./workspaceHistory.reducer\"\nimport configurationHistory from \"./configurationHistory.reducer\"\nimport dataPreviews from \"./dataPreview.reducer\"\nimport workspaceConfigurationJobs from \"./workspaceConfigurationJob.reducer\"\nimport fulltextSearch from \"./fulltextSearch.reducer\"\nimport dawgs from \"./dawg.reducer\"\nimport dawgJobs from \"./dawgJob.reducer\"\nimport dawgHistory from \"./dawgHistory.reducer\"\nimport dawgWorkspaces from \"./dawgWorkspace.reducer\"\nimport dawgWorkspaceJobs from \"./dawgWorkspaceJob.reducer\"\nimport workersCount from \"./workersCount.reducer\"\n\nconst rootReducer = combineReducers({\n authenticatedUser,\n usersAcls,\n workspaces,\n users,\n tags,\n oauthRepos,\n acls,\n components,\n configurations,\n trash,\n toast,\n projectConfigurationJobs,\n projectWorkspaceJobs,\n configurationJobs,\n workspaceJobs,\n workspaceHistory,\n configurationHistory,\n dataPreviews,\n workspaceConfigurationJobs,\n fulltextSearch,\n dawgs,\n dawgJobs,\n dawgHistory,\n dawgWorkspaces,\n dawgWorkspaceJobs,\n workersCount,\n form: formReducer.plugin({\n WorkspaceFilter: (state = {}, action) => {\n switch (action.type) {\n case `WorkspaceFilter_${TABLE.ACTION.SET_SORT_OPTIONS}`:\n return {\n ...state,\n values: {\n ...state.values,\n orderBy: action.payload.column,\n orderDir: action.payload.order\n }\n }\n case `WorkspaceFilter_${TABLE.ACTION.SET_SELECTED_TAGS}`:\n return {\n ...state,\n values: {\n ...state.values,\n selectedTags: action.payload.selectedTags\n }\n }\n case `WorkspaceFilter_${TABLE.ACTION.SET_SORTING_AND_TAGS}`:\n return {\n ...state,\n values: {\n ...state.values,\n orderBy: action.payload.column,\n orderDir: action.payload.order,\n selectedTags: action.payload.selectedTags\n }\n }\n case `WorkspaceFilter_${TABLE.ACTION.SET_FILTER_BY}`: {\n return {\n ...state,\n values: {\n ...state.values,\n filterBy: action.payload.attribute\n }\n }\n }\n default:\n return state\n }\n },\n DawgFilter: (state = {}, action) => {\n switch (action.type) {\n case `DawgFilter_${TABLE.ACTION.SET_SORT_OPTIONS}`:\n return {\n ...state,\n values: {\n ...state.values,\n orderBy: action.payload.column,\n orderDir: action.payload.order\n }\n }\n case `DawgFilter_${TABLE.ACTION.SET_SELECTED_TAGS}`:\n return {\n ...state,\n values: {\n ...state.values,\n selectedTags: action.payload.selectedTags\n }\n }\n case `DawgFilter_${TABLE.ACTION.SET_SORTING_AND_TAGS}`:\n return {\n ...state,\n values: {\n ...state.values,\n orderBy: action.payload.column,\n orderDir: action.payload.order,\n selectedTags: action.payload.selectedTags\n }\n }\n case `DawgFilter_${TABLE.ACTION.SET_FILTER_BY}`: {\n return {\n ...state,\n values: {\n ...state.values,\n filterBy: action.payload.attribute\n }\n }\n }\n default:\n return state\n }\n },\n UsersSearch: (state = { search: \"\", orderBy: \"name\", orderDir: \"ASC\" }, action) => {\n switch (action.type) {\n case `UsersSearch_${TABLE.ACTION.SET_SORT_OPTIONS}`:\n return {\n ...state,\n values: {\n ...state.values,\n orderBy: action.payload.column,\n orderDir: action.payload.order\n }\n }\n default:\n return state\n }\n },\n // reset sorting/filtering when creating new workspace\n SearchForm: (state, action) => {\n switch (action.type) {\n case `${WORKSPACE.ACTION.CREATE}_FULFILLED`:\n // return default state\n return {\n ...state,\n values: {\n search: \"\"\n }\n }\n default:\n return state\n }\n },\n CreateUserForm: (state, action) => {\n switch (action.type) {\n case `CreateUserForm_${INVITE_FORM.ACTION.SET_ACTIVE_USER}`: {\n return {\n ...state,\n values: {\n ...state.values,\n \"active-user\": action.payload.index\n }\n }\n }\n case `CreateUserForm_${INVITE_FORM.ACTION.SET_DEFAULT_READ_PERMISSIONS}`: {\n return {\n ...state,\n values: {\n ...state.values,\n \"invite-users\": state.values[\"invite-users\"].map(inviteUser => {\n return {\n ...inviteUser,\n \"workspace-permission\": {\n ...action.payload.workspaceIds.reduce((acc, cur) => {\n acc[`id-${cur}`] = PERMISSION.READ\n return acc\n }, {}),\n ...inviteUser[\"workspace-permission\"]\n }\n }\n })\n }\n }\n }\n case `CreateUserForm_${INVITE_FORM.ACTION.TOGGLE_ALL_USER_PERMISSIONS}`: {\n return {\n ...state,\n values: {\n ...state.values,\n \"invite-users\": state.values[\"invite-users\"].map((inviteUser, index) => {\n if (index === action.payload.index) {\n return {\n ...inviteUser,\n \"workspace-permission\": _reduce(\n inviteUser[\"workspace-permission\"],\n (res, val, key) => {\n res[key] = _get(inviteUser, `workspace-selected.${key}`, false)\n ? action.payload.value\n : val\n return res\n },\n {}\n )\n }\n }\n return inviteUser\n })\n }\n }\n }\n\n case `CreateUserForm_${INVITE_FORM.ACTION.MARK_ALL_WORKSPACES}`: {\n return {\n ...state,\n values: {\n ...state.values,\n \"invite-users\": state.values[\"invite-users\"].map((inviteUser, index) => {\n if (index === action.payload.index) {\n return {\n ...inviteUser,\n \"workspace-selected\": _reduce(\n inviteUser[\"workspace-permission\"],\n (res, val, key) => {\n res[key] = action.payload.value\n return res\n },\n {}\n )\n }\n }\n return inviteUser\n })\n }\n }\n }\n case `CreateUserForm_${INVITE_FORM.ACTION.TOGGLE_ALL_SWITCH}`: {\n return {\n ...state,\n values: {\n ...state.values,\n \"invite-users\": state.values[\"invite-users\"].map((inviteUser, index) => {\n if (index === action.payload.index) {\n return {\n ...inviteUser,\n \"toggle-all\": action.payload.value\n }\n }\n return inviteUser\n })\n }\n }\n }\n case `CreateUserForm_${INVITE_FORM.ACTION.SET_PERMISSIONS_MARK_ALL}`: {\n return {\n ...state,\n values: {\n ...state.values,\n \"invite-users\": state.values[\"invite-users\"].map((inviteUser, index) => {\n if (index === action.payload.index) {\n // add default permissions if necessary and mark all workspaces\n return {\n ...inviteUser,\n \"workspace-permission\": {\n ...action.payload.workspaceIds.reduce((acc, cur) => {\n acc[`id-${cur}`] = PERMISSION.READ\n return acc\n }, {}),\n ...inviteUser[\"workspace-permission\"]\n },\n \"workspace-selected\": {\n ...action.payload.workspaceIds.reduce((acc, cur) => {\n acc[`id-${cur}`] = action.payload.value\n return acc\n }, {})\n }\n }\n } else {\n // add default permissions otherwise, nothing to mark\n return {\n ...inviteUser,\n \"workspace-permission\": {\n ...action.payload.workspaceIds.reduce((acc, cur) => {\n acc[`id-${cur}`] = PERMISSION.READ\n return acc\n }, {}),\n ...inviteUser[\"workspace-permission\"]\n }\n }\n }\n })\n }\n }\n }\n default:\n return state\n }\n }\n }),\n loadingBar: loadingBarReducer\n})\n\nexport default rootReducer\n","import { ACL } from \"sharedConstants\"\nimport { Map } from \"immutable\"\nimport _map from \"lodash/map\"\nimport _mapKeys from \"lodash/mapKeys\"\nimport Acl, { DawgAclModel } from \"models/acl.model\"\n\n/*\n * workspaces : { workspaceId: acl },\n * dawgs: { dawgId: acl }\n */\n\nexport default (state = Map({ workspaces: Map(), dawgs: Map() }), { type, payload }) => {\n switch (type) {\n case `${ACL.USER.ACTION.LIST}_FULFILLED`:\n return state.set(\n \"workspaces\",\n Map(\n _mapKeys(\n _map(payload, acl => new Acl(acl)),\n \"workspace_id\"\n )\n )\n )\n case `${ACL.USER.DAWG.ACTION.LIST}_FULFILLED`:\n return state.set(\n \"dawgs\",\n Map(\n _mapKeys(\n _map(payload, acl => new DawgAclModel(acl)),\n \"dawg_id\"\n )\n )\n )\n default:\n return state\n }\n}\n","import { OAUTH } from \"sharedConstants\"\nimport { List } from \"immutable\"\nimport _map from \"lodash/map\"\nimport OAuthModel from \"models/oauth.model\"\n\n/*\n * List of Oauths - List([oauthRecord, oauthRecord])\n */\nexport default function oauthRepositoriesUpdate(state = null, { type, payload }) {\n switch (type) {\n case `${OAUTH.ACTION.LIST}_FULFILLED`:\n return List(_map(payload, oauth => new OAuthModel(oauth)))\n\n case `${OAUTH.ACTION.MODIFY}_FULFILLED`:\n return state.map(oauth => (oauth.id === payload.id ? new OAuthModel(payload) : oauth))\n\n default:\n return state\n }\n}\n","import { COMPONENT } from \"sharedConstants\"\nimport ComponentModel from \"models/component.model\"\nimport _map from \"lodash/map\"\nimport _mapKeys from \"lodash/mapKeys\"\nimport { Map } from \"immutable\"\n\n/*\n * null if not fetched yet, otherwise\n * Map({\n * 'id': { component record }\n * })\n */\n\nexport default (state = null, { type, payload }) => {\n switch (type) {\n case `${COMPONENT.ACTION.LIST}_FULFILLED`:\n return Map(\n _mapKeys(\n _map(payload, component => new ComponentModel(component)),\n \"id\"\n )\n )\n default:\n return state\n }\n}\n","import { SYSTEM } from \"sharedConstants\"\nimport { Map } from \"immutable\"\n\nexport default (state = Map({ count: undefined }), { type, payload }) => {\n switch (type) {\n case `${SYSTEM.ACTION.GET_WORKERS_COUNT}_FULFILLED`:\n return state.set(\"count\", payload)\n default:\n return state\n }\n}\n","import { createStore, applyMiddleware, compose } from \"redux\"\nimport thunk from \"redux-thunk\"\nimport promiseMiddleware from \"redux-promise-middleware\"\nimport { persistStore, persistReducer } from \"redux-persist\"\nimport storage from \"redux-persist/lib/storage\"\nimport { loadingBarMiddleware } from \"react-redux-loading-bar\"\nimport { createWhitelistFilter } from \"redux-persist-transform-filter\"\n\nimport rootReducer from \"reducers\"\n\nconst persistConfig = {\n key: \"root\",\n storage,\n transforms: [\n createWhitelistFilter(\"authenticatedUser\", [\"data\", \"token\", \"loginTimestamp\", \"ui\"])\n ],\n whitelist: [\"authenticatedUser\"]\n}\n\nconst persistedReducer = persistReducer(persistConfig, rootReducer)\n\nconst store = createStore(\n persistedReducer,\n undefined,\n compose(\n applyMiddleware(promiseMiddleware(), thunk, loadingBarMiddleware())\n //window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()\n )\n)\n\nexport const persistor = persistStore(store)\n\nexport default store\n","import store from \"store\"\nimport { PERMISSION } from \"sharedConstants\"\nimport _get from \"lodash/get\"\n\nconst { getState } = store\n\nexport const isFetching = () => getState().authenticatedUser.isFetching\n\nexport const token = () => getState().authenticatedUser.token\n\nexport const isLoggedIn = () => token() !== \"\"\n\nexport const isAdmin = () => {\n const userRole = _get(getState().authenticatedUser, \"data.role\", \"\")\n return userRole === \"admin\"\n}\n\nexport const hasWritePermission = acl => {\n const loggedUser = getState().authenticatedUser.data\n return loggedUser.role === \"admin\" || (acl ? acl.permission === PERMISSION.WRITE : false)\n}\n\nexport const canCreateWorkspaces = () => {\n const loggedUser = getState().authenticatedUser.data\n return loggedUser.role === \"admin\" || loggedUser.can_create_workspaces === 1\n}\n\nexport const canCreateDawgs = () => {\n const loggedUser = getState().authenticatedUser.data\n return loggedUser.role === \"admin\" || loggedUser.can_create_dawgs === 1\n}\n","import { connectedRouterRedirect } from \"redux-auth-wrapper/history4/redirect\"\nimport locationHelperBuilder from \"redux-auth-wrapper/history4/locationHelper\"\nimport connectedAuthWrapper from \"redux-auth-wrapper/connectedAuthWrapper\"\nimport { getRoutePath } from \"routes\"\nimport * as authenticatedUser from \"helpers/authenticatedUser.helper\"\n\nconst locationHelper = locationHelperBuilder({})\n\nconst userIsAuthenticatedDefaults = {\n authenticatedSelector: state => authenticatedUser.isLoggedIn(),\n authenticatingSelector: state => authenticatedUser.isFetching(),\n wrapperDisplayName: \"UserIsAuthenticated\"\n}\n\nexport const userIsAuthenticated = connectedAuthWrapper(userIsAuthenticatedDefaults)\n\nexport const userIsAuthenticatedRedir = connectedRouterRedirect({\n ...userIsAuthenticatedDefaults,\n redirectPath: getRoutePath(\"login\")\n})\n\nconst userIsNotAuthenticatedDefaults = {\n // Want to redirect the user when they are done loading and authenticated\n authenticatedSelector: state =>\n state.authenticatedUser.token === \"\" && state.authenticatedUser.isFetching !== true,\n wrapperDisplayName: \"UserIsNotAuthenticated\"\n}\n\nexport const userIsNotAuthenticated = connectedAuthWrapper(userIsNotAuthenticatedDefaults)\n\nexport const userIsNotAuthenticatedRedir = connectedRouterRedirect({\n ...userIsNotAuthenticatedDefaults,\n redirectPath: (state, ownProps) =>\n locationHelper.getRedirectQueryParam(ownProps) || getRoutePath(\"workspace.list\"),\n allowRedirectBack: false\n})\n","import { TOAST } from \"sharedConstants\"\n\nexport const showToast = (message, type = TOAST.TYPE.SUCCESS, route = \"\") => dispatch => {\n dispatch({\n type: TOAST.ACTION.SHOW,\n payload: { message, type, route }\n })\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nclass TextField extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n passwordFieldContentVisible: false\n }\n }\n\n toggleFieldType = () => {\n this.setState(prevState => ({\n passwordFieldContentVisible: !prevState.passwordFieldContentVisible\n }))\n }\n\n render() {\n const {\n input,\n label,\n meta: { touched, error },\n type,\n fullWidth,\n className,\n placeholder = \"\",\n autoFocus = false,\n multiline = false,\n rows = \"3\",\n setFieldToBeFocused = () => {},\n ...fieldAttrs\n } = this.props\n const { passwordFieldContentVisible } = this.state\n const errorMessage = touched ? error : \"\"\n let inputType = type ? type : \"text\"\n if (inputType === \"password\" && passwordFieldContentVisible) {\n inputType = \"text\"\n }\n return (\n \n {label && }\n {multiline && (\n setFieldToBeFocused(input)}\n data-testid=\"textarea-field\"\n />\n )}\n {!multiline && type === \"password\" && (\n
\n setFieldToBeFocused(input)}\n data-testid=\"password-field\"\n {...fieldAttrs}\n />\n \n {passwordFieldContentVisible && (\n \n )}\n {!passwordFieldContentVisible && (\n \n )}\n \n
\n )}\n {!multiline && type !== \"password\" && (\n setFieldToBeFocused(input)}\n data-testid=\"input-field\"\n {...fieldAttrs}\n />\n )}\n {errorMessage &&

{errorMessage}

}\n \n )\n }\n}\n\nTextField.propTypes = {\n input: PropTypes.object.isRequired,\n label: PropTypes.string,\n meta: PropTypes.object.isRequired,\n type: PropTypes.string,\n fullWidth: PropTypes.bool,\n placeholder: PropTypes.string,\n autoFocus: PropTypes.bool,\n multiline: PropTypes.bool,\n rows: PropTypes.string,\n className: PropTypes.string\n}\n\nexport default TextField\n","import React from \"react\"\nimport ReactTooltip from \"react-tooltip\"\n\nexport const renderTooltip = (tooltipId, currentlyEditing) => {\n if (!currentlyEditing) {\n return null\n }\n return (\n \n {`You need to save/cancel changes of ${currentlyEditing} first.`}\n \n )\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport \"./Button.css\"\n\nimport { renderTooltip } from \"helpers/disabledTooltip.helper\"\n\nconst Button = React.forwardRef(\n (\n {\n children,\n color,\n fullWidth,\n size,\n className,\n disabled,\n type = \"button\",\n href = \"\",\n tooltipId = \"button-tooltip\",\n currentlyEditing = \"\",\n ...buttonAttrs\n },\n ref\n ) => {\n if (href) {\n return (\n \n 0}\n data-for={currentlyEditing.length > 0 ? tooltipId : false}\n >\n 0}\n className={`button ${className ? className : \"\"} ${color ? color : \"\"} ${size} ${\n fullWidth ? \"full-width\" : \"shrinked\"\n }`}\n href={href}\n >\n {children}\n \n \n {renderTooltip(tooltipId, currentlyEditing)}\n \n )\n } else {\n return (\n \n 0}\n data-for={currentlyEditing.length > 0 ? tooltipId : false}\n >\n 0}\n className={`button ${className ? className : \"\"} ${color ? color : \"\"} ${size} ${\n fullWidth ? \"full-width\" : \"shrinked\"\n }`}\n type={type}\n ref={ref}\n >\n {children}\n \n \n {renderTooltip(tooltipId, currentlyEditing)}\n \n )\n }\n }\n)\n\nButton.propTypes = {\n children: PropTypes.node.isRequired,\n color: PropTypes.string,\n size: PropTypes.string.isRequired,\n fullWidth: PropTypes.bool,\n className: PropTypes.string,\n href: PropTypes.string,\n currentlyEditing: PropTypes.string,\n tooltipId: PropTypes.string\n}\n\nexport default Button\n","import _isPlainObject from \"lodash/isPlainObject\"\nimport _isEmpty from \"lodash/isEmpty\"\nimport _isString from \"lodash/isString\"\nimport _trim from \"lodash/trim\"\nimport deepForEach from \"deep-for-each\"\nimport { Map } from \"immutable\"\nimport _get from \"lodash/get\"\nimport _isArray from \"lodash/isArray\"\nimport zxcvbn from \"zxcvbn\"\n\nexport const isEmailValid = email => {\n return !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i.test(_trim(email)) ? false : true\n}\n\n// validation mesages\nexport const email = value => (value && !isEmailValid(value) ? \"Invalid email address\" : undefined)\nexport const required = value => (value ? undefined : \"Please fill in the field\")\nexport const minLength6 = value => (value.length < 6 ? \"At least 6 characters required\" : undefined)\nexport const minLength12 = value =>\n value.length < 12 ? \"At least 12 characters required\" : undefined\nexport const requiredJSON = value =>\n value.length > 1 ? undefined : \"Enter the valid JSON, at least brackets '{}'\"\nexport const isValidJSON = value =>\n value && !isJSONString(value) ? \"Entered string is not valid JSON\" : undefined\nexport const optionRequired = value => (!_isEmpty(value) ? undefined : \"Please select one option\")\n\n// JSON validators\nexport const isJSONString = str => {\n try {\n JSON.parse(str)\n } catch (e) {\n return false\n }\n return true\n}\n\nexport const isJSONObject = str => {\n try {\n const obj = JSON.parse(str)\n if (_isPlainObject(obj)) {\n return true\n }\n } catch (e) {\n return false\n }\n return false\n}\n\nexport const getUndefinedWorkspaceVariables = (settings, variables) => {\n const undefinedVariables = []\n const variablesKeys = []\n if (Map.isMap(variables)) {\n variables.forEach((value, key) => {\n variablesKeys.push(`{{${_trim(key)}}}`)\n })\n }\n if (settings) {\n deepForEach(settings, value => {\n if (_isString(value)) {\n const trimmed = _trim(value)\n if (/.*\\{\\{.+\\}\\}.*/.test(_trim(trimmed))) {\n console.log(trimmed)\n if (!variablesKeys.some(key => trimmed.includes(key))) {\n undefinedVariables.push(trimmed)\n }\n }\n }\n })\n }\n return undefinedVariables\n}\n\nexport const passwordStrength = value => {\n const strResults = zxcvbn(value)\n if (strResults.score >= 3) {\n return undefined\n } else {\n if (_isArray(_get(strResults, \"feedback.suggestions\"))) {\n return strResults.feedback.suggestions[strResults.feedback.suggestions.length - 1]\n }\n return \"Password is weak.\"\n }\n}\n","export default class PendingPromise {\n pendingPromises = []\n\n create(promise) {\n let hasCanceled_ = false\n\n const wrappedPromise = promise.then(\n result => {\n if (hasCanceled_) {\n const errorObject = { isCanceled: true }\n throw errorObject\n } else {\n return result\n }\n },\n error => {\n if (hasCanceled_) {\n const errorObject = { isCanceled: true }\n throw errorObject\n } else {\n throw error\n }\n }\n )\n\n const cancelablePromise = {\n promise: wrappedPromise,\n cancel() {\n hasCanceled_ = true\n }\n }\n\n this._appendPendingPromise(cancelablePromise)\n\n return cancelablePromise\n }\n\n _appendPendingPromise(promise) {\n this.pendingPromises = [...this.pendingPromises, promise]\n }\n\n remove(promise) {\n this.pendingPromises = this.pendingPromises.filter(p => p !== promise)\n }\n\n cancelAll() {\n this.pendingPromises.forEach(p => p.cancel())\n }\n}\n","import axios from \"axios\"\nimport _get from \"lodash/get\"\nimport _isEqual from \"lodash/isEqual\"\nimport _isEmpty from \"lodash/isEmpty\"\n\nimport store from \"store\"\nimport { token } from \"helpers/authenticatedUser.helper\"\nimport { logout } from \"actions/authenticatedUser.action\"\nimport { showToast } from \"actions/toast.action\"\nimport { TOAST } from \"sharedConstants\"\nimport { history } from \"components/App\"\nimport { getRoutePath } from \"routes\"\n\nexport const BASE_API_URL = `${window.location.origin}/api`\n\nconst DISCONNECTED_MESSAGE =\n \"There was a connection error. Either you are offline, or the request you are trying to perform is too large.\"\nconst SOMETHING_WENT_WRONG_MESSAGE =\n \"There was an error. Please, let us know about it at help@meiro.io\"\n\nconst ERR_404_PREVENT_REDIRECT = [\"missing_file\"]\n\naxios.defaults.baseURL = BASE_API_URL\naxios.defaults.withCredentials = true\naxios.defaults.headers.common = {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n}\n\nconst responseSuccessHandler = response => response.data || {}\n\nconst responseErrorHandler = (preventNotFoundRedirect = false) => error => {\n const response = _get(error, \"response\")\n if (response === undefined) {\n // network problem\n const previousMessage = _get(store.getState().toast, \"message\")\n if (previousMessage === DISCONNECTED_MESSAGE) {\n const previousTimestamp = _get(store.getState().toast, \"timestamp\")\n if (Date.now() - previousTimestamp > 6000) {\n store.dispatch(showToast(DISCONNECTED_MESSAGE, TOAST.TYPE.ERROR))\n }\n } else {\n store.dispatch(showToast(DISCONNECTED_MESSAGE, TOAST.TYPE.ERROR))\n }\n }\n const status = _get(error, \"response.status\")\n const errorType = _get(error, \"response.data.error_type\")\n if (status === 403) {\n if (_get(history, \"location.pathname\") !== \"/not-authorized\") {\n history.push(getRoutePath(\"not-authorized\"))\n }\n } else if (\n status === 404 &&\n !preventNotFoundRedirect &&\n !ERR_404_PREVENT_REDIRECT.includes(errorType)\n ) {\n if (_get(history, \"location.pathname\") !== \"/not-found\") {\n history.push(getRoutePath(\"not-found\"))\n }\n } else {\n let message = _get(error, \"response.data.message\", \"\")\n if (message === \"Invalid token\") {\n message = \"\"\n }\n if (message === \"Internal Server Error\") {\n message = SOMETHING_WENT_WRONG_MESSAGE\n }\n if (message) {\n const previousMessage = _get(store.getState().toast, \"message\")\n if (previousMessage === SOMETHING_WENT_WRONG_MESSAGE) {\n const previousTimestamp = _get(store.getState().toast, \"timestamp\")\n if (Date.now() - previousTimestamp > 6000) {\n store.dispatch(showToast(message, TOAST.TYPE.ERROR))\n }\n } else {\n store.dispatch(showToast(message, TOAST.TYPE.ERROR))\n }\n }\n if (status === 401) {\n store.dispatch(logout())\n }\n }\n\n throw error\n}\n\nconst requestFactory = (\n method,\n url,\n body = {},\n originData = {},\n preventNotFoundRedirect = false,\n useToken = true,\n ownToken = \"\"\n) => {\n const config = {\n headers: {}\n }\n\n if (useToken) {\n config.headers[\"x-access-token\"] = ownToken || token()\n }\n\n config.method = method.toString().toLowerCase()\n if (Object.keys(body).length > 0) {\n if (config.method === \"get\") {\n config.params = body\n }\n }\n if (config.method === \"post\") {\n config.data = body\n } else if (config.method === \"patch\") {\n if ((!_isEmpty(body) || !_isEmpty(originData)) && _isEqual(body, originData)) {\n const errMessage = \"Nothing has been changed.\"\n store.dispatch(showToast(errMessage, TOAST.TYPE.ERROR))\n throw Object.assign(new Error(errMessage), { type: \"nothing_changed\" })\n } else {\n config.data = body\n }\n }\n\n return axios(url, config)\n .then(responseSuccessHandler)\n .catch(responseErrorHandler(preventNotFoundRedirect))\n}\n\nexport function api() {\n return {\n user: {\n login(data) {\n return requestFactory(\"post\", \"/login\", data, {}, true, false)\n },\n logout() {\n return requestFactory(\"delete\", \"/login\")\n },\n oktaLogin(data) {\n return requestFactory(\"post\", \"/okta_login\", data, {}, true, false)\n },\n refreshToken() {\n return requestFactory(\"patch\", \"/login\", {\n token: token()\n })\n },\n me(token = \"\") {\n let args = [\"get\", \"/me\", {}, {}, false, true]\n if (token) {\n args = [...args, token]\n }\n return requestFactory(...args)\n },\n resetPassword(data) {\n return requestFactory(\"post\", \"/users/password_reset\", data, {}, true)\n },\n setPassword(data) {\n return requestFactory(\"patch\", \"/users/password_reset\", data)\n },\n sendInvitation(data) {\n return requestFactory(\"post\", \"/users/invitation\", data)\n },\n resendInvitation(email) {\n return requestFactory(\"patch\", \"/users/invitation\", { email })\n },\n getInvitationLink(userId) {\n return requestFactory(\"get\", `/users/${userId}/invitation_link`)\n },\n retrieve(user_id) {\n return requestFactory(\"get\", `/users/${user_id}`)\n },\n list(offset = 0, limit = 50, load_full_structure = 0) {\n return requestFactory(\"get\", \"/users\", {\n limit,\n offset,\n load_full_structure\n })\n },\n create(data) {\n return requestFactory(\"post\", \"/users\", data)\n },\n modify(id, data, originData = {}) {\n return requestFactory(\"patch\", `/users/${id}`, data, originData)\n },\n delete(id) {\n return requestFactory(\"delete\", `/users/${id}`)\n },\n restore(id) {\n return requestFactory(\"patch\", `/users/trash/${id}`)\n },\n trash: {\n list(offset = 0, limit = 50, load_full_structure = 0) {\n return requestFactory(\"get\", \"/users/trash\", {\n offset,\n limit,\n load_full_structure\n })\n }\n },\n aclReport() {\n return requestFactory(\"get\", \"/users/acl-report\")\n }\n },\n acl: {\n list(\n workspace_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\"\n ) {\n return requestFactory(\"get\", `/acl/workspaces/${workspace_id}`, {\n offset,\n limit,\n load_full_structure,\n order_by,\n order_dir\n })\n },\n create(workspace_id, data, load_full_structure = 0) {\n return requestFactory(\n \"post\",\n `/acl/workspaces/${workspace_id}?load_full_structure=${load_full_structure}`,\n data\n )\n },\n retrieve(workspace_id, user_id, load_full_structure = 0) {\n return requestFactory(\"get\", `/acl/workspaces/${workspace_id}/users/${user_id}`, {\n load_full_structure\n })\n },\n modify(workspace_id, user_id, data, load_full_structure = 0) {\n return requestFactory(\n \"patch\",\n `/acl/workspaces/${workspace_id}/users/${user_id}?load_full_structure=${load_full_structure}`,\n data\n )\n },\n delete(workspace_id, user_id) {\n return requestFactory(\"delete\", `/acl/workspaces/${workspace_id}/users/${user_id}`)\n },\n dawg: {\n list(\n dawg_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\"\n ) {\n return requestFactory(\"get\", `/acl/dawgs/${dawg_id}`, {\n offset,\n limit,\n load_full_structure,\n order_by,\n order_dir\n })\n },\n create(dawg_id, data, load_full_structure = 0) {\n return requestFactory(\n \"post\",\n `/acl/dawgs/${dawg_id}?load_full_structure=${load_full_structure}`,\n data\n )\n },\n retrieve(dawg_id, user_id, load_full_structure = 0) {\n return requestFactory(\"get\", `/acl/dawgs/${dawg_id}/users/${user_id}`, {\n load_full_structure\n })\n },\n modify(dawg_id, user_id, data, load_full_structure = 0) {\n return requestFactory(\n \"patch\",\n `/acl/dawgs/${dawg_id}/users/${user_id}?load_full_structure=${load_full_structure}`,\n data\n )\n },\n delete(dawg_id, user_id) {\n return requestFactory(\"delete\", `/acl/dawgs/${dawg_id}/users/${user_id}`)\n }\n },\n user: {\n retrieve(user_id, offset = 0, limit = 50, load_full_structure = 0, include_deleted = 0) {\n return requestFactory(\"get\", `/acl/users/${user_id}`, {\n offset,\n limit,\n load_full_structure,\n include_deleted\n })\n },\n dawg: {\n retrieve(user_id, offset = 0, limit = 50, load_full_structure = 0, include_deleted = 0) {\n return requestFactory(\"get\", `/acl/dawgs/users/${user_id}`, {\n offset,\n limit,\n load_full_structure,\n include_deleted\n })\n }\n }\n }\n },\n workspace: {\n retrieve(workspace_id, load_full_structure = 1) {\n return requestFactory(\"get\", `/workspaces/${workspace_id}`, {\n load_full_structure\n })\n },\n list(\n offset = 0,\n limit = 50,\n load_full_structure = 1,\n order_by = \"id\",\n order_dir = \"ASC\",\n name_filter = \"\",\n tag_ids = [],\n show_enabled = 1,\n show_disabled = 1\n ) {\n return requestFactory(\"get\", \"/workspaces\", {\n limit,\n offset,\n load_full_structure,\n order_by,\n order_dir,\n name_filter,\n tag_ids,\n show_enabled,\n show_disabled\n })\n },\n create(data, load_full_structure = 1) {\n return requestFactory(\n \"post\",\n `/workspaces?load_full_structure=${load_full_structure}`,\n data\n )\n },\n modifyWorkspace(id, data, originData = {}, load_full_structure = 1) {\n // I don't wanna create several files of Redux boilerplate for this, sorry\n if (\"owner_id\" in data) {\n return requestFactory(\n \"patch\",\n `/workspaces/${id}/owner?load_full_structure=${load_full_structure}`,\n { user_id: data.owner_id }\n )\n }\n\n return requestFactory(\n \"patch\",\n `/workspaces/${id}?load_full_structure=${load_full_structure}`,\n data,\n originData\n )\n },\n delete(id) {\n return requestFactory(\"delete\", `/workspaces/${id}`)\n },\n clone(workspace_id, load_full_structure = 1) {\n return requestFactory(\n \"post\",\n `/workspaces/${workspace_id}?load_full_structure=${load_full_structure}`\n )\n },\n restore(id, load_full_structure = 1) {\n return requestFactory(\n \"patch\",\n `/workspaces/trash/${id}?load_full_structure=${load_full_structure}`\n )\n },\n listLastJobs(workspace_ids = [], load_full_structure = 0) {\n return requestFactory(\"get\", \"/workspaces/last_jobs\", {\n workspace_ids,\n load_full_structure\n })\n },\n configuration: {\n listLastJobs(workspace_id, configuration_ids = [], load_full_structure = 0) {\n return requestFactory(\"get\", `/workspaces/${workspace_id}/configurations/last_jobs`, {\n configuration_ids,\n load_full_structure,\n include_settings: 0\n })\n }\n },\n job: {\n run(workspace_id, load_full_structure = 0) {\n return requestFactory(\n \"post\",\n `/workspaces/${workspace_id}/jobs?load_full_structure=${load_full_structure}`\n )\n },\n list(\n workspace_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\"\n ) {\n return requestFactory(\"get\", `/workspaces/${workspace_id}/jobs`, {\n offset,\n limit,\n load_full_structure,\n order_by,\n order_dir\n })\n },\n retrieve(workspace_id, job_id, load_full_structure = 0) {\n return requestFactory(\"get\", `/workspaces/${workspace_id}/jobs/${job_id}`, {\n load_full_structure\n })\n },\n cancel(workspace_id, job_id, load_full_structure) {\n return requestFactory(\n \"delete\",\n `/workspaces/${workspace_id}/jobs/${job_id}?load_full_structure=${load_full_structure}`\n )\n },\n history: {\n list(\n workspace_id,\n job_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\"\n ) {\n return requestFactory(\"get\", `/workspaces/${workspace_id}/jobs/${job_id}/history`, {\n offset,\n limit,\n load_full_structure,\n order_by,\n order_dir\n })\n },\n retrieve(workspace_id, job_id, history_id, load_full_structure) {\n return requestFactory(\n \"get\",\n `/workspaces/${workspace_id}/jobs/${job_id}/history/${history_id}`,\n {\n load_full_structure\n }\n )\n }\n },\n configurationJob: {\n list(\n workspace_id,\n job_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\",\n include_deleted_configuration_jobs = 0\n ) {\n return requestFactory(\n \"get\",\n `/workspaces/${workspace_id}/jobs/${job_id}/configuration_jobs`,\n {\n offset,\n limit,\n load_full_structure,\n order_dir,\n order_by,\n include_deleted_configuration_jobs,\n include_settings: 0\n }\n )\n }\n },\n log: {\n list(\n workspace_id,\n job_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\"\n ) {\n return requestFactory(\"get\", `/workspaces/${workspace_id}/jobs/${job_id}/logs`, {\n offset,\n limit,\n load_full_structure,\n order_dir,\n order_by\n })\n }\n }\n },\n history: {\n list(\n workspace_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\"\n ) {\n return requestFactory(\"get\", `/workspaces/${workspace_id}/history`, {\n offset,\n limit,\n load_full_structure,\n order_by,\n order_dir\n })\n },\n retrieve(workspace_id, history_id, load_full_structure = 0) {\n return requestFactory(\n \"get\",\n `/workspaces/${workspace_id}/history/${history_id}?load_full_structure=${load_full_structure}`\n )\n },\n revertTo(workspace_id, history_id, load_full_structure = 0) {\n return requestFactory(\n \"patch\",\n `/workspaces/${workspace_id}/history/${history_id}?load_full_structure=${load_full_structure}`\n )\n }\n },\n configurationJob: {\n list(\n workspace_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\",\n include_deleted_configuration_jobs = 0\n ) {\n return requestFactory(\"get\", `/workspaces/${workspace_id}/configuration_jobs`, {\n offset,\n limit,\n load_full_structure,\n order_by,\n order_dir,\n include_deleted_configuration_jobs,\n include_settings: 0\n })\n }\n },\n tag: {\n list(\n workspace_id,\n offset = 0,\n limit = 20,\n order_by = \"id\",\n order_dir = \"ASC\",\n load_full_structure = 0\n ) {\n return requestFactory(\"get\", `/workspaces/${workspace_id}/tags`, {\n offset,\n limit,\n order_by,\n order_dir,\n load_full_structure\n })\n },\n assign(workspace_id, data, load_full_structure = 1) {\n return requestFactory(\n \"post\",\n `/workspaces/${workspace_id}/tags?load_full_structure=${load_full_structure}`,\n data\n )\n },\n delete(workspace_id, tag_id, load_full_structure = 0) {\n return requestFactory(\n \"delete\",\n `/workspaces/${workspace_id}/tags/${tag_id}?load_full_structure=${load_full_structure}`\n )\n }\n },\n data: {\n delete(workspace_id) {\n return requestFactory(\"delete\", `/workspaces/${workspace_id}/data`)\n }\n }\n },\n dawg: {\n retrieve(dawg_id, load_full_structure = 1) {\n return requestFactory(\"get\", `/dawgs/${dawg_id}`, {\n load_full_structure\n })\n },\n list(\n offset = 0,\n limit = 50,\n load_full_structure = 1,\n order_by = \"id\",\n order_dir = \"ASC\",\n name_filter = \"\",\n tag_ids = [],\n show_enabled = 1,\n show_disabled = 1\n ) {\n return requestFactory(\"get\", \"/dawgs\", {\n limit,\n offset,\n load_full_structure,\n order_by,\n order_dir,\n name_filter,\n tag_ids,\n show_enabled,\n show_disabled\n })\n },\n create(data, load_full_structure = 1) {\n return requestFactory(\"post\", `/dawgs?load_full_structure=${load_full_structure}`, data)\n },\n listLastJobs(dawg_ids = [], load_full_structure = 0) {\n return requestFactory(\"get\", \"/dawgs/last_jobs\", {\n dawg_ids,\n load_full_structure\n })\n },\n modify(id, data, originData = {}, load_full_structure = 1) {\n // I don't wanna create several files of Redux boilerplate for this, sorry\n if (\"owner_id\" in data) {\n return requestFactory(\n \"patch\",\n `/dawgs/${id}/owner?load_full_structure=${load_full_structure}`,\n { user_id: data.owner_id }\n )\n }\n\n return requestFactory(\n \"patch\",\n `/dawgs/${id}?load_full_structure=${load_full_structure}`,\n data,\n originData\n )\n },\n delete(id) {\n return requestFactory(\"delete\", `/dawgs/${id}`)\n },\n restore(id, load_full_structure = 1) {\n return requestFactory(\n \"patch\",\n `/dawgs/trash/${id}?load_full_structure=${load_full_structure}`\n )\n },\n workspace: {\n list(\n dawg_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"ASC\"\n ) {\n return requestFactory(\"get\", `/dawgs/${dawg_id}/workspaces`, {\n offset,\n limit,\n load_full_structure,\n order_by,\n order_dir\n })\n },\n modifyBulk(dawg_id, data, load_full_structure = 0) {\n return requestFactory(\n \"patch\",\n `/dawgs/${dawg_id}/workspaces?load_full_structure=${load_full_structure}`,\n data\n )\n }\n },\n job: {\n run(dawg_id, load_full_structure = 0) {\n return requestFactory(\n \"post\",\n `/dawgs/${dawg_id}/jobs?load_full_structure=${load_full_structure}`\n )\n },\n list(\n dawg_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\"\n ) {\n return requestFactory(\"get\", `/dawgs/${dawg_id}/jobs`, {\n offset,\n limit,\n load_full_structure,\n order_by,\n order_dir\n })\n },\n retrieve(dawg_id, job_id, load_full_structure = 0) {\n return requestFactory(\"get\", `/dawgs/${dawg_id}/jobs/${job_id}`, {\n load_full_structure\n })\n },\n cancel(dawg_id, job_id, load_full_structure) {\n return requestFactory(\n \"delete\",\n `/dawgs/${dawg_id}/jobs/${job_id}?load_full_structure=${load_full_structure}`\n )\n },\n history: {\n list(\n dawg_id,\n job_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\"\n ) {\n return requestFactory(\"get\", `/dawgs/${dawg_id}/jobs/${job_id}/history`, {\n offset,\n limit,\n load_full_structure,\n order_by,\n order_dir\n })\n },\n retrieve(dawg_id, job_id, history_id, load_full_structure) {\n return requestFactory(\"get\", `/dawgs/${dawg_id}/jobs/${job_id}/history/${history_id}`, {\n load_full_structure\n })\n }\n },\n workspaceJob: {\n list(\n dawg_id,\n job_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\",\n include_deleted_workspace_jobs = 0\n ) {\n return requestFactory(\"get\", `/dawgs/${dawg_id}/jobs/${job_id}/workspace_jobs`, {\n offset,\n limit,\n load_full_structure,\n order_dir,\n order_by,\n include_deleted_workspace_jobs\n })\n }\n },\n log: {\n list(\n dawg_id,\n job_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\"\n ) {\n return requestFactory(\"get\", `/dawgs/${dawg_id}/jobs/${job_id}/logs`, {\n offset,\n limit,\n load_full_structure,\n order_dir,\n order_by\n })\n }\n }\n },\n history: {\n list(\n dawg_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\"\n ) {\n return requestFactory(\"get\", `/dawgs/${dawg_id}/history`, {\n offset,\n limit,\n load_full_structure,\n order_by,\n order_dir\n })\n },\n retrieve(dawg_id, history_id, load_full_structure = 0) {\n return requestFactory(\n \"get\",\n `/dawgs/${dawg_id}/history/${history_id}?load_full_structure=${load_full_structure}`\n )\n },\n revertTo(dawg_id, history_id, load_full_structure = 0) {\n return requestFactory(\n \"patch\",\n `/dawgs/${dawg_id}/history/${history_id}?load_full_structure=${load_full_structure}`\n )\n }\n },\n tag: {\n list(\n dawg_id,\n offset = 0,\n limit = 20,\n order_by = \"id\",\n order_dir = \"ASC\",\n load_full_structure = 0\n ) {\n return requestFactory(\"get\", `/dawgs/${dawg_id}/tags`, {\n offset,\n limit,\n order_by,\n order_dir,\n load_full_structure\n })\n },\n assign(dawg_id, data, load_full_structure = 1) {\n return requestFactory(\n \"post\",\n `/dawgs/${dawg_id}/tags?load_full_structure=${load_full_structure}`,\n data\n )\n },\n delete(dawg_id, tag_id, load_full_structure = 0) {\n return requestFactory(\n \"delete\",\n `/dawgs/${dawg_id}/tags/${tag_id}?load_full_structure=${load_full_structure}`\n )\n }\n },\n workspaceJob: {\n list(\n dawgId,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\",\n include_deleted_workspace_jobs = 0\n ) {\n return requestFactory(\"get\", `/dawgs/${dawgId}/workspace_jobs`, {\n offset,\n limit,\n load_full_structure,\n order_by,\n order_dir,\n include_deleted_workspace_jobs\n })\n }\n }\n },\n oauth: {\n list(offset = 0, limit = 50, load_full_structure = 0) {\n return requestFactory(\"get\", \"/oauth_repositories\", {\n limit,\n offset,\n load_full_structure\n })\n },\n modify(id, data, previousData = {}) {\n return requestFactory(\"patch\", `/oauth_repositories/${id}`, data, previousData)\n }\n },\n component: {\n list(offset = 0, limit = 50, load_full_structure = 0, show_hidden = 1) {\n return requestFactory(\"get\", \"/components\", {\n limit,\n offset,\n load_full_structure,\n show_hidden\n })\n }\n },\n configuration: {\n list(workspace_id, offset = 0, limit = 50, load_full_structure = 0) {\n return requestFactory(\"get\", `/workspaces/${workspace_id}/configurations`, {\n offset,\n limit,\n load_full_structure\n })\n },\n retrieve(workspace_id, configuration_id, load_full_structure = 0) {\n return requestFactory(\n \"get\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}`,\n {\n load_full_structure\n }\n )\n },\n create(workspace_id, data, load_full_structure = 0) {\n return requestFactory(\n \"post\",\n `/workspaces/${workspace_id}/configurations?load_full_structure=${load_full_structure}`,\n data\n )\n },\n modifyBulk(workspace_id, data, load_full_structure = 0) {\n return requestFactory(\n \"patch\",\n `/workspaces/${workspace_id}/configurations?load_full_structure=${load_full_structure}`,\n data\n )\n },\n modify(workspace_id, configuration_id, data, originData = {}, load_full_structure = 0) {\n return requestFactory(\n \"patch\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}?load_full_structure=${load_full_structure}`,\n data,\n originData\n )\n },\n clone(workspace_id, configuration_id, data, load_full_structure = 0) {\n return requestFactory(\n \"post\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}?load_full_structure=${load_full_structure}`,\n data\n )\n },\n delete(workspace_id, configuration_id) {\n return requestFactory(\n \"delete\",\n `workspaces/${workspace_id}/configurations/${configuration_id}`\n )\n },\n restore(workspace_id, id, load_full_structure = 1) {\n return requestFactory(\n \"patch\",\n `/workspaces/${workspace_id}/configurations/trash/${id}?load_full_structure=${load_full_structure}`\n )\n },\n data: {\n delete(workspace_id, configuration_id) {\n return requestFactory(\n \"delete\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}/data`\n )\n }\n },\n dataPreview: {\n in: {\n list(\n workspace_id,\n configuration_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n name_filter = \"\"\n ) {\n return requestFactory(\n \"get\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}/data/input/preview`,\n { offset, limit, load_full_structure, name_filter }\n )\n },\n retrieve(workspace_id, configuration_id, preview_id, load_full_structure = 0) {\n return requestFactory(\n \"get\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}/data/input/preview/${preview_id}`,\n { load_full_structure }\n )\n }\n },\n out: {\n list(\n workspace_id,\n configuration_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n name_filter = \"\"\n ) {\n return requestFactory(\n \"get\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}/data/output/preview`,\n { offset, limit, load_full_structure, name_filter }\n )\n },\n retrieve(workspace_id, configuration_id, preview_id, load_full_structure = 0) {\n return requestFactory(\n \"get\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}/data/output/preview/${preview_id}`,\n { load_full_structure }\n )\n }\n }\n },\n job: {\n run(workspace_id, configuration_id, load_full_structure = 0) {\n return requestFactory(\n \"post\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}/jobs?load_full_structure=${load_full_structure}`\n )\n },\n list(\n workspace_id,\n configuration_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\"\n ) {\n return requestFactory(\n \"get\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}/jobs`,\n {\n offset,\n limit,\n load_full_structure,\n order_by,\n order_dir,\n include_settings: 0\n }\n )\n },\n retrieve(workspace_id, configuration_id, job_id, load_full_structure = 0) {\n return requestFactory(\n \"get\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}/jobs/${job_id}`,\n { load_full_structure }\n )\n },\n cancel(workspace_id, configuration_id, job_id, load_full_structure = 0) {\n return requestFactory(\n \"delete\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}/jobs/${job_id}?load_full_structure=${load_full_structure}`\n )\n },\n history: {\n list(\n workspace_id,\n configuration_id,\n job_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\"\n ) {\n return requestFactory(\n \"get\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}/jobs/${job_id}/history`,\n { offset, limit, load_full_structure, order_by, order_dir, include_settings: 0 }\n )\n },\n retrieve(workspace_id, configuration_id, job_id, history_id, load_full_structure = 0) {\n return requestFactory(\n \"get\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}/jobs/${job_id}/history/${history_id}`,\n { load_full_structure }\n )\n }\n },\n log: {\n list(\n workspace_id,\n configuration_id,\n job_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\"\n ) {\n return requestFactory(\n \"get\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}/jobs/${job_id}/logs`,\n { offset, limit, load_full_structure, order_dir, order_by }\n )\n }\n }\n },\n history: {\n list(\n workspace_id,\n configuration_id,\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\"\n ) {\n return requestFactory(\n \"get\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}/history`,\n {\n offset,\n limit,\n load_full_structure,\n order_by,\n order_dir\n }\n )\n },\n retrieve(workspace_id, configuration_id, history_id, load_full_structure = 0) {\n return requestFactory(\n \"get\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}/history/${history_id}`,\n { load_full_structure }\n )\n },\n revertTo(workspace_id, configuration_id, history_id, load_full_structure = 0) {\n return requestFactory(\n \"patch\",\n `/workspaces/${workspace_id}/configurations/${configuration_id}/history/${history_id}?load_full_structure=${load_full_structure}`\n )\n }\n }\n },\n trash: {\n list(\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n searched_text = null,\n item_type = null,\n order_dir = \"DESC\"\n ) {\n return requestFactory(\"get\", \"/trash\", {\n offset,\n limit,\n load_full_structure,\n searched_text,\n item_type,\n order_dir\n })\n }\n },\n project: {\n configuration: {\n job: {\n list(\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\",\n include_deleted_entities_jobs = 0\n ) {\n return requestFactory(\"get\", \"/configuration_jobs\", {\n offset,\n limit,\n load_full_structure,\n order_by,\n order_dir,\n include_deleted_entities_jobs,\n include_settings: 0\n })\n }\n }\n },\n workspace: {\n job: {\n list(\n offset = 0,\n limit = 50,\n load_full_structure = 0,\n order_by = \"id\",\n order_dir = \"DESC\",\n include_deleted_workspaces_jobs = 0\n ) {\n return requestFactory(\"get\", \"/workspace_jobs\", {\n offset,\n limit,\n load_full_structure,\n order_by,\n order_dir,\n include_deleted_workspaces_jobs\n })\n }\n }\n }\n },\n tag: {\n list(\n offset = 0,\n limit = 20,\n order_by = \"id\",\n order_dir = \"ASC\",\n load_full_structure = 0,\n name_filter = \"\"\n ) {\n return requestFactory(\"get\", \"/tags\", {\n offset,\n limit,\n order_by,\n order_dir,\n load_full_structure,\n name_filter\n })\n },\n create(data) {\n return requestFactory(\"post\", \"/tags\", data)\n },\n retrieve(tag_id, load_full_structure = 0) {\n return requestFactory(\"get\", `/tags/${tag_id}`, { load_full_structure })\n },\n modify(tag_id, data, originData = {}, load_full_structure = 0) {\n return requestFactory(\n \"patch\",\n `/tags/${tag_id}?load_full_structure=${load_full_structure}`,\n data,\n originData\n )\n },\n delete(tag_id, load_full_structure = 0) {\n return requestFactory(\n \"delete\",\n `/tags/${tag_id}?load_full_structure=${load_full_structure}`\n )\n }\n },\n systemInfo() {\n return requestFactory(\"get\", \"/system_info\")\n },\n authOptions() {\n return requestFactory(\"get\", \"/auth_options\")\n },\n configurationSettigsSearch(search_text, offset, limit, load_full_structure = 0) {\n return requestFactory(\"get\", \"/configuration_settings_search\", {\n search_text,\n offset,\n limit,\n load_full_structure\n })\n }\n }\n}\n","import _get from \"lodash/get\"\nimport { api } from \"api\"\nimport { USER } from \"sharedConstants\"\nimport { history } from \"components/App\"\nimport { getRoutePath } from \"routes\"\n\nexport const login = data => async dispatch =>\n dispatch({\n type: USER.ACTION.LOGGED_IN,\n payload: {\n promise: (async () => {\n return await api().user.login(data)\n })()\n }\n })\n\nexport const oktaLogin = data => async dispatch =>\n dispatch({\n type: USER.ACTION.LOGGED_IN,\n payload: {\n promise: (async () => {\n return await api().user.oktaLogin(data)\n })()\n }\n })\n\nexport const refreshToken = () => async dispatch =>\n dispatch({\n type: USER.ACTION.REFRESH_TOKEN,\n payload: {\n promise: (async () => {\n return await api().user.refreshToken()\n })()\n }\n })\n\nexport const modifyAuthUser = (id, data) => async dispatch =>\n dispatch({\n type: USER.ACTION.MODIFY_AUTH_USER,\n payload: {\n promise: (async () => {\n const response = await api().user.modify(id, data)\n return _get(response, \"user\", {})\n })()\n }\n })\n\nexport const verifyUser = (token = \"\") => async dispatch => {\n if (!token) {\n dispatch({\n type: USER.ACTION.LOGGED_OUT\n })\n return\n }\n\n const { me } = await _userMe(token)\n if (me) {\n dispatch({\n type: USER.ACTION.RETRIEVE_LOGGED_IN_USER,\n payload: {\n ...me\n }\n })\n }\n\n return me\n}\n\nexport const enableLogout = () => dispatch => {\n dispatch({\n type: USER.ACTION.ENABLE_LOGOUT\n })\n}\n\nexport const disableLogout = () => dispatch => {\n dispatch({\n type: USER.ACTION.DISABLE_LOGOUT\n })\n}\n\nexport const logout = (redirect = false) => dispatch => {\n if (redirect) {\n api().user.logout()\n history.push(getRoutePath(\"logout\"))\n }\n dispatch({\n type: USER.ACTION.LOGGED_OUT\n })\n}\n\nexport const me = (token = \"\") => async () => {\n return await _userMe(token)\n}\n\nexport const setUiAttribute = (attribute, value) => dispatch =>\n dispatch({\n type: USER.ACTION.SET_UI_ATTRIBUTE,\n payload: {\n attribute,\n value\n }\n })\n\nconst _userMe = (token = \"\") => api().user.me(token)\n","export default __webpack_public_path__ + \"static/media/meiro-symbol-white-transparent.1bdcf891.svg\";","import React, { Component } from \"react\"\nimport { connect } from \"react-redux\"\nimport { reduxForm, Field } from \"redux-form\"\nimport PropTypes from \"prop-types\"\nimport { Link } from \"react-router-dom\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport _get from \"lodash/get\"\nimport _toInteger from \"lodash/toInteger\"\n\nimport { showToast } from \"actions/toast.action\"\nimport TextField from \"components/UI/elements/TextField\"\nimport Button from \"components/UI/elements/Button\"\nimport { required, email } from \"helpers/validators.helper\"\nimport PendingPromise from \"helpers/pendingPromise.helper\"\nimport { login } from \"actions/authenticatedUser.action\"\nimport { getRoutePath } from \"routes\"\nimport { api } from \"api\"\nimport ReCAPTCHA from \"react-google-recaptcha\"\n\nimport logo from \"images/meiro-symbol-white-transparent.svg\"\n\nlet credentialsLoginEnabled = 0,\n oktaLoginEnabled = 0,\n recaptchaSiteKey = null\nif (process.env.NODE_ENV === \"production\") {\n credentialsLoginEnabled = \"[[CREDENTIALS_LOGIN_ENABLED]]\"\n oktaLoginEnabled = \"[[OKTA_LOGIN_ENABLED]]\"\n recaptchaSiteKey = \"[[RECAPTCHA_SITE_KEY]]\"\n} else {\n credentialsLoginEnabled = process.env.REACT_APP_CREDENTIALS_LOGIN_ENABLED\n oktaLoginEnabled = process.env.REACT_APP_OKTA_LOGIN_ENABLED\n recaptchaSiteKey =\n process.env.REACT_APP_RECAPTCHA_SITE_KEY === '\"\"'\n ? \"\"\n : process.env.REACT_APP_RECAPTCHA_SITE_KEY\n}\n\nclass Login extends Component {\n constructor(props) {\n super(props)\n let showGeneralTermsCheckbox = false\n let meiroGeneralTermsAccepted\n try {\n meiroGeneralTermsAccepted = window.localStorage.getItem(\"miGeneralTermsAccepted\")\n } catch (err) {}\n if (meiroGeneralTermsAccepted !== \"true\") {\n showGeneralTermsCheckbox = true\n }\n this.state = {\n showGeneralTermsCheckbox,\n generalTermsCheckboxValue: false,\n auth: {\n options: null,\n loading: true\n },\n recaptchaToken: \"\",\n showRecaptcha: false\n }\n this.pendingPromises = new PendingPromise()\n }\n\n componentDidMount() {\n const authOptionsRequest = this.pendingPromises.create(api().authOptions())\n authOptionsRequest.promise\n .then(response => {\n this.setState({\n auth: {\n options: response.authentication_options,\n loading: false\n }\n })\n this.pendingPromises.remove(authOptionsRequest)\n })\n .catch(error => {\n if (!_get(error, \"isCanceled\")) {\n this.setState(prevState => ({\n auth: {\n ...prevState.auth,\n loading: false\n }\n }))\n }\n this.pendingPromises.remove(authOptionsRequest)\n })\n document.body.classList.add(\"toastify-on-top\")\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (!this.state.auth.loading && prevState.auth.loading && this.state.oktaLoading) {\n this.redirectToOktaAuthLink()\n }\n }\n\n componentWillUnmount() {\n this.pendingPromises.cancelAll()\n document.body.classList.remove(\"toastify-on-top\")\n }\n\n onSubmit = values => {\n if (!this.state.loading) {\n this.setState({ loading: true })\n const { recaptchaToken } = this.state\n if (recaptchaToken) {\n values.recaptcha_token = recaptchaToken\n }\n this.props\n .login(values)\n .then(() => {\n try {\n if (window.localStorage.getItem(\"miGeneralTermsAccepted\") !== \"true\") {\n window.localStorage.setItem(\"miGeneralTermsAccepted\", \"true\")\n }\n } catch (err) {}\n })\n .catch(error => {\n if (error.response?.data?.show_recaptcha) {\n this.setState({\n showRecaptcha: true,\n loading: false\n })\n } else {\n this.setState({ loading: false })\n }\n })\n }\n }\n\n redirectToOktaAuthLink = () => {\n const { auth } = this.state\n const oktaLink = _get(auth, \"options.okta_auth_link\")\n window.open(oktaLink, \"_self\")\n }\n\n loginWithOkta = () => {\n try {\n const urlParams = new URLSearchParams(this.props.location.search)\n const redirect = urlParams.get(\"redirect\")\n window.localStorage.setItem(\"redirectAfterOktaLoginTo\", redirect)\n } catch (err) {}\n if (this.state.auth.loading) {\n this.setState({\n oktaLoading: true\n })\n } else {\n this.redirectToOktaAuthLink()\n }\n }\n\n toggleGeneralTermsCheckboxValue = () => {\n this.setState(prevState => ({\n generalTermsCheckboxValue: !prevState.generalTermsCheckboxValue\n }))\n }\n\n renderTermsGuidelinesCheckbox = () => {\n const { showGeneralTermsCheckbox, generalTermsCheckboxValue } = this.state\n if (showGeneralTermsCheckbox) {\n return (\n
\n \n
\n )\n }\n }\n\n setRecaptchaToken = recaptchaToken => {\n this.setState({ recaptchaToken })\n }\n\n render() {\n const { handleSubmit } = this.props\n const {\n showGeneralTermsCheckbox,\n generalTermsCheckboxValue,\n showRecaptcha,\n recaptchaToken\n } = this.state\n\n const showLoginForm = _toInteger(credentialsLoginEnabled) === 1\n const showOktaButton = _toInteger(oktaLoginEnabled) === 1\n\n return (\n
\n
\n \"meiro\n {showLoginForm && (\n
\n

Login

\n
\n \n
\n
\n \n
\n {showRecaptcha && recaptchaSiteKey && (\n
\n \n
\n )}\n
\n \n Login\n \n\n {showOktaButton && (\n \n Login with SSO\n \n )}\n {this.renderTermsGuidelinesCheckbox()}\n \n Forgot password?\n \n
\n
\n )}\n {!showLoginForm && showOktaButton && (\n
\n \n Login with SSO\n \n {this.renderTermsGuidelinesCheckbox()}\n
\n )}\n
\n
\n
\n

Meiro Integrations

\n

Your way out of the data labyrinth.

\n
\n
\n
\n )\n }\n}\n\nLogin.propTypes = {\n handleSubmit: PropTypes.func.isRequired,\n login: PropTypes.func.isRequired\n}\n\nLogin = reduxForm({\n form: \"LoginForm\",\n touchOnBlur: false\n})(connect(null, { login, showToast })(Login))\n\nexport default Login\n","export default __webpack_public_path__ + \"static/media/meiro-labyrinth.b014bc0f.svg\";","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport _random from \"lodash/random\"\nimport _isFunction from \"lodash/isFunction\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nimport Button from \"components/UI/elements/Button\"\n\nimport MeiroLabyrinthSrc from \"images/meiro-labyrinth.svg\"\nimport \"./WholePageLoading.css\"\n\nexport const messages = [\n \"From data maze to data a-maze-ing\",\n \"Churning out magic, won't be long!\",\n \"Finding the right answer to the right question.\",\n \"Generating new conclusions for you.\"\n]\n\nclass WholePageLoading extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n message: messages[_random(0, messages.length - 1)]\n }\n }\n\n render() {\n const {\n loadingError,\n errorCallback,\n customMessage,\n fullHeight,\n customErrorMessage,\n children\n } = this.props\n return (\n \n \n \"meiro\n

\n {!loadingError && customMessage === null && this.state.message}\n {!loadingError && customMessage !== null && customMessage}\n {loadingError && customErrorMessage === null && \"Error while loading.\"}\n {loadingError && customErrorMessage !== null && customErrorMessage}\n

\n {_isFunction(errorCallback) && loadingError && (\n \n Reload\n \n )}\n {children}\n \n \n )\n }\n}\n\nWholePageLoading.defaultProps = {\n loadingError: false,\n customMessage: null,\n customErrorMessage: null,\n fullHeight: false,\n children: null\n}\n\nWholePageLoading.propTypes = {\n loadingError: PropTypes.bool,\n errorCallback: PropTypes.func,\n customMessage: PropTypes.string,\n fullHeight: PropTypes.bool,\n customErrorMessage: PropTypes.string,\n children: PropTypes.node\n}\n\nexport default WholePageLoading\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport { Link } from \"react-router-dom\"\n\nimport { oktaLogin } from \"actions/authenticatedUser.action\"\nimport { showToast } from \"actions/toast.action\"\nimport { getRoutePath } from \"routes\"\n\nimport { TOAST } from \"sharedConstants\"\n\nimport WholePageLoading from \"components/UI/elements/WholePageLoading\"\n\nclass OktaCallback extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n error: false\n }\n }\n\n componentDidMount() {\n const { location, oktaLogin, history, showToast } = this.props\n\n const urlParams = new URLSearchParams(location.search)\n const code = urlParams.get(\"code\")\n\n try {\n if (\n window.localStorage.getItem(\"redirectAfterOktaLoginTo\") !== \"null\" &&\n window.localStorage.getItem(\"redirectAfterOktaLoginTo\") !== \"\"\n ) {\n history.replace({\n search: `${location.search}&${new URLSearchParams({\n redirect: window.localStorage.getItem(\"redirectAfterOktaLoginTo\")\n })}`\n })\n }\n } catch (err) {}\n if (code) {\n oktaLogin({ code })\n .then(() => {\n try {\n if (window.localStorage.getItem(\"miGeneralTermsAccepted\") !== \"true\") {\n window.localStorage.setItem(\"miGeneralTermsAccepted\", \"true\")\n }\n } catch (err) {}\n })\n .catch(error => {\n this.setState({\n error: true\n })\n })\n } else {\n const error_description = urlParams.get(\"error_description\")\n this.setState({\n error: true\n })\n showToast(error_description, TOAST.TYPE.ERROR)\n }\n }\n\n render() {\n return (\n \n {this.state.error && (\n \n Back to login\n \n )}\n \n )\n }\n}\n\nexport default connect(null, { oktaLogin, showToast })(OktaCallback)\n","export default __webpack_public_path__ + \"static/media/wave.4058caa6.svg\";","import React, { PureComponent } from \"react\"\nimport _random from \"lodash/random\"\nimport { List } from \"immutable\"\n\n// ui components\nimport Button from \"components/UI/elements/Button\"\n\n// helpers\nimport { getRoutePath } from \"routes\"\n\n//css\nimport \"./LogoutPage.css\"\n\nimport waveSrc from \"images/wave.svg\"\n\n// team avatars\nimport person0 from \"images/team/0.png\"\nimport person1 from \"images/team/1.png\"\nimport person2 from \"images/team/2.png\"\nimport person3 from \"images/team/3.png\"\nimport person4 from \"images/team/4.png\"\nimport person5 from \"images/team/5.png\"\nimport person6 from \"images/team/6.png\"\nimport person7 from \"images/team/7.png\"\nimport person8 from \"images/team/8.png\"\nimport person9 from \"images/team/9.png\"\nimport person10 from \"images/team/10.png\"\nimport person11 from \"images/team/11.png\"\nimport person12 from \"images/team/12.png\"\nimport person13 from \"images/team/13.png\"\nimport person14 from \"images/team/14.png\"\nimport person15 from \"images/team/15.png\"\nimport person16 from \"images/team/16.png\"\nimport person17 from \"images/team/17.png\"\nimport person18 from \"images/team/18.png\"\nimport person19 from \"images/team/19.png\"\nimport person20 from \"images/team/20.png\"\nimport person21 from \"images/team/21.png\"\nimport person22 from \"images/team/22.png\"\nimport person23 from \"images/team/23.png\"\nimport person24 from \"images/team/24.png\"\nimport person25 from \"images/team/25.png\"\nimport person26 from \"images/team/26.png\"\nimport person27 from \"images/team/27.png\"\n\nconst team = {\n person0,\n person1,\n person2,\n person3,\n person4,\n person5,\n person6,\n person7,\n person8,\n person9,\n person10,\n person11,\n person12,\n person13,\n person14,\n person15,\n person16,\n person17,\n person18,\n person19,\n person20,\n person21,\n person22,\n person23,\n person24,\n person25,\n person26,\n person27\n}\n\nconst PERSONS_COUNT = 28\nconst PERSONS_VISIBLE = 9\n\nclass LogoutPage extends PureComponent {\n intervalId = null\n\n constructor(props) {\n super(props)\n this.state = {\n selectedPersons: this.genArrayOfUniqueNumbers(PERSONS_COUNT - 1, PERSONS_VISIBLE),\n visiblePersons: List(),\n animationIndex: null\n }\n }\n\n genArrayOfUniqueNumbers = (maxNumber, count) => {\n const array = []\n while (array.length < count) {\n const num = _random(maxNumber)\n if (!array.includes(num)) {\n array.push(num)\n }\n }\n return List(array)\n }\n\n getUniqueRandomPersonNumber = () => {\n const { selectedPersons } = this.state\n let num = _random(PERSONS_COUNT - 1)\n while (selectedPersons.includes(num)) {\n num = _random(PERSONS_COUNT - 1)\n }\n return num\n }\n\n componentDidMount() {\n this.intervalId = setInterval(() => {\n if (this.state.visiblePersons.size === PERSONS_VISIBLE) {\n clearInterval(this.intervalId)\n this.intervalId = setInterval(() => {\n const index = _random(PERSONS_VISIBLE - 1)\n this.setState(\n prevState => ({\n visiblePersons: prevState.visiblePersons.set(index, false),\n animationIndex: index\n }),\n () => {\n setTimeout(() => {\n this.setState(prevState => ({\n selectedPersons: prevState.selectedPersons.set(\n index,\n this.getUniqueRandomPersonNumber()\n ),\n visiblePersons: prevState.visiblePersons.set(prevState.animationIndex, true),\n animationIndex: null\n }))\n }, 1000)\n }\n )\n }, 2500)\n return\n }\n this.setState(prevState => ({\n visiblePersons: prevState.visiblePersons.push(true)\n }))\n }, 500)\n }\n\n componentWillUnmount() {\n clearInterval(this.intervalId)\n }\n\n render() {\n const { selectedPersons, visiblePersons } = this.state\n\n return (\n
\n
\n
\n \"wave\"\n

\n Hey there! Thanks for using Meiro.\n We love having you around!\n

\n

\n For exciting updates, check out our{\" \"}\n \n blog\n \n .\n

\n this.props.history.push(getRoutePath(\"login\"))}\n >\n Login\n \n
\n
\n
\n
\n {selectedPersons.map((num, idx) => (\n \n \"team-member\"\n
\n ))}\n
\n \n
\n )\n }\n}\n\nexport default LogoutPage\n","export default __webpack_public_path__ + \"static/media/0.a054ef4a.png\";","export default __webpack_public_path__ + \"static/media/1.541965f7.png\";","export default __webpack_public_path__ + \"static/media/2.dfaec8a3.png\";","export default __webpack_public_path__ + \"static/media/3.4c6ba25d.png\";","export default __webpack_public_path__ + \"static/media/4.b2aa5c2b.png\";","export default __webpack_public_path__ + \"static/media/5.866e35c7.png\";","export default __webpack_public_path__ + \"static/media/6.ac0ee9d7.png\";","export default __webpack_public_path__ + \"static/media/7.ff3f0fdb.png\";","export default __webpack_public_path__ + \"static/media/8.264a43d1.png\";","export default __webpack_public_path__ + \"static/media/9.8772e7f2.png\";","export default __webpack_public_path__ + \"static/media/10.06f63af7.png\";","export default __webpack_public_path__ + \"static/media/11.6b7b0f82.png\";","export default __webpack_public_path__ + \"static/media/12.0f771511.png\";","export default __webpack_public_path__ + \"static/media/13.cd02425e.png\";","export default __webpack_public_path__ + \"static/media/14.ae3648fd.png\";","export default __webpack_public_path__ + \"static/media/15.f71fba46.png\";","export default __webpack_public_path__ + \"static/media/16.edcb1fd8.png\";","export default __webpack_public_path__ + \"static/media/17.e2d687aa.png\";","export default __webpack_public_path__ + \"static/media/18.8a40f8d1.png\";","export default __webpack_public_path__ + \"static/media/19.2e5443e3.png\";","export default __webpack_public_path__ + \"static/media/20.9dad1cd4.png\";","export default __webpack_public_path__ + \"static/media/21.63f91860.png\";","export default __webpack_public_path__ + \"static/media/22.2e40af71.png\";","export default __webpack_public_path__ + \"static/media/23.34438067.png\";","export default __webpack_public_path__ + \"static/media/24.3bed8713.png\";","export default __webpack_public_path__ + \"static/media/25.49986012.png\";","export default __webpack_public_path__ + \"static/media/26.2320336e.png\";","export default __webpack_public_path__ + \"static/media/27.d57dea30.png\";","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Link } from \"react-router-dom\"\nimport _isNull from \"lodash/isNull\"\nimport _isString from \"lodash/isString\"\nimport _isFunction from \"lodash/isFunction\"\nimport { CSSTransition } from \"react-transition-group\"\n\nimport \"./DropdownMenu.css\"\n\nconst DropdownContext = React.createContext()\n\n/*\n * Dropdown toggle button item\n */\nexport class DropdownToggle extends Component {\n render() {\n const { children, className } = this.props\n return (\n \n {({ toggle }) => (\n \n {children}\n \n )}\n \n )\n }\n}\n\nDropdownToggle.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n}\n\n/*\n * Dropdown content area\n */\nexport class DropdownContent extends Component {\n render() {\n const { children, className } = this.props\n return (\n \n {({ open, align = \"left\" }) => (\n \n
\n
    {children}
\n
\n
\n )}\n
\n )\n }\n}\n\nDropdownContent.propTypes = {\n className: PropTypes.string\n}\n\n/*\n * Dropdown menu item, if you want to use it as menu\n */\nexport class DropdownMenuItem extends Component {\n anchorOnclick = (toggle, action) => () => {\n const { hideMenuOnClick = true } = this.props\n action()\n if (hideMenuOnClick) {\n toggle()\n }\n }\n\n render() {\n const { children, className, active, link, action, hidden = false } = this.props\n\n if (hidden) {\n return null\n }\n\n return (\n \n {({ toggle }) => (\n
  • \n {link && (\n \n {children}\n \n )}\n {action && (\n \n {children}\n \n )}\n
  • \n )}\n
    \n )\n }\n}\n\n/* istanbul ignore next */\nDropdownMenuItem.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n active: PropTypes.bool,\n hidden: PropTypes.bool,\n hideMenuOnClick: PropTypes.bool,\n link: (props, propName, componentName) => {\n if (!props.link && !props.action) {\n return new Error(`One of props 'link' or 'action' was not specified in '${componentName}'.`)\n }\n if (props.link && !_isString(props.link)) {\n return new Error(`'link' property of component '${componentName}' has to be valid string.`)\n }\n },\n action: (props, propName, componentName) => {\n if (!props.link && !props.action) {\n return new Error(`One of props 'action' or 'link' was not specified in '${componentName}'.`)\n }\n if (props.action && !_isFunction(props.action)) {\n return new Error(`'action' property of component '${componentName}' has to be function.`)\n }\n }\n}\n\n/*\n * Dropdown wrapper element\n */\n\nclass DropdownMenu extends Component {\n componentDidUpdate(prevProps) {\n if (this.props.open && !prevProps.open) {\n // dropdown opened\n document.addEventListener(\"click\", this._handleOutsideClick, false)\n } else if (!this.props.open && prevProps.open) {\n // dropdown closed\n document.removeEventListener(\"click\", this._handleOutsideClick, false)\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener(\"click\", this._handleOutsideClick, false)\n }\n\n _handleOutsideClick = evt => {\n if (!_isNull(this.dropdown)) {\n if (!this.dropdown.contains(evt.target)) {\n this.props.toggle()\n }\n }\n }\n\n render() {\n const { className, open, children, align, toggle } = this.props\n\n return (\n \n (this.dropdown = node)}\n >\n {children}\n \n \n )\n }\n}\n\nDropdownMenu.propTypes = {\n open: PropTypes.bool.isRequired,\n toggle: PropTypes.func.isRequired,\n className: PropTypes.string,\n align: PropTypes.string,\n children: PropTypes.node.isRequired\n}\n\nexport default DropdownMenu\n","import _toLower from \"lodash/toLower\"\nimport _trim from \"lodash/trim\"\nimport md5 from \"crypto-js/md5\"\n\nexport const getGravatarImgUrl = (email, size = 80) => {\n const queryEmailHash = md5(_toLower(_trim(email)))\n return `https://www.gravatar.com/avatar/${queryEmailHash}?s=${size}&d=blank`\n}\n","export default __webpack_public_path__ + \"static/media/default-avatar-bg.0976babd.svg\";","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport _trim from \"lodash/trim\"\n\n// helpers\nimport { getGravatarImgUrl } from \"helpers/gravatar.helper\"\n\n// default image placeholder, meiro symbol\nimport placeholder from \"images/default-avatar-bg.svg\"\n\n// css\nimport \"./Avatar.css\"\n\nclass Avatar extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n renderInicials = () => {\n const nameSplit = _trim(this.props.name).split(\" \")\n let inicials\n if (nameSplit.length > 1) {\n inicials = `${nameSplit[0][0]}${nameSplit[nameSplit.length - 1][0]}`\n } else {\n inicials = nameSplit[0][0]\n }\n\n return {inicials}\n }\n\n render() {\n const { className, email, gravatarSize, disabledLook, ...rest } = this.props\n\n return (\n \n {\n \n \"\"\n {this.renderInicials()}\n \n }\n \n {disabledLook &&
    }\n
    \n )\n }\n}\n\nAvatar.propTypes = {\n email: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n className: PropTypes.string,\n gravatarSize: PropTypes.number,\n disabledLook: PropTypes.bool\n}\n\nexport default Avatar\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport \"./IconButton.css\"\n\nconst IconButton = ({ color, children, className, type = \"button\", ...buttonAttrs }) => {\n if (type === \"anchor\") {\n return (\n \n {children}\n \n )\n } else {\n return (\n \n {children}\n \n )\n }\n}\n\nIconButton.propTypes = {\n color: PropTypes.string.isRequired,\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n type: PropTypes.string\n}\n\nexport default IconButton\n","export const shortenString = (string, limit, end = \"bracket\") => {\n if (string.length < limit) {\n return string\n } else {\n const stringStart = string.slice(0, limit - 3)\n if (end === \"bracket\") {\n return stringStart + \"[...]\"\n } else {\n return stringStart + \"...\"\n }\n }\n}\n\nexport const capitalize = s => {\n if (typeof s !== \"string\") return \"\"\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nexport const copyStringToClipboard = s => {\n const dummy = document.createElement(\"input\")\n document.body.appendChild(dummy)\n dummy.value = s\n dummy.select()\n document.execCommand(\"copy\")\n document.body.removeChild(dummy)\n}\n","import _toInteger from \"lodash/toInteger\"\n\nexport const getWorkspaces = state => state.workspaces.get(\"workspaces\")\n\nexport const getWorkspacesSelectionSettings = state => state.workspaces.get(\"selectionSettings\")\n\nexport const getWorkspacesHasMoreItems = state => state.workspaces.get(\"hasMoreItems\")\n\nexport const getLastWorkspacesJobs = state => state.workspaces.get(\"lastJobs\")\n\nexport const getWorkspaceRecord = (state, id) => {\n if (state.workspaces.get(\"workspaces\")) {\n return state.workspaces.get(\"workspaces\").find(workspace => workspace.id === _toInteger(id))\n } else {\n return null\n }\n}\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport ReactTooltip from \"react-tooltip\"\nimport { NavLink } from \"react-router-dom\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\n\nclass WorkspaceDetailSubmenu extends PureComponent {\n render() {\n const { workspace } = this.props\n\n if (!workspace) {\n return null\n }\n\n const hasWorkspaceTooltip = workspace.name.length >= 70\n const workspaceTooltipProps = hasWorkspaceTooltip\n ? { \"data-tip\": workspace.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nWorkspaceDetailSubmenu.propTypes = {\n workspace: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id)\n }\n}\n\nexport default connect(mapStateToProps)(WorkspaceDetailSubmenu)\n","import _get from \"lodash/get\"\nimport { api } from \"api\"\nimport { WORKSPACE, TAG } from \"sharedConstants\"\n\nexport const fetchWorkspaceList = (\n offset,\n limit,\n loadFullStructure,\n orderBy,\n orderDir,\n nameFilter = \"\",\n tagIds = [],\n showEnabled = 1,\n showDisabled = 1\n) => async dispatch =>\n dispatch({\n type: WORKSPACE.ACTION.LIST,\n payload: {\n promise: (async () => {\n return await api().workspace.list(\n offset,\n limit,\n loadFullStructure,\n orderBy,\n orderDir,\n nameFilter,\n tagIds,\n showEnabled,\n showDisabled\n )\n })()\n }\n })\n\nexport const fetchLastWorkspaceJobs = (workspaceIds, loadFullStructure) => async dispatch => {\n const response = await api().workspace.listLastJobs(workspaceIds, loadFullStructure)\n return dispatch({\n type: WORKSPACE.ACTION.LIST_LAST_JOBS,\n payload: _get(response, \"last_workspace_jobs\", [])\n })\n}\n\nexport const createWorkspace = data => async dispatch =>\n dispatch({\n type: WORKSPACE.ACTION.CREATE,\n payload: {\n promise: (async () => {\n const response = await api().workspace.create(data)\n return _get(response, \"workspace\", {})\n })()\n }\n })\n\nexport const modifyWorkspace = (id, data, originData = {}) => async dispatch =>\n dispatch({\n type: WORKSPACE.ACTION.MODIFY,\n payload: {\n promise: (async () => {\n const response = await api().workspace.modifyWorkspace(id, data, originData)\n return _get(response, \"workspace\", {})\n })()\n }\n })\n\nexport const deleteWorkspace = id => async dispatch =>\n dispatch({\n type: WORKSPACE.ACTION.DELETE,\n payload: {\n promise: (async () => {\n await api().workspace.delete(id)\n return id\n })()\n }\n })\n\nexport const retrieveWorkspace = id => async dispatch =>\n dispatch({\n type: WORKSPACE.ACTION.RETRIEVE,\n payload: {\n promise: (async () => {\n const response = await api().workspace.retrieve(id)\n return _get(response, \"workspace\", {})\n })()\n }\n })\n\nexport const cloneWorkspace = id => async dispatch =>\n dispatch({\n type: WORKSPACE.ACTION.CREATE,\n payload: {\n promise: (async () => {\n const response = await api().workspace.clone(id)\n return _get(response, \"workspace\", {})\n })()\n }\n })\n\nexport const assignTagToWorkspace = (workspaceId, data) => async dispatch =>\n dispatch({\n type: TAG.ACTION.ASSIGN_TAG_TO_WORKSPACE,\n payload: {\n promise: (async () => {\n const response = await api().workspace.tag.assign(workspaceId, data)\n return _get(response, \"workspace_tag\", {})\n })()\n }\n })\n\nexport const unassignTagFromWorkspace = (workspaceId, tagId) => async dispatch =>\n dispatch({\n type: TAG.ACTION.DELETE_TAG_FROM_WORKSPACE,\n payload: {\n promise: (async () => {\n await api().workspace.tag.delete(workspaceId, tagId)\n return {\n workspace_id: workspaceId,\n tag_id: tagId\n }\n })()\n }\n })\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\nimport ReactTooltip from \"react-tooltip\"\n\n// actions\nimport { retrieveWorkspace } from \"actions/workspace.action\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\n\nclass WorkspaceConfigurationCreateSubmenu extends PureComponent {\n componentDidMount() {\n const {\n workspace,\n retrieveWorkspace,\n match: {\n params: { id }\n }\n } = this.props\n\n if (!workspace) {\n retrieveWorkspace(id).catch(_noop)\n }\n }\n\n render() {\n const { workspace } = this.props\n\n if (!workspace) {\n return null\n }\n\n const hasWorkspaceTooltip = workspace.name.length >= 25\n const workspaceTooltipProps = hasWorkspaceTooltip\n ? { \"data-tip\": workspace.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nWorkspaceConfigurationCreateSubmenu.propTypes = {\n workspace: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveWorkspace })(WorkspaceConfigurationCreateSubmenu)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\nimport ReactTooltip from \"react-tooltip\"\n\n// actions\nimport { retrieveWorkspace } from \"actions/workspace.action\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\n\nclass WorkspaceConfigurationJobsSubmenu extends PureComponent {\n componentDidMount() {\n const {\n workspace,\n retrieveWorkspace,\n match: {\n params: { id }\n }\n } = this.props\n\n if (!workspace) {\n retrieveWorkspace(id).catch(_noop)\n }\n }\n\n componentDidUpdate(prevProps) {\n if (!this.props.workspace) {\n const {\n retrieveWorkspace,\n match: {\n params: { id }\n }\n } = this.props\n const prevId = prevProps.match.params.id\n if (id && prevId && id !== prevId) {\n retrieveWorkspace(id).catch(_noop)\n }\n }\n }\n\n render() {\n const { workspace } = this.props\n\n if (!workspace) {\n return null\n }\n\n const hasWorkspaceTooltip = workspace.name.length >= 25\n const workspaceTooltipProps = hasWorkspaceTooltip\n ? { \"data-tip\": workspace.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nWorkspaceConfigurationJobsSubmenu.propTypes = {\n workspace: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveWorkspace })(WorkspaceConfigurationJobsSubmenu)\n","import _ from \"lodash\"\nimport Fuse from \"fuse.js\"\nimport FuseImmutable from \"fuse-immutable\"\n\nconst toggleOrder = order => {\n switch (order) {\n case \"asc\":\n return \"desc\"\n case \"desc\":\n return \"asc\"\n default:\n return \"asc\"\n }\n}\n\n// wil be ommited soon, deprecated\nexport const initFuseSearch = (data, columns) => {\n const options = {\n findAllMatches: true,\n threshold: 0.6,\n location: 0,\n distance: 100,\n maxPatternLength: 32,\n minMatchCharLength: 1,\n keys: columns\n }\n return new Fuse(data, options)\n}\n\nexport const initFuseImmutableSearch = (data, columns) => {\n const options = {\n findAllMatches: true,\n threshold: 0.45,\n location: 0,\n distance: 100,\n maxPatternLength: 32,\n minMatchCharLength: 1,\n keys: columns\n }\n return new FuseImmutable(data, options)\n}\n\nexport const sortTableBy = (data, columnName, order) => {\n switch (columnName) {\n case \"created\":\n case \"last_run\":\n return _.orderBy(data, [row => new Date(row[columnName])], [order])\n default:\n return _.orderBy(data, [row => _.toLower(row[columnName])], [order])\n }\n}\n\nexport const sortTableState = (prevSortState, actualSortColumn) => {\n if (prevSortState.by === actualSortColumn) {\n return {\n sort: { by: prevSortState.by, order: toggleOrder(prevSortState.order) }\n }\n } else {\n return { sort: { by: actualSortColumn, order: \"asc\" } }\n }\n}\n","import _toString from \"lodash/toString\"\nimport { createSelector } from \"reselect\"\nimport { Map, List } from \"immutable\"\n\nimport { initFuseImmutableSearch } from \"helpers/table.helper\"\n\nexport const getIsConfigurationsFetching = state => state.configurations.get(\"isFetching\")\n\nexport const isConfigurationsFulfilled = (state, workspaceId) => {\n return state.configurations.getIn([\"data\", _toString(workspaceId), \"isFulfilled\"]) === true\n}\n\nexport const getIsWorkspaceConfigurationsModifying = (state, workspaceId) => {\n return state.configurations.getIn([\"data\", _toString(workspaceId), \"isModifying\"]) === true\n}\n\nexport const getWorkspaceConfigurationsData = (state, workspaceId) => {\n if (state.configurations.getIn([\"data\", _toString(workspaceId)])) {\n return state.configurations.getIn([\"data\", _toString(workspaceId), \"configurations\"])\n }\n return null\n}\n\nexport const getWorkspaceConfigurationData = (state, workspaceId, configurationId) => {\n if (state.configurations.getIn([\"data\", _toString(workspaceId)])) {\n return state.configurations.getIn([\n \"data\",\n _toString(workspaceId),\n \"configurations\",\n _toString(configurationId)\n ])\n }\n return null\n}\n\nexport const getWorkspaceConfigurationsFuseData = createSelector(\n [getWorkspaceConfigurationsData],\n configurations => {\n if (configurations) {\n return Map({\n isFulfilled: true,\n data: initFuseImmutableSearch(List(configurations.toArray()), [\"name\"])\n })\n } else {\n return Map({\n isFulfilled: false,\n data: initFuseImmutableSearch(List(), [\"name\"])\n })\n }\n }\n)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\nimport ReactTooltip from \"react-tooltip\"\n\n// actions\nimport { retrieveWorkspace } from \"actions/workspace.action\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\nimport { getWorkspaceConfigurationData } from \"selectors/configuration.selector\"\n\nclass WorkspaceConfigurationSubmenu extends PureComponent {\n componentDidMount() {\n const {\n workspace,\n retrieveWorkspace,\n match: {\n params: { id }\n }\n } = this.props\n\n if (!workspace) {\n retrieveWorkspace(id).catch(_noop)\n }\n }\n\n componentDidUpdate(prevProps) {\n if (!this.props.workspace) {\n const {\n retrieveWorkspace,\n match: {\n params: { id }\n }\n } = this.props\n const prevId = prevProps.match.params.id\n if (id && prevId && id !== prevId) {\n retrieveWorkspace(id).catch(_noop)\n }\n }\n }\n\n render() {\n const { workspace, configuration } = this.props\n\n if (!workspace || !configuration) {\n return null\n }\n\n const hasWorkspaceTooltip = workspace.name.length >= 25\n const workspaceTooltipProps = hasWorkspaceTooltip\n ? { \"data-tip\": workspace.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n const hasConfigurationTooltip = configuration.name.length >= 70\n const configurationTooltipProps = hasConfigurationTooltip\n ? { \"data-tip\": configuration.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nWorkspaceConfigurationSubmenu.propTypes = {\n workspace: PropTypes.instanceOf(Record),\n configuration: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id, cid }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id),\n configuration: getWorkspaceConfigurationData(state, id, cid)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveWorkspace })(WorkspaceConfigurationSubmenu)\n","import _get from \"lodash/get\"\n\nexport const ITEMS_PER_PAGE = 100\n\nexport default class AllResourceItemsFetcher {\n /*\n * Default value for loading full structure of data\n */\n loadFullStructure = 0\n\n /*\n * Path to data in response\n */\n dataPath = null\n\n /*\n * Anonymous function to API endpoint\n */\n endpointCall = () => {}\n\n /*\n * Set load full structure value, possible values are 0/1\n */\n setLoadFullStructure(value) {\n this.loadFullStructure = value\n return this\n }\n\n /*\n * Set path to data in response\n */\n setDataPath(path) {\n this.dataPath = path\n return this\n }\n\n /*\n * Set endpoint call, which is an anonymous function to API endpoint\n */\n setEndpointCall(apiCall) {\n this.endpointCall = apiCall\n return this\n }\n\n async _fetchPage(offset) {\n const response = await this.endpointCall(offset, ITEMS_PER_PAGE, this.loadFullStructure)\n return response\n }\n\n async run() {\n let output = []\n\n let lastPage = false\n let offset = 0\n while (!lastPage) {\n const response = await this._fetchPage(offset)\n const data = _get(response, this.dataPath, [])\n output = [...output, ...data]\n lastPage = data.length < ITEMS_PER_PAGE\n offset += ITEMS_PER_PAGE\n }\n\n return output\n }\n}\n","import _get from \"lodash/get\"\nimport { api } from \"api\"\nimport { CONFIGURATION } from \"sharedConstants\"\nimport AllResourceItemsFetcher from \"helpers/AllResourceItemsFetcher.helper\"\n\nexport const fetchConfigurationList = (workspaceId, loadFullStructure = 0) => async dispatch => {\n const caller = new AllResourceItemsFetcher()\n\n return dispatch({\n type: CONFIGURATION.ACTION.LIST,\n payload: {\n promise: (async () => {\n const data = await caller\n .setEndpointCall((offset, limit, loadFullStructure) =>\n api().configuration.list(workspaceId, offset, limit, loadFullStructure)\n )\n .setDataPath(\"configurations\")\n .setLoadFullStructure(loadFullStructure)\n .run()\n return {\n workspaceId,\n data\n }\n })()\n }\n })\n}\n\nexport const retrieveConfiguration = (\n workspaceId,\n configurationId,\n loadFullStructure = 0\n) => async dispatch =>\n dispatch({\n type: CONFIGURATION.ACTION.RETRIEVE,\n payload: {\n promise: (async () => {\n const response = await api().configuration.retrieve(\n workspaceId,\n configurationId,\n loadFullStructure\n )\n return _get(response, \"configuration\", {})\n })()\n }\n })\n\nexport const createConfiguration = (workspaceId, data) => async dispatch =>\n dispatch({\n type: CONFIGURATION.ACTION.CREATE,\n payload: {\n promise: (async () => {\n const response = await api().configuration.create(workspaceId, data)\n return _get(response, \"configuration\", {})\n })()\n }\n })\n\nexport const deleteConfiguration = (workspaceId, configurationId) => async dispatch =>\n dispatch({\n type: CONFIGURATION.ACTION.DELETE,\n payload: {\n promise: (async () => {\n await api().configuration.delete(workspaceId, configurationId)\n return {\n workspaceId,\n configurationId\n }\n })()\n }\n })\n\nexport const modifyConfigurationsBulk = (\n workspaceId,\n data,\n loadFullStructure = 0\n) => async dispatch =>\n dispatch({\n type: CONFIGURATION.ACTION.MODIFY_BULK,\n meta: {\n workspaceId\n },\n payload: {\n promise: (async () => {\n const response = await api().configuration.modifyBulk(workspaceId, data, loadFullStructure)\n return _get(response, \"configurations\", [])\n })()\n }\n })\n\nexport const modifyConfiguration = (\n workspaceId,\n configurationId,\n data,\n originData = {},\n loadFullStructure = 0\n) => async dispatch =>\n dispatch({\n type: CONFIGURATION.ACTION.MODIFY,\n meta: {\n workspaceId\n },\n payload: {\n promise: (async () => {\n const response = await api().configuration.modify(\n workspaceId,\n configurationId,\n data,\n originData,\n loadFullStructure\n )\n return _get(response, \"configuration\", {})\n })()\n }\n })\n\nexport const cloneConfiguration = (\n workspaceId,\n configurationId,\n data,\n loadFullStructure = 0\n) => async dispatch =>\n dispatch({\n type: CONFIGURATION.ACTION.CLONE,\n payload: {\n promise: (async () => {\n const response = await api().configuration.clone(\n workspaceId,\n configurationId,\n data,\n loadFullStructure\n )\n return _get(response, \"configuration\", {})\n })()\n }\n })\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\nimport ReactTooltip from \"react-tooltip\"\n\n// actions\nimport { retrieveWorkspace } from \"actions/workspace.action\"\nimport { retrieveConfiguration } from \"actions/configuration.action\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\nimport { getWorkspaceConfigurationData } from \"selectors/configuration.selector\"\n\nclass DataPreviewSubmenu extends PureComponent {\n componentDidMount() {\n const {\n workspace,\n configuration,\n retrieveWorkspace,\n retrieveConfiguration,\n match: {\n params: { id, cid }\n }\n } = this.props\n\n if (!workspace) {\n retrieveWorkspace(id).catch(_noop)\n }\n\n if (!configuration) {\n retrieveConfiguration(id, cid).catch(_noop)\n }\n }\n\n render() {\n const {\n workspace,\n configuration,\n match: {\n params: { type }\n }\n } = this.props\n\n if (!workspace || !configuration) {\n return null\n }\n\n const hasWorkspaceTooltip = workspace.name.length >= 25\n const workspaceTooltipProps = hasWorkspaceTooltip\n ? { \"data-tip\": workspace.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n const hasConfigurationTooltip = configuration.name.length >= 25\n const configurationTooltipProps = hasConfigurationTooltip\n ? { \"data-tip\": configuration.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nDataPreviewSubmenu.propTypes = {\n workspace: PropTypes.instanceOf(Record),\n configuration: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id, cid }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id),\n configuration: getWorkspaceConfigurationData(state, id, cid)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveWorkspace, retrieveConfiguration })(\n DataPreviewSubmenu\n)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\nimport ReactTooltip from \"react-tooltip\"\n\n// actions\nimport { retrieveWorkspace } from \"actions/workspace.action\"\nimport { retrieveConfiguration } from \"actions/configuration.action\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\nimport { getWorkspaceConfigurationData } from \"selectors/configuration.selector\"\n\nclass DataPreviewListSubmenu extends PureComponent {\n componentDidMount() {\n const {\n workspace,\n configuration,\n retrieveWorkspace,\n retrieveConfiguration,\n match: {\n params: { id, cid }\n }\n } = this.props\n\n if (!workspace) {\n retrieveWorkspace(id).catch(_noop)\n }\n\n if (!configuration) {\n retrieveConfiguration(id, cid).catch(_noop)\n }\n }\n\n render() {\n const {\n workspace,\n configuration,\n match: {\n params: { type }\n }\n } = this.props\n\n if (!workspace || !configuration) {\n return null\n }\n\n const hasWorkspaceTooltip = workspace.name.length >= 25\n const workspaceTooltipProps = hasWorkspaceTooltip\n ? { \"data-tip\": workspace.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n const hasConfigurationTooltip = configuration.name.length >= 25\n const configurationTooltipProps = hasConfigurationTooltip\n ? { \"data-tip\": configuration.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nDataPreviewListSubmenu.propTypes = {\n workspace: PropTypes.instanceOf(Record),\n configuration: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id, cid }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id),\n configuration: getWorkspaceConfigurationData(state, id, cid)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveWorkspace, retrieveConfiguration })(\n DataPreviewListSubmenu\n)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\nimport ReactTooltip from \"react-tooltip\"\n\n// actions\nimport { retrieveWorkspace } from \"actions/workspace.action\"\nimport { retrieveConfiguration } from \"actions/configuration.action\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\nimport { getWorkspaceConfigurationData } from \"selectors/configuration.selector\"\n\nclass WorkspaceConfigurationConfigurationJobsSubmenu extends PureComponent {\n componentDidMount() {\n const {\n workspace,\n configuration,\n retrieveWorkspace,\n retrieveConfiguration,\n match: {\n params: { id, cid }\n }\n } = this.props\n\n if (!workspace) {\n retrieveWorkspace(id).catch(_noop)\n }\n\n if (!configuration) {\n retrieveConfiguration(id, cid).catch(_noop)\n }\n }\n\n render() {\n const { workspace, configuration } = this.props\n\n if (!workspace || !configuration) {\n return null\n }\n\n const hasWorkspaceTooltip = workspace.name.length >= 25\n const workspaceTooltipProps = hasWorkspaceTooltip\n ? { \"data-tip\": workspace.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n const hasConfigurationTooltip = configuration.name.length >= 25\n const configurationTooltipProps = hasConfigurationTooltip\n ? { \"data-tip\": configuration.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nWorkspaceConfigurationConfigurationJobsSubmenu.propTypes = {\n workspace: PropTypes.instanceOf(Record),\n configuration: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id, cid }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id),\n configuration: getWorkspaceConfigurationData(state, id, cid)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveWorkspace, retrieveConfiguration })(\n WorkspaceConfigurationConfigurationJobsSubmenu\n)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\nimport ReactTooltip from \"react-tooltip\"\n\n// actions\nimport { retrieveWorkspace } from \"actions/workspace.action\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\nimport { getWorkspaceConfigurationData } from \"selectors/configuration.selector\"\n\nclass WorkspaceConfigurationConfigurationJobSubmenu extends PureComponent {\n componentDidMount() {\n const {\n workspace,\n retrieveWorkspace,\n match: {\n params: { id }\n }\n } = this.props\n\n if (!workspace) {\n retrieveWorkspace(id).catch(_noop)\n }\n }\n\n render() {\n const { workspace, configuration } = this.props\n\n if (!workspace || !configuration) {\n return null\n }\n\n const hasWorkspaceTooltip = workspace.name.length >= 25\n const workspaceTooltipProps = hasWorkspaceTooltip\n ? { \"data-tip\": workspace.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n const hasConfigurationTooltip = configuration.name.length >= 25\n const configurationTooltipProps = hasConfigurationTooltip\n ? { \"data-tip\": configuration.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nWorkspaceConfigurationConfigurationJobSubmenu.propTypes = {\n workspace: PropTypes.instanceOf(Record),\n configuration: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id, cid }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id),\n configuration: getWorkspaceConfigurationData(state, id, cid)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveWorkspace })(\n WorkspaceConfigurationConfigurationJobSubmenu\n)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\nimport ReactTooltip from \"react-tooltip\"\n\n// actions\nimport { retrieveWorkspace } from \"actions/workspace.action\"\nimport { retrieveConfiguration } from \"actions/configuration.action\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\nimport { getWorkspaceConfigurationData } from \"selectors/configuration.selector\"\n\nclass WorkspaceConfigurationConfigurationJobHistorySubmenu extends PureComponent {\n componentDidMount() {\n const {\n workspace,\n configuration,\n retrieveWorkspace,\n retrieveConfiguration,\n match: {\n params: { id, cid }\n }\n } = this.props\n\n if (!workspace) {\n retrieveWorkspace(id).catch(_noop)\n }\n\n if (!configuration) {\n retrieveConfiguration(id, cid).catch(_noop)\n }\n }\n\n render() {\n const {\n match: {\n params: { aid }\n }\n } = this.props\n const { workspace, configuration } = this.props\n\n if (!workspace || !configuration) {\n return null\n }\n\n const hasWorkspaceTooltip = workspace.name.length >= 25\n const workspaceTooltipProps = hasWorkspaceTooltip\n ? { \"data-tip\": workspace.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n const hasConfigurationTooltip = configuration.name.length >= 25\n const configurationTooltipProps = hasConfigurationTooltip\n ? { \"data-tip\": configuration.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nWorkspaceConfigurationConfigurationJobHistorySubmenu.propTypes = {\n workspace: PropTypes.instanceOf(Record),\n configuration: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id, cid }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id),\n configuration: getWorkspaceConfigurationData(state, id, cid)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveWorkspace, retrieveConfiguration })(\n WorkspaceConfigurationConfigurationJobHistorySubmenu\n)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\nimport ReactTooltip from \"react-tooltip\"\n\n// actions\nimport { retrieveWorkspace } from \"actions/workspace.action\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\n\nclass WorkspaceJobsSubmenu extends PureComponent {\n componentDidMount() {\n const {\n workspace,\n retrieveWorkspace,\n match: {\n params: { id }\n }\n } = this.props\n\n if (!workspace) {\n retrieveWorkspace(id).catch(_noop)\n }\n }\n\n render() {\n const { workspace } = this.props\n\n if (!workspace) {\n return null\n }\n\n const hasWorkspaceTooltip = workspace.name.length >= 25\n const workspaceTooltipProps = hasWorkspaceTooltip\n ? { \"data-tip\": workspace.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nWorkspaceJobsSubmenu.propTypes = {\n workspace: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveWorkspace })(WorkspaceJobsSubmenu)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport { NavLink } from \"react-router-dom\"\nimport ReactTooltip from \"react-tooltip\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\n\nclass WorkspaceJobSubmenu extends PureComponent {\n render() {\n const { workspace } = this.props\n\n if (!workspace) {\n return null\n }\n\n const hasWorkspaceTooltip = workspace.name.length >= 25\n const workspaceTooltipProps = hasWorkspaceTooltip\n ? { \"data-tip\": workspace.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nWorkspaceJobSubmenu.propTypes = {\n workspace: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id)\n }\n}\n\nexport default connect(mapStateToProps)(WorkspaceJobSubmenu)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport { NavLink } from \"react-router-dom\"\nimport ReactTooltip from \"react-tooltip\"\nimport _noop from \"lodash/noop\"\n\n// actions\nimport { retrieveWorkspace } from \"actions/workspace.action\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\n\nclass WorkspaceJobSubmenu extends PureComponent {\n componentDidMount() {\n const {\n retrieveWorkspace,\n workspace,\n match: {\n params: { id }\n }\n } = this.props\n\n if (!workspace) {\n retrieveWorkspace(id).catch(_noop)\n }\n }\n\n render() {\n const {\n workspace,\n match: {\n params: { aid }\n }\n } = this.props\n\n if (!workspace) {\n return null\n }\n\n const hasWorkspaceTooltip = workspace.name.length >= 25\n const workspaceTooltipProps = hasWorkspaceTooltip\n ? { \"data-tip\": workspace.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nWorkspaceJobSubmenu.propTypes = {\n workspace: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveWorkspace })(WorkspaceJobSubmenu)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\nimport ReactTooltip from \"react-tooltip\"\n\n// actions\nimport { retrieveWorkspace } from \"actions/workspace.action\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\n\nclass WorkspaceHistorySubmenu extends PureComponent {\n componentDidMount() {\n const {\n workspace,\n retrieveWorkspace,\n match: {\n params: { id }\n }\n } = this.props\n\n if (!workspace) {\n retrieveWorkspace(id).catch(_noop)\n }\n }\n\n render() {\n const { workspace } = this.props\n\n if (!workspace) {\n return null\n }\n\n const hasWorkspaceTooltip = workspace.name.length >= 25\n const workspaceTooltipProps = hasWorkspaceTooltip\n ? { \"data-tip\": workspace.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nWorkspaceHistorySubmenu.propTypes = {\n workspace: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveWorkspace })(WorkspaceHistorySubmenu)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\nimport ReactTooltip from \"react-tooltip\"\n\n// actions\nimport { retrieveWorkspace } from \"actions/workspace.action\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\n\nclass WorkspaceHistoryDetailSubmenu extends PureComponent {\n componentDidMount() {\n const {\n workspace,\n retrieveWorkspace,\n match: {\n params: { id }\n }\n } = this.props\n\n if (!workspace) {\n retrieveWorkspace(id).catch(_noop)\n }\n }\n\n render() {\n const { workspace } = this.props\n\n if (!workspace) {\n return null\n }\n\n const hasWorkspaceTooltip = workspace.name.length >= 25\n const workspaceTooltipProps = hasWorkspaceTooltip\n ? { \"data-tip\": workspace.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nWorkspaceHistoryDetailSubmenu.propTypes = {\n workspace: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveWorkspace })(WorkspaceHistoryDetailSubmenu)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\nimport ReactTooltip from \"react-tooltip\"\n\n// actions\nimport { retrieveWorkspace } from \"actions/workspace.action\"\nimport { retrieveConfiguration } from \"actions/configuration.action\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\nimport { getWorkspaceConfigurationData } from \"selectors/configuration.selector\"\n\nclass ConfigurationHistorySubmenu extends PureComponent {\n componentDidMount() {\n const {\n workspace,\n configuration,\n retrieveWorkspace,\n retrieveConfiguration,\n match: {\n params: { id, cid }\n }\n } = this.props\n\n if (!workspace) {\n retrieveWorkspace(id).catch(_noop)\n }\n\n if (!configuration) {\n retrieveConfiguration(id, cid).catch(_noop)\n }\n }\n\n render() {\n const { workspace, configuration } = this.props\n\n if (!workspace || !configuration) {\n return null\n }\n\n const hasWorkspaceTooltip = workspace.name.length >= 25\n const workspaceTooltipProps = hasWorkspaceTooltip\n ? { \"data-tip\": workspace.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n const hasConfigurationTooltip = configuration.name.length >= 25\n const configurationTooltipProps = hasConfigurationTooltip\n ? { \"data-tip\": configuration.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nConfigurationHistorySubmenu.propTypes = {\n workspace: PropTypes.instanceOf(Record),\n configuration: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id, cid }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id),\n configuration: getWorkspaceConfigurationData(state, id, cid)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveWorkspace, retrieveConfiguration })(\n ConfigurationHistorySubmenu\n)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\nimport ReactTooltip from \"react-tooltip\"\n\n// actions\nimport { retrieveWorkspace } from \"actions/workspace.action\"\nimport { retrieveConfiguration } from \"actions/configuration.action\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\nimport { getWorkspaceConfigurationData } from \"selectors/configuration.selector\"\n\nclass ConfigurationHistoryDetailSubmenu extends PureComponent {\n componentDidMount() {\n const {\n workspace,\n configuration,\n retrieveWorkspace,\n retrieveConfiguration,\n match: {\n params: { id, cid }\n }\n } = this.props\n\n if (!workspace) {\n retrieveWorkspace(id).catch(_noop)\n }\n\n if (!configuration) {\n retrieveConfiguration(id, cid).catch(_noop)\n }\n }\n\n render() {\n const { workspace, configuration } = this.props\n\n if (!workspace || !configuration) {\n return null\n }\n\n const hasWorkspaceTooltip = workspace.name.length >= 25\n const workspaceTooltipProps = hasWorkspaceTooltip\n ? { \"data-tip\": workspace.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n const hasConfigurationTooltip = configuration.name.length >= 25\n const configurationTooltipProps = hasConfigurationTooltip\n ? { \"data-tip\": configuration.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nConfigurationHistoryDetailSubmenu.propTypes = {\n workspace: PropTypes.instanceOf(Record),\n configuration: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id, cid }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id),\n configuration: getWorkspaceConfigurationData(state, id, cid)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveWorkspace, retrieveConfiguration })(\n ConfigurationHistoryDetailSubmenu\n)\n","import _toInteger from \"lodash/toInteger\"\n\nexport const getDawgs = state => state.dawgs.get(\"dawgs\")\nexport const getDawgsSelectionSettings = state => state.dawgs.get(\"selectionSettings\")\nexport const getDawgsHasMoreItem = state => state.dawgs.get(\"hasMoreItems\")\nexport const getLastDawgsJobs = state => state.dawgs.get(\"lastJobs\")\nexport const getDawgRecord = (state, id) => {\n if (state.dawgs.get(\"dawgs\")) {\n return state.dawgs.get(\"dawgs\").find(dawg => dawg.id === _toInteger(id))\n } else {\n return null\n }\n}\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport ReactTooltip from \"react-tooltip\"\nimport { NavLink } from \"react-router-dom\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// selectors\nimport { getDawgRecord } from \"selectors/dawg.selector\"\n\nclass DawgDetailSubmenu extends PureComponent {\n render() {\n const { dawg } = this.props\n\n if (!dawg) {\n return null\n }\n\n const hasDawgTooltip = dawg.name.length >= 70\n const dawgTooltipProps = hasDawgTooltip\n ? { \"data-tip\": dawg.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nDawgDetailSubmenu.propTypes = {\n dawg: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id }\n }\n } = ownProps\n return {\n dawg: getDawgRecord(state, id)\n }\n}\n\nexport default connect(mapStateToProps)(DawgDetailSubmenu)\n","import _get from \"lodash/get\"\nimport { api } from \"api\"\nimport { DAWG, TAG } from \"sharedConstants\"\n\nexport const fetchDawgList = (\n offset,\n limit,\n loadFullStructure = 1,\n orderBy = \"id\",\n orderDir = \"DESC\",\n nameFilter = \"\",\n tagIds = [],\n showEnabled = 1,\n showDisabled = 1\n) => async dispatch =>\n dispatch({\n type: DAWG.ACTION.LIST,\n payload: {\n promise: (async () => {\n return await api().dawg.list(\n offset,\n limit,\n loadFullStructure,\n orderBy,\n orderDir,\n nameFilter,\n tagIds,\n showEnabled,\n showDisabled\n )\n })()\n }\n })\n\nexport const fetchLastDawgsJobs = (dawgIds, loadFullStructure) => async dispatch => {\n const response = await api().dawg.listLastJobs(dawgIds, loadFullStructure)\n return dispatch({\n type: DAWG.ACTION.LIST_LAST_JOBS,\n payload: _get(response, \"last_dawg_jobs\", [])\n })\n}\n\nexport const createDawg = (data, loadFullStructure = 1) => async dispatch =>\n dispatch({\n type: DAWG.ACTION.CREATE,\n payload: {\n promise: (async () => {\n const response = await api().dawg.create(data, loadFullStructure)\n return _get(response, \"dawg\", {})\n })()\n }\n })\n\nexport const modifyDawg = (id, data, originData = {}, loadFullStructure = 1) => async dispatch =>\n dispatch({\n type: DAWG.ACTION.MODIFY,\n payload: {\n promise: (async () => {\n const response = await api().dawg.modify(id, data, originData, loadFullStructure)\n return _get(response, \"dawg\", {})\n })()\n }\n })\n\nexport const deleteDawg = id => async dispatch =>\n dispatch({\n type: DAWG.ACTION.DELETE,\n payload: {\n promise: (async () => {\n await api().dawg.delete(id)\n return id\n })()\n }\n })\n\nexport const retrieveDawg = (id, loadFullStructure = 1) => async dispatch =>\n dispatch({\n type: DAWG.ACTION.RETRIEVE,\n payload: {\n promise: (async () => {\n const response = await api().dawg.retrieve(id, loadFullStructure)\n return _get(response, \"dawg\", {})\n })()\n }\n })\n\nexport const assignTagToDawg = (dawgId, data, loadFullStructure = 1) => async dispatch =>\n dispatch({\n type: TAG.ACTION.ASSIGN_TAG_TO_DAWG,\n payload: {\n promise: (async () => {\n const response = await api().dawg.tag.assign(dawgId, data, loadFullStructure)\n return _get(response, \"dawg_tag\", {})\n })()\n }\n })\n\nexport const unassignTagFromDawg = (dawgId, tagId) => async dispatch =>\n dispatch({\n type: TAG.ACTION.DELETE_TAG_FROM_DAWG,\n payload: {\n promise: (async () => {\n await api().dawg.tag.delete(dawgId, tagId)\n return {\n dawg_id: dawgId,\n tag_id: tagId\n }\n })()\n }\n })\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport ReactTooltip from \"react-tooltip\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// actions\nimport { retrieveDawg } from \"actions/dawg.action\"\n\n// selectors\nimport { getDawgRecord } from \"selectors/dawg.selector\"\n\nclass DawgHistorySubmenu extends PureComponent {\n componentDidMount() {\n const {\n dawg,\n retrieveDawg,\n match: {\n params: { id }\n }\n } = this.props\n\n if (!dawg) {\n retrieveDawg(id).catch(_noop)\n }\n }\n\n render() {\n const { dawg } = this.props\n\n if (!dawg) {\n return null\n }\n\n const hasDawgTooltip = dawg.name.length >= 25\n const dawgTooltipProps = hasDawgTooltip\n ? { \"data-tip\": dawg.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nDawgHistorySubmenu.propTypes = {\n dawg: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id }\n }\n } = ownProps\n return {\n dawg: getDawgRecord(state, id)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveDawg })(DawgHistorySubmenu)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport ReactTooltip from \"react-tooltip\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// actions\nimport { retrieveDawg } from \"actions/dawg.action\"\n\n// selectors\nimport { getDawgRecord } from \"selectors/dawg.selector\"\n\nclass DawgHistoryDetailSubmenu extends PureComponent {\n componentDidMount() {\n const {\n dawg,\n retrieveDawg,\n match: {\n params: { id }\n }\n } = this.props\n\n if (!dawg) {\n retrieveDawg(id).catch(_noop)\n }\n }\n\n render() {\n const { dawg } = this.props\n\n if (!dawg) {\n return null\n }\n\n const hasDawgTooltip = dawg.name.length >= 25\n const dawgTooltipProps = hasDawgTooltip\n ? { \"data-tip\": dawg.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nDawgHistoryDetailSubmenu.propTypes = {\n dawg: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id }\n }\n } = ownProps\n return {\n dawg: getDawgRecord(state, id)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveDawg })(DawgHistoryDetailSubmenu)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport ReactTooltip from \"react-tooltip\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// actions\nimport { retrieveDawg } from \"actions/dawg.action\"\n\n// selectors\nimport { getDawgRecord } from \"selectors/dawg.selector\"\n\nclass DawgJobsSubmenu extends PureComponent {\n componentDidMount() {\n const {\n dawg,\n retrieveDawg,\n match: {\n params: { id }\n }\n } = this.props\n\n if (!dawg) {\n retrieveDawg(id).catch(_noop)\n }\n }\n\n render() {\n const { dawg } = this.props\n\n if (!dawg) {\n return null\n }\n\n const hasDawgTooltip = dawg.name.length >= 25\n const dawgTooltipProps = hasDawgTooltip\n ? { \"data-tip\": dawg.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nDawgJobsSubmenu.propTypes = {\n dawg: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id }\n }\n } = ownProps\n return {\n dawg: getDawgRecord(state, id)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveDawg })(DawgJobsSubmenu)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport ReactTooltip from \"react-tooltip\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// actions\nimport { retrieveDawg } from \"actions/dawg.action\"\n\n// selectors\nimport { getDawgRecord } from \"selectors/dawg.selector\"\n\nclass DawgJobSubmenu extends PureComponent {\n componentDidMount() {\n const {\n dawg,\n retrieveDawg,\n match: {\n params: { id }\n }\n } = this.props\n\n if (!dawg) {\n retrieveDawg(id).catch(_noop)\n }\n }\n\n render() {\n const { dawg } = this.props\n\n if (!dawg) {\n return null\n }\n\n const hasDawgTooltip = dawg.name.length >= 25\n const dawgTooltipProps = hasDawgTooltip\n ? { \"data-tip\": dawg.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nDawgJobSubmenu.propTypes = {\n dawg: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id }\n }\n } = ownProps\n return {\n dawg: getDawgRecord(state, id)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveDawg })(DawgJobSubmenu)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport ReactTooltip from \"react-tooltip\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// actions\nimport { retrieveDawg } from \"actions/dawg.action\"\n\n// selectors\nimport { getDawgRecord } from \"selectors/dawg.selector\"\n\nclass DawgJobHistory extends PureComponent {\n componentDidMount() {\n const {\n dawg,\n retrieveDawg,\n match: {\n params: { id }\n }\n } = this.props\n\n if (!dawg) {\n retrieveDawg(id).catch(_noop)\n }\n }\n\n render() {\n const {\n dawg,\n match: {\n params: { aid }\n }\n } = this.props\n\n if (!dawg) {\n return null\n }\n\n const hasDawgTooltip = dawg.name.length >= 25\n const dawgTooltipProps = hasDawgTooltip\n ? { \"data-tip\": dawg.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nDawgJobHistory.propTypes = {\n dawg: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id }\n }\n } = ownProps\n return {\n dawg: getDawgRecord(state, id)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveDawg })(DawgJobHistory)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Record } from \"immutable\"\nimport ReactTooltip from \"react-tooltip\"\nimport { NavLink } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\n\n// actions\nimport { retrieveDawg } from \"actions/dawg.action\"\n\n// selectors\nimport { getDawgRecord } from \"selectors/dawg.selector\"\n\nclass DawgWorkspaceJobsSubmenu extends PureComponent {\n componentDidMount() {\n const {\n dawg,\n retrieveDawg,\n match: {\n params: { id }\n }\n } = this.props\n\n if (!dawg) {\n retrieveDawg(id).catch(_noop)\n }\n }\n\n render() {\n const { dawg } = this.props\n\n if (!dawg) {\n return null\n }\n\n const hasDawgTooltip = dawg.name.length >= 25\n const dawgTooltipProps = hasDawgTooltip\n ? { \"data-tip\": dawg.name, \"data-for\": \"navigation-tooltip\" }\n : {}\n\n return (\n \n \n dataTip} place=\"bottom\" />\n \n )\n }\n}\n\nDawgWorkspaceJobsSubmenu.propTypes = {\n dawg: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id }\n }\n } = ownProps\n return {\n dawg: getDawgRecord(state, id)\n }\n}\n\nexport default connect(mapStateToProps, { retrieveDawg })(DawgWorkspaceJobsSubmenu)\n","export default __webpack_public_path__ + \"static/media/client-dummy.add736b9.png\";","import React, { Component } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { NavLink, Link } from \"react-router-dom\"\nimport { withRouter } from \"react-router\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Route, Switch } from \"react-router-dom\"\nimport { CSSTransition } from \"react-transition-group\"\nimport _isNumber from \"lodash/isNumber\"\nimport _size from \"lodash/size\"\nimport _get from \"lodash/get\"\nimport moment from \"moment\"\nimport ReactTooltip from \"react-tooltip\"\n\nimport { logout } from \"actions/authenticatedUser.action\"\nimport { getRoutePath } from \"routes\"\nimport { isAdmin } from \"helpers/authenticatedUser.helper\"\nimport { api } from \"api\"\nimport PendingPromise from \"helpers/pendingPromise.helper\"\nimport DropdownMenu, {\n DropdownToggle,\n DropdownContent,\n DropdownMenuItem\n} from \"components/UI/elements/DropdownMenu\"\nimport Avatar from \"components/UI/elements/Avatar\"\nimport IconButton from \"components/UI/elements/IconButton\"\n\n// submenu components\nimport WorkspaceDetailSubmenu from \"./SubmenuComponent/WorkspaceDetailSubmenu\"\nimport WorkspaceConfigurationCreateSubmenu from \"./SubmenuComponent/WorkspaceConfigurationCreateSubmenu\"\nimport WorkspaceConfigurationJobsSubmenu from \"./SubmenuComponent/WorkspaceConfigurationJobsSubmenu\"\nimport WorkspaceConfigurationSubmenu from \"./SubmenuComponent/WorkspaceConfigurationSubmenu\"\nimport DataPreviewSubmenu from \"./SubmenuComponent/DataPreviewSubmenu\"\nimport DataPreviewListSubmenu from \"./SubmenuComponent/DataPreviewListSubmenu\"\nimport WorkspaceConfigurationConfigurationJobsSubmenu from \"./SubmenuComponent/WorkspaceConfigurationConfigurationJobsSubmenu\"\nimport WorkspaceConfigurationConfigurationJobSubmenu from \"./SubmenuComponent/WorkspaceConfigurationConfigurationJobSubmenu\"\nimport WorkspaceConfigurationConfigurationJobHistorySubmenu from \"./SubmenuComponent/WorkspaceConfigurationConfigurationJobHistorySubmenu\"\nimport WorkspaceJobsSubmenu from \"./SubmenuComponent/WorkspaceJobsSubmenu\"\nimport WorkspaceJobSubmenu from \"./SubmenuComponent/WorkspaceJobSubmenu\"\nimport WorkspaceJobHistorySubmenu from \"./SubmenuComponent/WorkspaceJobHistorySubmenu\"\nimport WorkspaceHistorySubmenu from \"./SubmenuComponent/WorkspaceHistorySubmenu\"\nimport WorkspaceHistoryDetailSubmenu from \"./SubmenuComponent/WorkspaceHistoryDetailSubmenu\"\nimport ConfigurationHistorySubmenu from \"./SubmenuComponent/ConfigurationHistorySubmenu\"\nimport ConfigurationHistoryDetailSubmenu from \"./SubmenuComponent/ConfigurationHistoryDetailSubmenu\"\nimport DawgDetailSubmenu from \"./SubmenuComponent/DawgDetailSubmenu\"\nimport DawgHistorySubmenu from \"./SubmenuComponent/DawgHistorySubmenu\"\nimport DawgHistoryDetailSubmenu from \"./SubmenuComponent/DawgHistoryDetailSubmenu\"\nimport DawgJobsSubmenu from \"./SubmenuComponent/DawgJobsSubmenu\"\nimport DawgJobSubmenu from \"./SubmenuComponent/DawgJobSubmenu\"\nimport DawgJobHistorySubmenu from \"./SubmenuComponent/DawgJobHistorySubmenu\"\nimport DawgWorkspaceJobsSubmenu from \"./SubmenuComponent/DawgWorkspaceJobsSubmenu\"\n\nimport logo from \"images/meiro-symbol-white-transparent.svg\"\nimport clientDummyLogo from \"images/client-dummy.png\"\nimport \"./HeaderContainer.css\"\n\nconst meiroClientLogoSrc = `${process.env.PUBLIC_URL}/img/client/logo.png`\nlet meiroLocation = \"\"\nlet meiroClient = \"\"\nif (process.env.NODE_ENV === \"production\") {\n meiroLocation = \"[[MEIRO_LOCATION]]\"\n meiroClient = \"[[MEIRO_CLIENT]]\"\n} else {\n meiroLocation = process.env.REACT_APP_MEIRO_LOCATION\n meiroClient = process.env.REACT_APP_CLIENT_NAME === '\"\"' ? \"\" : process.env.REACT_APP_CLIENT_NAME\n}\n\nconst AdminSubmenu = () => (\n \n)\n\nconst WorkspacesListSubmenu = () => (\n \n)\n\nconst DawgListSubmenu = () => (\n \n)\n\nconst SearchSubmenu = () => (\n \n)\n\nconst ProjectConfigurationJobListSubmenu = () => (\n \n)\n\nconst ProjectWorkspaceJobListSubmenu = () => (\n \n)\n\nconst TrashListSubmenu = () => (\n \n)\n\nconst DropDownSubmenu = () => (\n \n)\n\nclass HeaderContainer extends Component {\n constructor(props) {\n super(props)\n this.wrapperRef = React.createRef()\n this.state = {\n userMenu: false,\n monitoring: {\n open: false,\n loading: false,\n data: null\n }\n }\n this.pendingPromises = new PendingPromise()\n }\n\n componentDidMount() {\n this.setState(prevState => ({\n monitoring: {\n ...prevState.monitoring,\n loading: true\n }\n }))\n this.retrieveSystemInfo()\n }\n\n componentWillUnmount() {\n clearInterval(this.intervalId)\n this.pendingPromises.cancelAll()\n }\n\n toggleUserMenu = () => {\n this.setState(prevState => ({\n userMenu: !prevState.userMenu\n }))\n }\n\n authenticatedUserLogout = () => {\n const { authenticatedUser, logout } = this.props\n if (!authenticatedUser.logoutDisabled) {\n logout(true)\n }\n }\n\n openLink = url => () => {\n window.open(url, \"_blank\")\n }\n\n retrieveSystemInfo = async () => {\n const systemInfoRequest = this.pendingPromises.create(api().systemInfo())\n try {\n const response = await systemInfoRequest.promise\n this.setState(prevState => ({\n monitoring: {\n ...prevState.monitoring,\n loading: false,\n data: response.system_info\n }\n }))\n } catch (err) {\n if (!_get(err, \"isCanceled\")) {\n this.setState(prevState => ({\n monitoring: {\n ...prevState.monitoring,\n loading: false\n }\n }))\n }\n } finally {\n this.pendingPromises.remove(systemInfoRequest)\n }\n }\n\n toggleMonitoringSection = () => {\n const { open } = this.state.monitoring\n this.setState(prevState => ({\n monitoring: {\n ...prevState.monitoring,\n open: !open,\n loading: !open ? true : false\n }\n }))\n if (!open) {\n // fetch and start refreshing interval\n this.retrieveSystemInfo()\n this.intervalId = setInterval(this.retrieveSystemInfo, 10000)\n document.body.classList.add(\"monitoring-visible\")\n } else {\n clearInterval(this.intervalId)\n document.body.classList.remove(\"monitoring-visible\")\n }\n }\n\n renderDiskUsageMessage = () => {\n const { data } = this.state.monitoring\n if (!data) return null\n const totalSpace = _isNumber(data.disk_space.size) ? data.disk_space.size * 1024 : 0\n const usedSpace = _isNumber(data.disk_space.used) ? data.disk_space.used * 1024 : 0\n if (0 === totalSpace) {\n return 0B out of 0B\n }\n const e = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"]\n const c = 1024\n const f = Math.floor(Math.log(totalSpace) / Math.log(c))\n\n return (\n \n {parseFloat((usedSpace / Math.pow(c, f)).toFixed(2)) + e[f]} out of{\" \"}\n {parseFloat((totalSpace / Math.pow(c, f)).toFixed(2)) + e[f]}\n \n )\n }\n\n getDiskUsagePercentage = () => {\n const { data } = this.state.monitoring\n if (!data) return null\n const totalSpace = data.disk_space.size\n const usedSpace = data.disk_space.used\n return Math.round(usedSpace / (totalSpace / 100))\n }\n\n drawPie = () => {\n const { data } = this.state.monitoring\n // round degrees\n if (data) {\n const usedDiskPercent = this.getDiskUsagePercentage()\n const degrees = Math.round(360 * (usedDiskPercent / 100))\n const radians = degrees * (Math.PI / 180)\n const x = 11 + 11 * Math.sin(radians)\n const y = 11 - 11 * Math.cos(radians)\n return (\n \n \n {degrees <= 180 && }\n {degrees > 180 && }\n \n )\n }\n return null\n }\n\n goToLogs = () => {\n this.openLink(`${window.location.origin}/logs`)()\n }\n\n goToSqlClient = () => {\n this.openLink(`${window.location.origin}/sql`)()\n }\n\n render() {\n const { authenticatedUser } = this.props\n const { userMenu, monitoring } = this.state\n\n return (\n
    \n
    \n
    \n
    \n \n \"logo\"\n
    \n {\n evt.target.src = clientDummyLogo\n evt.target.className = \"dummy\"\n }}\n src={meiroClientLogoSrc}\n alt=\"client logo\"\n />\n
    \n {_size(meiroClient) === 0 && (\n

    \n Integrations\n

    \n )}\n {_size(meiroClient) > 0 && (\n

    \n Integrations for\n {meiroClient}\n

    \n )}\n \n
    \n \n
    \n
    \n \n \n \n {isAdmin() && (\n \n \n \n )}\n \n \n \n
    \n \n \n \n {userMenu && }\n {!userMenu && }\n \n \n \n User settings\n \n {isAdmin() && (\n \n Logs\n \n )}\n {isAdmin() && (\n \n SQL Client\n \n )}\n \n Help\n \n \n Terms &\n Conditions\n \n \n Logout\n \n
    \n
    \n \n Location:\n \n {meiroLocation}\n
    \n {monitoring.data?.version && (\n
    \n \n Version:\n {\" \"}\n {monitoring.data.version}\n
    \n )}\n {monitoring.data?.build_date && (\n
    \n \n Build date:\n {\" \"}\n \n {moment(new Date(`${monitoring.data.build_date}T00:00`)).format(\n \"D MMM YYYY\"\n )}\n \n
    \n )}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n\n \n\n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n
    \n \n
    \n {monitoring.data && (\n \n
    \n space used:\n {this.drawPie()}\n
    \n {this.getDiskUsagePercentage()}%\n {this.renderDiskUsageMessage()}\n
    \n
    \n
    \n
    \n \n \n \n \n
    \n \n The load shows how occupied the server is. If it is higher than the number of\n cores, it means the server is over-utilized. More info{\" \"}\n \n here\n \n .\n \n
    \n {monitoring.data.system_one_minute_load}\n \n out of {monitoring.data.cpu_cores_count}{\" \"}\n {monitoring.data.cpu_cores_count === 1 ? \"core\" : \"cores\"}\n \n
    \n
    \n
    \n \n
    \n {monitoring.data.mi_workers_count}\n \n worker{monitoring.data.mi_workers_count > 1 ? \"s\" : \"\"}\n \n
    \n
    \n \n \n \n
    \n )}\n
    \n \n
    \n
    \n )\n }\n}\n\nHeaderContainer.propTypes = {\n authenticatedUser: PropTypes.object.isRequired\n}\n\nfunction mapStateToProps({ authenticatedUser }) {\n return { authenticatedUser }\n}\n\nexport default withRouter(connect(mapStateToProps, { logout })(HeaderContainer))\n","import React, { PureComponent } from \"react\"\nimport { withRouter } from \"react-router-dom\"\n\nimport { getRoutePath } from \"routes\"\n\nimport \"./FooterContainer.css\"\n\nimport meiroGreyLogoSrc from \"images/meiro-wide-grey.png\"\nconst meiroClientLogoSrc = `${process.env.PUBLIC_URL}/img/client/logo.png`\n\nclass FooterContainer extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n clientLogoExists: true,\n clientLogoLoaded: false\n }\n }\n\n onClientLogoError = () => {\n this.setState({\n clientLogoExists: false\n })\n }\n\n onClientLogoLoad = () => {\n this.setState({\n clientLogoLoaded: true\n })\n }\n\n render() {\n const { clientLogoExists, clientLogoLoaded } = this.state\n const pathname = window.location.pathname\n\n if (pathname === getRoutePath(\"workspace.list\") || pathname === getRoutePath(\"dashboard\")) {\n return null\n }\n\n return (\n
    \n
    \n \"meiro\n {clientLogoExists && clientLogoLoaded &&
    }\n {clientLogoExists && (\n \n )}\n
    \n
    \n )\n }\n}\n\nexport default withRouter(FooterContainer)\n","export default \"data:image/png;base64,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\"","import React from \"react\"\nimport { Route, Redirect } from \"react-router-dom\"\nimport { isAdmin } from \"helpers/authenticatedUser.helper\"\nimport { getRoutePath } from \"routes\"\n\nconst AdminProtectedRoute = ({ component: Component, ...rest }) => (\n \n isAdmin() ? : \n }\n />\n)\n\nexport default AdminProtectedRoute\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport \"./PaperHeader.css\"\n\nconst PaperHeader = ({ className, children, size, titleText, subTitleText }) => (\n
    \n {titleText && (\n
    \n

    {titleText}

    \n {subTitleText &&

    {subTitleText}

    }\n
    \n )}\n {children}\n
    \n)\n\nPaperHeader.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node,\n size: PropTypes.string,\n titleText: PropTypes.string,\n subTitleText: PropTypes.string\n}\n\nexport default PaperHeader\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Form, reduxForm, Field } from \"redux-form\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport _get from \"lodash/get\"\nimport ReactTooltip from \"react-tooltip\"\n\n// ui components\nimport TextField from \"components/UI/elements/TextField\"\n\nimport { renderTooltip } from \"helpers/disabledTooltip.helper\"\n\nimport \"./NameForm.css\"\n\nclass NameForm extends Component {\n constructor(props) {\n super(props)\n const name = _get(this.props, \"initialValues.name\", \"Undefined name\")\n this.state = {\n fontSize: this.getFontSizeBasedOnName(name)\n }\n }\n\n componentDidUpdate(prevProps) {\n const namePrev = _get(prevProps, \"initialValues.name\")\n const nameNow = _get(this.props, \"initialValues.name\")\n if (namePrev !== nameNow) {\n this.updateFontSize(nameNow)\n }\n }\n\n getFontSizeBasedOnName = name => {\n let fontSize = \"large\"\n if (name.length > 34) {\n fontSize = \"x-small\"\n } else if (name.length > 28) {\n fontSize = \"small\"\n } else if (name.length > 22) {\n fontSize = \"medium\"\n } else if (name.length > 16) {\n fontSize = \"big\"\n }\n return fontSize\n }\n\n updateFontSize = name => {\n const fontSize = this.getFontSizeBasedOnName(name)\n if (this.state.fontSize !== fontSize) {\n this.setState({\n fontSize\n })\n }\n }\n\n onSubmit = values => {\n if (!values.name) {\n this.setState({\n error: true\n })\n } else {\n const { handleNameChange, toggleEditMode } = this.props\n toggleEditMode()()\n if (handleNameChange) {\n handleNameChange(values.name)\n }\n }\n }\n\n onChange = evt => {\n const value = _get(evt, \"target.value\")\n if (!value) {\n this.setState({\n error: true\n })\n } else {\n if (this.state.error) {\n this.setState({\n error: false\n })\n }\n this.updateFontSize(value)\n }\n }\n\n toggleNameForm = () => {\n const { toggleEditMode, editMode } = this.props\n toggleEditMode(() => {\n if (!editMode) {\n // will be opened now\n this.fieldRef.focus()\n } else {\n this.setState({\n error: false\n })\n }\n })()\n }\n\n cancelEditing = () => {\n const name = _get(this.props, \"initialValues.name\", \"Undefined name\")\n this.props.reset()\n this.toggleNameForm()\n this.updateFontSize(name)\n }\n\n render() {\n const {\n handleSubmit,\n isEditable,\n form,\n size,\n label,\n initialValues,\n readOnlySign,\n editMode,\n readyToEdit,\n currentlyEditing = \"\",\n tooltipId = \"\"\n } = this.props\n const { error, fontSize } = this.state\n const name = _get(initialValues, \"name\", \"Undefined name\")\n\n let showTooltipOnHover = false\n if (this.fieldRef) {\n if (this.fieldRef.scrollWidth > this.fieldRef.clientWidth) {\n showTooltipOnHover = true\n }\n }\n\n return (\n \n {isEditable && (\n 0 && !editMode}\n data-for={currentlyEditing.length > 0 && !editMode ? tooltipId : false}\n >\n \n {\n this.fieldRef = input\n }}\n className={editMode ? `edit-mode ${fontSize}` : fontSize}\n onChange={this.onChange}\n />\n {editMode && (\n \n \n {!error && (\n \n )}\n \n )}\n {!editMode && isEditable && !currentlyEditing && (\n \n Edit\n \n )}\n {showTooltipOnHover && (\n \n {name}\n \n )}\n \n )}\n {!isEditable && (\n
    \n \n

    \n {name}\n {readOnlySign ? (\n \n {\" \"}\n \n View-only\n \n \n ) : (\n \"\"\n )}\n

    \n
    \n )}\n {renderTooltip(tooltipId, currentlyEditing)}\n
    \n )\n }\n}\n\nNameForm.defaultProps = {\n readyToEdit: true\n}\n\nNameForm.propTypes = {\n form: PropTypes.string.isRequired,\n initialValues: PropTypes.object,\n handleNameChange: PropTypes.func,\n handleSubmit: PropTypes.func.isRequired,\n isEditable: PropTypes.bool.isRequired,\n size: PropTypes.string,\n label: PropTypes.string.isRequired,\n readOnlySign: PropTypes.bool,\n currentlyEditing: PropTypes.string,\n tooltipId: PropTypes.string,\n editMode: PropTypes.bool.isRequired,\n toggleEditMode: PropTypes.func.isRequired,\n readyToEdit: PropTypes.bool\n}\n\nexport default reduxForm({\n enableReinitialize: true\n})(NameForm)\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport _noop from \"lodash/noop\"\n\nimport { renderTooltip } from \"helpers/disabledTooltip.helper\"\n\nimport \"./ToggleSwitch.css\"\n\nconst ToggleSwitch = ({\n name,\n leftValue,\n rightValue,\n leftText,\n rightText,\n checked,\n handleToggle,\n width,\n disabled,\n className,\n tooltipId = \"toggle-tooltip\",\n currentlyEditing = \"\",\n ...attrs\n}) => (\n 0 ? \"disabled\" : \"\"} ${\n className ? className : \"\"\n }`}\n style={{ width: width }}\n {...attrs}\n >\n 0}\n data-for={currentlyEditing.length > 0 ? tooltipId : false}\n >\n 0 ? _noop : handleToggle}\n data-testid=\"left-input\"\n />\n \n 0 ? _noop : handleToggle}\n data-testid=\"right-input\"\n />\n \n \n

    \n {renderTooltip(tooltipId, currentlyEditing)}\n
    \n)\n\nToggleSwitch.propTypes = {\n width: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n leftValue: PropTypes.string.isRequired,\n rightValue: PropTypes.string.isRequired,\n leftText: PropTypes.string,\n rightText: PropTypes.string,\n checked: PropTypes.string.isRequired,\n handleToggle: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n tooltipId: PropTypes.string,\n currentlyEditing: PropTypes.string\n}\n\nexport default ToggleSwitch\n","import React, { PureComponent } from \"react\"\n\nimport \"./WsConfStickyNav.css\"\n\nclass WsConfStickyNav extends PureComponent {\n constructor(props) {\n super(props)\n this.stickyNavRef = React.createRef()\n }\n\n componentDidMount() {\n window.addEventListener(\"scroll\", this.onScroll)\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.onScroll)\n }\n\n onScroll = () => {\n const stickyNav = this.stickyNavRef.current\n if (stickyNav) {\n if (document.body.scrollTop > 230 || document.documentElement.scrollTop > 230) {\n stickyNav.style.top = \"0px\"\n } else {\n stickyNav.style.top = \"-65px\"\n }\n }\n }\n\n render() {\n return (\n
    \n
    {this.props.children}
    \n
    \n )\n }\n}\n\nexport default WsConfStickyNav\n","export const getComponentIconSrc = (icon, white = false) => {\n const publicUrl = `${process.env.PUBLIC_URL}/img/components`\n if (!icon) return white ? `${publicUrl}/white_dummy.png` : `${publicUrl}/dummy.png`\n return white ? `${publicUrl}/white_${icon}` : `${publicUrl}/${icon}`\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Link } from \"react-router-dom\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport TimeAgo from \"react-timeago\"\nimport moment from \"moment\"\nimport { Record, Map } from \"immutable\"\nimport _toString from \"lodash/toString\"\nimport _noop from \"lodash/noop\"\nimport ReactTooltip from \"react-tooltip\"\n\n// UI components-elements\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Button from \"components/UI/elements/Button\"\nimport NameForm from \"components/UI/components/NameForm\"\nimport ToggleSwitch from \"components/UI/elements/ToggleSwitch\"\nimport WsConfStickyNav from \"components/UI/elements/WsConfStickyNav\"\n\n// helpers\nimport { getRoutePath } from \"routes\"\nimport { getComponentIconSrc } from \"helpers/component.helper\"\nimport { shortenString } from \"helpers/string.helper\"\n\nimport \"./Header.css\"\n\nclass Header extends PureComponent {\n changeConfigurationName = name => {\n const { handleConfigurationModify, configuration } = this.props\n handleConfigurationModify(\n { name },\n { name: configuration.name },\n \"Configuration's name has been modified.\"\n ).catch(_noop)\n }\n\n toggleConfigurationDisabled = () => {\n const { configuration, handleConfigurationModify } = this.props\n handleConfigurationModify(\n { disabled: configuration.disabled ? 0 : 1 },\n {},\n configuration.disabled\n ? \"Configuration has been enabled.\"\n : \"Configuration has been disabled.\"\n )\n }\n\n toggleConfigurationContinueOnFailure = () => {\n const { configuration, handleConfigurationModify } = this.props\n handleConfigurationModify(\n { continue_on_failure: configuration.continue_on_failure ? 0 : 1 },\n {},\n configuration.continue_on_failure\n ? \"Workspace job will stop on configuration failure\"\n : \"Workspace job will continue on configuration failure\"\n )\n }\n\n renderComponentBox = () => {\n const { components, configuration } = this.props\n const component = components.get(_toString(configuration.component_id))\n if (!component) return null\n\n let icon = component.icon\n if (!icon) {\n icon = \"dummy.png\"\n }\n\n return (\n
    \n
    \n \"component\n
    \n
    \n

    \n {component.name}{\" \"}\n {component.hidden === 1 && (\n \n \n \n The component is deprecated, please consider a replacement.\n \n \n )}\n

    \n
    {component.type}
    \n
    \n
    \n )\n }\n\n renderBackButton = () => {\n const { backFunction } = this.props\n return (\n \n )\n }\n\n renderConfigurationName = () => {\n const { configuration } = this.props\n const name = configuration.name\n let className = \"\"\n if (name.length > 35) {\n className = \"x-small\"\n } else if (name.length > 30) {\n className = \"small\"\n } else if (name.length > 25) {\n className = \"mid\"\n }\n return

    {shortenString(name, 40)}

    \n }\n\n renderConfActionButtons = placement => {\n const {\n configuration,\n handleConfigurationDelete,\n handleConfigurationClone,\n handleDataErase,\n isEditable,\n currentlyEditing = \"\"\n } = this.props\n return (\n \n \n Delete\n \n \n Erase data\n \n \n Clone\n \n \n \n )\n }\n\n renderRunButton = placement => {\n const {\n handleConfigurationRun,\n handleConfigurationCancel,\n configurationStatus,\n isEditable,\n currentlyEditing = \"\"\n } = this.props\n\n return (\n \n {[\"waiting\", \"running\"].includes(configurationStatus) && (\n \n Cancel\n \n )}\n\n {![\"waiting\", \"running\"].includes(configurationStatus) && (\n \n Run\n \n )}\n \n )\n }\n\n render() {\n const {\n configuration,\n isEditable,\n components,\n toggleNameFormEditMode,\n nameFormEditMode,\n isConfigurationReloading,\n currentlyEditing = \"\"\n } = this.props\n\n return (\n
    \n
    {this.renderBackButton()}
    \n
    \n

    \n Saved{\" \"}\n {\n \n }\n

    \n \n Version history\n \n {this.renderConfActionButtons(\"regular-header\")}\n
    \n \n
    \n
    \n \n
    \n {Map.isMap(components) && this.renderComponentBox()}\n
    \n
    \n \n {this.renderRunButton(\"regular-header\")}\n
    \n
    \n \n
    \n {this.renderBackButton()}\n {this.renderConfigurationName()}\n
    \n
    \n {this.renderConfActionButtons(\"sticky-header\")}\n
    \n {this.renderRunButton(\"sticky-header\")}\n
    \n \n
    \n )\n }\n}\n\nHeader.propTypes = {\n configuration: PropTypes.instanceOf(Record).isRequired,\n handleConfigurationModify: PropTypes.func.isRequired,\n backFunction: PropTypes.func.isRequired,\n handleConfigurationDelete: PropTypes.func.isRequired,\n handleConfigurationClone: PropTypes.func.isRequired,\n handleConfigurationRun: PropTypes.func.isRequired,\n handleConfigurationCancel: PropTypes.func.isRequired,\n handleDataErase: PropTypes.func.isRequired,\n isEditable: PropTypes.bool.isRequired,\n currentlyEditing: PropTypes.string,\n components: PropTypes.instanceOf(Map),\n configurationStatus: PropTypes.string,\n toggleNameFormEditMode: PropTypes.func.isRequired,\n nameFormEditMode: PropTypes.bool.isRequired,\n isConfigurationReloading: PropTypes.bool.isRequired\n}\n\nexport default Header\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { CSSTransition } from \"react-transition-group\"\n\nimport IconButton from \"../IconButton\"\n\nimport \"./Modal.css\"\n\nclass Modal extends Component {\n componentDidMount() {\n if (this.props.open) {\n window.addEventListener(\"keyup\", this.handleKeyUp, false)\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.open && !prevProps.open) {\n window.addEventListener(\"keyup\", this.handleKeyUp, false)\n } else if (!this.props.open && prevProps.open) {\n window.removeEventListener(\"keyup\", this.handleKeyUp, false)\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"keyup\", this.handleKeyUp, false)\n }\n\n handleKeyUp = evt => {\n const { handleClose } = this.props\n const keys = {\n 27: () => {\n evt.preventDefault()\n handleClose()\n }\n }\n if (keys[evt.keyCode]) {\n keys[evt.keyCode]()\n }\n }\n\n render() {\n const { handleClose, children, className, hideCloseButton, title, open, size } = this.props\n return (\n \n
    \n \n
    \n

    {title}

    \n {!hideCloseButton && (\n \n \n \n )}\n
    \n
    \n {children}\n
    \n
    \n {\n if (open) {\n handleClose()\n }\n }}\n />\n
    \n \n )\n }\n}\n\nModal.propTypes = {\n open: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n hideCloseButton: PropTypes.bool,\n title: PropTypes.string.isRequired,\n size: PropTypes.string\n}\n\nexport default Modal\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport _isEmpty from \"lodash/isEmpty\"\n\nimport Modal from \"components/UI/elements/Modal\"\nimport Button from \"components/UI/elements/Button\"\nimport { MODAL } from \"sharedConstants\"\n\nimport \"./ConfirmModal.css\"\n\nconst ConfirmModal = ({\n open,\n type,\n handleClose,\n handleConfirm,\n title,\n text,\n htmlText = [],\n action,\n what,\n item,\n isLoading = false\n}) => {\n return (\n \n
    \n {text &&

    {text}

    }\n {!_isEmpty(htmlText) && htmlText}\n {item && !text && _isEmpty(htmlText) && (\n

    \n {`Do you want to ${action} this ${what}: `}\n {item}?\n

    \n )}\n {!item && !text && _isEmpty(htmlText) &&

    {`Do you want to ${action} this ${what}`}?

    }\n
    \n \n Cancel\n \n \n {type === MODAL.TYPE.SUCCESS || type === MODAL.TYPE.CANCEL ? \"confirm\" : type}\n \n
    \n
    \n
    \n )\n}\n\nConfirmModal.propTypes = {\n open: PropTypes.bool.isRequired,\n type: PropTypes.string.isRequired,\n handleClose: PropTypes.func.isRequired,\n handleConfirm: PropTypes.func.isRequired,\n title: PropTypes.string.isRequired,\n action: PropTypes.string,\n what: PropTypes.string,\n item: PropTypes.string,\n text: PropTypes.string,\n htmlText: PropTypes.array,\n isLoading: PropTypes.bool\n}\n\nexport default ConfirmModal\n","export const selectStyles = (size = \"big\", border = \"all\", maxMenuListHeight = \"300px\") => {\n let height = \"44px\"\n if (size === \"small\") {\n height = \"34px\"\n } else if (size === \"tag\") {\n height = \"24px\"\n }\n return {\n control: (base, state) => ({\n ...base,\n \":hover\": {\n borderColor: \"#999999\"\n },\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: state.isFocused ? \"#fabe53 !important\" : \"#C4C4C4\",\n boxShadow: state.isFocused ? \"0 1px 3px 0 rgba(254, 127, 102, 0.25)\" : \"none\",\n borderRadius: \"4px\",\n borderTopLeftRadius: border === \"no-left\" ? \"0\" : \"4px\",\n borderBottomLeftRadius: border === \"no-left\" ? \"0\" : \"4px\",\n borderLeftWidth: border === \"no-left\" ? \"0\" : \"1px\",\n height: height,\n minHeight: \"24px\",\n outline: \"none\",\n backgroundColor: \"#ffffff\",\n fontSize: size === \"tag\" ? \"12px\" : \"15px\",\n cursor: \"pointer\"\n }),\n valueContainer: (base, state) => ({\n ...base,\n opacity: \"0.7\"\n }),\n menu: (base, state) => ({\n ...base,\n borderRadius: \"4px\",\n marginTop: \"2px\"\n }),\n menuList: (base, state) => ({\n ...base,\n maxHeight: maxMenuListHeight\n }),\n option: (base, state) => ({\n ...base,\n backgroundColor: state.isSelected ? \"#fabe53\" : state.isFocused ? \"#fef8ee\" : null,\n color: state.isSelected ? \"#FFFFFF\" : null,\n cursor: \"pointer\",\n \":active\": {\n backgroundColor: \"#ffb433\",\n color: \"#ffffff\"\n },\n fontSize: size === \"tag\" ? \"12px\" : \"15px\"\n }),\n noOptionsMessage: base => ({\n ...base,\n color: \"#ed382a\",\n fontSize: size === \"tag\" ? \"12px\" : \"15px\"\n })\n }\n}\n\n//edit valueContainer for font style\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Select, { components } from \"react-select\"\nimport AsyncSelect from \"react-select/async\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nimport { selectStyles } from \"helpers/customSelectStyle.helper\"\nimport Avatar from \"../Avatar\"\n\nimport \"./SelectField.css\"\n\nexport const DropdownIndicator = props => {\n return (\n \n \n \n )\n}\n\nconst SingleValue = props => {\n const { data } = props\n\n return (\n \n
    \n {data.name && data.email && (\n \n )}\n {data.label}\n
    \n
    \n )\n}\n\nconst Option = props => {\n const { data } = props\n\n return (\n \n
    \n {data.name && data.email && (\n \n )}\n {data.label}\n
    \n
    \n )\n}\n\nconst SelectField = ({\n input,\n label,\n meta: { touched, error },\n options,\n isSearchable = true,\n className = \"\",\n size = \"medium\",\n async = false,\n loadOptions = () => {},\n onChange = () => {},\n placeholder = \"Search...\",\n maxDropdownHeight = \"300px\",\n disabled = false\n}) => {\n const onInputChange = input => value => {\n input.onChange(value)\n onChange()\n }\n\n const errorMessage = touched ? error : \"\"\n if (async) {\n return (\n
    \n \n \n {errorMessage &&

    {errorMessage}

    }\n
    \n )\n }\n return (\n \n \n \n {errorMessage &&

    {errorMessage}

    }\n \n )\n}\n\nSelectField.propTypes = {\n input: PropTypes.object.isRequired,\n label: PropTypes.string.isRequired,\n meta: PropTypes.object.isRequired,\n options: PropTypes.array,\n className: PropTypes.string,\n isSearchable: PropTypes.bool,\n async: PropTypes.bool,\n loadOptions: PropTypes.func,\n placeholder: PropTypes.string,\n maxDropdownHeight: PropTypes.string\n}\n\nexport default SelectField\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport { reduxForm, Form, Field } from \"redux-form\"\nimport PropTypes from \"prop-types\"\nimport { Record } from \"immutable\"\nimport _map from \"lodash/map\"\nimport _get from \"lodash/get\"\nimport _trim from \"lodash/trim\"\n\n// ui elements\nimport Modal from \"components/UI/elements/Modal\"\nimport Button from \"components/UI/elements/Button\"\nimport SelectField from \"components/UI/elements/SelectField\"\n\n// actions\nimport { showToast } from \"actions/toast.action\"\nimport { cloneConfiguration } from \"actions/configuration.action\"\n\n// helpers\nimport { api } from \"api\"\nimport AllResourceItemsFetcher from \"helpers/AllResourceItemsFetcher.helper\"\nimport { optionRequired } from \"helpers/validators.helper\"\nimport { getRoutePath } from \"routes\"\n\nimport \"./CloneConfigurationModal.css\"\nimport { TOAST } from \"sharedConstants\"\n\nclass CloneConfigurationModal extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n loading: false,\n current: false\n }\n }\n\n onSubmit = values => {\n if (!this.state.loading) {\n const { cloneConfiguration, showToast, configuration, reset } = this.props\n this.setState({ loading: true })\n let destinationWorkspaceId = null\n if (this.state.current) {\n destinationWorkspaceId = configuration.workspace_id\n } else {\n destinationWorkspaceId = _get(values, \"workspace_id.value\", null)\n }\n if (destinationWorkspaceId) {\n cloneConfiguration(\n configuration.workspace_id,\n configuration.id,\n { workspace_id: destinationWorkspaceId },\n 0\n )\n .then(response => {\n this.closeModal()\n showToast(\n \"Configuration has been cloned.\",\n TOAST.TYPE.SUCCESS,\n getRoutePath(\"workspace.configuration.show\", {\n id: response.value.workspace_id,\n cid: response.value.id\n })\n )\n reset()\n })\n .catch(() => {\n this.setState({ loading: false })\n })\n }\n }\n }\n\n fetchWorkspacesListForSelect = async (filterText = \"\") => {\n if (_trim(filterText).length > 0) {\n // fetch all\n const caller = new AllResourceItemsFetcher()\n\n const data = await caller\n .setEndpointCall((offset, limit, loadFullStructure) =>\n api().workspace.list(offset, limit, 0, \"created\", \"DESC\", filterText)\n )\n .setDataPath(\"workspaces\")\n .run()\n\n return _map(data, item => ({ label: item.name, value: item.id }))\n } else {\n // fetch initial\n const offset = 0,\n limit = 50\n const data = await api().workspace.list(offset, limit, 0, \"created\", \"DESC\")\n\n return _map(_get(data, \"workspaces\", []), item => ({\n label: item.name,\n value: item.id\n }))\n }\n }\n\n toggleCurrent = () => {\n this.props.change(\"workspace_id\", null)\n this.setState(prevState => ({\n current: !prevState.current\n }))\n }\n\n closeModal = () => {\n this.props.handleClose()\n setTimeout(() => {\n this.props.reset()\n this.setState({\n loading: false,\n current: false\n })\n })\n }\n\n onSelectFieldChange = () => {\n // reset current button when change occurs\n this.setState({\n current: false\n })\n }\n\n render() {\n const { open, handleSubmit } = this.props\n return (\n \n \n
    \n \n
    \n \n \n Current\n \n
    \n
    \n
    \n \n Cancel\n \n \n Clone\n \n
    \n \n
    \n )\n }\n}\n\nCloneConfigurationModal.propTypes = {\n open: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n configuration: PropTypes.instanceOf(Record).isRequired,\n handleSubmit: PropTypes.func.isRequired,\n reset: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired\n}\n\nCloneConfigurationModal = reduxForm({\n form: \"CloneConfigurationForm\",\n touchOnBlur: false\n})(connect(null, { showToast, cloneConfiguration })(CloneConfigurationModal))\n\nexport default CloneConfigurationModal\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport \"./Paper.css\"\n\nconst Paper = ({ className, hasHeader, children }) => (\n
    \n {children}\n
    \n)\n\nPaper.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node,\n hasHeader: PropTypes.bool\n}\n\nexport default Paper\n","import React, { PureComponent } from \"react\"\nimport hljs from \"highlight.js\"\nimport PropTypes from \"prop-types\"\n\nimport \"highlight.js/styles/github.css\"\n\nclass CodeBlock extends PureComponent {\n constructor(props) {\n super(props)\n this.codeEl = React.createRef()\n }\n\n componentDidMount() {\n this.highlightCode()\n }\n\n componentDidUpdate() {\n this.highlightCode()\n }\n\n highlightCode = () => {\n hljs.highlightBlock(this.codeEl.current)\n }\n\n render() {\n return (\n
    \n        \n          {this.props.value}\n        \n      
    \n )\n }\n}\n\nCodeBlock.propTypes = {\n value: PropTypes.string.isRequired,\n language: PropTypes.string\n}\n\nexport default CodeBlock\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { reduxForm, Field } from \"redux-form\"\nimport ReactMarkdown from \"react-markdown\"\nimport _size from \"lodash/size\"\nimport _get from \"lodash/get\"\nimport removeMd from \"remove-markdown\"\nimport _noop from \"lodash/noop\"\n\n// ui components\nimport Paper from \"components/UI/elements/Paper\"\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Button from \"components/UI/elements/Button\"\nimport TextField from \"components/UI/elements/TextField\"\n\n// code block renderer\nimport \"./CodeBlock\"\n\n// css\nimport \"./DescriptionCard.css\"\nimport CodeBlock from \"./CodeBlock\"\n\nclass DescriptionCard extends PureComponent {\n constructor(props) {\n super(props)\n\n this.state = {\n expanded: false,\n loading: false\n }\n }\n\n toggleForm = () => {\n this.setState({\n loading: false\n })\n this.props.toggleEditMode()()\n }\n\n toggleDescriptionExpand = () => {\n this.setState(prevState => ({\n expanded: !prevState.expanded\n }))\n }\n\n onSubmit = values => {\n const { initialValues } = this.props\n if (!this.state.loading) {\n this.setState({ loading: true })\n this.props\n .onSubmit(values, initialValues)\n .then(() => {\n this.toggleForm()\n })\n .catch(err => {\n if (_get(err, \"type\") === \"nothing_changed\") {\n this.toggleForm()\n } else {\n this.setState({ loading: false })\n }\n })\n }\n }\n\n cancelEditing = () => {\n this.props.reset()\n this.toggleForm()\n }\n\n render() {\n const { expanded, loading } = this.state\n const {\n isEditable,\n handleSubmit,\n initialValues,\n form,\n editMode,\n readyToEdit,\n viewOnly,\n currentlyEditing = \"\"\n } = this.props\n\n const desc = _get(initialValues, \"description\", \"\")\n const plainDescription = removeMd(desc)\n const expandable = plainDescription.length > 400\n\n return (\n \n
    \n \n

    Description

    \n {!viewOnly && (\n \n {editMode && (\n
    \n \n \n Save\n \n
    \n )}\n {!editMode && (\n \n Edit\n \n )}\n
    \n )}\n
    \n {(editMode || _size(desc) > 0) && (\n \n {!editMode && (\n \n \n {expandable && (\n \n
    \n \n {expanded ? \"Show less\" : \"Show more\"}\n \n \n )}\n
    \n )}\n {editMode && (\n \n \n {!viewOnly && (\n
    \n
    \n TIPS:\n # Headline\n **bold**\n _italics_\n ~~strike~~\n `inline code`\n
    \n
    \n )}\n
    \n )}\n
    \n )}\n
    \n
    \n )\n }\n}\n\nDescriptionCard.defaultProps = {\n readyToEdit: true,\n viewOnly: false\n}\n\nDescriptionCard.propTypes = {\n initialValues: PropTypes.object.isRequired,\n isEditable: PropTypes.bool.isRequired,\n onSubmit: PropTypes.func.isRequired,\n form: PropTypes.string.isRequired,\n currentlyEditing: PropTypes.string,\n toggleEditMode: PropTypes.func.isRequired,\n editMode: PropTypes.bool.isRequired,\n readyToEdit: PropTypes.bool,\n viewOnly: PropTypes.bool\n}\n\nDescriptionCard = reduxForm({\n touchOnBlur: false,\n enableReinitialize: true\n})(DescriptionCard)\n\nexport default DescriptionCard\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Map } from \"immutable\"\nimport moment from \"moment\"\nimport humanizeDuration from \"humanize-duration\"\nimport _includes from \"lodash/includes\"\n\n/* istanbul ignore next */\nconst shortEnglishHumanizer = humanizeDuration.humanizer({\n language: \"shortEn\",\n languages: {\n shortEn: {\n y: () => \"y\",\n mo: () => \"mo\",\n w: () => \"w\",\n d: () => \"d\",\n h: () => \"h\",\n m: () => \"m\",\n s: () => \"s\",\n ms: () => \"ms\"\n }\n },\n delimiter: \" \",\n spacer: \"\"\n})\n\nclass Duration extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n seconds: 0,\n runningSeconds: 0\n }\n }\n\n componentDidMount() {\n const { history, status } = this.props\n\n if (_includes([\"warning\", \"error\", \"finished\", \"canceled\"], status)) {\n if (Map.isMap(history)) {\n const seconds = moment\n .duration(moment(history.get(status)).diff(moment(history.get(\"waiting\"))))\n .asSeconds()\n const runningSeconds = moment\n .duration(moment(history.get(status)).diff(moment(history.get(\"running\"))))\n .asSeconds()\n\n this.setState({\n seconds: Math.round(seconds),\n runningSeconds: Math.round(runningSeconds)\n })\n } else {\n this.setState({\n seconds: null,\n runningSeconds: null\n })\n }\n } else {\n this.refreshSeconds()\n this.intervalId = setInterval(this.refreshSeconds, 1000)\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.created !== prevProps.created) {\n if (!this.intervalId) {\n this.refreshSeconds()\n this.intervalId = setInterval(this.refreshSeconds, 1000)\n }\n }\n }\n\n componentWillUnmount() {\n clearInterval(this.intervalId)\n }\n\n refreshSeconds = () => {\n const { status, history, created } = this.props\n let seconds = 0\n let runningSeconds = null\n\n if (_includes([\"warning\", \"error\", \"finished\", \"canceled\"], status)) {\n clearInterval(this.intervalId)\n if (Map.isMap(history)) {\n seconds = moment\n .duration(moment(history.get(status)).diff(moment(history.get(\"waiting\"))))\n .asSeconds()\n runningSeconds = moment\n .duration(moment(history.get(status)).diff(moment(history.get(\"running\"))))\n .asSeconds()\n } else {\n seconds = null\n runningSeconds = null\n }\n } else {\n seconds = moment.duration(moment().diff(moment.utc(created))).asSeconds()\n }\n\n this.setState({\n seconds: seconds !== null ? Math.round(seconds) : null,\n runningSeconds: runningSeconds !== null ? Math.round(runningSeconds) : null\n })\n }\n\n render() {\n const { showRunningTime } = this.props\n const { seconds, runningSeconds } = this.state\n if (!showRunningTime || runningSeconds === null) {\n return (\n \n {seconds === null && \"–\"}\n {seconds !== null && shortEnglishHumanizer(seconds * 1000)}\n \n )\n } else {\n return (\n \n {seconds === null && \"–\"}\n {seconds !== null && (\n \n \n {shortEnglishHumanizer(runningSeconds * 1000)}\n {\" \"}\n of {shortEnglishHumanizer(seconds * 1000)}\n \n )}\n \n )\n }\n }\n}\n\nDuration.propTypes = {\n status: PropTypes.string.isRequired,\n history: PropTypes.instanceOf(Map),\n created: PropTypes.string.isRequired,\n showRunningTime: PropTypes.bool\n}\n\nexport default Duration\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Map } from \"immutable\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\n// ui components\nimport Duration from \"../Duration\"\n\nimport \"./StatusElement.css\"\n\nconst StatusElement = ({\n align,\n status,\n history,\n created,\n showDuration,\n showActualRunningDuration,\n durationOneLine\n}) => {\n let icon\n switch (status) {\n case \"waiting\":\n icon = \n break\n case \"warning\":\n icon = \n break\n case \"running\":\n icon = \n break\n case \"error\":\n icon = \n break\n case \"finished\":\n icon = \n break\n case \"canceled\":\n icon = \n break\n default:\n icon = \n break\n }\n\n return (\n \n {(align === \"left\" || align === \"center\") && (\n
    {icon}
    \n )}\n
    \n {status}\n {showDuration === true && (\n \n \n \n )}\n {showActualRunningDuration && (\n \n \n \n )}\n
    \n {align === \"right\" &&
    {icon}
    }\n \n )\n}\n\nStatusElement.propTypes = {\n align: PropTypes.string.isRequired,\n status: PropTypes.string.isRequired,\n history: PropTypes.instanceOf(Map),\n created: PropTypes.string,\n showDuration: PropTypes.bool,\n showActualRunningDuration: PropTypes.bool,\n durationOneLine: PropTypes.bool\n}\n\nexport default StatusElement\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ReactTooltip from \"react-tooltip\"\nimport moment from \"moment\"\nimport _isString from \"lodash/isString\"\n\nimport { MOMENT } from \"sharedConstants\"\n\nimport \"./DateTimeWithTooltip.css\"\n\nconst DateTimeWithTooltip = ({ dateTime, uniqueTooltipId, momentDateTime }) => (\n \n \n {dateTime &&\n moment\n .utc(dateTime)\n .local()\n .format(MOMENT.DATE_TIME_FORMAT)}\n {moment.isMoment(momentDateTime) && momentDateTime.local().format(MOMENT.DATE_TIME_FORMAT)}\n \n \n UTC: {dateTime && moment.utc(dateTime).format(MOMENT.DATE_TIME_FORMAT)}\n {moment.isMoment(momentDateTime) && momentDateTime.utc().format(MOMENT.DATE_TIME_FORMAT)}\n \n \n)\n\n/* istanbul ignore next */\nconst requiredDatePropsCheck = (props, propName, componentName) => {\n if (!props.dateTime && !props.momentDateTime) {\n return new Error(\n `One of 'dateTime' or 'momentDateTime' is required by '${componentName}' component.`\n )\n }\n if (props.dateTime && !_isString(props.dateTime)) {\n return new Error(`Prop 'dateTime' has to be a valid string in '${componentName}' component.`)\n }\n if (props.momentDateTime && !moment.isMoment(props.momentDateTime)) {\n return new Error(\n `Prop 'momentDateTime' has to be a valid moment object instance in '${componentName}' component.`\n )\n }\n return null\n}\n\nDateTimeWithTooltip.propTypes = {\n dateTime: requiredDatePropsCheck,\n uniqueTooltipId: PropTypes.string.isRequired,\n momentDateTime: requiredDatePropsCheck\n}\n\nexport default DateTimeWithTooltip\n","import { createSelector } from \"reselect\"\nimport { Map, List } from \"immutable\"\n\nimport { initFuseImmutableSearch } from \"helpers/table.helper\"\n\nconst getActiveUsers = state => state.users.get(\"active\")\n\nconst getDeletedUsers = state => state.users.get(\"removed\")\n\nexport const getUsersData = createSelector([getActiveUsers], users => {\n if (users) {\n return Map({\n isFulfilled: true,\n data: users\n })\n } else {\n // initial state before fetching is null\n return Map({\n isFulfilled: false,\n data: Map()\n })\n }\n})\n\nexport const getAllUsersMap = createSelector(\n [getActiveUsers, getDeletedUsers],\n (active, removed) => {\n if (active === null && removed === null) {\n return Map()\n } else if (active === null) {\n return removed\n } else if (removed === null) {\n return active\n } else {\n return active.merge(removed)\n }\n }\n)\n\nexport const getUsersFuseData = createSelector([getActiveUsers], users => {\n if (users) {\n return Map({\n isFulfilled: true,\n data: initFuseImmutableSearch(List(users.toArray()), [\"name\"])\n })\n } else {\n return Map({\n isFulfilled: false,\n data: initFuseImmutableSearch(List(), [\"name\"])\n })\n }\n})\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { connect } from \"react-redux\"\nimport { Map } from \"immutable\"\nimport _toString from \"lodash/toString\"\n\nimport { getAllUsersMap } from \"selectors/user.selector\"\n\nclass Username extends PureComponent {\n render() {\n const { users, userId } = this.props\n return {users.getIn([_toString(userId), \"name\"], \"\")}\n }\n}\n\nUsername.propTypes = {\n userId: PropTypes.number.isRequired,\n users: PropTypes.instanceOf(Map).isRequired\n}\n\nconst mapStateToProps = state => ({\n users: getAllUsersMap(state)\n})\n\nexport default connect(mapStateToProps)(Username)\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Map, List } from \"immutable\"\nimport { Link } from \"react-router-dom\"\nimport { withRouter } from \"react-router\"\n\n// ui components\nimport Paper from \"components/UI/elements/Paper\"\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport StatusElement from \"components/UI/elements/StatusElement\"\nimport DateTimeWithTooltip from \"components/UI/elements/DateTimeWithTooltip\"\n\n// helpers\nimport { getRoutePath } from \"routes\"\nimport Username from \"helpers/Username.helper\"\n\nimport \"./ConfigurationJobsCard.css\"\n\nclass ConfigurationJobsCard extends PureComponent {\n render() {\n const {\n jobs,\n match: {\n params: { id: workspaceId, cid: configurationId }\n }\n } = this.props\n\n return (\n \n \n

    Activity

    \n \n View all\n \n
    \n {List.isList(jobs) && jobs.size > 0 && (\n \n {jobs.map(job => (\n \n
    \n
    \n

    \n \n

    \n
    \n \n
    \n
    \n \n
    \n \n ))}\n
    \n )}\n
    \n )\n }\n}\n\nConfigurationJobsCard.propTypes = {\n jobs: PropTypes.instanceOf(List)\n}\n\nexport default withRouter(ConfigurationJobsCard)\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ReactTooltip from \"react-tooltip\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nimport \"./InfoTooltip.css\"\n\nconst InfoTooltip = ({ children, tooltipId, place = \"top\", className = \"\", ...otherProps }) => {\n return (\n \n \n \n {children}\n \n \n )\n}\n\nInfoTooltip.propTypes = {\n children: PropTypes.node.isRequired,\n tooltipId: PropTypes.string.isRequired,\n place: PropTypes.string,\n className: PropTypes.string\n}\n\nexport default InfoTooltip\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport { reduxForm, Field } from \"redux-form\"\nimport PropTypes from \"prop-types\"\nimport { withRouter } from \"react-router-dom\"\n\n// ui components\nimport Modal from \"components/UI/elements/Modal\"\nimport Button from \"components/UI/elements/Button\"\nimport TextField from \"components/UI/elements/TextField\"\nimport InfoTooltip from \"components/UI/elements/InfoTooltip\"\n\nimport { modifyConfiguration } from \"actions/configuration.action\"\n\nimport \"./OauthNoteModal.css\"\n\nclass OauthNoteModal extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n onSubmit = values => {\n if (!this.state.isLoading) {\n const {\n modifyConfiguration,\n authLink,\n match: {\n params: { id, cid }\n }\n } = this.props\n this.setState({ loading: true })\n modifyConfiguration(id, cid, { oauth_settings: { note: values.name } })\n .then(response => {\n window.location.href = authLink\n })\n .catch(() => {\n this.setState({\n loading: false\n })\n })\n }\n }\n\n render() {\n const { open, handleClose, handleSubmit } = this.props\n\n return (\n \n \n
    \n \n Name will be displayed in the component.\n \n \n
    \n \n Next\n \n \n
    \n )\n }\n}\n\nOauthNoteModal.propTypes = {\n modifyConfiguration: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n authLink: PropTypes.string\n}\n\nOauthNoteModal = reduxForm({\n form: \"OauthNoteForm\",\n touchOnBlur: false\n})(connect(null, { modifyConfiguration })(OauthNoteModal))\n\nexport default withRouter(OauthNoteModal)\n","import React from \"react\"\n\nconst ArrayFieldReadOnlyTemplate = props => {\n return (\n
    \n {props.title && (\n

    {props.title}

    \n )}\n {props.items &&\n props.items.map(element => (\n
    \n
    {element.children}
    \n
    \n ))}\n
    \n )\n}\n\nexport default ArrayFieldReadOnlyTemplate\n","import React from \"react\"\nimport Button from \"components/UI/elements/Button\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nconst ArrayFieldTemplate = props => {\n return (\n
    \n {props.items &&\n props.items.map(element => (\n
    \n
    {element.children}
    \n \n Delete\n \n
    \n ))}\n\n {props.canAdd && (\n
    \n

    \n \n + Add {props.title}\n \n

    \n
    \n )}\n
    \n )\n}\n\nexport default ArrayFieldTemplate\n","import React from \"react\"\n\nconst ObjectFieldTemplate = ({ title, properties, description }) => {\n return (\n
    \n {title &&

    {title}

    }\n
    \n {properties.map(prop => (\n
    \n {prop.content}\n
    \n ))}\n
    \n {description}\n
    \n )\n}\n\nexport default ObjectFieldTemplate\n","import React, { Component } from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport _get from \"lodash/get\"\n\nclass ObjectFieldTemplateCollapsable extends Component {\n constructor(props) {\n super(props)\n\n this.state = {\n expanded: false\n }\n }\n\n toggleExpanded = () => {\n const { uiSchema } = this.props\n const isRoot = _get(uiSchema, \"root\", false)\n if (!isRoot) {\n this.setState({\n expanded: !this.state.expanded\n })\n }\n }\n\n componentDidMount() {\n const { uiSchema } = this.props\n const isRoot = _get(uiSchema, \"root\", false)\n if (isRoot || _get(uiSchema, \"expandAll\", 0) === 1) {\n this.setState({\n expanded: true\n })\n }\n }\n\n componentDidUpdate(prevProps) {\n const prevExpandAll = _get(prevProps, \"uiSchema.expandAll\", 0)\n const prevCollapseAll = _get(prevProps, \"uiSchema.collapseAll\", 0)\n const expandAll = _get(this.props, \"uiSchema.expandAll\", 0)\n const collapseAll = _get(this.props, \"uiSchema.collapseAll\", 0)\n if (prevExpandAll !== expandAll) {\n if (!this.state.expanded) {\n this.setState({\n expanded: true\n })\n }\n }\n if (prevCollapseAll !== collapseAll) {\n if (this.state.expanded) {\n this.setState({\n expanded: false\n })\n }\n }\n }\n\n render() {\n const { properties, title, description } = this.props\n const { expanded } = this.state\n\n return (\n
    \n {title && (\n \n {expanded && (\n \n )}\n {!expanded && (\n \n )}\n {title}\n \n )}\n
    \n {properties.map(prop => (\n
    \n {prop.content}\n
    \n ))}\n
    \n {description}\n
    \n )\n }\n}\n\nexport default ObjectFieldTemplateCollapsable\n","import React, { PureComponent } from \"react\"\nimport _get from \"lodash/get\"\nimport _includes from \"lodash/includes\"\nimport _size from \"lodash/size\"\nimport AceEditor from \"react-ace\"\nimport ReactTooltip from \"react-tooltip\"\n\nclass FieldTemplate extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n hideTooltip: false\n }\n }\n\n autoHideTooltip = () => {\n const { hideTooltip } = this.state\n if (!hideTooltip) {\n this.timer = setTimeout(() => {\n this.setState({\n hideTooltip: true\n })\n }, 2000)\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.timer)\n }\n\n render() {\n const {\n id,\n classNames,\n label,\n help,\n hidden,\n required,\n description,\n errors,\n children\n } = this.props\n const { hideTooltip } = this.state\n const type = _get(children, \"props.schema.type\", \"object\")\n const code = _get(children, \"props.uiSchema.code\")\n\n if (hidden) {\n return children\n }\n\n if (code) {\n const readOnly = _get(children, \"props.readonly\")\n const id = _get(children, \"props.idSchema.$id\")\n return (\n \n \n {_includes([\"string\", \"integer\", \"number\"], type) && label && (\n \n )}\n
    \n \n children.props.onChange(\n newValue ? newValue : undefined,\n children.props.errorSchema\n )\n }\n name={children.props.name}\n value={children.props.formData}\n editorProps={{ $blockScrolling: true }}\n maxLines={50}\n height=\"16px\"\n width=\"100%\"\n readOnly={readOnly}\n wrapEnabled={true}\n />\n
    \n {!readOnly && description}\n {errors}\n \n {readOnly && !hideTooltip && (\n \n Tap edit for change\n \n )}\n
    \n )\n }\n\n return (\n \n {_includes([\"string\", \"integer\", \"number\"], type) && label && (\n \n )}\n {description}\n {children}\n {errors}\n {help}\n \n )\n }\n}\n\nexport default FieldTemplate\n","import deepForEach from \"deep-for-each\"\nimport _ from \"lodash\"\n\nexport const generateJsonFormUiSchema = (\n dataSchema,\n uiSchema,\n readOnly = false,\n collapsable = true,\n expandAll = 0,\n collapseAll = 0\n) => {\n let uiSchemaComposed = {}\n let hasCollapsableElements = false\n deepForEach(dataSchema, (value, key, subject, path) => {\n if (_.isPlainObject(value)) {\n if (_.has(value, \"type\")) {\n const pathUiSchema = _.replace(path, new RegExp(\"properties.\", \"g\"), \"\")\n if (value.type === \"object\") {\n if (_.includes(pathUiSchema, \".\")) {\n if (collapsable) {\n _.set(uiSchemaComposed, `${pathUiSchema}.classNames`, \"collapsable\")\n _.set(uiSchemaComposed, `${pathUiSchema}.expandAll`, expandAll)\n _.set(uiSchemaComposed, `${pathUiSchema}.collapseAll`, collapseAll)\n hasCollapsableElements = true\n } else {\n _.set(uiSchemaComposed, `${pathUiSchema}.classNames`, \"not-collapsable\")\n }\n }\n }\n if (!_.includes(pathUiSchema, \".\")) {\n // root\n if (readOnly) {\n _.set(uiSchemaComposed, `${pathUiSchema}.ui:readonly`, true)\n }\n _.set(uiSchemaComposed, `${pathUiSchema}.root`, true)\n }\n }\n }\n })\n if (collapsable) {\n return {\n uiSchema: _.merge(uiSchemaComposed, uiSchema),\n hasCollapsableElements\n }\n } else {\n return _.merge(uiSchemaComposed, uiSchema)\n }\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\n\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props)\n this.state = { hasError: false }\n }\n\n static getDerivedStateFromError(error) {\n // Update state so the next render will show the fallback UI.\n return { hasError: true }\n }\n\n render() {\n if (this.state.hasError) {\n // You can render any custom fallback UI\n return

    {this.props.fallbackText}

    \n }\n\n return this.props.children\n }\n}\n\nErrorBoundary.propTypes = {\n fallbackText: PropTypes.string.isRequired\n}\n\nexport default ErrorBoundary\n","class DefaultSettingsProcessor {\n preProcessSettings(settings) {\n return settings\n }\n\n postProcessSettings(settings) {\n return settings\n }\n}\n\nexport default DefaultSettingsProcessor\n","import _isEmpty from \"lodash/isEmpty\"\nimport _isArray from \"lodash/isArray\"\nimport _toInteger from \"lodash/toInteger\"\nimport _toString from \"lodash/toString\"\n\nclass AutoIncrementSettingsProcessor {\n constructor(path = [], start = 1, dataType = \"int\") {\n this.path = path\n this.start = start\n this.dataType = dataType\n }\n\n _autoIncrementRecursion(part, pathIndex) {\n if (_isArray(part)) {\n // if pathIndex === this.path.length - 2, then we have to increment attribute\n // with name this.path[this.path.length - 1] now\n if (pathIndex === this.path.length - 2) {\n const attribute = this.path[this.path.length - 1]\n part.forEach((item, index) => {\n const value = index + _toInteger(this.start)\n item[attribute] = this.dataType === \"string\" ? _toString(value) : value\n })\n } else {\n part.forEach(item => {\n this._autoIncrementRecursion(item, pathIndex + 1)\n })\n }\n } else {\n this._autoIncrementRecursion(part[this.path[pathIndex + 1]], pathIndex + 1)\n }\n }\n\n preProcessSettings(settings) {\n return settings\n }\n\n postProcessSettings(settings) {\n if (!_isEmpty(this.path)) {\n try {\n this._autoIncrementRecursion(settings[this.path[0]], 0)\n } catch (err) {\n console.log(err)\n return settings\n }\n }\n return settings\n }\n}\n\nexport default AutoIncrementSettingsProcessor\n","import _isEmpty from \"lodash/isEmpty\"\nimport _isArray from \"lodash/isArray\"\nimport _map from \"lodash/map\"\nimport _keyBy from \"lodash/keyBy\"\n\nclass ObjectKeysToArraySettingsProcessor {\n constructor(objectPath = []) {\n this.objectPath = objectPath\n }\n\n _preProcessRecursion(part, objectPathIndex) {\n if (_isArray(part) && objectPathIndex < this.objectPath.length - 2) {\n part.forEach(item => {\n this._preProcessRecursion(item, objectPathIndex + 1)\n })\n } else if (objectPathIndex === this.objectPath.length - 2) {\n const attribute = this.objectPath[objectPathIndex + 1]\n if (_isEmpty(part[attribute])) {\n part[attribute] = []\n return\n } else {\n part[attribute] = _map(part[attribute], id => id)\n }\n } else {\n this._preProcessRecursion(part[this.objectPath[objectPathIndex + 1]], objectPathIndex + 1)\n }\n }\n\n _postProcessRecursion(part, objectPathIndex) {\n if (_isArray(part) && objectPathIndex < this.objectPath.length - 2) {\n part.forEach(item => {\n this._postProcessRecursion(item, objectPathIndex + 1)\n })\n } else if (objectPathIndex === this.objectPath.length - 2) {\n const attribute = this.objectPath[objectPathIndex + 1]\n if (_isEmpty(part[attribute])) {\n part[attribute] = {}\n } else {\n part[attribute] = _keyBy(part[attribute], id => id)\n }\n } else {\n this._postProcessRecursion(part[this.objectPath[objectPathIndex + 1]], objectPathIndex + 1)\n }\n }\n\n preProcessSettings(settings) {\n if (!_isEmpty(this.objectPath)) {\n try {\n this._preProcessRecursion(settings[this.objectPath[0]], 0)\n } catch (err) {\n console.log(err)\n return settings\n }\n }\n return settings\n }\n\n postProcessSettings(settings) {\n if (!_isEmpty(this.objectPath)) {\n try {\n this._postProcessRecursion(settings[this.objectPath[0]], 0)\n } catch (err) {\n console.log(err)\n return settings\n }\n }\n return settings\n }\n}\n\nexport default ObjectKeysToArraySettingsProcessor\n","import _isEmpty from \"lodash/isEmpty\"\nimport _isArray from \"lodash/isArray\"\nimport _map from \"lodash/map\"\nimport _mapKeys from \"lodash/mapKeys\"\n\nclass ObjectToArraySettingsProcessor {\n constructor(objectPath = [], keyProperty = \"\") {\n this.objectPath = objectPath\n this.keyProperty = keyProperty\n }\n\n _preProcessRecursion(part, objectPathIndex) {\n if (_isArray(part) && objectPathIndex < this.objectPath.length - 2) {\n part.forEach(item => {\n this._preProcessRecursion(item, objectPathIndex + 1)\n })\n } else if (objectPathIndex === this.objectPath.length - 2) {\n const attribute = this.objectPath[objectPathIndex + 1]\n if (_isEmpty(part[attribute])) {\n part[attribute] = []\n return\n } else {\n part[attribute] = _map(part[attribute], item => ({ ...item }))\n }\n } else {\n this._preProcessRecursion(part[this.objectPath[objectPathIndex + 1]], objectPathIndex + 1)\n }\n }\n\n _postProcessRecursion(part, objectPathIndex) {\n if (_isArray(part) && objectPathIndex < this.objectPath.length - 2) {\n part.forEach(item => {\n this._postProcessRecursion(item, objectPathIndex + 1)\n })\n } else if (objectPathIndex === this.objectPath.length - 2) {\n const attribute = this.objectPath[objectPathIndex + 1]\n if (_isEmpty(part[attribute])) {\n part[attribute] = {}\n } else {\n part[attribute] = _mapKeys(part[attribute], this.keyProperty)\n }\n } else {\n this._postProcessRecursion(part[this.objectPath[objectPathIndex + 1]], objectPathIndex + 1)\n }\n }\n\n preProcessSettings(settings) {\n if (!_isEmpty(this.objectPath)) {\n try {\n this._preProcessRecursion(settings[this.objectPath[0]], 0)\n } catch (err) {\n console.log(err)\n return settings\n }\n }\n return settings\n }\n\n postProcessSettings(settings) {\n if (!_isEmpty(this.objectPath)) {\n try {\n this._postProcessRecursion(settings[this.objectPath[0]], 0)\n } catch (err) {\n console.log(err)\n return settings\n }\n }\n return settings\n }\n}\n\nexport default ObjectToArraySettingsProcessor\n","import _isEmpty from \"lodash/isEmpty\"\nimport _cloneDeep from \"lodash/cloneDeep\"\n\nimport DefaultSettingsProcessor from \"./DefaultSettingsProcessor\"\nimport AutoIncrementSettingsProcessor from \"./AutoIncrementSettingsProcessor\"\nimport ObjectKeysToArraySettingsProcessor from \"./ObjectKeysToArraySettingsProcessor\"\nimport ObjectToArraySettingsProcessor from \"./ObjectToArraySettingsProcessor\"\n\nclass Processor {\n constructor(processors = []) {\n this.processors = processors.map(processor => {\n if (processor.type === \"autoincrement\") {\n return new AutoIncrementSettingsProcessor(\n processor.settings.path,\n processor.settings.start,\n processor.settings.data_type\n )\n } else if (processor.type === \"object_keys_to_array\") {\n return new ObjectKeysToArraySettingsProcessor(processor.settings.object_path)\n } else if (processor.type === \"object_to_array\") {\n return new ObjectToArraySettingsProcessor(\n processor.settings.object_path,\n processor.settings.key_property\n )\n } else {\n return new DefaultSettingsProcessor()\n }\n })\n }\n\n preProcessSettings(settings) {\n if (_isEmpty(this.processors)) {\n return settings\n }\n\n let settingsTransformation = _cloneDeep(settings)\n this.processors.forEach(processorInstance => {\n processorInstance.preProcessSettings(settingsTransformation)\n })\n return settingsTransformation\n }\n\n postProcessSettings(settings) {\n if (_isEmpty(this.processors)) {\n return settings\n }\n\n let settingsTransformation = _cloneDeep(settings)\n this.processors.forEach(processorInstance => {\n processorInstance.postProcessSettings(settingsTransformation)\n })\n\n return settingsTransformation\n }\n}\n\nexport default Processor\n","import ace from \"brace\"\n\nace.define(\"ace/theme/meiro\", [\"require\", \"exports\", \"module\", \"ace/lib/dom\"], function(\n acequire,\n exports,\n module\n) {\n exports.isDark = true\n exports.cssClass = \"ace-meiro\"\n exports.cssText =\n \".ace-meiro .ace_gutter {\\n\" +\n \"background: #dddddd;\\n\" +\n \"color: #222222;\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_print-margin {\\n\" +\n \"width: 1px;\\n\" +\n \"background: transparent;\\n\" +\n \"}\\n\" +\n \".ace-meiro {\\n\" +\n \"background-color: transparent;\\n\" +\n \"color: #222222;\\n\" +\n \"padding-bottom: 15px;\\n\" +\n \"border-bottom-left-radius: 5px;\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_cursor {\\n\" +\n \"color: #000000;\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_marker-layer .ace_selection {\\n\" +\n \"background: rgba(250, 190, 83, 0.6);\\n\" +\n \"}\\n\" +\n \".ace-meiro.ace_multiselect .ace_selection.ace_start {\\n\" +\n \"box-shadow: 0 0 3px 0px transparent;\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_marker-layer .ace_step {\\n\" +\n \"background: rgb(250, 190, 83);\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_marker-layer .ace_bracket {\\n\" +\n \"margin: -1px 0 0 -1px;\\n\" +\n \"border: 1px solid rgba(0, 0, 0, 0.3);\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_marker-layer .ace_active-line {\\n\" +\n \"background: rgba(250, 190, 83, 0.25);\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_gutter-active-line {\\n\" +\n \"background: rgba(250, 190, 83, 0.25);\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_marker-layer .ace_selected-word {\\n\" +\n \"border: 1px solid rgba(250, 190, 83, 0.6);\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_invisible {\\n\" +\n \"color: #BFBFBF\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_entity.ace_name.ace_tag,\\n\" +\n \".ace-meiro .ace_keyword,\\n\" +\n \".ace-meiro .ace_meta.ace_tag,\\n\" +\n \".ace-meiro .ace_storage {\\n\" +\n \"font-weight: bold;\\n\" +\n \"color: #ED382A;\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_punctuation,\\n\" +\n \".ace-meiro .ace_punctuation.ace_tag {\\n\" +\n \"color: #000000\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_constant.ace_character,\\n\" +\n \".ace-meiro .ace_constant.ace_language,\\n\" +\n \".ace-meiro .ace_constant.ace_numeric,\\n\" +\n \".ace-meiro .ace_constant.ace_other {\\n\" +\n \"color: #9A5925;\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_invalid {\\n\" +\n \"color: #FD1224;\\n\" +\n \"background-color: rgba(255, 0, 0, 0.15);\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_invalid.ace_deprecated {\\n\" +\n \"color: #FD1732;\\n\" +\n \"background-color: transparent;\\n\" +\n \"text-decoration:underline;\\n\" +\n \"font-style: italic;\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_support.ace_constant,\\n\" +\n \".ace-meiro .ace_support.ace_function {\\n\" +\n \"color: #ED382A;\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_fold {\\n\" +\n \"border-color: #222222\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_storage.ace_type,\\n\" +\n \".ace-meiro .ace_support.ace_class,\\n\" +\n \".ace-meiro .ace_support.ace_type {\\n\" +\n \"font-style: italic;\\n\" +\n \"color: #ED382A;\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_entity.ace_name.ace_function,\\n\" +\n \".ace-meiro .ace_entity.ace_other,\\n\" +\n \".ace-meiro .ace_entity.ace_other.ace_attribute-name,\\n\" +\n \".ace-meiro .ace_variable {\\n\" +\n \"color: #009ACD;\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_variable.ace_parameter {\\n\" +\n \"font-style: italic;\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_string {\\n\" +\n \"color: #3AA545\\n\" +\n \"}\\n\" +\n \".ace-meiro .ace_comment {\\n\" +\n \"color: #aaaaaa\\n\" +\n \"}\\n\"\n\n var dom = acequire(\"../lib/dom\")\n dom.importCssString(exports.cssText, exports.cssClass)\n})\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport Form from \"react-jsonschema-form\"\nimport { Map, Record } from \"immutable\"\nimport _isEmpty from \"lodash/isEmpty\"\nimport _forEach from \"lodash/filter\"\nimport _get from \"lodash/get\"\nimport _noop from \"lodash/noop\"\nimport _unset from \"lodash/unset\"\nimport _isNil from \"lodash/isNil\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport ReactTooltip from \"react-tooltip\"\nimport * as flat from \"flat\"\n\n// ui components\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Button from \"components/UI/elements/Button\"\nimport Paper from \"components/UI/elements/Paper\"\nimport ToggleSwitch from \"components/UI/elements/ToggleSwitch\"\nimport ConfirmModal from \"components/UI/components/ConfirmModal\"\nimport OauthNoteModal from \"./OauthNoteModal\"\n\n// json form custom templates\nimport ArrayFieldReadOnlyTemplate from \"components/UI/components/JsonFormFieldTemplate/ArrayFieldReadOnlyTemplate\"\nimport ArrayFieldTemplate from \"components/UI/components/JsonFormFieldTemplate/ArrayFieldTemplate\"\nimport ObjectFieldTemplate from \"components/UI/components/JsonFormFieldTemplate/ObjectFieldTemplate\"\nimport ObjectFieldTemplateCollapsable from \"components/UI/components/JsonFormFieldTemplate/ObjectFieldTemplateCollapsable\"\nimport FieldTemplate from \"components/UI/components/JsonFormFieldTemplate/FieldTemplate\"\n\n// helpers\nimport { generateJsonFormUiSchema } from \"helpers/jsonForm.helper\"\nimport { isJSONString } from \"helpers/validators.helper\"\nimport ErrorBoundary from \"helpers/ErrorBoundary.helper\"\n\n// constants\nimport { MODAL } from \"sharedConstants\"\n\n// settings processors\nimport SettingsProcessor from \"./processors/Processor\"\n\n// ace editor\nimport AceEditor from \"react-ace\"\nimport \"brace/mode/json\"\nimport \"components/UI/elements/CodeEditorTheme/meiro\"\n\nimport \"./SettingsFormCard.css\"\n\nconst FORM_TYPE = \"form\"\nconst JSON_TYPE = \"json\"\n\nclass SettingsFormCard extends PureComponent {\n constructor(props) {\n super(props)\n this.submitButtonRef = React.createRef()\n this.settingsProcessor = new SettingsProcessor(\n _get(props.component, \"settings_template.processors\", [])\n )\n\n // expand form by default, collapse only if code editors are below\n let expandAllVar = 1\n const codeParameters = _get(props.component, \"settings_template.code_parameters\", [])\n if (!_isEmpty(codeParameters)) {\n expandAllVar = 0\n }\n\n const viewUiSchema = generateJsonFormUiSchema(\n _get(props.component, \"settings_template.dataschema\", {}),\n _get(props.component, \"settings_template.uischema\", {}),\n true,\n true,\n expandAllVar\n )\n this.state = {\n jsonSettingsString: this._preProcessSettings(props.settings),\n isJsonInvalid: false,\n viewUiSchema: viewUiSchema.uiSchema,\n hasCollapsableElements: viewUiSchema.hasCollapsableElements,\n editUiSchema: generateJsonFormUiSchema(\n _get(props.component, \"settings_template.dataschema\", {}),\n _get(props.component, \"settings_template.uischema\", {}),\n false,\n false\n ),\n isAuthorized: this._isAuthorized(),\n type: FORM_TYPE,\n loading: false,\n resetConfirmModal: Map({\n open: false,\n isLoading: false\n }),\n expandAllVar,\n collapseAllVar: 0,\n authAccountModalOpen: false\n }\n }\n\n componentDidUpdate(prevProps) {\n if (\n prevProps.configurationId &&\n this.props.configurationId &&\n prevProps.configurationId !== this.props.configurationId\n ) {\n // configuration changed\n this.settingsProcessor = new SettingsProcessor(\n _get(this.props, \"component.settings_template.processors\", [])\n )\n const viewUiSchema = generateJsonFormUiSchema(\n _get(this.props.component, \"settings_template.dataschema\", {}),\n _get(this.props.component, \"settings_template.uischema\", {}),\n true\n )\n this.setState({\n jsonSettingsString: this._preProcessSettings(this.props.settings),\n viewUiSchema: viewUiSchema.uiSchema,\n hasCollapsableElements: viewUiSchema.hasCollapsableElements,\n editUiSchema: generateJsonFormUiSchema(\n _get(this.props.component, \"settings_template.dataschema\", {}),\n _get(this.props.component, \"settings_template.uischema\", {}),\n false,\n false\n ),\n isAuthorized: this._isAuthorized(),\n type: FORM_TYPE,\n loading: false,\n resetConfirmModal: Map({\n open: false,\n isLoading: false\n }),\n expandAllVar: 0,\n collapseAllVar: 0,\n isJsonInvalid: false\n })\n } else {\n if (prevProps.settings !== this.props.settings) {\n this.setState({\n jsonSettingsString: this._preProcessSettings(this.props.settings),\n isJsonInvalid: false\n })\n }\n if (prevProps.oauthSettings !== this.props.oauthSettings) {\n this.setState({\n isAuthorized: this._isAuthorized()\n })\n }\n }\n }\n\n _isAuthorized = () => {\n const { authLink, oauthSettings } = this.props\n if (!authLink) {\n return true\n } else {\n if (Map.isMap(oauthSettings) && !_isNil(oauthSettings.get(\"token_request_response\"))) {\n return true\n }\n return false\n }\n }\n\n /*\n * @param settings \tof type Map()\n *\n * @return (JSON) string\n */\n _preProcessSettings = settings => {\n if (Map.isMap(settings)) {\n return JSON.stringify(this.settingsProcessor.preProcessSettings(settings.toJS()), null, 2)\n } else {\n return JSON.stringify(this.settingsProcessor.preProcessSettings(settings), null, 2)\n }\n }\n\n /*\n * @param settings \tof type string (JSON)\n *\n * @return object\n */\n _postProcessSettings = jsonSettingsString => {\n return this.settingsProcessor.postProcessSettings(JSON.parse(jsonSettingsString))\n }\n\n toggleEditMode = () => {\n this.props.toggleEditMode()()\n this.setState({ loading: false, isJsonInvalid: false })\n }\n\n cancelEditing = () => {\n this.setState(\n {\n jsonSettingsString: this._preProcessSettings(this.props.settings)\n },\n this.toggleEditMode\n )\n }\n\n externallySubmitForm = () => {\n this.submitButtonRef.current.click()\n }\n\n onJsonSettingsChange = ({ formData }) => {\n this.setState({\n jsonSettingsString: JSON.stringify(formData, null, 2),\n isJsonInvalid: false\n })\n }\n\n toggleFormType = () => {\n const { type, jsonSettingsString } = this.state\n\n if (type === JSON_TYPE) {\n // toggle to FORM_TYPE\n if (!isJSONString(jsonSettingsString) || _isEmpty(jsonSettingsString)) {\n this.setState({\n isJsonInvalid: true\n })\n return\n }\n\n this.setState({\n type: FORM_TYPE,\n jsonSettingsString: this._preProcessSettings(JSON.parse(jsonSettingsString))\n })\n } else {\n // toggle to JSON_TYPE\n this.setState({\n type: JSON_TYPE,\n jsonSettingsString: JSON.stringify(this._postProcessSettings(jsonSettingsString), null, 2)\n })\n }\n }\n\n submitSettings = async () => {\n if (!this.state.loading) {\n this.setState({ loading: true })\n const { jsonSettingsString } = this.state\n if (!isJSONString(jsonSettingsString) || _isEmpty(jsonSettingsString)) {\n this.setState({ loading: false, isJsonInvalid: true })\n return\n }\n\n const settings = this._postProcessSettings(jsonSettingsString)\n // CDP connector unset fields from different engine, do it better when\n // json form library supports ommiting unused attributes\n if (this.props.component.id === 86) {\n const engine = _get(settings, \"parameters.cdp_exports_db.engine\")\n if (engine === \"postgresql\") {\n _unset(settings, \"parameters.cdp_exports_db.credentials.project\")\n _unset(settings, \"parameters.cdp_exports_db.credentials.dataset\")\n _unset(settings, \"parameters.cdp_exports_db.credentials.location\")\n _unset(settings, \"parameters.cdp_exports_db.credentials.#credentials\")\n } else if (engine === \"bigquery\") {\n _unset(settings, \"parameters.cdp_exports_db.credentials.host\")\n _unset(settings, \"parameters.cdp_exports_db.credentials.port\")\n _unset(settings, \"parameters.cdp_exports_db.credentials.user\")\n _unset(settings, \"parameters.cdp_exports_db.credentials.#password\")\n _unset(settings, \"parameters.cdp_exports_db.credentials.database\")\n _unset(settings, \"parameters.cdp_exports_db.credentials.schema\")\n }\n }\n try {\n await this.props.onFormSubmit({ settings })\n this.toggleEditMode()\n } catch (err) {\n if (_get(err, \"type\") === \"nothing_changed\") {\n this.toggleEditMode()\n }\n this.setState({ loading: false })\n }\n }\n }\n\n /*\n * @param actionType can be 'toggle' or 'confirm'\n */\n toggleResetConfirmModal = actionType => async () => {\n if (actionType === \"toggle\") {\n this.setState(prevState => ({\n resetConfirmModal: prevState.resetConfirmModal.set(\n \"open\",\n !prevState.resetConfirmModal.get(\"open\")\n )\n }))\n } else if (actionType === \"confirm\") {\n this.setState(prevState => ({\n resetConfirmModal: prevState.resetConfirmModal.set(\"isLoading\", true)\n }))\n\n try {\n await this.props.handleOauthReset()\n } catch (err) {\n } finally {\n this.setState(prevState => ({\n resetConfirmModal: prevState.resetConfirmModal.set(\"isLoading\", false).set(\"open\", false)\n }))\n }\n }\n }\n\n customValidate = (formData, errors) => {\n const dataSchema = _get(this.props, \"component.settings_template.dataschema\", {})\n const flattenDataSchema = flat.flatten(dataSchema)\n let castTypes = []\n _forEach(flattenDataSchema, (value, key) => {\n if (key.includes(\"cast_type\")) {\n castTypes.push({\n path: key,\n cast_type: value\n })\n }\n })\n if (castTypes.length > 0) {\n _forEach(castTypes, castType => {\n const parts = castType.path.split(\".\")\n let ended = false\n let dataPath = \"\"\n _forEach(parts, part => {\n if (!ended) {\n const tmpPath = dataPath.length ? `${dataPath}.${part}` : part\n if (_get(formData, tmpPath, undefined) !== undefined) {\n dataPath = tmpPath\n } else if (![\"properties\", \"cast_type\"].includes(part)) {\n ended = true\n }\n }\n })\n if (!ended) {\n const value = _get(formData, dataPath)\n let regex = null\n if (castType.cast_type === \"integer\") {\n regex = RegExp(\"^[1-9]\\\\d*$|.*{{.+}}.*|^0$\")\n } else if (castType.cast_type === \"float\") {\n regex = RegExp(\"^(([1-9][0-9]*)|(0))([.][0-9]+)?$|.*{{.+}}.*\")\n }\n if (regex !== null && !regex.test(value)) {\n const errorObj = _get(errors, dataPath)\n if (errorObj && typeof errorObj === \"object\" && errorObj.hasOwnProperty(\"addError\")) {\n errorObj.addError(`should be valid ${castType.cast_type} or variable placeholder`)\n }\n }\n }\n })\n }\n return errors\n }\n\n copyOAuthLink = () => {\n const { authLink, copyMessageFunc } = this.props\n var dummy = document.createElement(\"input\")\n document.body.appendChild(dummy)\n dummy.setAttribute(\"value\", authLink)\n dummy.select()\n document.execCommand(\"copy\")\n document.body.removeChild(dummy)\n copyMessageFunc()\n }\n\n transformErrors = errors => {\n return errors.map(err => {\n if (_get(err, \"params.limit\") === 1) {\n err.message = \"is a required property\"\n }\n return err\n })\n }\n\n incrementExpandAllVar = () => {\n const { expandAllVar } = this.state\n\n const viewUiSchema = generateJsonFormUiSchema(\n _get(this.props.component, \"settings_template.dataschema\", {}),\n _get(this.props.component, \"settings_template.uischema\", {}),\n true,\n true,\n expandAllVar + 1\n )\n\n this.setState({\n viewUiSchema: viewUiSchema.uiSchema,\n expandAllVar: expandAllVar + 1\n })\n }\n\n incrementCollapseAllVar = () => {\n const { collapseAllVar, expandAllVar } = this.state\n\n const viewUiSchema = generateJsonFormUiSchema(\n _get(this.props.component, \"settings_template.dataschema\", {}),\n _get(this.props.component, \"settings_template.uischema\", {}),\n true,\n true,\n expandAllVar,\n collapseAllVar + 1\n )\n\n this.setState({\n viewUiSchema: viewUiSchema.uiSchema,\n collapseAllVar: collapseAllVar + 1\n })\n }\n\n toggleAuthAccountModal = () => {\n this.setState(prevState => ({\n authAccountModalOpen: !prevState.authAccountModalOpen\n }))\n }\n\n render() {\n const {\n authLink,\n component,\n onFormError,\n isEditable,\n editMode,\n readyToEdit,\n viewOnly,\n oauthSettings,\n currentlyEditing = \"\"\n } = this.props\n const {\n isAuthorized,\n viewUiSchema,\n editUiSchema,\n jsonSettingsString,\n type,\n loading,\n resetConfirmModal,\n hasCollapsableElements,\n authAccountModalOpen,\n isJsonInvalid\n } = this.state\n const dataSchema = _get(component, \"settings_template.dataschema\", null)\n\n return (\n \n \n

    \n {component.name}\n {component.id === 30 && (\n \n {\" \"}\n \n \n This component uses SQLite library.\n \n \n )}\n

    \n {!viewOnly && (\n \n {isAuthorized && !editMode && (\n
    \n {authLink && (\n \n \n \n OAuth account:{\" \"}\n {!_isNil(oauthSettings.get(\"note\"))\n ? oauthSettings.get(\"note\")\n : \"not filled\"}\n \n \n Reset authorization\n \n \n )}\n {dataSchema && (\n \n Edit\n \n )}\n
    \n )}\n {isAuthorized && editMode && (\n
    \n \n Cancel\n \n \n Save\n \n
    \n )}\n {!isAuthorized && isEditable && (\n
    \n \n \n \n \n
    \n )}\n
    \n )}\n
    \n {isAuthorized && (\n \n {!editMode && (\n \n {dataSchema && (\n
    \n \n {hasCollapsableElements && (\n
    \n Expand all /{\" \"}\n Collapse all\n
    \n )}\n \n \n \n
    \n
    \n )}\n {!dataSchema &&

    This component does not have any form. Carry on!

    }\n
    \n )}\n {editMode && (\n \n
    \n

    Choose

    \n \n
    \n {type === FORM_TYPE && (\n
    \n \n \n \n \n Cancel\n \n \n Save\n \n \n \n \n
    \n )}\n {type === JSON_TYPE && (\n
    \n

    Parameters

    \n \n {\n this.setState({ jsonSettingsString: newValue, isJsonInvalid: false })\n }}\n name=\"json_settings\"\n value={jsonSettingsString}\n editorProps={{ $blockScrolling: true }}\n setOptions={{ maxLines: 50 }}\n width=\"100%\"\n wrapEnabled={true}\n />\n
    \n {isJsonInvalid && (\n

    Entered code is not valid JSON object.

    \n )}\n \n \n \n Save\n \n \n \n )}\n
    \n )}\n \n
    \n )}\n \n
    \n )\n }\n}\n\nSettingsFormCard.defaultProps = {\n readyToEdit: true,\n viewOnly: false\n}\n\nSettingsFormCard.propTypes = {\n configurationId: PropTypes.number,\n component: PropTypes.instanceOf(Record).isRequired,\n isEditable: PropTypes.bool.isRequired,\n authLink: PropTypes.string,\n oauthSettings: PropTypes.instanceOf(Map),\n handleOauthReset: PropTypes.func.isRequired,\n settings: PropTypes.instanceOf(Map),\n onFormError: PropTypes.func.isRequired,\n onFormSubmit: PropTypes.func.isRequired,\n copyMessageFunc: PropTypes.func.isRequired,\n currentlyEditing: PropTypes.string,\n toggleEditMode: PropTypes.func.isRequired,\n editMode: PropTypes.bool.isRequired,\n readyToEdit: PropTypes.bool,\n viewOnly: PropTypes.bool\n}\n\nexport default SettingsFormCard\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Record, Map } from \"immutable\"\nimport _get from \"lodash/get\"\nimport _map from \"lodash/map\"\nimport _each from \"lodash/each\"\nimport _set from \"lodash/set\"\nimport _isEmpty from \"lodash/isEmpty\"\nimport _isNil from \"lodash/isNil\"\nimport _noop from \"lodash/noop\"\nimport ReactTooltip from \"react-tooltip\"\n\n// ui components\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Paper from \"components/UI/elements/Paper\"\nimport Button from \"components/UI/elements/Button\"\n\n// helpers\nimport { isJSONObject } from \"helpers/validators.helper\"\n\n// ace editor\nimport AceEditor from \"react-ace\"\n\nimport \"./CodeEditor.css\"\n\nclass CodeEditor extends PureComponent {\n constructor(props) {\n super(props)\n\n this.state = {\n codeEditors: this.initCodeEditors(),\n isAuthorized: this._isAuthorized(),\n loading: false,\n hideTooltip: false\n }\n }\n\n initCodeEditors = () => {\n const { component, settings } = this.props\n const codeEditorsTmp = _get(component, \"settings_template.code_parameters\", [])\n const codeEditors = _map(codeEditorsTmp, _code => {\n if (_code.language === \"json\") {\n if (_code.settings_path === \"\") {\n return {\n ..._code,\n value: JSON.stringify(settings.toJS(), null, 2)\n }\n } else {\n return {\n ..._code,\n value: JSON.stringify(_get(settings.toJS(), _code.settings_path, \"\"), null, 2)\n }\n }\n } else {\n if (_code.settings_path === \"json\") {\n return {\n ..._code,\n value: settings.toJS()\n }\n } else {\n return {\n ..._code,\n value: _get(settings.toJS(), _code.settings_path, \"\")\n }\n }\n }\n })\n\n return codeEditors\n }\n\n componentWillUnmount() {\n clearTimeout(this.timer)\n }\n\n _isAuthorized = () => {\n const { authLink, oauthSettings } = this.props\n if (!authLink) {\n return true\n } else {\n if (Map.isMap(oauthSettings) && !_isNil(oauthSettings.get(\"token_request_response\"))) {\n return true\n }\n return false\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.settings !== this.props.settings) {\n this.setState({\n codeEditors: this.initCodeEditors()\n })\n }\n if (prevProps.oauthSettings !== this.props.oauthSettings) {\n this.setState({\n isAuthorized: this._isAuthorized()\n })\n }\n }\n\n toggleEditMode = () => {\n this.props.toggleEditMode()()\n this.setState({ loading: false, hideTooltip: false })\n }\n\n saveCodeEditorsValues = async () => {\n if (!this.state.loading) {\n this.setState({ loading: true })\n const { codeEditors } = this.state\n let settings = this.props.settings.toJS()\n let valid = true\n _each(codeEditors, (code, idx) => {\n if (code.language === \"json\") {\n if (isJSONObject(code.value)) {\n if (code.settings_path === \"\") {\n settings = JSON.parse(code.value)\n } else {\n _set(settings, code.settings_path, JSON.parse(code.value))\n }\n } else {\n valid = false\n this.setState({\n codeEditors: _map(codeEditors, (_code, _idx) =>\n _idx === idx ? { ..._code, error: \"Entered code is not valid JSON object\" } : _code\n )\n })\n }\n } else {\n if (code.settings_path === \"\") {\n settings = code.value\n } else {\n _set(settings, code.settings_path, code.value)\n }\n }\n })\n\n if (valid) {\n try {\n await this.props.onCodeSave({ settings })\n this.toggleEditMode()\n } catch (err) {\n if (_get(err, \"type\") === \"nothing_changed\") {\n this.toggleEditMode()\n } else {\n this.setState({\n loading: false\n })\n }\n }\n } else {\n this.setState({ loading: false })\n }\n }\n }\n\n cancelCodeEditorsValues = () => {\n this.setState(\n {\n codeEditors: this.initCodeEditors()\n },\n this.toggleEditMode()\n )\n }\n\n onCodeChange = idx => newValue => {\n this.setState(prevState => ({\n codeEditors: _map(prevState.codeEditors, (_code, _idx) =>\n _idx === idx ? { ..._code, value: newValue, error: \"\" } : _code\n )\n }))\n }\n\n autoHideTooltip = () => {\n const { editMode, hideTooltip } = this.state\n if (!editMode && !hideTooltip) {\n this.timer = setTimeout(() => {\n this.setState({\n hideTooltip: true\n })\n }, 2000)\n }\n }\n\n render() {\n const { editMode, readyToEdit, viewOnly, currentlyEditing = \"\" } = this.props\n const { codeEditors, isAuthorized, loading, hideTooltip } = this.state\n\n if (_isEmpty(codeEditors) || !isAuthorized) {\n return null\n }\n\n return (\n \n \n

    Code Editor

    \n {!viewOnly && (\n \n {editMode && (\n
    \n \n Cancel\n \n \n Save\n \n
    \n )}\n {!editMode && (\n \n Edit\n \n )}\n
    \n )}\n
    \n \n {_map(codeEditors, (editor, idx) => (\n \n

    {editor.title}

    \n \n \n \n {!editMode && !hideTooltip && !viewOnly && (\n \n Tap edit for change\n \n )}\n {editor.error &&

    {editor.error}

    }\n
    \n ))}\n
    \n
    \n )\n }\n}\n\nCodeEditor.defaultProps = {\n readyToEdit: true,\n viewOnly: false\n}\n\nCodeEditor.propTypes = {\n component: PropTypes.instanceOf(Record).isRequired,\n settings: PropTypes.instanceOf(Map),\n onCodeSave: PropTypes.func.isRequired,\n authLink: PropTypes.string,\n oauthSettings: PropTypes.instanceOf(Map),\n isEditable: PropTypes.bool.isRequired,\n currentlyEditing: PropTypes.string,\n toggleEditMode: PropTypes.func.isRequired,\n editMode: PropTypes.bool.isRequired,\n readyToEdit: PropTypes.bool,\n viewOnly: PropTypes.bool\n}\n\nexport default CodeEditor\n","/*\n * Shortens filename based on limit value\n *\n * @param {string} filename filename to be shorten\n * @param {int} limit maximum size of filename, otherwise it will be shortened\n *\n * @return {string} Shortened filename\n */\nexport const shortenFilename = (filename, limit) => {\n if (filename.length <= limit) {\n return filename\n } else {\n const filenameEnd = filename.slice(-(limit - 7))\n const filenameStart = filename.slice(0, 3)\n return filenameStart + \"...\" + filenameEnd\n }\n}\n\nexport const isCsv = filename => filename.slice(-4) === \".csv\"\n","import React, { PureComponent } from \"react\"\nimport { Link } from \"react-router-dom\"\nimport { withRouter } from \"react-router\"\nimport PropTypes from \"prop-types\"\nimport { Map } from \"immutable\"\nimport ReactTooltip from \"react-tooltip\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Waypoint } from \"react-waypoint\"\n\n// ui components\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Paper from \"components/UI/elements/Paper\"\nimport IconButton from \"components/UI/elements/IconButton\"\nimport Button from \"components/UI/elements/Button\"\n\n// helpers\nimport { shortenFilename } from \"helpers/filename.helper\"\nimport { BASE_API_URL } from \"api\"\nimport { getRoutePath } from \"routes\"\nimport { copyStringToClipboard } from \"helpers/string.helper\"\nimport { TOAST } from \"sharedConstants\"\n\nimport \"./DataOutCard.css\"\n\nclass DataOutCard extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n /*\n * It executes defined onEnter function whenever user scrolls to\n * the element 'Waypoint'. We are using it for infinite scrolling.\n */\n renderWaypoint = () => {\n const { dataPreviews, loadMoreFiles } = this.props\n const { filesLoading } = this.state\n if (dataPreviews.get(\"hasMoreItems\") && !filesLoading) {\n return (\n {\n this.setState({\n filesLoading: true\n })\n\n loadMoreFiles(\n dataPreviews.get(\"selectionSettings\").offset +\n dataPreviews.get(\"selectionSettings\").limit\n )\n .then(() => {\n this.setState({\n filesLoading: false\n })\n })\n .catch(err => {})\n }}\n bottomOffset={-40}\n />\n )\n }\n }\n\n render() {\n const {\n dataPreviews,\n location,\n showToast,\n match: {\n params: { id, cid }\n }\n } = this.props\n const { filesLoading } = this.state\n if (!dataPreviews) {\n return null\n }\n\n const files = dataPreviews.get(\"data\")\n const filesTotalCount = dataPreviews.get(\"filesTotalCount\")\n return (\n \n \n

    Data out

    \n {filesTotalCount !== undefined && (\n

    {`${filesTotalCount} ${filesTotalCount === 1 ? \"file\" : \"files\"} total`}

    \n )}\n
    \n {filesTotalCount > 0 && (\n \n
    \n
    4 ? \"scrollable\" : \"\"}`}>\n {files\n .map((file, idx) => (\n
    \n \n \n {shortenFilename(file.file_name, 45)}\n {\n evt.preventDefault()\n copyStringToClipboard(file.file_name)\n showToast(\n \"Filename has been copied to clipboard.\",\n TOAST.TYPE.SUCCESS\n )\n }}\n >\n \n \n
    \n \n \n \n \n
    \n ))\n .toArray()}\n {filesLoading &&
    }\n {this.renderWaypoint()}\n
    \n
    \n
    \n \n View all files\n \n \n Download all files\n \n
    \n dataTip} />\n
    \n )}\n
    \n )\n }\n}\n\nDataOutCard.propTypes = {\n dataPreviews: PropTypes.instanceOf(Map),\n loadMoreFiles: PropTypes.func.isRequired\n}\n\nexport default withRouter(DataOutCard)\n","import React, { PureComponent } from \"react\"\nimport { Link } from \"react-router-dom\"\nimport { withRouter } from \"react-router\"\nimport PropTypes from \"prop-types\"\nimport { Map } from \"immutable\"\nimport _toString from \"lodash/toString\"\nimport _get from \"lodash/get\"\nimport _noop from \"lodash/noop\"\nimport ReactTooltip from \"react-tooltip\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Waypoint } from \"react-waypoint\"\n\n// ui components\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Paper from \"components/UI/elements/Paper\"\nimport IconButton from \"components/UI/elements/IconButton\"\nimport Button from \"components/UI/elements/Button\"\n\n// helpers\nimport { shortenFilename } from \"helpers/filename.helper\"\nimport { BASE_API_URL } from \"api\"\nimport { getRoutePath } from \"routes\"\nimport { getComponentIconSrc } from \"helpers/component.helper\"\nimport { copyStringToClipboard } from \"helpers/string.helper\"\nimport { TOAST } from \"sharedConstants\"\n\nimport \"./DataInCard.css\"\n\nclass DataInCard extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n inputs: props.inputs\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.inputs !== this.props.inputs) {\n this.setState({\n inputs: this.props.inputs\n })\n }\n }\n\n cancelEditing = () => {\n this.setState(\n {\n inputs: this.props.inputs\n },\n this.props.toggleEditMode()\n )\n }\n\n handleFilterChange = (configurationId, filterId) => evt => {\n const { value } = evt.target\n this.setState(prevState => ({\n inputs: prevState.inputs.setIn([_toString(configurationId), \"filters\", filterId], value)\n }))\n }\n\n removeFilter = (configurationId, filterId) => () => {\n this.setState(prevState => ({\n inputs: prevState.inputs.deleteIn([_toString(configurationId), \"filters\", filterId])\n }))\n }\n\n addFilter = configurationId => () => {\n this.setState(prevState => ({\n inputs: prevState.inputs.setIn(\n [_toString(configurationId), \"filters\"],\n prevState.inputs.getIn([_toString(configurationId), \"filters\"]).push(\"*\")\n )\n }))\n }\n\n saveInputs = async () => {\n try {\n await this.props.onInputsSave(this.state.inputs)\n this.props.toggleEditMode()()\n } catch (err) {\n if (_get(err, \"type\") === \"nothing_changed\") {\n this.props.toggleEditMode()()\n }\n }\n }\n\n /*\n * It executes defined onEnter function whenever user scrolls to\n * the element 'Waypoint'. We are using it for infinite scrolling.\n */\n renderWaypoint = () => {\n const { dataPreviews, loadMoreFiles } = this.props\n const { filesLoading } = this.state\n\n if (dataPreviews.get(\"hasMoreItems\") && !filesLoading) {\n return (\n {\n this.setState({\n filesLoading: true\n })\n loadMoreFiles(\n dataPreviews.get(\"selectionSettings\").offset +\n dataPreviews.get(\"selectionSettings\").limit\n )\n .then(() => {\n this.setState({\n filesLoading: false\n })\n })\n .catch(err => {})\n }}\n bottomOffset={-40}\n />\n )\n }\n }\n\n render() {\n const {\n dataPreviews,\n configurations,\n components,\n isEditable,\n lastConfigurationsStatuses,\n editMode,\n toggleEditMode,\n readyToEdit,\n showToast,\n match: {\n params: { id, cid }\n },\n currentlyEditing = \"\"\n } = this.props\n const { inputs, filesLoading } = this.state\n\n if (!dataPreviews) {\n return null\n }\n\n const files = dataPreviews.get(\"data\")\n const filesTotalCount = dataPreviews.get(\"filesTotalCount\")\n return (\n \n \n

    Data in

    \n
    \n {filesTotalCount !== undefined && (\n

    {`${filesTotalCount} ${filesTotalCount === 1 ? \"file\" : \"files\"} total`}

    \n )}\n {Map.isMap(inputs) && inputs.size > 0 && Map.isMap(components) && (\n \n
    \n {!editMode && (\n \n Edit\n \n )}\n {editMode && (\n \n \n \n Save\n \n \n )}\n \n )}\n
    \n \n {(filesTotalCount > 0 || (Map.isMap(inputs) && inputs.size > 0)) && (\n \n
    \n {Map.isMap(inputs) &&\n inputs.size > 0 &&\n Map.isMap(components) &&\n inputs\n .map((input, key) => {\n const inputConf = configurations.get(_toString(key))\n const inputComponent = components.get(_toString(inputConf.component_id))\n const inputConfStatus = lastConfigurationsStatuses.get(\n _toString(inputConf.id),\n \"transparent\"\n )\n\n return (\n \n \n \n

    {inputConf.name}

    \n \n
    \n

    Filters

    \n {input\n .get(\"filters\")\n .map((filter, idx) => (\n
    \n \n {idx > 0 && editMode && (\n \n \n \n )}\n
    \n ))\n .toArray()}\n {editMode && (\n \n + Add more\n \n )}\n
    \n
    \n )\n })\n .toArray()}\n
    \n {filesTotalCount > 0 && (\n \n
    \n {Map.isMap(components) && (\n
    4 ? \"scrollable\" : \"\"}`}>\n {files\n .map((file, idx) => {\n const parentConf = configurations.get(\n _toString(file.parent_configuration_id)\n )\n const parentComponent = components.get(_toString(parentConf.component_id))\n return (\n
    \n \n \n {shortenFilename(file.file_name, 45)}\n {\n evt.preventDefault()\n copyStringToClipboard(file.file_name)\n showToast(\n \"Filename has been copied to clipboard.\",\n TOAST.TYPE.SUCCESS\n )\n }}\n >\n \n \n
    \n \n \n \n \n \n
    \n \n
    \n

    {parentConf.name}

    \n

    {file.file_name}

    \n
    \n
    \n \n
    \n )\n })\n .toArray()}\n {filesLoading &&
    }\n {this.renderWaypoint()}\n
    \n )}\n
    \n
    \n \n View all files\n \n \n Download all\n files\n \n
    \n
    \n )}\n \n )}\n
    \n )\n }\n}\n\nDataInCard.defaultProps = {\n readyToEdit: true\n}\n\nDataInCard.propTypes = {\n dataPreviews: PropTypes.instanceOf(Map),\n configurations: PropTypes.instanceOf(Map).isRequired,\n components: PropTypes.instanceOf(Map),\n inputs: PropTypes.instanceOf(Map),\n onInputsSave: PropTypes.func.isRequired,\n isEditable: PropTypes.bool,\n loadMoreFiles: PropTypes.func.isRequired,\n lastConfigurationsStatuses: PropTypes.instanceOf(Map).isRequired,\n currentlyEditing: PropTypes.string,\n toggleEditMode: PropTypes.func.isRequired,\n editMode: PropTypes.bool.isRequired,\n readyToEdit: PropTypes.bool,\n showToast: PropTypes.func.isRequired\n}\n\nexport default withRouter(DataInCard)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { Map } from \"immutable\"\nimport _noop from \"lodash/noop\"\nimport _isNil from \"lodash/isNil\"\nimport _isEmpty from \"lodash/isEmpty\"\nimport _get from \"lodash/get\"\nimport AceEditor from \"react-ace\"\n\nimport { Form, reduxForm, Field, FieldArray, formValueSelector } from \"redux-form\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nimport Paper from \"components/UI/elements/Paper\"\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Button from \"components/UI/elements/Button\"\nimport IconButton from \"components/UI/elements/IconButton\"\nimport SelectField from \"components/UI/elements/SelectField\"\n\nimport \"./VariablesInjection.css\"\nimport { optionRequired } from \"helpers/validators.helper\"\n\nclass VariablesInjection extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n loading: false,\n isAuthorized: this._isAuthorized()\n }\n }\n\n _isAuthorized = () => {\n const { authLink, oAuthSettings } = this.props\n if (!authLink) {\n return true\n } else {\n if (Map.isMap(oAuthSettings) && !_isNil(oAuthSettings.get(\"token_request_response\"))) {\n return true\n }\n return false\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.oAuthSettings !== this.props.oAuthSettings) {\n this.setState({\n isAuthorized: this._isAuthorized()\n })\n }\n if (!prevProps.editMode && this.props.editMode && this.state.loading) {\n this.setState({\n loading: false\n })\n }\n }\n\n cancelVariablesEditing = () => {\n this.toggleEditMode()\n this.props.reset()\n }\n\n saveVariablesValues = async values => {\n if (!this.state.loading) {\n this.setState({ loading: true })\n\n const { settings, onInjectionSave } = this.props\n const variables = {}\n if (values.variables.length) {\n values.variables.forEach(item => {\n variables[item.value] = `{{${item.value}}}`\n })\n }\n\n let settingsToStore = null\n if (_isEmpty(variables)) {\n settingsToStore = settings.deleteIn([\"parameters\", \"vars\"])\n } else {\n settingsToStore = settings.setIn([\"parameters\", \"vars\"], Map(variables))\n }\n\n try {\n await onInjectionSave({ settings: settingsToStore.toJS() })\n this.toggleEditMode()\n } catch (err) {\n if (_get(err, \"type\") === \"nothing_changed\") {\n this.toggleEditMode()\n } else {\n this.setState({\n loading: false\n })\n }\n }\n }\n }\n\n toggleEditMode = () => {\n this.props.toggleEditMode()()\n }\n\n renderVariables = ({ fields, meta: { error } }) => {\n const { variables, selectedVars } = this.props\n const selectedVarsKeys = selectedVars.map(item => item.value)\n const fieldOptions = [\n ...variables.map((val, key) => ({ value: key, label: key })).values()\n ].filter(item => !selectedVarsKeys.includes(item.value))\n\n return (\n \n

    Workspace variables:

    \n
    \n {fields.map((member, index) => {\n return (\n
    \n \n fields.remove(index)}>\n \n \n
    \n )\n })}\n
    \n fields.push({})}\n className=\"add-more\"\n >\n + Add more\n \n
    \n )\n }\n\n render() {\n const {\n editMode,\n isEditable,\n currentlyEditing,\n readyToEdit,\n settings,\n handleSubmit\n } = this.props\n const { loading, isAuthorized } = this.state\n\n if (!isAuthorized) {\n return null\n }\n\n return (\n
    \n \n {editMode && (\n
    \n \n Cancel\n \n \n Save\n \n
    \n )}\n {!editMode && (\n \n Edit\n \n )}\n \n {!editMode &&\n Map.isMap(settings) &&\n Map.isMap(settings.getIn([\"parameters\", \"vars\"])) &&\n settings.getIn([\"parameters\", \"vars\"]).size > 0 && (\n \n
    \n \n
    \n
    \n )}\n {editMode && (\n \n \n \n )}\n \n )\n }\n}\n\nVariablesInjection.defaultProps = {\n readyToEdit: true\n}\n\nVariablesInjection.propTypes = {\n isEditable: PropTypes.bool.isRequired,\n settings: PropTypes.instanceOf(Map),\n onInjectionSave: PropTypes.func.isRequired,\n authLink: PropTypes.string,\n oAuthSettings: PropTypes.instanceOf(Map),\n currentlyEditing: PropTypes.string,\n toggleEditMode: PropTypes.func.isRequired,\n editMode: PropTypes.bool.isRequired,\n readyToEdit: PropTypes.bool,\n variables: PropTypes.instanceOf(Map).isRequired,\n selectedVars: PropTypes.array\n}\n\nconst selector = formValueSelector(\"VariablesInjectionForm\")\n\nVariablesInjection = connect(state => ({\n selectedVars: selector(state, \"variables\")\n}))(VariablesInjection)\n\nexport default reduxForm({\n form: \"VariablesInjectionForm\",\n touchOnBlur: false,\n enableReinitialize: true\n})(VariablesInjection)\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgBars(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 13,\n viewBox: \"0 0 16 13\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 1.5C0 0.671573 0.671573 0 1.5 0H14.5C15.3284 0 16 0.671573 16 1.5C16 2.32843 15.3284 3 14.5 3H1.5C0.671573 3 0 2.32843 0 1.5ZM0 6.5C0 5.67157 0.671573 5 1.5 5H14.5C15.3284 5 16 5.67157 16 6.5C16 7.32843 15.3284 8 14.5 8H1.5C0.671573 8 0 7.32843 0 6.5ZM1.5 10C0.671573 10 0 10.6716 0 11.5C0 12.3284 0.671573 13 1.5 13H14.5C15.3284 13 16 12.3284 16 11.5C16 10.6716 15.3284 10 14.5 10H1.5Z\",\n fill: \"#999999\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBars);\nexport default __webpack_public_path__ + \"static/media/bars.6b988f45.svg\";\nexport { ForwardRef as ReactComponent };","import _get from \"lodash/get\"\nimport { api } from \"api\"\nimport { CONFIGURATION, WORKSPACE } from \"sharedConstants\"\n\nexport const runConfigurationJob = (\n workspaceId,\n configurationId,\n loadFullStructure = 0\n) => async dispatch =>\n dispatch({\n type: CONFIGURATION.JOB.ACTION.RUN,\n payload: {\n promise: (async () => ({\n job: _get(\n await api().configuration.job.run(workspaceId, configurationId, loadFullStructure),\n \"configuration_job\",\n null\n )\n }))()\n },\n meta: {\n configurationId\n }\n })\n\nexport const listConfigurationJob = (\n workspaceId,\n configurationId,\n offset,\n limit,\n loadFullStructure = 0\n) => async dispatch =>\n dispatch({\n type: CONFIGURATION.JOB.ACTION.LIST,\n payload: {\n promise: (async () => {\n const response = await api().configuration.job.list(\n workspaceId,\n configurationId,\n offset,\n limit,\n loadFullStructure\n )\n return {\n jobs: response\n }\n })()\n },\n meta: {\n configurationId\n }\n })\n\nexport const refreshLastConfigurationJob = (\n workspaceId,\n configurationId,\n loadFullStructure = 0\n) => async dispatch =>\n dispatch({\n type: CONFIGURATION.JOB.ACTION.REFRESH_LAST,\n payload: {\n job: _get(\n await api().configuration.job.list(workspaceId, configurationId, 0, 1, loadFullStructure),\n \"configuration_jobs[0]\",\n null\n )\n },\n meta: {\n configurationId\n }\n })\n\nexport const clearCachedConfigurationJobs = () => dispatch =>\n dispatch({\n type: CONFIGURATION.JOB.ACTION.CLEAR_CACHE,\n payload: {}\n })\n\nexport const cancelConfigurationJob = (\n workspaceId,\n configurationId,\n jobId,\n loadFullStructure = 0\n) => async dispatch =>\n dispatch({\n type: CONFIGURATION.JOB.ACTION.CANCEL,\n payload: {\n promise: (async () => ({\n job: _get(\n await api().configuration.job.cancel(\n workspaceId,\n configurationId,\n jobId,\n loadFullStructure\n ),\n \"configuration_job\",\n null\n )\n }))()\n },\n meta: {\n configurationId\n }\n })\n\nexport const retrieveConfigurationJob = (\n workspaceId,\n configurationId,\n jobId,\n loadFullStructure = 0,\n promise = true\n) => async dispatch => {\n if (promise) {\n return dispatch({\n type: CONFIGURATION.JOB.ACTION.RETRIEVE,\n payload: {\n promise: (async () => ({\n job: _get(\n await api().configuration.job.retrieve(\n workspaceId,\n configurationId,\n jobId,\n loadFullStructure\n ),\n \"configuration_job\",\n null\n )\n }))()\n },\n meta: {\n configurationId\n }\n })\n } else {\n return dispatch({\n type: CONFIGURATION.JOB.ACTION.RETRIEVE,\n payload: {\n job: _get(\n await api().configuration.job.retrieve(\n workspaceId,\n configurationId,\n jobId,\n loadFullStructure\n ),\n \"configuration_job\",\n null\n )\n },\n meta: {\n configurationId\n }\n })\n }\n}\n\n// without promise => doesn't display top loading bar (refreshing every few seconds)\nexport const listProjectConfigurationJob = (\n offset,\n limit,\n loadFullStructure,\n orderBy,\n orderDir,\n promise = true\n) => async dispatch => {\n if (promise) {\n return dispatch({\n type: CONFIGURATION.JOB.ACTION.LIST_PROJECT,\n payload: {\n promise: (async () => {\n return await api().project.configuration.job.list(\n offset,\n limit,\n loadFullStructure,\n orderBy,\n orderDir,\n 0\n )\n })()\n }\n })\n } else {\n return dispatch({\n type: CONFIGURATION.JOB.ACTION.LIST_PROJECT,\n payload: await api().project.configuration.job.list(\n offset,\n limit,\n loadFullStructure,\n orderBy,\n orderDir,\n 0\n )\n })\n }\n}\n\nexport const listWorkspaceConfigurationJob = (\n workspaceId,\n offset,\n limit,\n loadFullStructure,\n orderBy,\n orderDir,\n promise = true\n) => async dispatch => {\n if (promise) {\n return dispatch({\n type: WORKSPACE.CONFIGURATION.JOB.ACTION.LIST,\n meta: {\n workspaceId\n },\n payload: {\n promise: (async () => {\n return await api().workspace.configurationJob.list(\n workspaceId,\n offset,\n limit,\n loadFullStructure,\n orderBy,\n orderDir,\n 0\n )\n })()\n }\n })\n } else {\n return dispatch({\n type: WORKSPACE.CONFIGURATION.JOB.ACTION.LIST,\n meta: {\n workspaceId\n },\n payload: await api().workspace.configurationJob.list(\n workspaceId,\n offset,\n limit,\n loadFullStructure,\n orderBy,\n orderDir,\n 0\n )\n })\n }\n}\n","/*\n * These actions are used for showing/hiding top loading bar when we are calling\n * api directly from react component (we don't dispatch redux action).\n */\n\nimport { showLoading, hideLoading } from \"react-redux-loading-bar\"\n\nexport const showLoadingBar = () => dispatch => dispatch(showLoading())\n\nexport const hideLoadingBar = () => dispatch => dispatch(hideLoading())\n","import _get from \"lodash/get\"\nimport { api } from \"api\"\nimport { WORKSPACE, DAWG } from \"sharedConstants\"\n\nexport const runWorkspaceJob = (workspaceId, loadFullStructure = 0) => async dispatch =>\n dispatch({\n type: WORKSPACE.JOB.ACTION.RUN,\n payload: {\n promise: (async () => await api().workspace.job.run(workspaceId, loadFullStructure))()\n }\n })\n\nexport const listWorkspaceJob = (\n workspaceId,\n offset,\n limit,\n loadFullStructure = 0\n) => async dispatch =>\n dispatch({\n type: WORKSPACE.JOB.ACTION.LIST,\n payload: {\n promise: (async () =>\n await api().workspace.job.list(workspaceId, offset, limit, loadFullStructure))()\n }\n })\n\nexport const refreshLastWorkspaceJob = (workspaceId, loadFullStructure = 0) => async dispatch =>\n dispatch({\n type: WORKSPACE.JOB.ACTION.REFRESH_LAST,\n payload: {\n workspace_job: _get(\n await api().workspace.job.list(workspaceId, 0, 1, loadFullStructure),\n \"workspace_jobs[0]\",\n null\n )\n }\n })\n\nexport const clearCachedWorkspaceJobs = () => dispatch =>\n dispatch({\n type: WORKSPACE.JOB.ACTION.CLEAR_CACHE,\n payload: {}\n })\n\nexport const cancelWorkspaceJob = (workspaceId, jobId, loadFullStructure = 0) => async dispatch =>\n dispatch({\n type: WORKSPACE.JOB.ACTION.CANCEL,\n payload: {\n promise: (async () =>\n await api().workspace.job.cancel(workspaceId, jobId, loadFullStructure))()\n }\n })\n\nexport const retrieveWorkspaceJob = (\n workspaceId,\n jobId,\n loadFullStructure = 0,\n promise = true\n) => async dispatch => {\n if (promise) {\n return dispatch({\n type: WORKSPACE.JOB.ACTION.RETRIEVE,\n payload: {\n promise: (async () =>\n await api().workspace.job.retrieve(workspaceId, jobId, loadFullStructure))()\n }\n })\n } else {\n return dispatch({\n type: WORKSPACE.JOB.ACTION.RETRIEVE,\n payload: await api().workspace.job.retrieve(workspaceId, jobId, loadFullStructure)\n })\n }\n}\n\nexport const listProjectWorkspaceJob = (\n offset,\n limit,\n loadFullStructure,\n orderBy,\n orderDir,\n promise = true\n) => async dispatch => {\n if (promise) {\n return dispatch({\n type: WORKSPACE.JOB.ACTION.LIST_PROJECT,\n payload: {\n promise: (async () => {\n return await api().project.workspace.job.list(\n offset,\n limit,\n loadFullStructure,\n orderBy,\n orderDir,\n 0\n )\n })()\n }\n })\n } else {\n return dispatch({\n type: WORKSPACE.JOB.ACTION.LIST_PROJECT,\n payload: await api().project.workspace.job.list(\n offset,\n limit,\n loadFullStructure,\n orderBy,\n orderDir,\n 0\n )\n })\n }\n}\n\nexport const listDawgWorkspaceJob = (\n dawgId,\n offset,\n limit,\n loadFullStructure,\n orderBy,\n orderDir,\n promise = true\n) => async dispatch => {\n if (promise) {\n return dispatch({\n type: DAWG.WORKSPACE.JOB.ACTION.LIST,\n meta: {\n dawgId\n },\n payload: {\n promise: (async () => {\n return await api().dawg.workspaceJob.list(\n dawgId,\n offset,\n limit,\n loadFullStructure,\n orderBy,\n orderDir,\n 0\n )\n })()\n }\n })\n } else {\n return dispatch({\n type: DAWG.WORKSPACE.JOB.ACTION.LIST,\n meta: {\n dawgId\n },\n payload: await api().dawg.workspaceJob.list(\n dawgId,\n offset,\n limit,\n loadFullStructure,\n orderBy,\n orderDir,\n 0\n )\n })\n }\n}\n","import { api } from \"api\"\nimport _get from \"lodash/get\"\nimport { WORKSPACE } from \"sharedConstants\"\n\nexport const listWorkspaceHistory = (\n workspaceId,\n offset,\n limit,\n loadFullStructure = 0\n) => async dispatch =>\n dispatch({\n type: WORKSPACE.HISTORY.ACTION.LIST,\n payload: {\n promise: (async () => {\n return await api().workspace.history.list(workspaceId, offset, limit, loadFullStructure)\n })()\n }\n })\n\nexport const revertWorkspaceTo = (\n workspaceId,\n historyId,\n loadFullStructure = 0,\n updateRedux = false\n) => async dispatch =>\n dispatch({\n type: WORKSPACE.ACTION.MODIFY,\n payload: {\n promise: (async () => {\n const response = await api().workspace.history.revertTo(\n workspaceId,\n historyId,\n loadFullStructure\n )\n if (updateRedux) {\n dispatch({\n type: WORKSPACE.HISTORY.ACTION.GET_LAST_TWO,\n payload: {\n promise: async () => {\n return await api().workspace.history.list(workspaceId, 0, 2, loadFullStructure)\n }\n }\n })\n }\n return _get(response, \"workspace\", {})\n })()\n }\n })\n\nexport const retrieveWorkspaceHistoryItem = (\n workspaceId,\n historyId,\n loadFullStructure = 0\n) => async dispatch =>\n dispatch({\n type: WORKSPACE.HISTORY.ACTION.RETRIEVE,\n payload: {\n promise: (async () => {\n return await api().workspace.history.retrieve(workspaceId, historyId, loadFullStructure)\n })()\n }\n })\n\nexport const clearCachedWorkspaceHistory = () => dispatch =>\n dispatch({\n type: WORKSPACE.HISTORY.ACTION.CLEAR_CACHE,\n payload: {}\n })\n","import { api } from \"api\"\nimport _get from \"lodash/get\"\nimport { CONFIGURATION } from \"sharedConstants\"\n\nexport const listConfigurationHistory = (\n workspaceId,\n configurationId,\n offset,\n limit,\n loadFullStructure = 0\n) => async dispatch =>\n dispatch({\n type: CONFIGURATION.HISTORY.ACTION.LIST,\n payload: {\n promise: (async () => {\n return await api().configuration.history.list(\n workspaceId,\n configurationId,\n offset,\n limit,\n loadFullStructure\n )\n })()\n }\n })\n\nexport const revertConfigurationTo = (\n workspaceId,\n configurationId,\n historyId,\n loadFullStructure = 0,\n updateRedux = false\n) => async dispatch =>\n dispatch({\n type: CONFIGURATION.ACTION.MODIFY,\n meta: {\n workspaceId\n },\n payload: {\n promise: (async () => {\n const response = await api().configuration.history.revertTo(\n workspaceId,\n configurationId,\n historyId,\n loadFullStructure\n )\n if (updateRedux) {\n dispatch({\n type: CONFIGURATION.HISTORY.ACTION.GET_LAST_TWO,\n payload: {\n promise: async () => {\n return await api().configuration.history.list(\n workspaceId,\n configurationId,\n 0,\n 2,\n loadFullStructure\n )\n }\n }\n })\n }\n return _get(response, \"configuration\", {})\n })()\n }\n })\n\nexport const retrieveConfigurationHistoryItem = (\n workspaceId,\n configurationId,\n historyId,\n loadFullStructure = 0\n) => async dispatch =>\n dispatch({\n type: CONFIGURATION.HISTORY.ACTION.RETRIEVE,\n payload: {\n promise: (async () => {\n return await api().configuration.history.retrieve(\n workspaceId,\n configurationId,\n historyId,\n loadFullStructure\n )\n })()\n }\n })\n\nexport const clearCachedConfigurationHistory = () => dispatch =>\n dispatch({\n type: CONFIGURATION.HISTORY.ACTION.CLEAR_CACHE,\n payload: {}\n })\n","import { api } from \"api\"\nimport { CONFIGURATION } from \"sharedConstants\"\nimport { reset } from \"redux-form\"\n\nexport const fetchInDataPreviews = (\n workspaceId,\n configurationId,\n offset,\n limit,\n name_filter = \"\"\n) => async dispatch =>\n dispatch({\n type: CONFIGURATION.DATA_PREVIEW.IN.ACTION.LIST,\n payload: {\n promise: (async () =>\n await api().configuration.dataPreview.in.list(\n workspaceId,\n configurationId,\n offset,\n limit,\n 0,\n name_filter\n ))()\n },\n meta: {\n configurationId\n }\n })\n\nexport const fetchOutDataPreviews = (\n workspaceId,\n configurationId,\n offset,\n limit,\n name_filter = \"\"\n) => async dispatch =>\n dispatch({\n type: CONFIGURATION.DATA_PREVIEW.OUT.ACTION.LIST,\n payload: {\n promise: (async () =>\n await api().configuration.dataPreview.out.list(\n workspaceId,\n configurationId,\n offset,\n limit,\n 0,\n name_filter\n ))()\n },\n meta: {\n configurationId\n }\n })\n\nexport const resetFilterForm = () => dispatch => dispatch(reset(\"data-in-out-files-filter\"))\n","import { createSelector } from \"reselect\"\nimport _toString from \"lodash/toString\"\nimport _toInteger from \"lodash/toInteger\"\nimport { List } from \"immutable\"\n\nexport const getConfigurationJobsData = (state, configurationId) =>\n state.configurationJobs.getIn([_toString(configurationId), \"data\"])\n\nexport const getConfigurationJobsSelectionSettings = (state, configurationId) =>\n state.configurationJobs.getIn([_toString(configurationId), \"selectionSettings\"])\n\nexport const haveConfigurationJobsMoreItems = (state, configurationId) =>\n state.configurationJobs.getIn([_toString(configurationId), \"hasMoreItems\"]) === true\n\nexport const getLastConfigurationJobsData = createSelector(getConfigurationJobsData, data => {\n if (List.isList(data)) {\n return data.slice(0, 3)\n }\n return null\n})\n\nexport const isConfigurationJobsFetching = (state, configurationId) =>\n state.configurationJobs.getIn([_toString(configurationId), \"isFetching\"]) === true\n\nexport const getConfigurationJobData = (state, configurationId, jobId) => {\n const data = getConfigurationJobsData(state, configurationId)\n if (List.isList(data)) {\n const jobIdInt = _toInteger(jobId)\n return data.find(job => job.id === jobIdInt)\n }\n return null\n}\n","import _toString from \"lodash/toString\"\n\nexport const getUsersWorkspaceAclsData = state => state.usersAcls.get(\"workspaces\")\n\nexport const getUsersWorkspaceAcl = (state, workspaceId) =>\n state.usersAcls.getIn([\"workspaces\", _toString(workspaceId)])\n\nexport const getUsersDawgAcl = (state, dawgId) =>\n state.usersAcls.getIn([\"dawgs\", _toString(dawgId)])\n","import { createSelector } from \"reselect\"\nimport { Map, List } from \"immutable\"\nimport _toLower from \"lodash/toLower\"\n\nimport { initFuseImmutableSearch } from \"helpers/table.helper\"\n\n// initial components state is null and they're fetched on\n// authenticated layout mount (only once when app loads)\nexport const isComponentsFulfilled = state => state.components !== null\n\nexport const getComponentsData = state => state.components\n\nexport const getComponentsFuseData = createSelector([getComponentsData], components => {\n if (components) {\n return Map({\n isFulfilled: true,\n data: initFuseImmutableSearch(\n components.toList().sortBy(component => _toLower(component.name)),\n [\"name\"]\n )\n })\n } else {\n return Map({\n isFulfilled: false,\n data: initFuseImmutableSearch(List(), [\"name\"])\n })\n }\n})\n","import _toString from \"lodash/toString\"\n\nexport const getConfigurationsDataPreviews = (state, configurationId, type) =>\n state.dataPreviews.getIn([_toString(configurationId), type])\n","import _get from \"lodash/get\"\n\nexport const goBackInHistory = (history, alternativePath) => () => {\n if (_get(history, \"location.state.previous\")) {\n history.goBack()\n } else {\n history.push(alternativePath)\n }\n}\n\nexport const goBack = (history, path) => () => {\n history.push(path)\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { connect } from \"react-redux\"\nimport { Prompt } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\nimport _toInteger from \"lodash/toInteger\"\nimport _toString from \"lodash/toString\"\nimport _includes from \"lodash/includes\"\nimport _get from \"lodash/get\"\nimport { Record, Map, List } from \"immutable\"\n\n// ui components\nimport Header from \"./Header\"\nimport ConfirmModal from \"components/UI/components/ConfirmModal\"\nimport Modal from \"components/UI/elements/Modal\"\nimport CloneModal from \"./CloneModal\"\nimport DescriptionCard from \"components/UI/components/DescriptionCard\"\nimport ConfigurationJobsCard from \"./cards/Jobs\"\nimport SettingsFormCard from \"./cards/SettingsForm\"\nimport CodeEditorCard from \"./cards/CodeEditor\"\nimport DataOutCard from \"./cards/DataOut\"\nimport DataInCard from \"./cards/DataIn\"\nimport VariablesInjection from \"./cards/VariablesInjection\"\n\n// actions\nimport {\n fetchConfigurationList,\n modifyConfiguration,\n deleteConfiguration\n} from \"actions/configuration.action\"\nimport { showToast } from \"actions/toast.action\"\nimport {\n runConfigurationJob,\n listConfigurationJob,\n refreshLastConfigurationJob,\n cancelConfigurationJob\n} from \"actions/configurationJob.action\"\nimport { showLoadingBar, hideLoadingBar } from \"actions/loadingBar.action\"\nimport { enableLogout, disableLogout } from \"actions/authenticatedUser.action\"\nimport { clearCachedConfigurationJobs } from \"actions/configurationJob.action\"\nimport { clearCachedWorkspaceJobs } from \"actions/workspaceJob.action\"\nimport { clearCachedWorkspaceHistory } from \"actions/workspaceHistory.action\"\nimport { clearCachedConfigurationHistory } from \"actions/configurationHistory.action\"\nimport {\n fetchInDataPreviews,\n fetchOutDataPreviews,\n resetFilterForm\n} from \"actions/dataPreview.action\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\nimport {\n getWorkspaceConfigurationData,\n getWorkspaceConfigurationsData,\n isConfigurationsFulfilled,\n getIsConfigurationsFetching\n} from \"selectors/configuration.selector\"\nimport { getLastConfigurationJobsData } from \"selectors/configurationJob.selector\"\nimport { getUsersWorkspaceAcl } from \"selectors/usersAcl.selector\"\nimport { getComponentsData } from \"selectors/component.selector\"\nimport { getConfigurationsDataPreviews } from \"selectors/dataPreview.selector\"\n\n//helpers\nimport { getRoutePath } from \"routes\"\nimport { hasWritePermission } from \"helpers/authenticatedUser.helper\"\nimport { api } from \"api\"\nimport PendingPromise from \"helpers/pendingPromise.helper\"\nimport { goBackInHistory } from \"helpers/backButton.helper\"\nimport { getUndefinedWorkspaceVariables } from \"helpers/validators.helper\"\n\n// constants\nimport { MODAL, INTERVAL, TOAST, CONFIGURATION } from \"sharedConstants\"\n\nimport \"./ConfigurationShow.css\"\n\nconst initialState = {\n confirmModalVariables: Map({\n open: false,\n type: \"\",\n handleClose: () => {},\n handleConfirm: () => {},\n title: \"\",\n action: \"\",\n what: \"\",\n isLoading: false,\n text: \"\",\n htmlText: []\n }),\n cloneModalOpen: false,\n outDataPreviews: null,\n lastConfigurationsStatuses: Map({\n isFulfilled: false,\n data: Map()\n }),\n editModes: Map({\n configurationName: false,\n description: false,\n settings: false,\n codeEditor: false,\n dataIn: false,\n variables: false\n }),\n undefinedPlaceholdersModal: Map({\n open: false,\n placeholders: \"\"\n })\n}\n\nclass ConfigurationShow extends PureComponent {\n runningCalls = {\n lastConfigurationJobs: false,\n configurationsLastJobs: false\n }\n\n constructor(props) {\n super(props)\n this.state = initialState\n this.pendingPromises = new PendingPromise()\n }\n\n componentDidMount() {\n const { location, showToast } = this.props\n this._init()\n // reset filter by name form in data in/out files\n this.props.resetFilterForm()\n\n // check OAuth error\n const urlParams = new URLSearchParams(location.search)\n const errorMessage = urlParams.get(\"error_message\")\n if (errorMessage) {\n showToast(errorMessage, TOAST.TYPE.ERROR)\n }\n }\n\n componentWillUnmount() {\n this._cleanup()\n }\n\n _cleanup(clearState = false, clearCache = false) {\n this.props.enableLogout()\n clearInterval(this.intervalId)\n this.pendingPromises.cancelAll()\n this.runningCalls = {\n lastConfigurationJobs: false,\n configurationsLastJobs: false\n }\n\n if (clearState) {\n this.setState(initialState)\n }\n\n if (clearCache) {\n this.props.clearCachedConfigurationJobs()\n this.props.clearCachedWorkspaceJobs()\n this.props.clearCachedWorkspaceHistory()\n this.props.clearCachedConfigurationHistory()\n }\n }\n\n _init() {\n const { fetchConfigurationList, listConfigurationJob } = this.props\n const { id: workspaceId, cid: configurationId } = this.props.match.params\n\n fetchConfigurationList(workspaceId, 0).then(this.fetchLastConfigurationsJobs).catch(_noop)\n\n this._fetchBothLiveDataPreviews()\n\n this.runningCalls.lastConfigurationJobs = true\n listConfigurationJob(workspaceId, configurationId, 0, CONFIGURATION.JOB.LOADING_LIMIT, 0)\n .then(() => {\n this.runningCalls.lastConfigurationJobs = false\n })\n .catch(() => {\n this.runningCalls.lastConfigurationJobs = false\n })\n\n this.intervalId = setInterval(() => {\n this.refreshLastConfigurationJob()\n this.fetchLastConfigurationsJobs()\n }, INTERVAL.CONFIGURATION_SHOW)\n }\n\n componentDidUpdate(prevProps) {\n // refetch live data previews when configuration job finishes\n if (this.props.lastConfigurationJobs !== prevProps.lastConfigurationJobs) {\n if (\n List.isList(this.props.lastConfigurationJobs) &&\n List.isList(prevProps.lastConfigurationJobs)\n ) {\n const previousLastJob = prevProps.lastConfigurationJobs.get(0)\n const currentLastJob = this.props.lastConfigurationJobs.get(0)\n\n if (\n previousLastJob &&\n currentLastJob &&\n _includes([\"waiting\", \"running\"], previousLastJob.status) &&\n _includes([\"canceled\", \"finished\", \"warning\", \"error\"], currentLastJob.status)\n ) {\n this.fetchOutputLiveDataPreviews(0)\n }\n }\n }\n\n // component stays rendered, configuration change\n if (this.props.match.params.cid !== prevProps.match.params.cid) {\n // do component's data cleanup && also cache cleanup (conf/ws jobs)\n this._cleanup(true, true)\n this._init()\n }\n }\n\n modifyConfiguration = async (parameters, originParameters = {}, message = \"\") => {\n const { id: workspaceId, cid: configurationId } = this.props.match.params\n const { modifyConfiguration, showToast } = this.props\n await modifyConfiguration(workspaceId, configurationId, parameters, originParameters, 0).then(\n () => {\n showToast(message ? message : \"Configuration has been modified.\", TOAST.TYPE.SUCCESS)\n }\n )\n }\n\n deleteConfiguration = () => {\n if (!this.state.confirmModalVariables.get(\"isLoading\")) {\n const { id: workspaceId, cid: configurationId } = this.props.match.params\n const { deleteConfiguration, showToast, history } = this.props\n\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", true)\n }))\n deleteConfiguration(workspaceId, configurationId)\n .then(() => {\n showToast(\"Configuration has been deleted.\", TOAST.TYPE.SUCCESS)\n history.push(getRoutePath(\"workspace.show\", { id: workspaceId }))\n })\n .catch(() => {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", false)\n }))\n })\n }\n }\n\n toggleDeleteModal = () => {\n const open = this.state.confirmModalVariables.get(\"open\")\n if (open) {\n this.intervalId = setInterval(() => {\n this.refreshLastConfigurationJob()\n this.fetchLastConfigurationsJobs()\n }, INTERVAL.CONFIGURATION_SHOW)\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", false)\n .set(\"isLoading\", false)\n }))\n } else {\n this._cleanup()\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", true)\n .set(\"type\", MODAL.TYPE.DELETE)\n .set(\"handleClose\", this.toggleDeleteModal)\n .set(\"handleConfirm\", this.deleteConfiguration)\n .set(\"title\", \"Delete configuration\")\n .set(\"action\", \"delete\")\n .set(\"what\", \"configuration\")\n .set(\"text\", \"\")\n .set(\"htmlText\", [])\n }))\n }\n }\n\n toggleConfigurationCancelModal = () => {\n const open = this.state.confirmModalVariables.get(\"open\")\n if (open) {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", false)\n .set(\"isLoading\", false)\n }))\n } else {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", true)\n .set(\"type\", MODAL.TYPE.CANCEL)\n .set(\"handleClose\", this.toggleConfigurationCancelModal)\n .set(\"handleConfirm\", this.cancelConfigurationJob)\n .set(\"title\", \"Cancel configuration\")\n .set(\"action\", \"cancel\")\n .set(\"what\", \"configuration job\")\n .set(\"text\", \"\")\n .set(\"htmlText\", [])\n }))\n }\n }\n\n cancelConfigurationJob = async () => {\n const {\n lastConfigurationJobs,\n cancelConfigurationJob,\n showToast,\n match: {\n params: { id, cid }\n }\n } = this.props\n if (List.isList(lastConfigurationJobs) && lastConfigurationJobs.size > 0) {\n const job = lastConfigurationJobs.get(0)\n this.runningCalls.lastConfigurationJobs = true\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", true)\n }))\n try {\n await cancelConfigurationJob(id, cid, job.id)\n showToast(\"Configuration job is being cancelled.\", TOAST.TYPE.SUCCESS)\n this.runningCalls.lastConfigurationJobs = false\n this.toggleConfigurationCancelModal()\n } catch (err) {\n this.runningCalls.lastConfigurationJobs = false\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", false)\n }))\n }\n } else {\n this.toggleConfigurationCancelModal()\n }\n }\n\n runConfiguration = () => {\n if (!this.state.confirmModalVariables.get(\"isLoading\")) {\n const { showToast, runConfigurationJob } = this.props\n const { id: workspaceId, cid: configurationId } = this.props.match.params\n\n this.runningCalls.lastConfigurationJobs = true\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", true)\n }))\n runConfigurationJob(workspaceId, configurationId)\n .then(response => {\n this.runningCalls.lastConfigurationJobs = false\n showToast(\n \"Configuration job has started.\",\n TOAST.TYPE.SUCCESS,\n getRoutePath(\"workspace.configuration.configurationJob.show\", {\n id: workspaceId,\n cid: configurationId,\n aid: response.value.job.id\n })\n )\n this.toggleRunModal()\n })\n .catch(() => {\n this.runningCalls.lastConfigurationJobs = false\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", false)\n }))\n })\n }\n }\n\n toggleRunModal = () => {\n const open = this.state.confirmModalVariables.get(\"open\")\n if (open) {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", false)\n .set(\"isLoading\", false)\n }))\n } else {\n const { workspace, configuration } = this.props\n let htmlText = [

    Do you really want to run this configuration?

    ]\n if (workspace && configuration) {\n const undefinedPlaceholders = getUndefinedWorkspaceVariables(\n Map.isMap(configuration.settings) ? configuration.settings.toJS() : {},\n workspace.variables\n )\n if (undefinedPlaceholders.length > 0) {\n htmlText = [\n

    Do you really want to run this configuration?

    ,\n

    \n Notice:\n

    ,\n

    \n Configuration contains placeholder(s) undefined in workspace variable(s):{\" \"}\n {undefinedPlaceholders.join(\", \")}.\n

    \n ]\n }\n }\n\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", true)\n .set(\"type\", MODAL.TYPE.SUCCESS)\n .set(\"handleClose\", this.toggleRunModal)\n .set(\"handleConfirm\", this.runConfiguration)\n .set(\"title\", \"Run configuration\")\n .set(\"text\", \"\")\n .set(\"htmlText\", htmlText)\n }))\n }\n }\n\n toggleDataEraseModal = () => {\n const open = this.state.confirmModalVariables.get(\"open\")\n if (open) {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", false)\n .set(\"isLoading\", false)\n }))\n } else {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", true)\n .set(\"type\", MODAL.TYPE.ERASE)\n .set(\"handleClose\", this.toggleDataEraseModal)\n .set(\"handleConfirm\", this.eraseConfigurationData)\n .set(\"title\", \"Erase configuration data\")\n .set(\"text\", \"Do you really want to erase all configuration data?\")\n .set(\"htmlText\", [])\n }))\n }\n }\n\n eraseConfigurationData = async () => {\n if (!this.state.confirmModalVariables.get(\"isLoading\")) {\n const {\n showToast,\n match: {\n params: { id, cid }\n }\n } = this.props\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", true)\n }))\n const eraseConfigurationDataRequest = this.pendingPromises.create(\n api().configuration.data.delete(id, cid)\n )\n try {\n await eraseConfigurationDataRequest.promise\n await this.fetchOutputLiveDataPreviews(0)\n showToast(\"Configuration data has been erased.\", TOAST.TYPE.SUCCESS)\n this.toggleDataEraseModal()\n } catch (err) {\n if (!_get(err, \"isCanceled\")) {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", false)\n }))\n }\n } finally {\n this.pendingPromises.remove(eraseConfigurationDataRequest)\n }\n }\n }\n\n refreshLastConfigurationJob = () => {\n if (!this.runningCalls.lastConfigurationJobs) {\n this.runningCalls.lastConfigurationJobs = true\n const {\n refreshLastConfigurationJob,\n match: {\n params: { id, cid }\n }\n } = this.props\n refreshLastConfigurationJob(id, cid, 0)\n .then(() => {\n this.runningCalls.lastConfigurationJobs = false\n })\n .catch(() => {\n this.runningCalls.lastConfigurationJobs = false\n })\n }\n }\n\n fetchInputLiveDataPreviews = async offset => {\n const {\n fetchInDataPreviews,\n match: {\n params: { id, cid }\n }\n } = this.props\n await fetchInDataPreviews(id, cid, offset, CONFIGURATION.DATA_PREVIEW.LOADING_LIMIT).catch(\n _noop\n )\n }\n\n fetchOutputLiveDataPreviews = async offset => {\n const {\n fetchOutDataPreviews,\n match: {\n params: { id, cid }\n }\n } = this.props\n await fetchOutDataPreviews(id, cid, offset, CONFIGURATION.DATA_PREVIEW.LOADING_LIMIT).catch(\n _noop\n )\n }\n\n _fetchBothLiveDataPreviews = () => {\n this.fetchInputLiveDataPreviews(0)\n this.fetchOutputLiveDataPreviews(0)\n }\n\n fetchLastConfigurationsJobs = async () => {\n if (!this.runningCalls.configurationsLastJobs) {\n const {\n configuration,\n match: {\n params: { id }\n }\n } = this.props\n const { lastConfigurationsStatuses } = this.state\n if (configuration) {\n const inputs = configuration.getIn([\"input_settings\", \"inputs\"])\n if (Map.isMap(inputs)) {\n this.runningCalls.configurationsLastJobs = true\n const [...configurationIds] = inputs.keys()\n const lastConfJobsPromise = this.pendingPromises.create(\n api().workspace.configuration.listLastJobs(\n id,\n configurationIds.map(id => _toInteger(id))\n )\n )\n try {\n const response = await lastConfJobsPromise.promise\n if (response.last_configuration_jobs.length > 0) {\n const currentStatuses = Map(\n response.last_configuration_jobs.reduce((returnObj, job) => {\n returnObj[job.configuration_id] = _get(job, \"last_job.status\")\n return returnObj\n }, {})\n )\n\n if (!lastConfigurationsStatuses.get(\"data\").equals(currentStatuses)) {\n if (lastConfigurationsStatuses.get(\"isFulfilled\")) {\n this.fetchInputLiveDataPreviews(0)\n }\n this.setState({\n lastConfigurationsStatuses: Map({\n isFulfilled: true,\n data: currentStatuses\n })\n })\n }\n }\n } catch (err) {\n } finally {\n this.runningCalls.configurationsLastJobs = false\n this.pendingPromises.remove(lastConfJobsPromise)\n }\n }\n }\n }\n }\n\n toggleCloneModal = () => {\n this.setState(prevState => ({\n cloneModalOpen: !prevState.cloneModalOpen\n }))\n }\n\n resetOauth = async () => {\n await this.modifyConfiguration({ oauth_settings: {} }, {}, \"OAuth has been reset.\")\n }\n\n onSettingsFormError = errors => {\n const { showToast } = this.props\n const errorsCount = errors.length\n showToast(\n `Validation failed: ${errorsCount} ${errorsCount > 1 ? \"errors\" : \"error\"} occurred.`,\n TOAST.TYPE.ERROR\n )\n }\n\n onSettingsFormSubmit = async data => {\n const { workspace, configuration } = this.props\n const res = await this.modifyConfiguration(\n data,\n {\n settings: Map.isMap(configuration.settings)\n ? configuration.settings.toJS()\n : configuration.settings\n },\n \"Configuration's setting has been modified.\"\n )\n if (workspace) {\n const undefinedPlaceholders = getUndefinedWorkspaceVariables(\n data.settings,\n workspace.variables\n )\n if (undefinedPlaceholders.length > 0) {\n this.setState(prevState => ({\n undefinedPlaceholdersModal: prevState.undefinedPlaceholdersModal\n .set(\"open\", true)\n .set(\"placeholders\", undefinedPlaceholders.join(\", \"))\n }))\n }\n }\n return res\n }\n\n onWorkspaceVariablesInjectionSubmit = async data => {\n const { configuration } = this.props\n return await this.modifyConfiguration(\n data,\n {\n settings: Map.isMap(configuration.settings)\n ? configuration.settings.toJS()\n : configuration.settings\n },\n \"Configuration's workspace variables have been injected.\"\n )\n }\n\n onJsonInvalidMessage = () => {\n this.props.showToast(\"JSON is not valid.\", TOAST.TYPE.ERROR)\n }\n\n onCodeEditorsSaveSubmit = async data => {\n const { configuration } = this.props\n await this.modifyConfiguration(\n data,\n {\n settings: Map.isMap(configuration.settings)\n ? configuration.settings.toJS()\n : configuration.settings\n },\n \"Code has been saved.\"\n )\n }\n\n onConfigurationInputsSubmit = async data => {\n const { configuration } = this.props\n const res = await this.modifyConfiguration(\n {\n input_settings: configuration.input_settings.merge({ inputs: data }).toJS()\n },\n {\n input_settings: configuration.input_settings.toJS()\n },\n \"Filters have been modified.\"\n )\n this._fetchBothLiveDataPreviews()\n return res\n }\n\n undefinedPlaceholdersModalClose = () => {\n this.setState(prevState => ({\n undefinedPlaceholdersModal: prevState.undefinedPlaceholdersModal.set(\"open\", false)\n }))\n }\n\n toggleEditMode =\n editMode =>\n (cb = _noop) =>\n () => {\n this.setState(\n prevState => ({\n editModes: prevState.editModes.set(editMode, !prevState.editModes.get(editMode))\n }),\n () => {\n let isEditing = false\n this.state.editModes.forEach(mode => {\n if (mode) {\n isEditing = true\n }\n })\n\n if (isEditing) {\n this.props.disableLogout()\n } else {\n this.props.enableLogout()\n }\n cb()\n }\n )\n }\n\n onCopyAuthLinkSuccessMessage = () => {\n this.props.showToast(\"Authorization link has been copied to clipboard.\", TOAST.TYPE.SUCCESS)\n }\n\n render() {\n const {\n configuration,\n configurations,\n usersAcl,\n components,\n lastConfigurationJobs,\n isConfigurationsFulfilled,\n isConfigurationsFetching,\n history,\n inDataPreviews,\n outDataPreviews,\n workspace,\n showToast\n } = this.props\n const {\n confirmModalVariables,\n cloneModalOpen,\n lastConfigurationsStatuses,\n editModes,\n undefinedPlaceholdersModal\n } = this.state\n const { id: workspaceId } = this.props.match.params\n const isEditable = hasWritePermission(usersAcl)\n let currentlyEditing = \"\"\n editModes.forEach((mode, key) => {\n if (mode) {\n switch (key) {\n case \"configurationName\": {\n currentlyEditing = \"configuration name\"\n break\n }\n case \"description\": {\n currentlyEditing = \"configuration description\"\n break\n }\n case \"settings\": {\n currentlyEditing = \"configuration settings\"\n break\n }\n case \"codeEditor\": {\n currentlyEditing = \"configuration code\"\n break\n }\n case \"dataIn\": {\n currentlyEditing = \"configuration data in filters\"\n break\n }\n case \"variables\": {\n currentlyEditing = \"workspace variables injection\"\n break\n }\n default:\n currentlyEditing = \"\"\n }\n }\n })\n\n let hasVariablesInjectionCard = false\n let variablesInitialValues = { variables: [{}] }\n // show it for python code, cli code and r code components for now\n if (workspace && configuration && [8, 9, 27].includes(configuration.component_id)) {\n hasVariablesInjectionCard = true\n const vars = configuration.getIn([\"settings\", \"parameters\", \"vars\"])\n if (Map.isMap(vars) && vars.size > 0) {\n variablesInitialValues = {\n variables: [...vars.map((val, key) => ({ value: key, label: key })).values()]\n }\n }\n }\n\n return (\n
    \n {configuration && isConfigurationsFulfilled && (\n \n \n
    \n
    \n \n {components && (\n \n {hasVariablesInjectionCard && (\n \n )}\n \n \n \n )}\n
    \n
    \n \n \n \n
    \n
    \n \n
    \n )}\n \n

    \n Configuration contains placeholder(s) undefined in workspace variable(s):{\" \"}\n {undefinedPlaceholdersModal.get(\"placeholders\")}\n

    \n \n \n 0}\n message={`Do you really want to leave current page and lose unsaved ${currentlyEditing}?`}\n />\n
    \n )\n }\n}\n\nConfigurationShow.propTypes = {\n fetchConfigurationList: PropTypes.func.isRequired,\n modifyConfiguration: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired,\n workspace: PropTypes.instanceOf(Record),\n configuration: PropTypes.instanceOf(Record),\n configurations: PropTypes.instanceOf(Map),\n isConfigurationsFulfilled: PropTypes.bool.isRequired,\n usersAcl: PropTypes.instanceOf(Record),\n lastConfigurationJobs: PropTypes.instanceOf(List),\n components: PropTypes.instanceOf(Map),\n showLoadingBar: PropTypes.func.isRequired,\n hideLoadingBar: PropTypes.func.isRequired,\n listConfigurationJob: PropTypes.func.isRequired,\n refreshLastConfigurationJob: PropTypes.func.isRequired,\n runConfigurationJob: PropTypes.func.isRequired,\n enableLogout: PropTypes.func.isRequired,\n disableLogout: PropTypes.func.isRequired,\n inDataPreviews: PropTypes.instanceOf(Map),\n outDataPreviews: PropTypes.instanceOf(Map),\n fetchInDataPreviews: PropTypes.func.isRequired,\n fetchOutDataPreviews: PropTypes.func.isRequired,\n cancelConfigurationJob: PropTypes.func.isRequired,\n isConfigurationsFetching: PropTypes.bool.isRequired\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n workspace: getWorkspaceRecord(state, ownProps.match.params.id),\n configuration: getWorkspaceConfigurationData(\n state,\n ownProps.match.params.id,\n ownProps.match.params.cid\n ),\n configurations: getWorkspaceConfigurationsData(state, ownProps.match.params.id),\n isConfigurationsFulfilled: isConfigurationsFulfilled(state, ownProps.match.params.id),\n isConfigurationsFetching: getIsConfigurationsFetching(state),\n usersAcl: getUsersWorkspaceAcl(state, ownProps.match.params.id),\n components: getComponentsData(state),\n lastConfigurationJobs: getLastConfigurationJobsData(state, ownProps.match.params.cid),\n inDataPreviews: getConfigurationsDataPreviews(state, ownProps.match.params.cid, \"in\"),\n outDataPreviews: getConfigurationsDataPreviews(state, ownProps.match.params.cid, \"out\")\n})\n\nexport default connect(mapStateToProps, {\n fetchConfigurationList,\n modifyConfiguration,\n deleteConfiguration,\n showToast,\n showLoadingBar,\n hideLoadingBar,\n listConfigurationJob,\n refreshLastConfigurationJob,\n runConfigurationJob,\n enableLogout,\n disableLogout,\n fetchInDataPreviews,\n fetchOutDataPreviews,\n clearCachedConfigurationJobs,\n clearCachedWorkspaceJobs,\n clearCachedWorkspaceHistory,\n clearCachedConfigurationHistory,\n cancelConfigurationJob,\n resetFilterForm\n})(ConfigurationShow)\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nimport IconButton from \"../IconButton\"\n\nconst SearchField = ({\n input,\n placeholder,\n handleSubmit,\n handleClear,\n handleChange,\n autoFocus = false,\n className\n}) => {\n const onInputChange = input => evt => {\n input.onChange(evt.target.value)\n handleChange?.()\n }\n\n return (\n
    \n \n {input.value && (\n \n \n \n )}\n {!input.value && (\n \n \n \n )}\n
    \n )\n}\n\nSearchField.propTypes = {\n input: PropTypes.object.isRequired,\n placeholder: PropTypes.string.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n handleClear: PropTypes.func.isRequired,\n handleChange: PropTypes.func.isRequired,\n autoFocus: PropTypes.bool\n}\n\nexport default SearchField\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Form, reduxForm, Field } from \"redux-form\"\nimport _get from \"lodash/get\"\n\nimport SearchField from \"components/UI/elements/SearchField\"\n\nimport \"./SearchForm.css\"\n\nclass SearchForm extends Component {\n constructor(props) {\n super(props)\n this.state = {\n typingTimeout: 0\n }\n }\n\n onSubmit = values => {\n const { onSubmit } = this.props\n if (onSubmit) {\n // submit field only when onSubmit is passed to props\n const filterTerm = _get(values, \"search\", \"\")\n onSubmit(filterTerm)\n }\n }\n\n onSearchFieldChange = values => {\n // submit field only when onSubmit is passed to props\n const { onSubmit } = this.props\n if (onSubmit) {\n const { typingTimeout } = this.state\n if (typingTimeout) {\n clearTimeout(typingTimeout)\n }\n\n this.setState({\n typingTimeout: setTimeout(this.props.handleSubmit(this.onSubmit), 250)\n })\n }\n }\n\n handleClear = () => {\n const { handleSubmit, change } = this.props\n const submitter = handleSubmit(() => this.onSubmit({ search: \"\" }))\n change(\"search\", \"\")\n submitter()\n }\n\n render() {\n const { placeholder, className, handleSubmit } = this.props\n return (\n \n \n \n )\n }\n}\n\nSearchForm.propTypes = {\n placeholder: PropTypes.string.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n onSubmit: PropTypes.func,\n className: PropTypes.string,\n initialValues: PropTypes.object\n}\n\nexport default reduxForm({\n form: \"SearchForm\",\n destroyOnUnmount: true\n})(SearchForm)\n\nexport const SearchFormUndestroyable = reduxForm({\n destroyOnUnmount: false\n})(SearchForm)\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { reduxForm, Field } from \"redux-form\"\n\n// helpers\nimport { required } from \"helpers/validators.helper\"\n\n// ui components\nimport TextField from \"components/UI/elements/TextField\"\nimport Button from \"components/UI/elements/Button\"\n\nclass CreateConfigurationForm extends PureComponent {\n onSubmit = data => {\n this.props.onSubmit(data)\n }\n\n render() {\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n \n Create new configuration\n \n \n )\n }\n}\n\nCreateConfigurationForm.propTypes = {\n onSubmit: PropTypes.func.isRequired,\n loading: PropTypes.bool.isRequired,\n isEditable: PropTypes.bool\n}\n\nCreateConfigurationForm = reduxForm({\n form: \"CreateConfigurationForm\",\n touchOnBlur: false\n})(CreateConfigurationForm)\n\nexport default CreateConfigurationForm\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { connect } from \"react-redux\"\nimport _get from \"lodash/get\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Map, Record } from \"immutable\"\nimport { getFormValues } from \"redux-form\"\n\n// actions\nimport { createConfiguration } from \"actions/configuration.action\"\nimport { showToast } from \"actions/toast.action\"\n\n// ui components\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Button from \"components/UI/elements/Button\"\nimport SearchForm from \"components/UI/components/SearchForm\"\nimport CreateConfigurationForm from \"../CreateConfigurationForm\"\n\n// helpers\nimport { getRoutePath } from \"routes\"\nimport { hasWritePermission } from \"helpers/authenticatedUser.helper\"\nimport { goBack } from \"helpers/backButton.helper\"\nimport { getComponentIconSrc } from \"helpers/component.helper\"\n\n// selectors\nimport { getComponentsFuseData } from \"selectors/component.selector\"\nimport { getUsersWorkspaceAcl } from \"selectors/usersAcl.selector\"\n\nimport \"./ConfigurationCreate.css\"\nimport { TOAST } from \"sharedConstants\"\n\nclass ConfigurationCreate extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n filterType: null,\n // expanded component id\n expanded: null,\n createLoading: false\n }\n }\n\n onSubmit = data => {\n if (!this.state.createLoading) {\n this.setState({\n createLoading: true\n })\n const { id } = this.props.match.params\n const { history, createConfiguration, showToast } = this.props\n const requestData = {\n ...data,\n component_id: this.state.expanded\n }\n\n createConfiguration(id, requestData)\n .then(response => {\n showToast(\n \"Configuration has been created.\",\n TOAST.TYPE.SUCCESS,\n getRoutePath(\"workspace.configuration.show\", {\n id,\n cid: response.value.id\n })\n )\n history.push(getRoutePath(\"workspace.show\", { id }))\n })\n .catch(error => {\n this.setState({\n createLoading: false\n })\n })\n }\n }\n\n toggleFilterType = type => () => {\n this.setState(prevState => ({\n filterType: prevState.filterType === type ? null : type\n }))\n }\n\n toggleComponent = component => () => {\n if (!component.in_progress) {\n this.setState(prevState => ({\n expanded: prevState.expanded === component.id ? null : component.id\n }))\n }\n }\n\n _renderComponent = component => {\n const { usersAcl } = this.props\n const { expanded, createLoading } = this.state\n const isEditable = hasWritePermission(usersAcl)\n\n return (\n \n
    \n {component.name}\n
    \n

    {component.name}

    \n

    {component.type}

    \n
    \n {component.in_progress === 1 && (\n
    \n Under development\n
    \n )}\n
    \n {component.id === expanded && (\n
    \n {component.description.length !== 0 &&

    {component.description}

    }\n \n
    \n )}\n \n )\n }\n\n render() {\n const { id } = this.props.match.params\n const { filterType } = this.state\n const { components, searchValues, history } = this.props\n const filterTerm = _get(searchValues, \"search\", \"\")\n\n let componentsList = filterTerm\n ? components\n .get(\"data\")\n .search(filterTerm)\n .toArray()\n : components.get(\"data\").list.toArray()\n\n if (filterType) {\n componentsList = componentsList.filter(\n component => component.type === filterType && component.hidden === 0\n )\n } else {\n componentsList = componentsList.filter(component => component.hidden === 0)\n }\n\n return (\n \n
    \n \n
    \n \n Back\n \n

    Create new configuration

    \n
    \n \n
    \n\n
    \n \n Connector\n \n \n Processor\n \n \n Loader\n \n
    \n\n {components.get(\"isFulfilled\") && (\n
    \n
    \n {componentsList.map((component, index) => {\n if (index % 3 === 0) {\n return this._renderComponent(component)\n }\n return null\n })}\n
    \n
    \n {componentsList.map((component, index) => {\n if (index % 3 === 1) {\n return this._renderComponent(component)\n }\n return null\n })}\n
    \n
    \n {componentsList.map((component, index) => {\n if (index % 3 === 2) {\n return this._renderComponent(component)\n }\n return null\n })}\n
    \n
    \n )}\n
    \n
    \n )\n }\n}\n\nConfigurationCreate.propTypes = {\n createConfiguration: PropTypes.func.isRequired,\n components: PropTypes.instanceOf(Map).isRequired,\n showToast: PropTypes.func.isRequired,\n usersAcl: PropTypes.instanceOf(Record)\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n components: getComponentsFuseData(state),\n searchValues: getFormValues(\"SearchForm\")(state),\n usersAcl: getUsersWorkspaceAcl(state, ownProps.match.params.id)\n})\n\nexport default connect(mapStateToProps, { createConfiguration, showToast })(ConfigurationCreate)\n","import React from \"react\"\n\nimport \"./LoadingCircle.css\"\n\nconst LoadingCircle = ({ className }) => {\n return
    \n}\n\nexport default LoadingCircle\n","import { createSelector } from \"reselect\"\n\nconst getSearchedItems = state => state.fulltextSearch.get(\"data\")\nexport const getSelectionSettings = state => state.fulltextSearch.get(\"selectionSettings\")\n\nexport const hasMoreItems = state => state.fulltextSearch.get(\"hasMoreItems\")\n\nexport const getFulltextSearchData = createSelector(\n [getSearchedItems, getSelectionSettings],\n (searchedItems, selectionSettings) => {\n if (selectionSettings === null) {\n return null\n } else {\n return searchedItems\n }\n }\n)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport { formValueSelector } from \"redux-form\"\nimport PropTypes from \"prop-types\"\nimport { Record, List } from \"immutable\"\nimport moment from \"moment\"\nimport { Link } from \"react-router-dom\"\nimport _findKey from \"lodash/findKey\"\nimport _toLower from \"lodash/toLower\"\nimport _size from \"lodash/size\"\nimport _trimStart from \"lodash/trimStart\"\nimport { Waypoint } from \"react-waypoint\"\n\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Paper from \"components/UI/elements/Paper\"\nimport LoadingCircle from \"components/UI/elements/LoadingCircle\"\nimport { SearchFormUndestroyable } from \"components/UI/components/SearchForm\"\nimport { fulltextSearch, clearFulltextSearch } from \"actions/fulltextSearch.action\"\nimport {\n getFulltextSearchData,\n getSelectionSettings,\n hasMoreItems\n} from \"selectors/fulltextSearch.selector\"\nimport { getComponentIconSrc } from \"helpers/component.helper\"\nimport { SEARCH, MOMENT } from \"sharedConstants\"\nimport { getRoutePath } from \"routes\"\n\nimport \"./Search.css\"\n\nclass Search extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n loadingMore: false\n }\n }\n\n onSearchSubmit = searchTerm => {\n const { fulltextSearch, clearFulltextSearch } = this.props\n if (searchTerm !== null && searchTerm.length > 0) {\n fulltextSearch(searchTerm, 0, SEARCH.LOADING_LIMIT, 1)\n } else {\n clearFulltextSearch()\n }\n }\n\n _lodaMoreResults = () => {\n if (!this.state.loadingMore) {\n const { fulltextSearch, selectionSettings, searchTerm } = this.props\n this.setState({\n loadingMore: true\n })\n fulltextSearch(\n searchTerm,\n selectionSettings.offset + SEARCH.LOADING_LIMIT,\n SEARCH.LOADING_LIMIT,\n 1\n )\n .then(() => {\n this.setState({\n loadingMore: false\n })\n })\n .catch(() => {\n this.setState({\n loadingMore: false\n })\n })\n }\n }\n\n /*\n * It executes defined onEnter function whenever user scrolls to\n * the element 'Waypoint'. We are using it for infinite scrolling.\n */\n renderWaypoint = () => {\n const { hasMoreResults } = this.props\n const { loadingMore } = this.state\n\n if (loadingMore) {\n return \n }\n if (hasMoreResults) {\n return \n }\n }\n\n renderComponentBox = component => {\n let icon = component.icon\n if (!icon) {\n icon = \"dummy.png\"\n }\n\n return (\n
    \n
    \n \"component\n
    \n
    \n

    {component.name}

    \n
    {component.type}
    \n
    \n
    \n )\n }\n\n renderSearchResults = () => {\n const { searchResults, searchTerm } = this.props\n return searchResults.map(result => {\n // search in settings\n let arrayOfLines = JSON.stringify(result.settings, null, 2).split(\"\\n\")\n let searchTermLineIndex = arrayOfLines.findIndex(line =>\n _toLower(line).includes(_toLower(searchTerm))\n )\n // try to find variable value\n if (searchTermLineIndex === -1) {\n const vKey = _findKey(result.workspace.variables, variable => {\n if (_size(variable) > 0) {\n if (_toLower(variable).includes(_toLower(searchTerm))) {\n return true\n }\n }\n })\n if (vKey !== undefined) {\n searchTermLineIndex = arrayOfLines.findIndex(line =>\n _toLower(line).includes(_toLower(`{{${vKey}}}`))\n )\n }\n }\n // search in conf name\n if (searchTermLineIndex === -1) {\n arrayOfLines = JSON.stringify({ name: result.name }, null, 2).split(\"\\n\")\n searchTermLineIndex = arrayOfLines.findIndex(line =>\n _toLower(line).includes(_toLower(searchTerm))\n )\n }\n // search in conf description\n if (searchTermLineIndex === -1) {\n arrayOfLines = JSON.stringify({ description: result.description }, null, 2).split(\"\\n\")\n searchTermLineIndex = arrayOfLines.findIndex(line =>\n _toLower(line).includes(_toLower(searchTerm))\n )\n }\n // search in conf workspace name\n if (searchTermLineIndex === -1) {\n arrayOfLines = JSON.stringify(\n { workspace: { name: result.workspace.name } },\n null,\n 2\n ).split(\"\\n\")\n searchTermLineIndex = arrayOfLines.findIndex((line, idx) => {\n if (idx !== 1) {\n return _toLower(line).includes(_toLower(searchTerm))\n }\n return false\n })\n }\n // search in conf workspace description\n if (searchTermLineIndex === -1) {\n arrayOfLines = JSON.stringify(\n { workspace: { description: result.workspace.description } },\n null,\n 2\n ).split(\"\\n\")\n searchTermLineIndex = arrayOfLines.findIndex((line, idx) => {\n if (idx !== 1) {\n return _toLower(line).includes(_toLower(searchTerm))\n }\n return false\n })\n }\n let startIndex, endIndex\n switch (searchTermLineIndex) {\n case 0:\n startIndex = searchTermLineIndex\n endIndex = startIndex + 5\n break\n case 1:\n startIndex = searchTermLineIndex - 1\n endIndex = searchTermLineIndex + 4\n break\n case 2:\n startIndex = searchTermLineIndex - 2\n endIndex = searchTermLineIndex + 3\n break\n case arrayOfLines.length - 1:\n startIndex = searchTermLineIndex - 4 < 0 ? 0 : searchTermLineIndex - 4\n endIndex = searchTermLineIndex + 1\n break\n case arrayOfLines.length - 2:\n startIndex = searchTermLineIndex - 3 < 0 ? 0 : searchTermLineIndex - 3\n endIndex = searchTermLineIndex + 2\n break\n default:\n startIndex = searchTermLineIndex - 2\n endIndex = searchTermLineIndex + 3\n }\n let gapSize = 2147483647\n let resultToRender = arrayOfLines.slice(startIndex, endIndex)\n if (_size(resultToRender) > 0) {\n resultToRender.forEach(line => {\n const startSize = _size(line)\n const endSize = _size(_trimStart(line))\n const gap = startSize - endSize\n if (gap < gapSize) {\n gapSize = gap\n }\n })\n if (gapSize) {\n resultToRender = resultToRender.map(line => {\n return line.substring(gapSize)\n })\n }\n }\n const maxIndexLength = endIndex.toString().length\n\n return (\n \n
    \n
    \n
    \n Configuration\n
    \n
    \n Component\n
    \n
    \n Author\n
    \n
    \n Modified\n
    \n
    \n
    \n
    \n \n

    {result.name}

    \n \n
    \n
    {this.renderComponentBox(result.component)}
    \n
    \n

    {result.user.name}

    \n
    \n
    \n

    \n {moment\n .utc(result.created)\n .local()\n .format(MOMENT.DATE_TIME_FORMAT)}\n

    \n
    \n
    \n
    \n
    \n Workspace\n

    {result.workspace.name}

    \n
    \n
    \n
    \n
    \n Result\n
    \n {searchTermLineIndex === -1 &&

    Unable to create preview.

    }\n {searchTermLineIndex !== -1 &&\n resultToRender.map(line => {\n startIndex += 1\n return (\n \n {startIndex}\n {line}\n

    \n )\n })}\n
    \n
    \n
    \n )\n })\n }\n\n render() {\n const { searchResults } = this.props\n return (\n
    \n \n \n \n {searchResults !== null && searchResults.size === 0 && (\n

    No results found.

    \n )}\n {searchResults !== null && searchResults.size > 0 && this.renderSearchResults()}\n {this.renderWaypoint()}\n
    \n )\n }\n}\n\nSearch.propTypes = {\n selectionSettings: PropTypes.instanceOf(Record),\n searchResults: PropTypes.instanceOf(List),\n fulltextSearch: PropTypes.func.isRequired,\n hasMoreResults: PropTypes.bool.isRequired\n}\n\nconst selector = formValueSelector(\"SearchPageSearchForm\")\n\nconst mapStateToProps = state => {\n return {\n searchResults: getFulltextSearchData(state),\n selectionSettings: getSelectionSettings(state),\n searchTerm: selector(state, \"search\"),\n hasMoreResults: hasMoreItems(state)\n }\n}\n\nexport default connect(mapStateToProps, { fulltextSearch, clearFulltextSearch })(Search)\n","import { SEARCH } from \"sharedConstants\"\nimport { api } from \"api\"\n\nexport const fulltextSearch = (searchText, offset, limit, loadFullStructure) => async dispatch =>\n dispatch({\n type: SEARCH.ACTION.LIST,\n payload: {\n promise: (async () => {\n return await api().configurationSettigsSearch(searchText, offset, limit, loadFullStructure)\n })()\n }\n })\n\nexport const clearFulltextSearch = () => dispatch =>\n dispatch({\n type: SEARCH.ACTION.CLEAR,\n payload: null\n })\n","import { List } from \"immutable\"\n\nexport const getDashboardConfJobs = state => {\n const data = state.projectConfigurationJobs.get(\"data\")\n if (List.isList(data)) {\n return data.take(10)\n }\n return null\n}\n\nexport const getProjectConfJobs = state => state.projectConfigurationJobs.get(\"data\")\n\nexport const getProjectConfJobsSelectionSettings = state =>\n state.projectConfigurationJobs.get(\"selectionSettings\")\n","import { createSelector } from \"reselect\"\nimport _toLower from \"lodash/toLower\"\n\nconst getTags = state => state.tags.get(\"data\")\n\nexport const getTagsMap = createSelector([getTags], tags => tags)\n\nexport const areTagsAlreadyFetched = state => state.tags.get(\"isFetched\")\n\nexport const getTagsArrayForSelect = createSelector(getTags, tags =>\n tags\n .map(tag => ({ value: tag.id, label: tag.name }))\n .toList()\n .toJS()\n)\n\nexport const getTagsSortedByName = createSelector(getTags, tags => {\n return tags.toList().sortBy(val => _toLower(val.name))\n})\n","import { TABLE } from \"sharedConstants\"\n\nexport const setSortingOptions = (form, column, order) => async dispatch => {\n dispatch({\n type: `${form}_${TABLE.ACTION.SET_SORT_OPTIONS}`,\n payload: {\n promise: () => {\n return { column, order }\n }\n }\n })\n}\n\nexport const setFilterBy = (form, attribute) => async dispatch => {\n dispatch({\n type: `${form}_${TABLE.ACTION.SET_FILTER_BY}`,\n payload: {\n promise: () => {\n return { attribute }\n }\n }\n })\n}\n\nexport const setFilterByTags = (form, selectedTags) => async dispatch => {\n dispatch({\n type: `${form}_${TABLE.ACTION.SET_SELECTED_TAGS}`,\n payload: {\n promise: () => {\n return { selectedTags }\n }\n }\n })\n}\n\nexport const setFilterAndSorting = (form, column, order, selectedTags) => async dispatch => {\n dispatch({\n type: `${form}_${TABLE.ACTION.SET_SORTING_AND_TAGS}`,\n payload: {\n promise: () => {\n return { column, order, selectedTags }\n }\n }\n })\n}\n","import _get from \"lodash/get\"\nimport { api } from \"api\"\nimport { ACL } from \"sharedConstants\"\nimport AllResourceItemsFetcher from \"helpers/AllResourceItemsFetcher.helper\"\n\nexport const fetchWorkspaceAcl = workspaceId => async dispatch => {\n const caller = new AllResourceItemsFetcher()\n\n return dispatch({\n type: ACL.ACTION.LIST,\n payload: {\n promise: (async () => {\n const data = await caller\n .setEndpointCall((offset, limit, loadFullStructure) =>\n api().acl.list(workspaceId, offset, limit, loadFullStructure, \"id\", \"DESC\")\n )\n .setDataPath(\"workspace_users\")\n .setLoadFullStructure(0)\n .run()\n return {\n workspaceId,\n data\n }\n })()\n }\n })\n}\n\nexport const fetchDawgAcl = dawgId => async dispatch => {\n const caller = new AllResourceItemsFetcher()\n\n return dispatch({\n type: ACL.DAWG.ACTION.LIST,\n payload: {\n promise: (async () => {\n const data = await caller\n .setEndpointCall((offset, limit, loadFullStructure) =>\n api().acl.dawg.list(dawgId, offset, limit, loadFullStructure, \"id\", \"DESC\")\n )\n .setDataPath(\"dawg_users\")\n .setLoadFullStructure(0)\n .run()\n return {\n dawgId,\n data\n }\n })()\n }\n })\n}\n\nexport const fetchUsersAcl = userId => async dispatch => {\n const caller = new AllResourceItemsFetcher()\n\n return dispatch({\n type: ACL.USER.ACTION.LIST,\n payload: {\n promise: (async () => {\n const data = await caller\n .setEndpointCall((offset, limit, loadFullStructure) =>\n api().acl.user.retrieve(userId, offset, limit, loadFullStructure, 1)\n )\n .setDataPath(\"user_workspaces\")\n .setLoadFullStructure(0)\n .run()\n return data\n })()\n }\n })\n}\n\nexport const fetchDawgUsersAcl = userId => async dispatch => {\n const caller = new AllResourceItemsFetcher()\n\n return dispatch({\n type: ACL.USER.DAWG.ACTION.LIST,\n payload: {\n promise: (async () => {\n const data = await caller\n .setEndpointCall((offset, limit, loadFullStructure) =>\n api().acl.user.dawg.retrieve(userId, offset, limit, loadFullStructure, 1)\n )\n .setDataPath(\"user_dawgs\")\n .setLoadFullStructure(0)\n .run()\n return data\n })()\n }\n })\n}\n\nexport const createAcl = (workspaceId, data) => async dispatch =>\n dispatch({\n type: ACL.ACTION.CREATE,\n payload: (async () => {\n const response = await api().acl.create(workspaceId, data)\n return _get(response, \"workspace_user\", {})\n })()\n })\n\nexport const createDawgAcl = (dawgId, data) => async dispatch =>\n dispatch({\n type: ACL.DAWG.ACTION.CREATE,\n payload: (async () => {\n const response = await api().acl.dawg.create(dawgId, data)\n return _get(response, \"dawg_user\", {})\n })()\n })\n\nexport const modifyAcl = (workspaceId, userId, data) => async dispatch =>\n dispatch({\n type: ACL.ACTION.MODIFY,\n payload: (async () => {\n const response = await api().acl.modify(workspaceId, userId, data)\n return _get(response, \"workspace_user\", {})\n })()\n })\n\nexport const modifyDawgAcl = (dawgId, userId, data) => async dispatch =>\n dispatch({\n type: ACL.DAWG.ACTION.MODIFY,\n payload: (async () => {\n const response = await api().acl.dawg.modify(dawgId, userId, data)\n return _get(response, \"dawg_user\", {})\n })()\n })\n\nexport const deleteAcl = acl => async dispatch =>\n dispatch({\n type: ACL.ACTION.DELETE,\n payload: (async () => {\n await api().acl.delete(acl.workspace_id, acl.user_id)\n return {\n workspaceId: acl.workspace_id,\n aclId: acl.id\n }\n })()\n })\n\nexport const deleteDawgAcl = acl => async dispatch =>\n dispatch({\n type: ACL.DAWG.ACTION.DELETE,\n payload: (async () => {\n await api().acl.dawg.delete(acl.dawg_id, acl.user_id)\n return {\n dawgId: acl.dawg_id,\n aclId: acl.id\n }\n })()\n })\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport Gantt from \"5minute-frappe-gantt\"\nimport { withRouter } from \"react-router-dom\"\n\n// helpers, constants\nimport { getRoutePath } from \"routes\"\nimport { GANTT_DATETIME_FORMAT } from \"sharedConstants\"\n\nimport \"./WorkspaceGanttChart.scss\"\n\nclass WorkspaceGanttChart extends PureComponent {\n gantt = null\n metaKey = false\n\n componentDidMount() {\n const { tasks, history, workspaceId, startDate, endDate } = this.props\n this.gantt = new Gantt(this.containerDOM, tasks, {\n on_click: task => {\n const { deleted } = task.configuration\n if (!deleted) {\n if (this.metaKey) {\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location)\n window.open(\n publicUrl.origin +\n getRoutePath(\"workspace.configuration.configurationJob.show\", {\n id: workspaceId,\n cid: task.configuration.id,\n aid: task.job_id\n }),\n \"_blank\"\n )\n } else {\n history.push({\n pathname: getRoutePath(\"workspace.configuration.configurationJob.show\", {\n id: workspaceId,\n cid: task.configuration.id,\n aid: task.job_id\n })\n })\n }\n }\n },\n language: \"en\",\n date_format: GANTT_DATETIME_FORMAT,\n bar_height: 28,\n header_height: 25,\n is_editable: false,\n popup_trigger: null,\n min_columns_count: 3,\n width: 918,\n responsive: true,\n hide_horizontal_lines: true,\n padding: 15,\n start_date: startDate,\n end_date: endDate,\n start_end_force: true,\n popup_enabled: false\n })\n\n const chart = document.getElementById(\"ws-gantt-chart\")\n if (chart) {\n const width = chart.offsetWidth\n const scrollWidth = chart.scrollWidth\n const diff = scrollWidth - width\n if (diff) {\n const scrollableArea = document.getElementById(\"scrollable-area\")\n if (scrollableArea) {\n if (scrollableArea.scrollLeft === 0) {\n scrollableArea.scrollLeft = diff\n const workspaceNames = document.getElementsByClassName(\"workspace-gantt-workspace-name\")\n for (const el of workspaceNames) {\n el.setAttribute(\"style\", `left: ${diff}px`)\n }\n }\n }\n }\n }\n\n // command/ctrl key event handler\n window.addEventListener(\"keydown\", this.handleKeyDown, false)\n window.addEventListener(\"keyup\", this.handleKeyUp, false)\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"keyup\", this.handleKeyUp, false)\n window.removeEventListener(\"keydown\", this.handleKeyDown, false)\n }\n\n handleKeyUp = evt => {\n if (!evt.metaKey) {\n this.metaKey = false\n }\n }\n\n handleKeyDown = evt => {\n if (evt.metaKey) {\n this.metaKey = true\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.startDate !== this.props.startDate || prevProps.endDate !== this.props.endDate) {\n this.gantt.refresh(this.props.tasks, this.props.startDate, this.props.endDate)\n }\n }\n\n render() {\n return (\n (this.containerDOM = el)}\n className=\"workspace-gantt-chart\"\n />\n )\n }\n}\n\nWorkspaceGanttChart.propTypes = {\n tasks: PropTypes.array.isRequired,\n workspaceName: PropTypes.string.isRequired,\n workspaceId: PropTypes.number.isRequired,\n startDate: PropTypes.string.isRequired,\n endDate: PropTypes.string.isRequired\n}\n\nexport default withRouter(WorkspaceGanttChart)\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Map, List } from \"immutable\"\nimport _includes from \"lodash/includes\"\nimport _pick from \"lodash/pick\"\nimport _isEmpty from \"lodash/isEmpty\"\nimport _get from \"lodash/get\"\nimport moment from \"moment\"\nimport { Link } from \"react-router-dom\"\n\n// ui components\nimport WorkspaceGanttChart from \"./WorkspaceGanttChart\"\n\n// constants, helpers\nimport { GANTT_DATETIME_FORMAT } from \"sharedConstants\"\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\nimport { getComponentIconSrc } from \"helpers/component.helper\"\n\nimport \"./IntegrationsActivity.css\"\n\nconst IntegrationsActivity = ({ data, startDate, endDate }) => {\n const processedData = data.map((workspace, id) =>\n Map({\n name: workspace.get(\"name\"),\n id: parseInt(id),\n tasks: List.isList(workspace.get(\"jobs\"))\n ? workspace\n .get(\"jobs\")\n .filter(job => {\n const jobEnd = _includes([\"running\", \"waiting\"], job.status)\n ? moment().local()\n : moment.utc(job.created).local()\n return jobEnd.isBetween(startDate, endDate)\n })\n .map(job => {\n return {\n start: job.origin_created\n ? moment\n .utc(job.origin_created)\n .local()\n .format(GANTT_DATETIME_FORMAT)\n : moment\n .utc(job.created)\n .local()\n .format(GANTT_DATETIME_FORMAT),\n end: _includes([\"running\", \"waiting\"], job.status)\n ? moment()\n .local()\n .format(GANTT_DATETIME_FORMAT)\n : moment\n .utc(job.created)\n .local()\n .format(GANTT_DATETIME_FORMAT),\n name: job.status,\n id: job.configuration.id.toString(),\n dependencies: \"\",\n custom_class: `bar-${job.status}`,\n configuration: _pick(job.configuration, [\"id\", \"name\", \"component\", \"deleted\"]),\n job_id: job.id\n }\n })\n .toArray()\n : []\n })\n )\n\n let count = 0\n let charts = processedData\n .map(workspaceChartData => {\n if (!_isEmpty(workspaceChartData.get(\"tasks\"))) {\n count++\n return (\n
    \n
    \n \n

    {shortenString(workspaceChartData.get(\"name\"), 25)}

    \n \n
    \n {workspaceChartData.get(\"tasks\").map((task, index) => {\n let icon = _get(task, \"configuration.component.icon\", null)\n if (!icon) {\n icon = \"dummy.png\"\n }\n let link\n if (task.configuration.deleted) {\n link = (\n
    \n \n Deleted configuration\n
    \n )\n } else {\n link = (\n \n \n {shortenString(task.configuration.name, 23)}\n \n )\n }\n return link\n })}\n
    \n
    \n \n
    \n )\n }\n return null\n })\n .toArray()\n\n if (count) {\n return charts\n } else {\n return

    No activity occurrence in the selected time range.

    \n }\n}\n\nIntegrationsActivity.propTypes = {\n data: PropTypes.instanceOf(Map).isRequired,\n startDate: PropTypes.instanceOf(moment).isRequired,\n endDate: PropTypes.instanceOf(moment).isRequired\n}\n\nexport default IntegrationsActivity\n","import React, { PureComponent } from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { CSSTransition } from \"react-transition-group\"\nimport _get from \"lodash/get\"\nimport _sortBy from \"lodash/sortBy\"\nimport _isEmpty from \"lodash/isEmpty\"\nimport _map from \"lodash/map\"\nimport moment from \"moment\"\nimport { OrderedMap, Map, List } from \"immutable\"\nimport { Line } from \"react-chartjs-2\"\n\n// ui components\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Paper from \"components/UI/elements/Paper\"\nimport IntegrationsActivity from \"./IntegrationsActivity\"\nimport IconButton from \"components/UI/elements/IconButton\"\n\n// helpers, constants\nimport { api } from \"api\"\nimport PendingPromise from \"helpers/pendingPromise.helper\"\nimport { MOMENT } from \"sharedConstants\"\n\nimport \"./WorkspacesActivityDrawer.css\"\n\nconst lineChartOptions = {\n responsive: true,\n maintainAspectRatio: false,\n legend: {\n display: false\n },\n layout: {\n padding: 5\n },\n scales: {\n yAxes: [\n {\n display: false\n }\n ],\n xAxes: [\n {\n display: false\n }\n ]\n },\n onHover: function(e, chartElement) {\n e.target.style.cursor = chartElement[0] ? \"pointer\" : \"default\"\n }\n}\n\nclass WorkspacesActivityDrawer extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n opened: false,\n data: null,\n loading: true,\n error: \"\",\n stardDate: \"\",\n endDate: \"\",\n timeSpan: -2,\n chartData: {},\n jobCountsInHours: {}\n }\n this.pendingPromises = new PendingPromise()\n this.sliderRef = React.createRef()\n }\n\n toggleDrawer = () => {\n this.setState(prevState => ({\n opened: !prevState.opened,\n error: \"\"\n }))\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.opened !== this.state.opened) {\n if (this.state.opened) {\n this.retrieveData()\n document.body.classList.add(\"prevent-scrolling\")\n this.sliderRef.current.focus()\n } else {\n this.pendingPromises.cancelAll()\n document.body.classList.remove(\"prevent-scrolling\")\n }\n }\n }\n\n retrieveData = async () => {\n this.setState({\n loading: true\n })\n const { timeSpan } = this.state\n let jobs = []\n const nowRoundedUpToHours = moment\n .utc()\n .add(1, \"h\")\n .millisecond(0)\n .second(0)\n .minute(0)\n const tresholdDate = nowRoundedUpToHours.clone().subtract(48, \"h\")\n const startDate = nowRoundedUpToHours.clone().subtract(Math.abs(timeSpan), \"h\")\n const endDate = nowRoundedUpToHours.subtract(Math.abs(timeSpan) - 2, \"h\")\n\n let dataPromise = null\n let offset = 0\n const limit = 100\n let continueLoading = true\n\n const jobAppendIfValid = job => {\n const finished = moment.utc(job.created)\n if (finished >= tresholdDate) {\n jobs.push(job)\n } else {\n continueLoading = false\n }\n }\n\n try {\n do {\n dataPromise = this.pendingPromises.create(\n api().project.configuration.job.list(offset, limit, 1, \"created\", \"DESC\", 1)\n )\n\n const response = await dataPromise.promise\n if (response.configuration_jobs.length === 0) {\n break\n }\n response.configuration_jobs.forEach(jobAppendIfValid)\n offset += limit\n } while (continueLoading)\n const jobCountsInHours = {}\n const iterDate = tresholdDate.local()\n for (let i = 0; i < 48; i++) {\n jobCountsInHours[`${iterDate.date()}-${iterDate.hour()}`] = 0\n iterDate.add(1, \"h\")\n }\n jobs = _sortBy(jobs, [\"id\"])\n let data = OrderedMap()\n jobs.forEach(job => {\n if (job.origin_created) {\n const startSelector = moment\n .utc(job.origin_created)\n .local()\n .format(\"D-H\")\n const endSelector = moment\n .utc(job.created)\n .local()\n .format(\"D-H\")\n if (startSelector === endSelector) {\n jobCountsInHours[startSelector]++\n } else {\n jobCountsInHours[startSelector]++\n jobCountsInHours[endSelector]++\n }\n } else {\n const selector = moment\n .utc(job.created)\n .local()\n .format(\"D-H\")\n jobCountsInHours[selector]++\n }\n const workspaceId = job.configuration.workspace.id.toString()\n if (data.has(workspaceId)) {\n data = data.withMutations(map => {\n map.setIn([workspaceId, \"jobs\"], map.getIn([workspaceId, \"jobs\"]).concat(job))\n })\n } else {\n data = data.withMutations(map => {\n map.set(\n workspaceId,\n Map({\n name: job.configuration.workspace.name,\n jobs: List([job])\n })\n )\n })\n }\n })\n const startDateLocal = startDate.clone().local()\n const endDateLocal = endDate.clone().local()\n const endDateAdapted = endDateLocal.clone().subtract(1, \"s\")\n const pointColors = _map(jobCountsInHours, (val, key) => {\n const keySplit = key.split(\"-\")\n const keyDateTime = moment()\n .date(keySplit[0])\n .hour(keySplit[1])\n if (keyDateTime.isBetween(startDateLocal, endDateAdapted)) {\n return \"#fabe53\"\n } else {\n return \"#C4C4C4\"\n }\n })\n const chartData = {\n labels: _map(jobCountsInHours, (val, key) => {\n const keySplit = key.split(\"-\")\n return `${keySplit[1]}:00-${keySplit[1]}:59`\n }),\n datasets: [\n {\n label: \"# of jobs\",\n data: _map(jobCountsInHours, val => val),\n fill: false,\n borderColor: \"#C4C4C4\",\n borderJoinStyle: \"miter\",\n borderWidth: 2,\n pointRadius: 3,\n pointHoverRadius: 4,\n pointBackgroundColor: pointColors,\n pointBorderColor: pointColors\n }\n ]\n }\n this.setState({\n loading: false,\n data,\n chartData,\n error: \"\",\n startDate: startDateLocal,\n endDate: endDateLocal,\n jobCountsInHours\n })\n } catch (err) {\n if (!_get(err, \"isCanceled\")) {\n const message = _get(err, \"response.data.message\", \"\")\n this.setState({\n loading: false,\n error: message\n })\n }\n if (dataPromise !== null) {\n this.pendingPromises.remove(dataPromise)\n }\n }\n }\n\n getUpdatedChartData = (startDate, endDate) => {\n const { chartData, jobCountsInHours } = this.state\n if (!_isEmpty(chartData) && !_isEmpty(jobCountsInHours)) {\n const endDateAdapted = endDate.clone().subtract(1, \"s\")\n const pointColors = _map(jobCountsInHours, (val, key) => {\n const keySplit = key.split(\"-\")\n const keyDateTime = moment()\n .date(keySplit[0])\n .hour(keySplit[1])\n if (keyDateTime.isBetween(startDate, endDateAdapted)) {\n return \"#fabe53\"\n } else {\n return \"#C4C4C4\"\n }\n })\n const updatedChartData = { ...chartData }\n updatedChartData.datasets[0].pointBackgroundColor = pointColors\n updatedChartData.datasets[0].pointBorderColor = pointColors\n return updatedChartData\n }\n return {}\n }\n\n changeRangeValue = evt => {\n const prevTimeSpan = this.state.timeSpan\n const actualTimeSpan = parseInt(evt.target.value)\n const diff = Math.abs(Math.abs(prevTimeSpan) - Math.abs(actualTimeSpan))\n\n if (prevTimeSpan < actualTimeSpan) {\n // slider moved to right\n this.setState(prevState => ({\n timeSpan: actualTimeSpan,\n startDate: prevState.startDate.clone().add(diff, \"h\"),\n endDate: prevState.endDate.clone().add(diff, \"h\"),\n chartData: this.getUpdatedChartData(\n prevState.startDate.clone().add(diff, \"h\"),\n prevState.endDate.clone().add(diff, \"h\")\n )\n }))\n } else {\n // slider moved to left\n this.setState(prevState => ({\n timeSpan: actualTimeSpan,\n startDate: prevState.startDate.clone().subtract(diff, \"h\"),\n endDate: prevState.endDate.clone().subtract(diff, \"h\"),\n chartData: this.getUpdatedChartData(\n prevState.startDate.clone().subtract(diff, \"h\"),\n prevState.endDate.clone().subtract(diff, \"h\")\n )\n }))\n }\n }\n\n changeRangeValueBy = value => () => {\n if (value === 1 && this.state.timeSpan < -2) {\n this.setState(prevState => ({\n timeSpan: prevState.timeSpan + 1,\n startDate: prevState.startDate.clone().add(1, \"h\"),\n endDate: prevState.endDate.clone().add(1, \"h\"),\n chartData: this.getUpdatedChartData(\n prevState.startDate.clone().add(1, \"h\"),\n prevState.endDate.clone().add(1, \"h\")\n )\n }))\n } else if (value === -1 && this.state.timeSpan > -48) {\n this.setState(prevState => ({\n timeSpan: prevState.timeSpan - 1,\n startDate: prevState.startDate.clone().subtract(1, \"h\"),\n endDate: prevState.endDate.clone().subtract(1, \"h\"),\n chartData: this.getUpdatedChartData(\n prevState.startDate.clone().subtract(1, \"h\"),\n prevState.endDate.clone().subtract(1, \"h\")\n )\n }))\n }\n }\n\n onChartNodeClick = elements => {\n if (elements[0]) {\n const index = elements[0]._index\n const prevTimeSpan = this.state.timeSpan\n let actualTimeSpan = index - 48\n if (actualTimeSpan > -2) {\n actualTimeSpan = -2\n }\n const diff = Math.abs(Math.abs(prevTimeSpan) - Math.abs(actualTimeSpan))\n\n if (prevTimeSpan < actualTimeSpan) {\n // slider moved to right\n this.setState(prevState => ({\n timeSpan: actualTimeSpan,\n startDate: prevState.startDate.clone().add(diff, \"h\"),\n endDate: prevState.endDate.clone().add(diff, \"h\"),\n chartData: this.getUpdatedChartData(\n prevState.startDate.clone().add(diff, \"h\"),\n prevState.endDate.clone().add(diff, \"h\")\n )\n }))\n } else {\n // slider moved to left\n this.setState(prevState => ({\n timeSpan: actualTimeSpan,\n startDate: prevState.startDate.clone().subtract(diff, \"h\"),\n endDate: prevState.endDate.clone().subtract(diff, \"h\"),\n chartData: this.getUpdatedChartData(\n prevState.startDate.clone().subtract(diff, \"h\"),\n prevState.endDate.clone().subtract(diff, \"h\")\n )\n }))\n }\n }\n }\n\n componentWillUnmount() {\n this.pendingPromises.cancelAll()\n document.body.classList.remove(\"prevent-scrolling\")\n }\n\n render() {\n const { opened, loading, error, data, startDate, endDate, timeSpan, chartData } = this.state\n\n return (\n \n \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n {!_isEmpty(chartData) && (\n
    \n \n
    \n )}\n
    \n \n
    \n \n
    \n -48h\n -2h\n \n \n \n \n \n \n
    \n
    \n \n \n {error &&

    {error}

    }\n {Map.isMap(data) && data.size > 0 && startDate && endDate && (\n
    \n \n
    \n )}\n {Map.isMap(data) && data.size === 0 && startDate && endDate && (\n

    No activity in past 48 hours.

    \n )}\n
    \n
    \n
    \n
    \n \n )\n }\n}\n\nexport default WorkspacesActivityDrawer\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCols(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 13,\n viewBox: \"0 0 16 13\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10 0C9.44772 0 9 0.447715 9 1V3C9 3.55228 9.44771 4 10 4H15C15.5523 4 16 3.55228 16 3V1C16 0.447715 15.5523 0 15 0H10ZM1 9C0.447715 9 0 9.44771 0 10V12C0 12.5523 0.447715 13 1 13H6C6.55228 13 7 12.5523 7 12V10C7 9.44771 6.55228 9 6 9H1ZM0 1C0 0.447715 0.447715 0 1 0H6C6.55228 0 7 0.447715 7 1V6C7 6.55228 6.55228 7 6 7H1C0.447715 7 0 6.55228 0 6V1ZM10 6C9.44772 6 9 6.44772 9 7V12C9 12.5523 9.44771 13 10 13H15C15.5523 13 16 12.5523 16 12V7C16 6.44772 15.5523 6 15 6H10Z\",\n fill: \"#999999\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCols);\nexport default __webpack_public_path__ + \"static/media/cols.c1a849f0.svg\";\nexport { ForwardRef as ReactComponent };","import React, { PureComponent } from \"react\"\nimport ReactTooltip from \"react-tooltip\"\nimport PropTypes from \"prop-types\"\n\nimport PaperHeader from \"../../elements/PaperHeader\"\nimport { SearchFormUndestroyable } from \"../../components/SearchForm\"\nimport Button from \"../../elements/Button\"\nimport IconButton from \"../../elements/IconButton\"\nimport { ReactComponent as Bars } from \"images/bars.svg\"\nimport { ReactComponent as Cols } from \"images/cols.svg\"\n\nimport \"./Header.css\"\n\nclass Header extends PureComponent {\n render() {\n const {\n className,\n title,\n onSearchSubmit,\n searchFormName,\n toggleCreateActionModal,\n isAbleToCreateEntity,\n entityName,\n isViewPickerEnabled,\n currentViewLayout,\n setViewLayout\n } = this.props\n\n return (\n \n
    \n
    \n

    {title}

    \n {entityName === \"dawg\" && (\n

    Directed Acyclic Workspaces' Graphs

    \n )}\n
    \n\n \n
    \n
    \n \n \n {`+ Create ${entityName}`}\n \n \n {!isAbleToCreateEntity && (\n \n {`You haven't got permissions to create ${entityName}s.`}\n \n )}\n {isViewPickerEnabled && (\n
    \n \n \n \n \n \n \n
    \n )}\n
    \n \n )\n }\n}\n\nHeader.propTypes = {\n className: PropTypes.string,\n title: PropTypes.string.isRequired,\n onSearchSubmit: PropTypes.func.isRequired,\n searchFormName: PropTypes.string.isRequired,\n toggleCreateActionModal: PropTypes.func.isRequired,\n isAbleToCreateEntity: PropTypes.bool.isRequired,\n entityName: PropTypes.string.isRequired,\n isViewPickerEnabled: PropTypes.bool,\n currentViewLayout: PropTypes.string,\n setViewLayout: PropTypes.func\n}\n\nexport default Header\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nimport \"./Tag.css\"\n\nconst Tag = ({\n children,\n color,\n clickable = false,\n size = \"small\",\n className = \"\",\n ...tagAttrs\n}) => (\n \n {children}\n \n \n)\n\nTag.propTypes = {\n children: PropTypes.node.isRequired,\n color: PropTypes.string.isRequired,\n clickable: PropTypes.bool,\n size: PropTypes.string\n}\n\nexport default Tag\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { List } from \"immutable\"\nimport _isNil from \"lodash/isNil\"\nimport _noop from \"lodash/noop\"\n\n// ui components\nimport Tag from \"components/UI/elements/Tag\"\nimport Button from \"components/UI/elements/Button\"\n\nimport { renderTooltip } from \"helpers/disabledTooltip.helper\"\n\nimport \"./TagPicker.css\"\n\nclass TagPicker extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n open: false,\n isHovering: null\n }\n\n this.wrapperRef = React.createRef()\n\n window.addEventListener(\"keyup\", this.handleKeyUp, false)\n document.addEventListener(\"click\", this.handleOutsideClick, false)\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"keyup\", this.handleKeyUp, false)\n document.removeEventListener(\"click\", this.handleOutsideClick, false)\n }\n\n handleMouseHover = tagId => () => {\n this.setState({\n isHovering: tagId\n })\n }\n\n toggleOpen = () => {\n this.setState(prevState => ({\n open: !prevState.open,\n isHovering: null\n }))\n }\n\n handleKeyUp = evt => {\n const keys = {\n 27: () => {\n if (this.state.open) {\n this.toggleOpen()\n }\n }\n }\n if (keys[evt.keyCode]) {\n keys[evt.keyCode]()\n }\n }\n\n handleOutsideClick = evt => {\n if (this.state.open && !_isNil(this.wrapperRef.current)) {\n if (!this.wrapperRef.current.contains(evt.target)) {\n this.toggleOpen()\n }\n }\n }\n\n onTagClick = tag => () => {\n this.props.onTagSelect(tag.id)\n this.toggleOpen()\n }\n\n render() {\n const {\n className,\n selectedTagIds,\n allTags,\n disabled,\n readyToEdit,\n currentlyEditing = \"\",\n tooltipId = \"\"\n } = this.props\n const { open, isHovering } = this.state\n\n const displayTags = allTags.filterNot(tag => selectedTagIds.includes(tag.id))\n\n return (\n 0}\n data-for={currentlyEditing.length > 0 ? tooltipId : false}\n >\n 0}\n >\n +\n {((List.isList(selectedTagIds) && selectedTagIds.size === 0) ||\n (Array.isArray(selectedTagIds) && selectedTagIds.length === 0)) && (\n add tag\n )}\n \n {open && (\n
    \n {displayTags.size > 0 &&\n displayTags\n .map(tag => (\n \n {tag.name}\n \n ))\n .toArray()}\n {displayTags.size === 0 &&

    No options to select

    }\n
    \n )}\n {renderTooltip(tooltipId, currentlyEditing)}\n
    \n )\n }\n}\n\nTagPicker.defaultProps = {\n readyToEdit: true\n}\n\nTagPicker.propTypes = {\n selectedTagIds: PropTypes.oneOfType([PropTypes.array, PropTypes.instanceOf(List)]).isRequired,\n allTags: PropTypes.instanceOf(List).isRequired,\n onTagSelect: PropTypes.func.isRequired,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n currentlyEditing: PropTypes.string,\n tooltipId: PropTypes.string,\n readyToEdit: PropTypes.bool\n}\n\nexport default TagPicker\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport _isEmpty from \"lodash/isEmpty\"\nimport { Form, reduxForm, Field } from \"redux-form\"\n\nimport SelectField from \"components/UI/elements/SelectField\"\n\nimport \"./FilterForm.css\"\n\nclass FilterForm extends Component {\n onSubmit = values => {\n const { onSubmit } = this.props\n if (onSubmit) {\n onSubmit(values)\n }\n }\n\n render() {\n const { options, handleSubmit, form } = this.props\n return (\n
    \n \n \n )\n }\n}\n\nFilterForm.propTypes = {\n options: PropTypes.array.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n initialValues: PropTypes.object.isRequired,\n onSubmit: PropTypes.func,\n form: PropTypes.string.isRequired\n}\n\nexport default reduxForm({\n onChange: (values, dispatch, props, previousValues) => {\n if (!_isEmpty(previousValues)) {\n // it's not initialValues change, so do props.submit\n props.submit()\n }\n },\n destroyOnUnmount: false\n})(FilterForm)\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nimport \"./OrderField.css\"\n\nconst OrderField = ({ input }) => (\n
    \n \n \n {input.value ? (\n \n ) : (\n \n )}\n \n
    \n)\n\nOrderField.propTypes = {\n input: PropTypes.object.isRequired\n}\n\nexport default OrderField\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport _isEmpty from \"lodash/isEmpty\"\nimport { Form, reduxForm, Field } from \"redux-form\"\n\nimport SelectField from \"components/UI/elements/SelectField\"\nimport OrderField from \"./OrderField\"\n\nimport \"./SortingForm.css\"\n\nclass SortingForm extends Component {\n onSubmit = values => {\n const { onSubmit } = this.props\n if (onSubmit) {\n // order: false => DESC, order: true => ASC\n onSubmit(values)\n }\n }\n\n render() {\n const { options, handleSubmit, form } = this.props\n return (\n
    \n \n \n \n )\n }\n}\n\nSortingForm.propTypes = {\n form: PropTypes.string.isRequired,\n options: PropTypes.array.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n initialValues: PropTypes.object.isRequired,\n onSubmit: PropTypes.func\n}\n\nexport default reduxForm({\n onChange: (values, dispatch, props, previousValues) => {\n if (!_isEmpty(previousValues)) {\n // it's not initialValues change, so do props.submit\n props.submit()\n }\n },\n destroyOnUnmount: false\n})(SortingForm)\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { connect } from \"react-redux\"\nimport _toString from \"lodash/toString\"\nimport _get from \"lodash/get\"\nimport { Map, List } from \"immutable\"\nimport { getFormValues } from \"redux-form\"\n\nimport Paper from \"components/UI/elements/Paper\"\nimport Tag from \"components/UI/elements/Tag\"\nimport TagPicker from \"components/UI/components/TagPicker\"\nimport FilterForm from \"../FilterForm\"\nimport SortingForm from \"../SortingForm\"\nimport { getTagsMap, getTagsSortedByName } from \"selectors/tag.selector\"\n\nimport \"./SubHeader.css\"\n\nconst dawgSelectOptions = [\n { value: \"name\", label: \"Name\" },\n { value: \"last_run\", label: \"Activity\" },\n { value: \"last_run_duration\", label: \"Duration\" },\n { value: \"author_name\", label: \"Author\" }\n]\n\nconst wsSelectOptions = [\n { value: \"name\", label: \"Name\" },\n { value: \"last_run\", label: \"Workspace activity\" },\n { value: \"last_activity\", label: \"Configuration activity\" },\n { value: \"last_run_duration\", label: \"Duration\" },\n { value: \"author_name\", label: \"Author\" },\n { value: \"disk_usage\", label: \"Disk used\" }\n]\n\nconst filterBySelectOptions = [\n { value: \"all\", label: \"all\" },\n { value: \"enabled\", label: \"enabled\" },\n { value: \"disabled\", label: \"disabled\" }\n]\n\nclass SubHeader extends PureComponent {\n render() {\n const {\n filterValues,\n tags,\n tagsList,\n sortingFormName,\n filterFormName,\n onSortSubmit,\n onFilterBySubmit,\n selectFilterTag,\n deselectFilterTag,\n entityName\n } = this.props\n const selectedTags = _get(filterValues, \"selectedTags\", [])\n\n const sortingFormSelectOptions =\n entityName === \"workspace\" ? wsSelectOptions : dawgSelectOptions\n\n return (\n \n
    \n
    \n \n {selectedTags.size === 0 ? \"Select tag:\" : \"Selected tags:\"}\n \n
    \n {selectedTags.map(tagId => {\n const stringTagId = _toString(tagId)\n let color = tags.getIn([stringTagId, \"color\"])\n if (!color) {\n color = \"primary\"\n }\n return (\n \n {tags.getIn([stringTagId, \"name\"], \"Deleted tag\")}\n \n )\n })}\n selectFilterTag(tagId)()}\n className=\"selected-tags-picker\"\n />\n
    \n
    \n
    \n
    \n \n
    \n \n
    \n \n )\n }\n}\n\nSubHeader.propTypes = {\n filterValues: PropTypes.object.isRequired,\n globalFormName: PropTypes.string.isRequired,\n tags: PropTypes.instanceOf(Map).isRequired,\n tagsList: PropTypes.instanceOf(List).isRequired,\n sortingFormName: PropTypes.string.isRequired,\n filterFormName: PropTypes.string.isRequired,\n onSortSubmit: PropTypes.func.isRequired,\n onFilterBySubmit: PropTypes.func.isRequired,\n selectFilterTag: PropTypes.func.isRequired,\n deselectFilterTag: PropTypes.func.isRequired,\n entityName: PropTypes.string\n}\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n filterValues: getFormValues(ownProps.globalFormName)(state),\n tags: getTagsMap(state),\n tagsList: getTagsSortedByName(state)\n }\n}\n\nexport default connect(mapStateToProps)(SubHeader)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport { reduxForm, Field } from \"redux-form\"\nimport PropTypes from \"prop-types\"\nimport _noop from \"lodash/noop\"\nimport { withRouter } from \"react-router-dom\"\n\n// actions\nimport { showToast } from \"actions/toast.action\"\n\n// ui components\nimport Modal from \"components/UI/elements/Modal\"\nimport Button from \"components/UI/elements/Button\"\nimport TextField from \"components/UI/elements/TextField\"\n\n// helpers, constants\nimport { required } from \"helpers/validators.helper\"\nimport { TOAST } from \"sharedConstants\"\nimport { getRoutePath } from \"routes\"\n\nimport \"./CreateActionModal.css\"\n\nclass CreateActionModal extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n onSubmit = values => {\n if (!this.state.isLoading) {\n const {\n createAction,\n showToast,\n fetchUsersAcl,\n history,\n entityName,\n authenticatedUser: {\n data: { id }\n }\n } = this.props\n this.setState({ loading: true })\n createAction({ ...values })\n .then(response => {\n fetchUsersAcl(id)\n .then(() => {\n history.push({\n pathname: getRoutePath(\n entityName === \"Workspace\" ? \"workspace.show\" : \"dawg.show\",\n { id: response.value.id }\n ),\n state: {\n previous: true\n }\n })\n showToast(`${entityName} has been created.`, TOAST.TYPE.SUCCESS)\n })\n .catch(_noop)\n })\n .catch(() => {\n this.setState({\n loading: false\n })\n })\n }\n }\n\n render() {\n const { open, handleClose, handleSubmit, entityName } = this.props\n\n return (\n \n \n
    \n \n
    \n \n {`Create ${entityName.toLowerCase()}`}\n \n \n
    \n )\n }\n}\n\nCreateActionModal.propTypes = {\n createAction: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired,\n fetchUsersAcl: PropTypes.func.isRequired,\n history: PropTypes.object.isRequired,\n entityName: PropTypes.string.isRequired,\n authenticatedUser: PropTypes.object.isRequired,\n open: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n handleSubmit: PropTypes.func.isRequired\n}\n\nconst mapStateToProps = ({ authenticatedUser }) => ({ authenticatedUser })\n\nCreateActionModal = reduxForm({\n form: \"CreateWsDawgActionForm\",\n touchOnBlur: false\n})(connect(mapStateToProps, { showToast })(CreateActionModal))\n\nexport default withRouter(CreateActionModal)\n","import React from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nimport \"./WorkspaceIcon.css\"\n\nconst WorkspaceIcon = () => {\n return (\n
    \n \n
    \n )\n}\n\nexport default WorkspaceIcon\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Link, withRouter } from \"react-router-dom\"\nimport { List, Map } from \"immutable\"\n\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport WorkspaceIcon from \"components/UI/elements/WorkspaceIcon\"\nimport DateTimeWithTooltip from \"components/UI/elements/DateTimeWithTooltip\"\nimport StatusElement from \"components/UI/elements/StatusElement\"\n\nimport { capitalize } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\nimport { getComponentIconSrc } from \"helpers/component.helper\"\n\nimport \"./ProjectJobs.css\"\n\nclass ProjectJobsCard extends PureComponent {\n render() {\n const { entityName, projectJobs } = this.props\n\n return (\n
    \n \n

    {capitalize(entityName)} activity

    \n \n View all\n \n
    \n {List.isList(projectJobs) &&\n projectJobs.map(projectJob => {\n const entity =\n entityName === \"configuration\" ? projectJob.configuration : projectJob.workspace\n const entityPathname =\n entityName === \"configuration\"\n ? getRoutePath(\"workspace.configuration.show\", {\n id: entity.getIn([\"workspace\", \"id\"]),\n cid: entity.get(\"id\")\n })\n : getRoutePath(\"workspace.show\", {\n id: entity.get(\"id\")\n })\n const jobPathName =\n entityName === \"configuration\"\n ? getRoutePath(\"workspace.configuration.configurationJob.show\", {\n id: entity.getIn([\"workspace\", \"id\"]),\n cid: entity.get(\"id\"),\n aid: projectJob.id\n })\n : getRoutePath(\"workspace.workspaceJob.show\", {\n id: entity.get(\"id\"),\n aid: projectJob.id\n })\n let iconComponent = null\n if (entityName === \"configuration\") {\n const icon = projectJob.configuration.getIn([\"component\", \"icon\"])\n ? projectJob.configuration.getIn([\"component\", \"icon\"])\n : \"dummy.png\"\n\n iconComponent = (\n {entity.getIn([\"component\",\n )\n } else {\n iconComponent = \n }\n return (\n
    \n
    \n
    \n {iconComponent}\n
    \n \n

    {entity.get(\"name\")}

    \n \n {entityName === \"configuration\" && (\n

    {entity.getIn([\"workspace\", \"name\"])}

    \n )}\n {entityName === \"workspace\" && entity.getIn([\"dawg\", \"id\"]) > 0 && (\n

    {entity.getIn([\"dawg\", \"name\"])}

    \n )}\n
    \n {projectJob.user.get(\"name\")},{\" \"}\n \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n )\n })}\n
    \n )\n }\n}\n\nProjectJobsCard.propTypes = {\n entityName: PropTypes.string.isRequired,\n projectJobs: PropTypes.instanceOf(List)\n}\n\nexport default withRouter(ProjectJobsCard)\n","export const formatBytes = (a, b) => {\n if (0 === a) return \"0B\"\n var c = 1024,\n d = b || 2,\n e = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"],\n f = Math.floor(Math.log(a) / Math.log(c))\n return parseFloat((a / Math.pow(c, f)).toFixed(d)) + e[f]\n}\n","import React from \"react\"\nimport { List, Map } from \"immutable\"\nimport _includes from \"lodash/includes\"\nimport _last from \"lodash/last\"\nimport _first from \"lodash/first\"\nimport _map from \"lodash/map\"\nimport _toInteger from \"lodash/toInteger\"\nimport moment from \"moment\"\nimport parser from \"cron-parser\"\n\nconst dayMappings = {\n \"0\": \"Sun\",\n \"1\": \"Mon\",\n \"2\": \"Tue\",\n \"3\": \"Wed\",\n \"4\": \"Thu\",\n \"5\": \"Fri\",\n \"6\": \"Sat\",\n \"7\": \"Sun\"\n}\n\nexport const generateSchedulesReadableObject = schedules => {\n let schedulesReadable = List()\n if (List.isList(schedules) && schedules.size > 0) {\n const schedule = schedules.first()\n if (schedule.get(\"day\") !== \"*\") {\n // day of month\n schedulesReadable = schedules.map(schedule =>\n Map({\n days: schedule\n .get(\"day\")\n .split(\",\")\n .join(\", \"),\n hours: schedule.get(\"hour\"),\n minutes: schedule.get(\"minute\")\n })\n )\n } else {\n // day of weak\n let repeat = \"\"\n if (_includes(schedule.get(\"minute\"), \"/\")) {\n const parts = schedule.get(\"minute\").split(\"/\")\n repeat = `${_last(parts)} mins`\n const startingAt = _first(_first(parts).split(\"-\"))\n if (startingAt !== \"*\") {\n repeat = `${repeat} delayed by ${startingAt} min`\n }\n if (_includes(schedule.get(\"hour\"), \"-\")) {\n const parts = schedule.get(\"hour\").split(\"-\")\n const from = parts[0]\n let to\n if (schedules.size > 1) {\n // 'to' value will be in the second schedule because it crossed the day\n const endSchedule = schedules.get(1)\n const parts = endSchedule.get(\"hour\").split(\"-\")\n to = parts[1]\n } else {\n to = parts[1]\n }\n repeat = `${repeat} from ${from} hour to ${to} hour`\n }\n } else if (_includes(schedule.get(\"hour\"), \"/\")) {\n const parts = schedule.get(\"hour\").split(\"/\")\n const repeatHoursNumber = _toInteger(_last(parts))\n repeat = `${_last(parts)} hours`\n let startingAt, from, to\n const toParse = _first(parts)\n\n if (_first(toParse.split(\"-\")) !== \"*\") {\n const hourParts = toParse.split(\"-\")\n if (schedules.size === 1) {\n if (_toInteger(hourParts[0] < repeatHoursNumber) && hourParts[1] === \"23\") {\n // delayed by\n startingAt = hourParts[0]\n } else {\n // from / to\n from = hourParts[0]\n to = hourParts[1]\n }\n } else {\n // from/to crossing the day\n from = hourParts[0]\n const endSchedule = schedules.get(1)\n const parts = endSchedule.get(\"hour\").split(\"/\")\n to = _first(parts).split(\"-\")[1]\n }\n }\n if (startingAt) {\n repeat = `${repeat} delayed by ${startingAt} hour`\n } else if (from && to) {\n repeat = `${repeat} from ${from} hour to ${to} hour`\n }\n }\n\n if (repeat !== \"\") {\n // repeat\n const daysArray = schedule.get(\"day_of_week\").split(\",\")\n schedulesReadable = List([\n Map({\n days:\n daysArray.length === 7\n ? \"every day\"\n : _map(daysArray, day => dayMappings[day]).join(\", \"),\n repeat\n })\n ])\n } else {\n // once\n schedulesReadable = schedules.map(schedule => {\n const daysArray = schedule.get(\"day_of_week\").split(\",\")\n return Map({\n days:\n daysArray.length === 7\n ? \"every day\"\n : _map(daysArray, day => dayMappings[day]).join(\", \"),\n minutes: schedule.get(\"minute\"),\n hours: schedule.get(\"hour\")\n })\n })\n }\n }\n }\n return schedulesReadable\n}\n\nexport const getSetSchedulesDescription = schedulesReadable => {\n const schedule = schedulesReadable.first()\n\n if (schedule.get(\"repeat\")) {\n const days = schedule.get(\"days\")\n if (days === \"every day\") {\n return (\n \n {days} every {schedule.get(\"repeat\")}\n \n )\n } else {\n return (\n \n on {days} every {schedule.get(\"repeat\")}\n \n )\n }\n } else {\n const schedules = schedulesReadable.map((schedule, idx) => {\n return (\n \n {idx > 0 && \" / on \"}\n {schedule.get(\"days\")} at{\" \"}\n \n {moment\n .utc({\n hour: _toInteger(schedule.get(\"hours\")),\n minute: _toInteger(schedule.get(\"minutes\"))\n })\n .format(\"HH:mm\")}\n \n \n )\n })\n return on {schedules}\n }\n}\n\nexport const getSetSchedulesDescriptionArray = schedulesReadable => {\n const schedule = schedulesReadable.first()\n if (schedule.get(\"repeat\")) {\n // only one schedule exists\n const days = schedule.get(\"days\")\n if (days === \"every day\") {\n return List([\n \n {days} every {schedule.get(\"repeat\")}\n \n ])\n } else {\n return List([\n \n on {days} every {schedule.get(\"repeat\")}\n \n ])\n }\n } else {\n return schedulesReadable.map((schedule, idx) => {\n return (\n \n on {schedule.get(\"days\")} at{\" \"}\n \n {moment\n .utc({\n hour: _toInteger(schedule.get(\"hours\")),\n minute: _toInteger(schedule.get(\"minutes\"))\n })\n .format(\"HH:mm\")}\n \n \n )\n })\n }\n}\n\nexport const computeNextSchedulesDates = schedules => {\n if (List.isList(schedules)) {\n const schedulesCronStrings = schedules.map(\n schedule =>\n `${schedule.get(\"minute\")} ${schedule.get(\"hour\")} ${schedule.get(\"day\")} ${schedule.get(\n \"month\"\n )} ${schedule.get(\"day_of_week\")}`\n )\n let nextSchedulesDates = List()\n try {\n const intervals = schedulesCronStrings.map(cronString =>\n parser.parseExpression(cronString, { utc: true })\n )\n nextSchedulesDates = intervals.map(interval => {\n let dates = List()\n for (let i = 0; i < 3; i++) {\n dates = dates.set(i, moment.utc(interval.next().toISOString()))\n }\n return dates\n })\n } catch (err) {\n console.log(err)\n }\n return nextSchedulesDates\n .flatten()\n .sort()\n .slice(0, 3)\n }\n return null\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Link } from \"react-router-dom\"\nimport { shortenString } from \"helpers/string.helper\"\n\nimport \"./DawgLink.css\"\n\nconst DawgLink = ({ name, route, maxChars }) => (\n \n {maxChars ? shortenString(name, maxChars, \"dots\") : name}\n \n)\n\nDawgLink.propTypes = {\n name: PropTypes.string.isRequired,\n route: PropTypes.string.isRequired,\n maxChars: PropTypes.number\n}\n\nexport default DawgLink\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Link } from \"react-router-dom\"\n\nimport \"./WorkspaceLink.css\"\n\nconst WorkspaceLink = ({ name, route }) => (\n \n {name}\n \n)\n\nWorkspaceLink.propTypes = {\n name: PropTypes.string.isRequired,\n route: PropTypes.string.isRequired\n}\n\nexport default WorkspaceLink\n","import React from \"react\"\nimport _get from \"lodash/get\"\nimport _isNil from \"lodash/isNil\"\nimport { formatBytes } from \"helpers/dataUnits.helper\"\nimport DateTimeWithTooltip from \"components/UI/elements/DateTimeWithTooltip\"\nimport {\n generateSchedulesReadableObject,\n getSetSchedulesDescriptionArray,\n computeNextSchedulesDates\n} from \"helpers/schedules.helper\"\nimport { List, Map } from \"immutable\"\nimport TimeAgo from \"react-timeago\"\nimport moment from \"moment\"\nimport { Link } from \"react-router-dom\"\nimport DawgLink from \"components/UI/elements/DawgLink\"\nimport { getRoutePath } from \"routes\"\nimport StatusElement from \"components/UI/elements/StatusElement\"\nimport Tag from \"components/UI/elements/Tag\"\nimport WorkspaceLink from \"components/UI/elements/WorkspaceLink\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nimport \"./ListItem.css\"\n\nexport const DataProcessed = ({ job }) => {\n let content = null\n if (job === undefined || _get(job, \"stats\") === null) {\n content =
  • \n } else if (!_isNil(job) && !_isNil(job.stats)) {\n const inFilesCount = job.stats.getIn([\"files_count\", \"/in\"])\n const outFilesCount = job.stats.getIn([\"files_count\", \"/out\"])\n content = (\n \n
  • \n in: \n {formatBytes(job.stats.getIn([\"data_volumes\", \"/in\"]))}\n  in \n \n {inFilesCount} {inFilesCount === 1 ? \"file\" : \"files\"}\n \n ,{\" \"}\n
  • \n
  • \n out: \n {formatBytes(job.stats.getIn([\"data_volumes\", \"/out\"]))}\n  in \n \n {outFilesCount} {outFilesCount === 1 ? \"file\" : \"files\"}\n \n
  • \n
    \n )\n }\n return (\n
    \n Data processed\n
      {content}
    \n
    \n )\n}\n\nexport const DiskUsage = ({ value, markDiskSpaceUsed }) => {\n let content = null\n if (value === null) {\n content = \"–\"\n } else {\n content = (\n \n Total:{\" \"}\n \n {formatBytes(value)}\n {markDiskSpaceUsed && (\n \n \n \n )}\n \n \n )\n }\n return (\n
    \n Disk space used\n

    {content}

    \n
    \n )\n}\n\nexport const Schedules = ({ item, expandedSchedules, expandItemSchedules }) => {\n // generateSchedulesReadableObject, getSetSchedulesDescriptionArray\n const schedules = item.getIn([\"settings\", \"schedules\"])\n const readableSchedules = generateSchedulesReadableObject(schedules)\n if (readableSchedules.size > 0) {\n const scheduleSettingDescriptionArray = getSetSchedulesDescriptionArray(readableSchedules)\n const nextSchedules = computeNextSchedulesDates(schedules)\n let scheduleSettingDescription = \"\"\n if (scheduleSettingDescriptionArray.size === 1) {\n scheduleSettingDescription = (\n

    {scheduleSettingDescriptionArray.get(0)}

    \n )\n } else if (scheduleSettingDescriptionArray.size > 1 && expandedSchedules.get(item.id)) {\n scheduleSettingDescription = (\n

    \n {scheduleSettingDescriptionArray.map((entry, idx) => {\n return (\n \n {idx > 0 && \" / \"}\n {entry}\n \n )\n })}\n

    \n )\n } else if (scheduleSettingDescriptionArray.size > 1) {\n if (scheduleSettingDescriptionArray.size === 2) {\n scheduleSettingDescription = [\n

    \n {scheduleSettingDescriptionArray.get(0)} / {scheduleSettingDescriptionArray.get(1)}\n

    \n ]\n } else {\n scheduleSettingDescription = [\n

    \n {scheduleSettingDescriptionArray.get(0)}\n

    ,\n

    \n {\" \"}\n /{\" \"}\n \n +{scheduleSettingDescriptionArray.size - 1} more\n \n

    \n ]\n }\n }\n return (\n
    \n
    \n
    \n Set schedule (UTC)\n
    {scheduleSettingDescription}
    \n
    \n
    \n Next schedules (local time)\n
    \n {List.isList(nextSchedules) &&\n nextSchedules.map((schedule, idx) => (\n \n \n \n ))}\n {!List.isList(nextSchedules) && \"–\"}\n
    \n
    \n
    \n
    \n )\n }\n return null\n}\n\nexport const Author = ({ authorName, className }) => (\n
    \n Owner\n

    {authorName}

    \n
    \n)\n\nexport const ItemName = ({ route, name }) => {\n return (\n
    \n
    \n Name\n \n

    \n {name}\n

    \n \n
    \n
    \n )\n}\n\nexport const LastRun = ({ datetime, labelText = \"Activity\" }) => (\n
    \n {labelText}\n

    \n {datetime !== null && (\n \n )}\n {datetime === null && \"–\"}\n

    \n
    \n)\n\nexport const PartOfDawg = ({ dawg, maxChars = 35, className }) => {\n if (dawg) {\n return (\n
    \n Part of DAWG\n \n
    \n )\n }\n return null\n}\n\nexport const Row = ({ children, className }) => (\n
    {children}
    \n)\n\nexport const ItemStatus = ({ job, className }) => {\n return (\n
    \n Status\n {!_isNil(job) && (\n \n \n \n )}\n {job === undefined && }\n
    \n )\n}\n\nexport const Tags = ({ tags, selectFilterTag }) => {\n const tagsSize = tags && tags.size > 0\n if (tagsSize > 0) {\n return (\n
    \n Tags\n {tags.map(tag => {\n return (\n \n {tag.name}\n \n )\n })}\n
    \n )\n }\n return null\n}\n\nexport const DawgWorkspaces = ({ exampleWorkspaces, workspacesCount }) => {\n if (List.isList(exampleWorkspaces) && exampleWorkspaces.size > 0) {\n const anotherWsCount = workspacesCount - exampleWorkspaces.size\n return (\n
    \n
    \n Workspaces\n {exampleWorkspaces.map(ws => {\n return (\n \n )\n })}\n {anotherWsCount > 0 && (\n \n ... {anotherWsCount} more {anotherWsCount === 1 ? \"workspace\" : \"workspaces\"}\n \n )}\n
    \n
    \n )\n }\n return null\n}\n\nexport default ({\n isDisabled = false,\n isCompact = false,\n isInvisible = false,\n innerRef,\n job,\n children\n}) => (\n \n
    {children}
    \n
    \n)\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Record, Map, List } from \"immutable\"\nimport _get from \"lodash/get\"\nimport _isNil from \"lodash/isNil\"\nimport _isFunction from \"lodash/isFunction\"\n\n// ui elements\nimport ListItem, {\n DataProcessed,\n Author,\n LastRun,\n ItemName,\n PartOfDawg,\n ItemStatus,\n Schedules,\n Row,\n Tags,\n DiskUsage\n} from \"components/UI/DawgWsShared/ListItem\"\n\n// helpers, routes\nimport { getRoutePath } from \"routes\"\n\nimport \"./WorkspaceListItem.css\"\n\nclass WorkspaceListItem extends PureComponent {\n componentDidMount() {\n const { onInit } = this.props\n if (_isFunction(onInit)) {\n onInit()\n }\n }\n\n render() {\n const {\n authenticatedUser,\n job,\n workspace,\n selectFilterTag,\n invisible,\n innerRef,\n expandedSchedules,\n expandWorkspaceSchedules\n } = this.props\n const currentLayout = _get(authenticatedUser, \"ui.workspacesListLayout\", \"one-col\")\n const isCompact = currentLayout === \"two-cols\"\n\n const authorName = workspace.getIn([\"owner\", \"name\"])\n const schedulesSetting = workspace.getIn([\"settings\", \"schedules\"])\n const scheduleExists = List.isList(schedulesSetting) && schedulesSetting.size > 0\n\n return (\n \n \n \n {!isCompact && }\n {!isCompact && }\n \n \n {isCompact && !_isNil(workspace.dawg) && (\n \n \n \n )}\n \n {!isCompact && }\n {!isCompact && (\n \n )}\n {!isCompact && (\n \n )}\n \n {isCompact && }\n \n {!isCompact && scheduleExists && (\n \n \n \n )}\n \n \n )\n }\n}\n\nWorkspaceListItem.defaultProps = {\n invisible: false\n}\n\nWorkspaceListItem.propTypes = {\n authenticatedUser: PropTypes.object,\n job: PropTypes.instanceOf(Record),\n workspace: PropTypes.instanceOf(Record).isRequired,\n invisible: PropTypes.bool,\n selectFilterTag: PropTypes.func.isRequired,\n expandedSchedules: PropTypes.instanceOf(Map).isRequired,\n expandWorkspaceSchedules: PropTypes.func.isRequired,\n onInit: PropTypes.func\n}\n\nexport default React.forwardRef((props, ref) => )\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { connect } from \"react-redux\"\nimport { getFormValues } from \"redux-form\"\nimport _noop from \"lodash/noop\"\nimport _toString from \"lodash/toString\"\nimport _get from \"lodash/get\"\nimport _isNumber from \"lodash/isNumber\"\nimport _isNil from \"lodash/isNil\"\nimport { Map, List, Record } from \"immutable\"\nimport { Waypoint } from \"react-waypoint\"\n\n// helpers\nimport { canCreateWorkspaces } from \"helpers/authenticatedUser.helper\"\n\n// selectors\nimport {\n getWorkspaces,\n getLastWorkspacesJobs,\n getWorkspacesSelectionSettings,\n getWorkspacesHasMoreItems\n} from \"selectors/workspace.selector\"\nimport { getDashboardConfJobs } from \"selectors/projectConfigurationJob.selector\"\nimport { getTagsMap, areTagsAlreadyFetched } from \"selectors/tag.selector\"\n\n// actions\nimport {\n fetchWorkspaceList,\n retrieveWorkspace,\n fetchLastWorkspaceJobs,\n createWorkspace\n} from \"actions/workspace.action\"\nimport { listProjectConfigurationJob } from \"actions/configurationJob.action\"\nimport { showLoadingBar, hideLoadingBar } from \"actions/loadingBar.action\"\nimport {\n setSortingOptions,\n setFilterByTags,\n setFilterAndSorting,\n setFilterBy\n} from \"actions/table.action\"\nimport { clearCachedConfigurationJobs } from \"actions/configurationJob.action\"\nimport { clearCachedWorkspaceJobs } from \"actions/workspaceJob.action\"\nimport { clearCachedWorkspaceHistory } from \"actions/workspaceHistory.action\"\nimport { clearCachedConfigurationHistory } from \"actions/configurationHistory.action\"\nimport { setUiAttribute } from \"actions/authenticatedUser.action\"\nimport { fetchUsersAcl } from \"actions/acl.action\"\n\n// UI components\nimport WorkspacesActivityDrawer from \"./cards/WorkspacesActivityDrawer\"\nimport Header from \"components/UI/DawgWsShared/Header\"\nimport SubHeader from \"components/UI/DawgWsShared/SubHeader\"\nimport CreateActionModal from \"components/UI/DawgWsShared/CreateActionModal\"\nimport ProjectJobsCard from \"components/UI/DawgWsShared/ProjectJobsCard\"\nimport WorkspaceListItem from \"../WorkspaceListItem\"\n\nimport { INTERVAL, WORKSPACE } from \"sharedConstants\"\n\nimport \"./WorkspaceList.css\"\n\nclass WorkspaceList extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n createWorkspaceModalOpen: false,\n expandedSchedules: Map(),\n // workspaceId: compactWorkspaceBoxHeight\n compactWorkspaceBoxesHeights: Map()\n }\n\n this.compactWorkspaceBoxesRefs = {}\n this.compactWorkspaceBoxesHeightsTmp = {}\n }\n\n componentDidMount() {\n this.props.clearCachedConfigurationJobs()\n this.props.clearCachedWorkspaceJobs()\n this.props.clearCachedWorkspaceHistory()\n this.props.clearCachedConfigurationHistory()\n\n const { filterValues } = this.props\n\n const selectedTags = _get(filterValues, \"selectedTags\", [])\n const orderBy = _get(filterValues, \"orderBy\", \"last_run\")\n const orderDir = _get(filterValues, \"orderDir\", \"DESC\")\n const searchText = _get(filterValues, \"search\", \"\")\n const filterBy = _get(filterValues, \"filterBy\", \"all\")\n\n this.props\n .fetchWorkspaceList(\n 0,\n WORKSPACE.LOADING_LIMIT,\n 1,\n orderBy,\n orderDir,\n searchText,\n selectedTags,\n this._determineShowEnabled(filterBy),\n this._determineShowDisabled(filterBy)\n )\n .then(response => {\n const workspaceIds = response.value.workspaces.map(workspace => workspace.id)\n this.props.showLoadingBar()\n this.props\n .fetchLastWorkspaceJobs(workspaceIds, 0)\n .then(this.props.hideLoadingBar)\n .catch(this.props.hideLoadingBar)\n })\n .catch(_noop)\n\n this.props.setFilterAndSorting(\"WorkspaceFilter\", orderBy, orderDir, selectedTags)\n\n this.props.showLoadingBar()\n this.props\n .listProjectConfigurationJob(0, 10, 1, \"status\", \"DESC\", false)\n .then(this.props.hideLoadingBar)\n .catch(this.props.hideLoadingBar)\n\n this.intervalId = setInterval(() => {\n this.props.listProjectConfigurationJob(0, 10, 1, \"status\", \"DESC\", false).catch(_noop)\n if (this.props.workspaces) {\n const workspaceIds = this.props.workspaces.map(ws => ws.id).toArray()\n this.props.fetchLastWorkspaceJobs(workspaceIds, 0).catch(_noop)\n }\n }, INTERVAL.WORKSPACE_LIST)\n }\n\n componentWillUnmount() {\n clearInterval(this.intervalId)\n }\n\n toggleCreateWorkspaceModalOpen = () => {\n this.setState(prevState => ({\n createWorkspaceModalOpen: !prevState.createWorkspaceModalOpen\n }))\n }\n\n _loadMoreWorkspaces = () => {\n const { selectionSettings, fetchWorkspaceList, hideLoadingBar, showLoadingBar } = this.props\n\n fetchWorkspaceList(\n selectionSettings.offset + selectionSettings.limit,\n selectionSettings.limit,\n 1,\n selectionSettings.order_by,\n selectionSettings.order_dir,\n selectionSettings.name_filter,\n selectionSettings.tag_ids,\n selectionSettings.show_enabled,\n selectionSettings.show_disabled\n )\n .then(response => {\n const workspaceIds = response.value.workspaces.map(workspace => workspace.id)\n showLoadingBar()\n this.props\n .fetchLastWorkspaceJobs(workspaceIds, 0)\n .then(hideLoadingBar)\n .catch(hideLoadingBar)\n })\n .catch(_noop)\n }\n\n /*\n * It executes defined onEnter function whenever user scrolls to\n * the element 'Waypoint'. We are using it for infinite scrolling.\n */\n renderWaypoint = () => {\n //return
    Waypoint
    \n const { hasWorkspacesMoreItems } = this.props\n if (hasWorkspacesMoreItems) {\n return \n }\n }\n\n expandWorkspaceSchedules = workspaceId => () => {\n this.setState(prevState => ({\n expandedSchedules: prevState.expandedSchedules.set(workspaceId, true)\n }))\n }\n\n _determineSortOptions = values => ({\n column: values.sortBy.value,\n order: values.order ? \"ASC\" : \"DESC\"\n })\n\n onSortSubmit = values => {\n const { setSortingOptions, filterValues, fetchWorkspaceList } = this.props\n const selectedTags = _get(filterValues, \"selectedTags\", [])\n const sortOpt = this._determineSortOptions(values)\n const searchText = _get(filterValues, \"search\", \"\")\n const filterBy = _get(filterValues, \"filterBy\", \"all\")\n\n setSortingOptions(\"WorkspaceFilter\", sortOpt.column, sortOpt.order)\n fetchWorkspaceList(\n 0,\n WORKSPACE.LOADING_LIMIT,\n 1,\n sortOpt.column,\n sortOpt.order,\n searchText,\n selectedTags,\n this._determineShowEnabled(filterBy),\n this._determineShowDisabled(filterBy)\n )\n .then(response => {\n const workspaceIds = response.value.workspaces.map(workspace => workspace.id)\n this.props.showLoadingBar()\n this.props\n .fetchLastWorkspaceJobs(workspaceIds, 0)\n .then(this.props.hideLoadingBar)\n .catch(this.props.hideLoadingBar)\n })\n .catch(_noop)\n }\n\n _determineShowEnabled = filterBy => {\n return filterBy === \"all\" || filterBy === \"enabled\" ? 1 : 0\n }\n\n _determineShowDisabled = filterBy => {\n return filterBy === \"all\" || filterBy === \"disabled\" ? 1 : 0\n }\n\n onFilterBySubmit = values => {\n const { setFilterBy, filterValues, fetchWorkspaceList } = this.props\n const selectedTags = _get(filterValues, \"selectedTags\", [])\n const orderBy = _get(filterValues, \"orderBy\", \"last_run\")\n const orderDir = _get(filterValues, \"orderDir\", \"DESC\")\n const searchText = _get(filterValues, \"search\", \"\")\n const filterBy = _get(values, \"filterBy.value\", \"all\")\n\n setFilterBy(\"WorkspaceFilter\", filterBy)\n fetchWorkspaceList(\n 0,\n WORKSPACE.LOADING_LIMIT,\n 1,\n orderBy,\n orderDir,\n searchText,\n selectedTags,\n this._determineShowEnabled(filterBy),\n this._determineShowDisabled(filterBy)\n )\n .then(response => {\n const workspaceIds = response.value.workspaces.map(workspace => workspace.id)\n this.props.showLoadingBar()\n this.props\n .fetchLastWorkspaceJobs(workspaceIds, 0)\n .then(this.props.hideLoadingBar)\n .catch(this.props.hideLoadingBar)\n })\n .catch(_noop)\n }\n\n onSearchSubmit = filterName => {\n const { filterValues, fetchWorkspaceList } = this.props\n const selectedTags = _get(filterValues, \"selectedTags\", [])\n const orderBy = _get(filterValues, \"orderBy\", \"last_run\")\n const orderDir = _get(filterValues, \"orderDir\", \"DESC\")\n const filterBy = _get(filterValues, \"filterBy\", \"all\")\n\n fetchWorkspaceList(\n 0,\n WORKSPACE.LOADING_LIMIT,\n 1,\n orderBy,\n orderDir,\n filterName,\n selectedTags,\n this._determineShowEnabled(filterBy),\n this._determineShowDisabled(filterBy)\n )\n .then(response => {\n const workspaceIds = response.value.workspaces.map(workspace => workspace.id)\n this.props.showLoadingBar()\n this.props\n .fetchLastWorkspaceJobs(workspaceIds, 0)\n .then(this.props.hideLoadingBar)\n .catch(this.props.hideLoadingBar)\n })\n .catch(_noop)\n }\n\n selectFilterTag = tagId => () => {\n const { filterValues, fetchWorkspaceList, setFilterByTags } = this.props\n\n const searchText = _get(filterValues, \"search\", \"\")\n const selectedTags = _get(filterValues, \"selectedTags\", [])\n const orderBy = _get(filterValues, \"orderBy\", \"last_run\")\n const orderDir = _get(filterValues, \"orderDir\", \"DESC\")\n const filterBy = _get(filterValues, \"filterBy\", \"all\")\n\n if (!selectedTags.includes(tagId)) {\n const newTags = [...selectedTags, tagId]\n fetchWorkspaceList(\n 0,\n WORKSPACE.LOADING_LIMIT,\n 1,\n orderBy,\n orderDir,\n searchText,\n newTags,\n this._determineShowEnabled(filterBy),\n this._determineShowDisabled(filterBy)\n )\n .then(response => {\n const workspaceIds = response.value.workspaces.map(workspace => workspace.id)\n this.props.showLoadingBar()\n this.props\n .fetchLastWorkspaceJobs(workspaceIds, 0)\n .then(this.props.hideLoadingBar)\n .catch(this.props.hideLoadingBar)\n })\n .catch(_noop)\n\n setFilterByTags(\"WorkspaceFilter\", newTags)\n }\n }\n\n deselectFilterTag = tagId => () => {\n const { filterValues, fetchWorkspaceList, setFilterByTags } = this.props\n\n const searchText = _get(filterValues, \"search\", \"\")\n const selectedTags = _get(filterValues, \"selectedTags\", [])\n const orderBy = _get(filterValues, \"orderBy\", \"last_run\")\n const orderDir = _get(filterValues, \"orderDir\", \"DESC\")\n const filterBy = _get(filterValues, \"filterBy\", \"all\")\n\n let newTags = [...selectedTags]\n newTags = newTags.filter(tag => tag !== tagId)\n fetchWorkspaceList(\n 0,\n WORKSPACE.LOADING_LIMIT,\n 1,\n orderBy,\n orderDir,\n searchText,\n newTags,\n this._determineShowEnabled(filterBy),\n this._determineShowDisabled(filterBy)\n )\n .then(response => {\n const workspaceIds = response.value.workspaces.map(workspace => workspace.id)\n this.props.showLoadingBar()\n this.props\n .fetchLastWorkspaceJobs(workspaceIds, 0)\n .then(this.props.hideLoadingBar)\n .catch(this.props.hideLoadingBar)\n })\n .catch(_noop)\n\n setFilterByTags(\"WorkspaceFilter\", newTags)\n }\n\n setLayout = type => () => {\n const { setUiAttribute, authenticatedUser } = this.props\n const setLayout = _get(authenticatedUser, \"ui.workspacesListLayout\", \"one-col\")\n if (type !== setLayout) {\n setUiAttribute(\"workspacesListLayout\", type)\n }\n }\n\n renderWorkspaces = () => {\n const { workspaces, lastWorkspacesJobs, areTagsAlreadyFetched, authenticatedUser } = this.props\n const { expandedSchedules, compactWorkspaceBoxesHeights } = this.state\n\n if (!areTagsAlreadyFetched || !List.isList(workspaces)) {\n return null\n }\n\n if (workspaces.size === 0) {\n return
    No workspaces found.
    \n }\n\n const renderWorkspace = (workspace, isLast = false) => {\n const workspaceJob =\n lastWorkspacesJobs !== null ? lastWorkspacesJobs.get(_toString(workspace.id)) : null\n\n return (\n {\n this.compactWorkspaceBoxesRefs[workspace.id] = el\n }}\n onInit={() => {\n if (!_isNumber(this.compactWorkspaceBoxesHeightsTmp[workspace.id])) {\n this.compactWorkspaceBoxesHeightsTmp[workspace.id] = this.compactWorkspaceBoxesRefs[\n workspace.id\n ].getBoundingClientRect().height\n }\n if (\n isLast &&\n !this.state.compactWorkspaceBoxesHeights.equals(\n Map(this.compactWorkspaceBoxesHeightsTmp)\n )\n ) {\n this.setState({\n compactWorkspaceBoxesHeights: Map(this.compactWorkspaceBoxesHeightsTmp)\n })\n }\n }}\n />\n )\n }\n\n const compactView = _get(authenticatedUser, \"ui.workspacesListLayout\", \"one-col\") === \"two-cols\"\n const invisible = compactWorkspaceBoxesHeights.size < workspaces.size\n if (compactView) {\n let leftColHeight = 0,\n rightColHeight = 0\n const left = [],\n right = []\n workspaces.forEach(workspace => {\n if (leftColHeight <= rightColHeight) {\n left.push(workspace)\n leftColHeight += compactWorkspaceBoxesHeights.get(_toString(workspace.id))\n } else {\n right.push(workspace)\n rightColHeight += compactWorkspaceBoxesHeights.get(_toString(workspace.id))\n }\n })\n const lastWorkspace = workspaces.last()\n if (!lastWorkspace) {\n return null\n }\n return (\n \n
    \n
    \n {left.map(workspace => {\n return renderWorkspace(workspace, lastWorkspace.id === workspace.id)\n })}\n
    \n
    \n {right.map(workspace => {\n return renderWorkspace(workspace, lastWorkspace.id === workspace.id)\n })}\n
    \n
    \n {!invisible && this.renderWaypoint()}\n
    \n )\n } else {\n return (\n
    \n {workspaces.map((workspace, index) => {\n return renderWorkspace(workspace, index + 1 === workspaces.size)\n })}\n {!invisible && this.renderWaypoint()}\n
    \n )\n }\n }\n\n render() {\n const { projectConfJobs, authenticatedUser, createWorkspace, fetchUsersAcl } = this.props\n const { createWorkspaceModalOpen } = this.state\n const isAbleToCreateWorkspaces = canCreateWorkspaces()\n const currentLayout = _get(authenticatedUser, \"ui.workspacesListLayout\", \"one-col\")\n\n return (\n
    \n
    \n \n \n {this.renderWorkspaces()}\n
    \n
    \n \n
    \n \n \n
    \n )\n }\n}\n\nWorkspaceList.propTypes = {\n workspaces: PropTypes.instanceOf(List),\n tags: PropTypes.instanceOf(Map).isRequired,\n setFilterByTags: PropTypes.func.isRequired,\n setSortingOptions: PropTypes.func.isRequired,\n setFilterAndSorting: PropTypes.func.isRequired,\n projectConfJobs: PropTypes.instanceOf(List),\n lastWorkspacesJobs: PropTypes.instanceOf(Map),\n fetchWorkspaceList: PropTypes.func.isRequired,\n retrieveWorkspace: PropTypes.func.isRequired,\n listProjectConfigurationJob: PropTypes.func.isRequired,\n fetchLastWorkspaceJobs: PropTypes.func.isRequired,\n selectionSettings: PropTypes.instanceOf(Record).isRequired,\n hasWorkspacesMoreItems: PropTypes.bool.isRequired,\n showLoadingBar: PropTypes.func.isRequired,\n hideLoadingBar: PropTypes.func.isRequired,\n clearCachedConfigurationJobs: PropTypes.func.isRequired,\n clearCachedConfigurationHistory: PropTypes.func.isRequired,\n authenticatedUser: PropTypes.object,\n setUiAttribute: PropTypes.func.isRequired,\n areTagsAlreadyFetched: PropTypes.bool.isRequired\n}\n\nconst mapStateToProps = state => {\n return {\n workspaces: getWorkspaces(state),\n tags: getTagsMap(state),\n filterValues: getFormValues(\"WorkspaceFilter\")(state),\n projectConfJobs: getDashboardConfJobs(state),\n lastWorkspacesJobs: getLastWorkspacesJobs(state),\n selectionSettings: getWorkspacesSelectionSettings(state),\n hasWorkspacesMoreItems: getWorkspacesHasMoreItems(state),\n authenticatedUser: state.authenticatedUser,\n areTagsAlreadyFetched: areTagsAlreadyFetched(state)\n }\n}\n\nexport default connect(mapStateToProps, {\n fetchWorkspaceList,\n retrieveWorkspace,\n listProjectConfigurationJob,\n fetchLastWorkspaceJobs,\n setFilterBy,\n setFilterByTags,\n setSortingOptions,\n setFilterAndSorting,\n showLoadingBar,\n hideLoadingBar,\n clearCachedConfigurationJobs,\n clearCachedWorkspaceJobs,\n clearCachedWorkspaceHistory,\n clearCachedConfigurationHistory,\n setUiAttribute,\n createWorkspace,\n fetchUsersAcl\n})(WorkspaceList)\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Field } from \"redux-form\"\n\nimport \"./ToggleSwitch.css\"\n\nconst ToggleSwitchField = ({\n name,\n leftValue,\n rightValue,\n leftLabel,\n rightLabel,\n width,\n size,\n label,\n disabled = false,\n onChange = () => {}\n}) => (\n
    \n {label && (\n \n )}\n \n

    \n \n \n \n \n \n

    \n
    \n
    \n)\n\nToggleSwitchField.propTypes = {\n name: PropTypes.string.isRequired,\n leftValue: PropTypes.string.isRequired,\n leftLabel: PropTypes.string,\n rightValue: PropTypes.string.isRequired,\n rightLabel: PropTypes.string,\n width: PropTypes.string.isRequired,\n size: PropTypes.string,\n label: PropTypes.string,\n disabled: PropTypes.bool,\n onChange: PropTypes.func\n}\n\nexport default ToggleSwitchField\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport { reduxForm, Form, Field, FieldArray } from \"redux-form\"\nimport PropTypes from \"prop-types\"\nimport { List, Map, Record } from \"immutable\"\nimport _get from \"lodash/get\"\nimport _toString from \"lodash/toString\"\nimport _toLower from \"lodash/toLower\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\n// ui elements\nimport Modal from \"components/UI/elements/Modal\"\nimport Button from \"components/UI/elements/Button\"\nimport IconButton from \"components/UI/elements/IconButton\"\nimport SelectField from \"components/UI/elements/SelectField\"\nimport ToggleSwitchField from \"components/UI/elements/ToggleSwitch/ToggleSwitchField\"\n\n// actions\nimport { showToast } from \"actions/toast.action\"\n\n// helpers\nimport { optionRequired } from \"helpers/validators.helper\"\n\n// constants\nimport { TOAST, USER, PERMISSION } from \"sharedConstants\"\n\nimport \"./AddUserAclModal.css\"\n\nclass AddUserAclModal extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n onSubmit = values => {\n const { showToast, entityName } = this.props\n\n this.setState({ loading: true })\n\n this.createAcls(List(values[\"invite-users\"]), isSuccess => {\n this.setState({ loading: false })\n if (isSuccess) {\n showToast(\n `Invites to the ${entityName === \"dawg\" ? \"DAWG\" : \"workspace\"} have been sent.`,\n TOAST.TYPE.SUCCESS\n )\n this.cancel()\n }\n })\n }\n\n createAcls = (inviteUsers, cbFn) => {\n if (inviteUsers.size === 0) {\n cbFn(true)\n } else {\n const { createAcl, entity } = this.props\n const inviteUser = inviteUsers.last()\n\n createAcl(entity.id, {\n permission: inviteUser.permission,\n user_id: inviteUser.user.value\n })\n .then(() => {\n this.createAcls(inviteUsers.pop(), cbFn)\n })\n .catch(() => {\n this.createAcls(inviteUsers.pop(), cbFn)\n })\n }\n }\n\n cancel = () => {\n const { handleClose, reset } = this.props\n handleClose()\n // reset after fade out\n setTimeout(reset, 500)\n }\n\n userSelectOptions = (index, inviteUserIds) => {\n const { users, entityUsers, authenticatedUser } = this.props\n const authUserId = _get(authenticatedUser, \"data.id\", 0)\n\n const entityUsersInMap = this.convertListToMapByKey(entityUsers, \"user_id\")\n\n return users\n .filter(\n user =>\n user.role !== USER.ROLE.SYSTEM &&\n !user.disabled &&\n entityUsersInMap &&\n !entityUsersInMap.get(user.id) &&\n inviteUserIds.indexOf(user.id) === -1 &&\n user.id !== authUserId\n )\n .map(user => ({\n index: index,\n value: user.id,\n name: user.name,\n email: user.email,\n label: user.name\n }))\n .sortBy(user => _toLower(user.name))\n .toArray()\n }\n\n convertListToMapByKey = (list, searchKey) => {\n if (!list) {\n return undefined\n }\n\n return list.reduce((acc, currentValue) => {\n const id = Map.isMap(currentValue) ? currentValue.get(searchKey) : currentValue[searchKey]\n return acc.set(id, currentValue)\n }, Map())\n }\n\n renderInviteUsers = ({ fields }) => {\n const { users } = this.props\n const inviteUserIdList = fields.getAll()\n ? fields\n .getAll()\n .filter(field => field.user)\n .map(field => field.user.value)\n : []\n const defaultInviteUser = {\n permission: PERMISSION.READ\n }\n\n if (fields.length === 0) {\n fields.push(defaultInviteUser)\n }\n\n return (\n \n {fields.map((member, index) => {\n const userIdValue = fields.get(index).user\n let isAdminSelected = false\n if (userIdValue && userIdValue.value) {\n const role = users.getIn([_toString(userIdValue.value), \"role\"])\n if (role === USER.ROLE.ADMIN) {\n isAdminSelected = true\n if (fields.get(index)[\"permission\"] === PERMISSION.READ) {\n fields.get(index)[\"permission\"] = PERMISSION.WRITE\n }\n }\n }\n\n return (\n
    \n \n \n fields.remove(index)}\n className=\"trash-icon\"\n disabled={fields.length === 1}\n >\n \n \n {isAdminSelected && (\n

    Admin's permissions can't be modified.

    \n )}\n
    \n )\n })}\n fields.push(defaultInviteUser)}\n className=\"invite-more-btn\"\n size=\"small\"\n >\n \n invite more people\n \n
    \n )\n }\n\n render() {\n const { open, handleSubmit, entityName } = this.props\n\n return (\n \n \n
    \n \n
    \n\n
    \n \n Cancel\n \n \n Add user\n \n
    \n \n \n )\n }\n}\n\nAddUserAclModal.propTypes = {\n open: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n createAcl: PropTypes.func.isRequired,\n entityUsers: PropTypes.instanceOf(List),\n entity: PropTypes.instanceOf(Record).isRequired,\n entityName: PropTypes.string.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n reset: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired,\n users: PropTypes.instanceOf(Map).isRequired,\n initialValues: PropTypes.object.isRequired,\n authenticatedUser: PropTypes.object.isRequired\n}\n\nAddUserAclModal = reduxForm({\n form: \"AddUserAcl\",\n touchOnBlur: false\n})(\n connect(\n state => ({\n authenticatedUser: state.authenticatedUser\n }),\n { showToast }\n )(AddUserAclModal)\n)\n\nexport default AddUserAclModal\n","import React, { Component } from \"react\"\nimport { connect } from \"react-redux\"\nimport { reduxForm, Form } from \"redux-form\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport _get from \"lodash/get\"\nimport _noop from \"lodash/noop\"\n\n// ui components\nimport Modal from \"components/UI/elements/Modal\"\nimport Button from \"components/UI/elements/Button\"\nimport IconButton from \"components/UI/elements/IconButton\"\nimport ToggleSwitchField from \"components/UI/elements/ToggleSwitch/ToggleSwitchField\"\nimport Avatar from \"components/UI/elements/Avatar\"\n\n// actions\nimport { showToast } from \"actions/toast.action\"\n\n// constants, helpers\nimport { TOAST, PERMISSION, USER } from \"sharedConstants\"\nimport { shortenString } from \"helpers/string.helper\"\n\nimport \"./EditUserAclModal.css\"\n\nclass EditUserAclModal extends Component {\n constructor(props) {\n super(props)\n this.state = {\n changingOwnPermissionToView: false\n }\n }\n\n closeAndReset = () => {\n const { handleClose, reset } = this.props\n if (this.state.changingOwnPermissionToView) {\n this.setState({\n changingOwnPermissionToView: false\n })\n }\n reset()\n handleClose()\n }\n\n onSubmit = values => {\n if (!this.state.loading) {\n const { modifyAcl, handleClose, showToast, acl, fetchUsersAcl, entityName } = this.props\n const { changingOwnPermissionToView } = this.state\n this.setState({ loading: true })\n const entityId = entityName === \"workspace\" ? acl.workspace_id : acl.dawg_id\n modifyAcl(entityId, acl.user_id, { ...values })\n .then(() => {\n if (changingOwnPermissionToView) {\n fetchUsersAcl(acl.user_id).catch(_noop)\n }\n handleClose()\n this.setState({ loading: false, changingOwnPermissionToView: false })\n showToast(\"User's permission has been modified.\", TOAST.TYPE.SUCCESS)\n })\n .catch(() => {\n this.setState({ loading: false })\n })\n }\n }\n\n deleteEntityUser = () => {\n if (!this.state.loading) {\n const { deleteAcl, handleClose, acl, showToast } = this.props\n this.setState({ loading: true })\n deleteAcl(acl)\n .then(() => {\n handleClose()\n this.setState({ loading: false })\n showToast(\"User's permission has been deleted.\", TOAST.TYPE.SUCCESS)\n })\n .catch(() => {\n this.setState({ loading: false })\n })\n }\n }\n\n checkChangingOwnPermissionToView = evt => {\n const { user, authenticatedUser } = this.props\n const value = _get(evt, \"target.value\")\n if (value) {\n if (_get(user, \"id\") === _get(authenticatedUser, \"data.id\") && value === PERMISSION.READ) {\n this.setState({ changingOwnPermissionToView: true })\n } else {\n if (this.state.changingOwnPermissionToView) {\n this.setState({ changingOwnPermissionToView: false })\n }\n }\n }\n }\n\n render() {\n const { open, handleSubmit, user, entityName } = this.props\n const { changingOwnPermissionToView } = this.state\n\n return (\n \n \n
    \n {user && (\n
    \n \n {shortenString(user.name, 20)}\n
    \n )}\n \n \n \n \n {_get(user, \"role\") === USER.ROLE.ADMIN && (\n

    Admin's permissions can't be modified.

    \n )}\n {changingOwnPermissionToView && (\n

    \n {`You won't be able to edit this ${entityName} anymore.`}\n

    \n )}\n
    \n
    \n \n Cancel\n \n \n Modify\n \n
    \n \n
    \n )\n }\n}\n\nEditUserAclModal.propTypes = {\n open: PropTypes.bool.isRequired,\n entityName: PropTypes.string.isRequired,\n handleClose: PropTypes.func.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired,\n initialValues: PropTypes.object,\n user: PropTypes.object,\n acl: PropTypes.object,\n modifyAcl: PropTypes.func.isRequired,\n fetchUsersAcl: PropTypes.func.isRequired,\n deleteAcl: PropTypes.func.isRequired,\n authenticatedUser: PropTypes.object.isRequired\n}\n\nconst mapStateToProps = state => ({\n authenticatedUser: state.authenticatedUser\n})\n\nEditUserAclModal = reduxForm({\n form: \"EditUserAcl\",\n enableReinitialize: true\n})(connect(mapStateToProps, { showToast })(EditUserAclModal))\n\nexport default EditUserAclModal\n","import React from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport PropTypes from \"prop-types\"\n\nimport { renderTooltip } from \"helpers/disabledTooltip.helper\"\n\nimport \"./DeleteDataCheckbox.css\"\n\nconst DeleteDataCheckbox = ({\n value,\n onChange,\n readyToEdit,\n disabled = false,\n currentlyEditing = \"\",\n tooltipId = \"data-delete-checkbox\",\n className = \"\"\n}) => (\n 0}\n data-for={currentlyEditing.length > 0 ? tooltipId : false}\n >\n 0 ? \"disabled\" : \"\"\n } ${!readyToEdit ? \"cursor-wait\" : \"\"}`}\n >\n Delete data after execution\n 0 || !readyToEdit}\n className=\"checkbox\"\n />\n \n \n \n \n {renderTooltip(tooltipId, currentlyEditing)}\n \n)\n\nDeleteDataCheckbox.defaultProps = {\n readyToEdit: true\n}\n\nDeleteDataCheckbox.propTypes = {\n value: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n currentlyEditing: PropTypes.string,\n tooltipId: PropTypes.string,\n readyToEdit: PropTypes.bool\n}\n\nexport default DeleteDataCheckbox\n","export const getWorkersCount = state => state.workersCount.get(\"count\")\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport _toInteger from \"lodash/toInteger\"\nimport _noop from \"lodash/noop\"\nimport PropTypes from \"prop-types\"\nimport { Map } from \"immutable\"\nimport ReactTooltip from \"react-tooltip\"\n\nimport { fetchWorkersCount } from \"actions/workersCount.action\"\nimport { getWorkersCount } from \"selectors/workersCount.selector\"\nimport { TOAST } from \"sharedConstants\"\n\nclass WorkersCount extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n workersCountValue: props.initialValue ? props.initialValue : \"\"\n }\n }\n\n componentDidMount() {\n const { fetchWorkersCount } = this.props\n fetchWorkersCount()\n .then(() => {\n if (!this.state.workersCountValue) {\n this.setState({\n workersCountValue: this.getWorkersCountValue()\n })\n }\n })\n .catch(_noop)\n }\n\n getWorkersCountValue = () => {\n const { initialValue, maxWorkersCount } = this.props\n if (initialValue) {\n return initialValue\n } else {\n return maxWorkersCount\n }\n }\n\n changeWorkersCountValue = evt => {\n const { maxWorkersCount } = this.props\n const { value } = evt.target\n if ((value > 0 && value <= maxWorkersCount) || value === \"\") {\n this.setState({\n workersCountValue: value ? _toInteger(value) : \"\"\n })\n }\n }\n\n saveWorkersCountValue = (newValue = null) => {\n const { workersCountValue } = this.state\n const { initialValue, settings, modifyEntity, maxWorkersCount } = this.props\n const value = newValue !== null ? _toInteger(newValue) : _toInteger(workersCountValue)\n if (!value || value > maxWorkersCount) {\n this.setState({\n workersCountValue: this.getWorkersCountValue()\n })\n } else {\n if (initialValue !== value) {\n let settingsToStore = {}\n if (Map.isMap(settings)) {\n settingsToStore = settings.toJS()\n }\n modifyEntity(\n {\n settings: {\n ...settingsToStore,\n max_workers_used: value\n }\n },\n {},\n \"No. of workers available for the workspace has been updated.\",\n TOAST.TYPE.SUCCESS\n )\n .then(() => {\n this.setState({\n workersCountValue: this.getWorkersCountValue()\n })\n })\n .catch(_noop)\n }\n }\n }\n\n increaseWorkersCount = () => {\n const { maxWorkersCount } = this.props\n const { workersCountValue } = this.state\n if (workersCountValue < maxWorkersCount) {\n this.saveWorkersCountValue(workersCountValue + 1)\n }\n }\n\n decreaseWorkersCount = () => {\n const { workersCountValue } = this.state\n if (workersCountValue > 1) {\n this.saveWorkersCountValue(workersCountValue - 1)\n }\n }\n\n render() {\n const { maxWorkersCount } = this.props\n const { workersCountValue } = this.state\n return (\n \n \n {maxWorkersCount > 0 && (\n \n

    \n {\" \"}\n Workers available\n

    \n
    \n \n -\n \n
    \n this.saveWorkersCountValue()}\n disabled={maxWorkersCount === 1}\n data-testid=\"input\"\n />\n / {maxWorkersCount}\n
    \n\n \n +\n \n
    \n
    \n )}\n \n {maxWorkersCount === 1 && (\n \n The instance has maximum 1 worker available.\n \n )}\n
    \n )\n }\n}\n\nWorkersCount.propTypes = {\n initialValue: PropTypes.number,\n modifyEntity: PropTypes.func.isRequired,\n settings: PropTypes.instanceOf(Map),\n maxWorkersCount: PropTypes.number,\n fetchWorkersCount: PropTypes.func.isRequired\n}\n\nconst mapStateToProps = state => {\n return {\n maxWorkersCount: getWorkersCount(state)\n }\n}\n\nexport default connect(mapStateToProps, { fetchWorkersCount })(WorkersCount)\n","import { SYSTEM } from \"sharedConstants\"\nimport { api } from \"api\"\nimport _get from \"lodash/get\"\n\nexport const fetchWorkersCount = () => async dispatch =>\n dispatch({\n type: SYSTEM.ACTION.GET_WORKERS_COUNT,\n payload: {\n promise: (async () => {\n const response = await api().systemInfo()\n return _get(response, \"system_info.mi_workers_count\")\n })()\n }\n })\n","import Modal from \"components/UI/elements/Modal\"\nimport React, { useState } from \"react\"\nimport styles from \"./TransferOwnershipModal.module.scss\"\nimport { useSelector } from \"react-redux\"\nimport Button from \"components/UI/elements/Button\"\nimport { getUsersData } from \"selectors/user.selector\"\nimport { USER } from \"sharedConstants\"\nimport { toLower } from \"lodash\"\nimport SelectField from \"components/UI/elements/SelectField\"\n\nexport default function TransferOwnershipModal({ isOpen, onClose, onSubmit, currentOwnerId }) {\n const authenticatedUser = useSelector(state => state.authenticatedUser)\n const disabled =\n authenticatedUser.data.role !== \"admin\" && authenticatedUser.data.id !== currentOwnerId\n\n const users = useSelector(getUsersData)\n const usersOptions = users\n .get(\"data\")\n .filter(user => user.role !== USER.ROLE.SYSTEM && !user.disabled && user.id !== currentOwnerId)\n .map((user, index) => ({\n index: index,\n value: user.id,\n name: user.name,\n email: user.email,\n label: user.name\n }))\n .sortBy(user => toLower(user.name))\n .toArray()\n const [selectedUserId, setSelectedUserId] = useState(null)\n const selectedUser = usersOptions.find(({ value }) => value === selectedUserId)\n\n const [isLoading, setIsLoading] = useState(false)\n async function handleSubmit() {\n setIsLoading(true)\n await onSubmit(selectedUserId)\n setIsLoading(false)\n }\n\n return (\n \n
    \n {disabled && (\n
    Only admin or current owner can transfer ownership.
    \n )}\n setSelectedUserId(value)\n }}\n label=\"User\"\n options={usersOptions}\n isSearchable\n disabled={disabled}\n />\n
    \n \n \n Confirm\n \n
    \n
    \n
    \n )\n}\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport { withRouter, Link } from \"react-router-dom\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport _toString from \"lodash/toString\"\nimport _get from \"lodash/get\"\nimport _noop from \"lodash/noop\"\nimport _isNil from \"lodash/isNil\"\nimport ReactTooltip from \"react-tooltip\"\nimport { Map, List, Record } from \"immutable\"\nimport TimeAgo from \"react-timeago\"\nimport moment from \"moment\"\n\n// UI components-elements\nimport Paper from \"components/UI/elements/Paper\"\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Button from \"components/UI/elements/Button\"\nimport NameForm from \"components/UI/components/NameForm\"\nimport Tag from \"components/UI/elements/Tag\"\nimport ToggleSwitch from \"components/UI/elements/ToggleSwitch\"\nimport AddUserAclModal from \"./AddUserAclModal\"\nimport EditUserAclModal from \"./EditUserAclModal\"\nimport Avatar from \"components/UI/elements/Avatar\"\nimport TagPicker from \"components/UI/components/TagPicker\"\nimport DeleteDataCheckbox from \"components/UI/components/DeleteDataCheckbox\"\nimport WsConfStickyNav from \"components/UI/elements/WsConfStickyNav\"\nimport DawgLink from \"components/UI/elements/DawgLink\"\nimport WorkersCount from \"components/UI/components/WorkersCount\"\n// selectors\nimport { getUsersData } from \"selectors/user.selector\"\nimport { getTagsSortedByName } from \"selectors/tag.selector\"\n\n// actions\nimport { showToast } from \"actions/toast.action\"\n\n// constants\nimport { PERMISSION, TOAST } from \"sharedConstants\"\n\n// helpers\nimport { getRoutePath } from \"routes\"\nimport { goBackInHistory } from \"helpers/backButton.helper\"\nimport { shortenString, capitalize } from \"helpers/string.helper\"\n\nimport \"./DetailHeader.css\"\nimport TransferOwnershipModal from \"./TransferOwnershipModal\"\n\nclass Header extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n addUserAclModalOpen: false,\n editUserAclModal: {\n open: false,\n user: null,\n acl: null\n },\n transferOwnershipModalOpen: false,\n allUsersShown: false\n }\n }\n\n openAddUserAclModal = () => {\n this.setState({\n addUserAclModalOpen: true\n })\n }\n\n closeAddUserAclModal = () => {\n this.setState({\n addUserAclModalOpen: false\n })\n }\n\n openEditUserAclModal = (acl, disabled) => () => {\n if (!disabled) {\n const { users } = this.props\n this.setState({\n editUserAclModal: {\n user: users.getIn([\"data\", _toString(acl.user_id)]),\n open: true,\n acl\n }\n })\n }\n }\n\n closeEditUserAclModal = () => {\n this.setState({\n editUserAclModal: {\n ...this.state.editUserAclModal,\n open: false\n }\n })\n }\n\n changeEntityName = name => {\n const { entity, entityName } = this.props\n this.props\n .handleEntityModify(\n { name },\n { name: entity.name },\n `${entityName === \"dawg\" ? \"DAWG\" : capitalize(entityName)}'s name has been modified.`,\n TOAST.TYPE.SUCCESS\n )\n .catch(_noop)\n }\n\n assignTag = tagId => {\n const { entity, showToast, assignTagToEntity, entityName } = this.props\n const tagIds = entity.tags.map(tag => tag.id)\n if (tagIds.findIndex(existingTagId => existingTagId === tagId) !== -1) {\n showToast(`Tag is already assigned to ${entityName}.`, TOAST.TYPE.ERROR)\n } else {\n assignTagToEntity(entity.id, { tag_id: tagId })\n .then(() => {\n showToast(`Tag has been assigned to ${entityName}`, TOAST.TYPE.SUCCESS)\n })\n .catch(_noop)\n }\n }\n\n unassignTag = tagId => () => {\n const { unassignTagFromEntity, entity, showToast, entityName } = this.props\n unassignTagFromEntity(entity.id, tagId)\n .then(() => {\n showToast(`Tag has been removed from ${entityName}.`, TOAST.TYPE.SUCCESS)\n })\n .catch(_noop)\n }\n\n toggleEntityDisabled = () => {\n const { entity, handleEntityModify, entityName } = this.props\n handleEntityModify(\n { disabled: entity.disabled ? 0 : 1 },\n {},\n entity.disabled\n ? `${capitalize(entityName)} has been enabled.`\n : `${capitalize(entityName)} has been disabled.`\n )\n }\n\n toggleEntityContinueOnFailure = () => {\n const { entity, handleEntityModify } = this.props\n handleEntityModify(\n { continue_on_failure: entity.continue_on_failure ? 0 : 1 },\n {},\n entity.continue_on_failure\n ? \"DAWG job will stop on workspace failure.\"\n : \"DAWG job will continue on workspace failure.\"\n )\n }\n\n showAllUsers = () => {\n this.setState({\n allUsersShown: true\n })\n }\n\n renderBackButton = () => {\n const { history, entityName } = this.props\n const altBackPath =\n entityName === \"workspace\" ? getRoutePath(\"workspace.list\") : getRoutePath(\"dawg.list\")\n return (\n \n \n \n )\n }\n\n renderEntityActionButtons = placement => {\n const {\n handleEntityClone,\n handleEntityDelete,\n handleDataErase,\n isEditable,\n entity,\n entityName,\n currentlyEditing = \"\"\n } = this.props\n\n return (\n \n \n Delete\n \n {!_isNil(handleDataErase) && (\n \n Erase data\n \n )}\n\n {!_isNil(handleEntityClone) && (\n \n Clone\n \n )}\n\n {entityName === \"workspace\" && entity.dawg && (\n \n \n
    \n \n )}\n\n \n \n )\n }\n\n renderEntityName = () => {\n const { entity } = this.props\n const name = entity.name\n let className = \"\"\n if (name.length > 35) {\n className = \"x-small\"\n } else if (name.length > 30) {\n className = \"small\"\n } else if (name.length > 25) {\n className = \"mid\"\n }\n return

    {shortenString(name, 40)}

    \n }\n\n renderRunButton = placement => {\n const {\n handleEntityRun,\n handleEntityCancel,\n entityStatus,\n isEditable,\n currentlyEditing = \"\"\n } = this.props\n return (\n \n {[\"waiting\", \"running\"].includes(entityStatus) && (\n \n Cancel\n \n )}\n {![\"waiting\", \"running\"].includes(entityStatus) && (\n \n Run\n \n )}\n \n )\n }\n\n renderTagsPart = () => {\n const { entity, tagsList, isEditable, isEntityReloading, currentlyEditing = \"\" } = this.props\n const tagIds = entity.tags.map(tag => tag.id)\n return (\n
    \n

    \n Tags\n

    \n
    \n {tagIds.map(tagId => {\n const tag = tagsList.find(val => val.id === tagId)\n if (tag) {\n return (\n \n {tag.name}\n \n )\n }\n return null\n })}\n \n
    \n
    \n )\n }\n\n render() {\n const {\n entity,\n createAcl,\n modifyAcl,\n deleteAcl,\n fetchUsersAcl,\n entityUsers,\n entityName,\n users,\n isEditable,\n handleDataDeleteCheckboxToggle,\n handleEntityModify,\n toggleNameFormEditMode,\n nameFormEditMode,\n isEntityReloading,\n currentlyEditing = \"\",\n transferOwnership\n } = this.props\n const {\n addUserAclModalOpen,\n editUserAclModal,\n allUsersShown,\n transferOwnershipModalOpen\n } = this.state\n\n return (\n
    \n
    {this.renderBackButton()}
    \n
    \n

    \n Saved{\" \"}\n {\n \n }\n

    \n \n Version history\n \n {this.renderEntityActionButtons(\"regular-header\")}\n
    \n \n
    \n
    \n \n
    \n {entityName === \"dawg\" && this.renderTagsPart()}\n
    \n
    \n
    \n

    \n Users\n

    \n
    \n
    \n this.setState({ transferOwnershipModalOpen: true })}\n data-user-id={entity.getIn([\"owner\", \"id\"])}\n >\n \n \n \n {/* {\" \"} */}\n {entity.getIn([\"owner\", \"name\"])} (owner)\n \n \n
    \n\n {entityUsers && users.get(\"data\").size > 0 && (\n \n {entityUsers\n .filter(({ user_id }) => user_id !== entity.getIn([\"owner\", \"id\"]))\n .map((acl, index) => {\n const user = users.getIn([\"data\", _toString(acl.user_id)])\n if (!user) {\n return null\n }\n if (!allUsersShown && index > 2) return null\n\n return (\n \n \n \n {acl.permission === PERMISSION.WRITE && (\n \n {user.name}\n \n )}\n {acl.permission === PERMISSION.READ && (\n \n {user.name}\n \n )}\n \n
    \n )\n })}\n {entityUsers.size > 3 && !allUsersShown && (\n
    \n
    \n +{entityUsers.size - 3}\n
    \n
    \n )}\n \n )}\n
    \n \n \n \n
    \n this.setState({ transferOwnershipModalOpen: false })}\n onSubmit={async userId => {\n await transferOwnership(userId)\n this.setState({ transferOwnershipModalOpen: false })\n }}\n currentOwnerId={entity.getIn([\"owner\", \"id\"])}\n />\n \n \n
    \n {entityName === \"workspace\" && (\n \n )}\n \n {entityName !== \"workspace\" && this.renderRunButton(\"regular-header\")}\n {!_isNil(handleDataDeleteCheckboxToggle) && (\n \n )}\n {entityName === \"workspace\" && this.renderRunButton(\"regular-header\")}\n
    \n \n \n {entityName === \"workspace\" && (\n \n {this.renderTagsPart()}\n {entity.dawg && (\n
    \n

    \n \n Part of DAWG\n

    \n \n
    \n )}\n
    \n )}\n \n
    \n {this.renderBackButton()}\n {this.renderEntityName()}\n
    \n
    \n {this.renderEntityActionButtons(\"sticky-header\")}\n
    \n {this.renderRunButton(\"sticky-header\")}\n
    \n \n
    \n )\n }\n}\n\nHeader.propTypes = {\n entity: PropTypes.instanceOf(Record).isRequired,\n createAcl: PropTypes.func.isRequired,\n entityUsers: PropTypes.instanceOf(List),\n entityName: PropTypes.string.isRequired,\n fetchUsersAcl: PropTypes.func.isRequired,\n modifyAcl: PropTypes.func.isRequired,\n deleteAcl: PropTypes.func.isRequired,\n users: PropTypes.instanceOf(Map).isRequired,\n tagsList: PropTypes.instanceOf(List).isRequired,\n handleEntityClone: PropTypes.func,\n handleEntityDelete: PropTypes.func.isRequired,\n handleEntityModify: PropTypes.func.isRequired,\n handleEntityRun: PropTypes.func.isRequired,\n handleEntityCancel: PropTypes.func.isRequired,\n isEditable: PropTypes.bool.isRequired,\n assignTagToEntity: PropTypes.func.isRequired,\n unassignTagFromEntity: PropTypes.func.isRequired,\n handleDataErase: PropTypes.func,\n handleDataDeleteCheckboxToggle: PropTypes.func,\n entityStatus: PropTypes.string,\n currentlyEditing: PropTypes.string,\n toggleNameFormEditMode: PropTypes.func.isRequired,\n nameFormEditMode: PropTypes.bool.isRequired,\n isEntityReloading: PropTypes.bool.isRequired,\n transferOwnership: PropTypes.func.isRequired\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n users: getUsersData(state),\n tagsList: getTagsSortedByName(state)\n})\n\nexport default withRouter(connect(mapStateToProps, { showToast })(Header))\n","const mappings = {\n \"1\": \"I\",\n \"2\": \"II\",\n \"3\": \"III\",\n \"4\": \"IV\",\n \"5\": \"V\",\n \"6\": \"VI\",\n \"7\": \"VII\",\n \"8\": \"VIII\",\n \"9\": \"IX\",\n \"10\": \"X\"\n}\n\nexport const convertToRomanNum = number => {\n return mappings[`${number}`]\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { List } from \"immutable\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\n// helpers\nimport { isEmailValid } from \"helpers/validators.helper\"\n\n// constats\nimport { ADD_INPUTBOX_TYPE } from \"sharedConstants\"\n\nimport \"./AddInputbox.css\"\n\nclass AddInputbox extends Component {\n constructor(props) {\n super(props)\n\n this.state = {\n inputValue: \"\"\n }\n }\n\n handleValueChange = evt => {\n this.setState({\n error: \"\",\n inputValue: evt.target.value\n })\n }\n\n handleKeyPress = evt => {\n if (evt.key === \"Enter\") {\n evt.preventDefault()\n this.addValue()\n }\n }\n\n addValue = () => {\n const { type, handleValueAdd } = this.props\n const { inputValue } = this.state\n if (type === ADD_INPUTBOX_TYPE.EMAIL) {\n if (!isEmailValid(inputValue)) {\n this.setState({\n error: \"Email is not valid\"\n })\n return\n }\n }\n\n const response = handleValueAdd(inputValue)\n if (response.error) {\n this.setState({ error: response.error })\n } else if (response.value) {\n this.setState({\n error: \"\",\n inputValue: \"\"\n })\n }\n }\n\n removeValue = value => () => {\n const { handleValueDelete } = this.props\n handleValueDelete(value)\n }\n\n render() {\n const { values, className, type } = this.props\n const { error } = this.state\n\n return (\n
    \n

    Failure notifications send to

    \n
    \n \n \n + ADD\n \n {error &&

    {error}

    }\n
    \n
    \n {values.map(value => (\n \n {value}{\" \"}\n \n \n \n \n ))}\n
    \n
    \n )\n }\n}\n\nAddInputbox.propTypes = {\n values: PropTypes.instanceOf(List).isRequired,\n handleValueAdd: PropTypes.func.isRequired,\n handleValueDelete: PropTypes.func.isRequired,\n type: PropTypes.string.isRequired\n}\n\nexport default AddInputbox\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\n// ui components\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Button from \"components/UI/elements/Button\"\n\n// constants\nimport { SCHEDULE_FORM_TYPE } from \"sharedConstants\"\n\nconst CommonHeader = ({\n handleClose,\n formType,\n handleSubmit,\n handleFormTypeChange,\n loading,\n handleEntireSchedulesDelete\n}) => (\n \n
    \n
    \n

    \n Schedule:{\" \"}\n \n Day of the week\n \n {\" | \"}\n \n Day of the month\n \n

    \n
    \n
    \n
    \n \n {handleEntireSchedulesDelete !== null && (\n \n \n Delete\n \n \n )}\n \n Save\n \n
    \n
    \n)\n\nCommonHeader.propTypes = {\n handleClose: PropTypes.func.isRequired,\n formType: PropTypes.string.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n handleFormTypeChange: PropTypes.func.isRequired,\n loading: PropTypes.bool.isRequired,\n handleEntireSchedulesDelete: PropTypes.func\n}\n\nexport default CommonHeader\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport moment from \"moment\"\nimport { List, Map } from \"immutable\"\nimport _includes from \"lodash/includes\"\nimport _toInteger from \"lodash/toInteger\"\nimport _map from \"lodash/map\"\nimport _each from \"lodash/each\"\nimport _isNaN from \"lodash/isNaN\"\nimport _inRange from \"lodash/inRange\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\n// helpers\nimport { convertToRomanNum } from \"helpers/romanNumeral.helper\"\n\n// ui components\nimport Button from \"components/UI/elements/Button\"\nimport AddInputbox from \"components/UI/components/AddInputbox/AddInputbox\"\nimport Paper from \"components/UI/elements/Paper\"\nimport CommonHeader from \"./CommonHeader\"\n\n// constants\nimport { ADD_INPUTBOX_TYPE, SCHEDULE_FORM_TYPE } from \"sharedConstants\"\n\nclass DayOfMonthForm extends PureComponent {\n constructor(props) {\n super(props)\n\n const { schedules } = this.props\n if (schedules.size === 0) {\n this.state = {\n activeTab: 0,\n schedules: List([Map({ minutes: \"\", hours: \"\", days: List() })]),\n loading: false\n }\n } else {\n const schedule = schedules.first()\n\n if (_includes(schedule.get(\"day\"), \"*\")) {\n this.state = {\n activeTab: 0,\n schedules: List([Map({ minutes: \"\", hours: \"\", days: List() })]),\n loading: false\n }\n } else {\n const schedulesTransformed = schedules.map(schedule => {\n const minutes = moment({\n minute: _toInteger(schedule.get(\"minute\"))\n }).format(\"mm\")\n const hours = moment.utc({ hour: _toInteger(schedule.get(\"hour\")) }).hours()\n const days = List(_map(schedule.get(\"day\").split(\",\"), day => _toInteger(day)))\n\n return Map({ minutes, hours, days })\n })\n this.state = {\n activeTab: 0,\n schedules: schedulesTransformed,\n loading: false\n }\n }\n }\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.handleCalendarButtonsResize)\n this.handleCalendarButtonsResize()\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.handleCalendarButtonsResize)\n }\n\n handleCalendarButtonsResize = () => {\n const elements = document.getElementsByClassName(\"day-of-month-button\")\n _each(elements, el => {\n el.style.height = `${el.offsetWidth}px`\n })\n }\n\n addSchedule = () => {\n this.setState(prevState => ({\n activeTab: prevState.schedules.size,\n schedules: prevState.schedules.push(Map({ minutes: \"\", hours: \"\", days: List() }))\n }))\n }\n\n deleteSchedule = () => {\n const { activeTab, schedules } = this.state\n if (schedules.size === 1) {\n // erase last schedule, don't delete tab\n this.setState({\n schedules: List([Map({ minutes: \"\", hours: \"\", days: List() })])\n })\n } else {\n this.setState(prevState => ({\n activeTab: 0,\n schedules: prevState.schedules.filterNot((schedule, sidx) => activeTab === sidx)\n }))\n }\n }\n\n selectActiveSchedule = idx => () => {\n this.setState({\n activeTab: idx\n })\n }\n\n isScheduleTimeValid = schedule => {\n if (\n _isNaN(schedule.get(\"minutes\")) ||\n _isNaN(schedule.get(\"hours\")) ||\n !_inRange(schedule.get(\"hours\"), 0, 24) ||\n !_inRange(schedule.get(\"minutes\"), 0, 60)\n ) {\n return false\n }\n return true\n }\n\n handleSubmit = () => {\n if (!this.state.loading) {\n const { schedules } = this.state\n\n let valid = true\n const schedulesCheck = schedules.map(schedule => {\n if (schedule.get(\"days\").size === 0) {\n valid = false\n if (!this.isScheduleTimeValid(schedule)) {\n return schedule.set(\"dayError\", true).set(\"timeError\", true)\n }\n return schedule.set(\"dayError\", true)\n } else {\n if (!this.isScheduleTimeValid(schedule)) {\n valid = false\n return schedule.set(\"timeError\", true)\n }\n }\n return schedule\n })\n\n if (valid) {\n // submit\n this.setState({ loading: true })\n const schedulesUtc = schedules.map(schedule => {\n return {\n minutes: _toInteger(schedule.get(\"minutes\")),\n hours: moment.utc({ hour: _toInteger(schedule.get(\"hours\")) }).hours(),\n days: schedule.get(\"days\").toArray()\n }\n })\n this.props.onSubmit({ schedules: schedulesUtc.toArray() }).catch(() => {\n this.setState({ loading: false })\n })\n } else {\n this.setState({\n schedules: schedulesCheck\n })\n }\n }\n }\n\n handleTimeChange = evt => {\n const { activeTab, schedules } = this.state\n const { value, name } = evt.target\n\n this.setState({\n schedules: schedules.map((schedule, sidx) => {\n if (sidx === activeTab) {\n return schedule.set(name, value).set(\"timeError\", false)\n }\n return schedule\n })\n })\n }\n\n isDayOfMonthSelected = dayNumber => {\n const { activeTab } = this.state\n const schedule = this.state.schedules.get(activeTab)\n\n return schedule.get(\"days\").includes(dayNumber)\n }\n\n toggleDayOfMonth = dayNumber => {\n const { activeTab } = this.state\n\n if (this.isDayOfMonthSelected(dayNumber)) {\n this.setState(prevState => ({\n schedules: prevState.schedules.map((schedule, sidx) => {\n if (sidx === activeTab) {\n return schedule.set(\n \"days\",\n schedule.get(\"days\").filterNot(day => day === dayNumber)\n )\n }\n return schedule\n })\n }))\n } else {\n this.setState(prevState => ({\n schedules: prevState.schedules.map((schedule, sidx) => {\n if (sidx === activeTab) {\n return schedule.set(\"days\", schedule.get(\"days\").push(dayNumber)).set(\"dayError\", false)\n }\n return schedule\n })\n }))\n }\n }\n\n renderCalendarButtons = () => {\n let buttons = []\n for (let i = 1; i <= 28; i++) {\n const active = this.isDayOfMonthSelected(i) ? \"active\" : \"\"\n buttons.push(\n this.toggleDayOfMonth(i)}\n className={`calendar-button day-of-month-button ${active}`}\n >\n {i}\n \n )\n }\n return buttons\n }\n\n render() {\n const { schedules, activeTab, loading } = this.state\n const {\n notificationEmails,\n handleEmailDelete,\n handleEmailAdd,\n handleFormTypeChange,\n handleFormClose,\n handleEntireSchedulesDelete\n } = this.props\n\n return (\n
    \n \n \n
    \n
    \n {schedules.map((schedule, idx) => {\n let color = \"grey\"\n if (activeTab === idx) {\n color = \"primary\"\n }\n if (schedule.get(\"dayError\") || schedule.get(\"timeError\")) {\n color = \"red\"\n }\n return (\n \n Time {convertToRomanNum(idx + 1)}\n \n )\n })}\n {schedules.size < 8 && (\n \n + ADD TIME\n \n )}\n
    \n
    \n
    \n
    \n

    Calendar

    \n {this.renderCalendarButtons()}\n {schedules.getIn([activeTab, \"dayError\"]) && (\n

    Please select at least one day

    \n )}\n
    \n
    \n
    \n
    \n

    Time (in UTC)

    \n \n \n :\n \n
    \n {schedules.getIn([activeTab, \"timeError\"]) && (\n

    Please enter the correct time (0-23:0-59)

    \n )}\n
    \n
    \n
    \n \n Scheduled Time\n \n
    \n
    \n
    \n \n
    \n
    \n
    \n )\n }\n}\n\nDayOfMonthForm.propTypes = {\n onSubmit: PropTypes.func.isRequired,\n schedules: PropTypes.instanceOf(List).isRequired,\n notificationEmails: PropTypes.instanceOf(List).isRequired,\n handleEmailAdd: PropTypes.func.isRequired,\n handleEmailDelete: PropTypes.func.isRequired,\n handleFormTypeChange: PropTypes.func.isRequired,\n handleFormClose: PropTypes.func.isRequired,\n handleEntireSchedulesDelete: PropTypes.func\n}\n\nexport default DayOfMonthForm\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport moment from \"moment\"\nimport { List, Map } from \"immutable\"\nimport _includes from \"lodash/includes\"\nimport _get from \"lodash/get\"\nimport _last from \"lodash/last\"\nimport _first from \"lodash/first\"\nimport _map from \"lodash/map\"\nimport _toInteger from \"lodash/toInteger\"\nimport _isNaN from \"lodash/isNaN\"\nimport _inRange from \"lodash/inRange\"\nimport _toString from \"lodash/toString\"\nimport _isInteger from \"lodash/isInteger\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport Select, { components } from \"react-select\"\nimport ReactTooltip from \"react-tooltip\"\n\n// ui components\nimport ToggleSwitch from \"components/UI/elements/ToggleSwitch\"\nimport Button from \"components/UI/elements/Button\"\nimport AddInputbox from \"components/UI/components/AddInputbox/AddInputbox\"\nimport Paper from \"components/UI/elements/Paper\"\nimport CommonHeader from \"./CommonHeader\"\nimport { DropdownIndicator } from \"components/UI/elements/SelectField\"\n\n// helpers\nimport { convertToRomanNum } from \"helpers/romanNumeral.helper\"\nimport { selectStyles } from \"helpers/customSelectStyle.helper\"\n\n// constants\nimport { ADD_INPUTBOX_TYPE, REPEAT, ONCE, SCHEDULE_FORM_TYPE } from \"sharedConstants\"\n\nconst repeatOptions = [\n { value: \"1 Min\", label: \"1\", type: \"Min\" },\n { value: \"2 Min\", label: \"2\", type: \"Min\" },\n { value: \"3 Min\", label: \"3\", type: \"Min\" },\n { value: \"4 Min\", label: \"4\", type: \"Min\" },\n { value: \"5 Min\", label: \"5\", type: \"Min\" },\n { value: \"6 Min\", label: \"6\", type: \"Min\" },\n { value: \"10 Min\", label: \"10\", type: \"Min\" },\n { value: \"12 Min\", label: \"12\", type: \"Min\" },\n { value: \"15 Min\", label: \"15\", type: \"Min\" },\n { value: \"20 Min\", label: \"20\", type: \"Min\" },\n { value: \"30 Min\", label: \"30\", type: \"Min\" },\n { value: \"1 Hour\", label: \"1\", type: \"Hour\" },\n { value: \"2 Hour\", label: \"2\", type: \"Hour\" },\n { value: \"3 Hour\", label: \"3\", type: \"Hour\" },\n { value: \"4 Hour\", label: \"4\", type: \"Hour\" },\n { value: \"6 Hour\", label: \"6\", type: \"Hour\" },\n { value: \"8 Hour\", label: \"8\", type: \"Hour\" },\n { value: \"12 Hour\", label: \"12\", type: \"Hour\" }\n]\n\nconst Option = props => {\n const { data } = props\n return (\n \n
    \n {data.label}\n {data.type}\n
    \n
    \n )\n}\n\nconst SingleValue = props => {\n const { data } = props\n return (\n \n
    \n {data.label}\n {data.type}\n
    \n
    \n )\n}\n\nclass DayOfWeekForm extends PureComponent {\n constructor(props) {\n super(props)\n\n const { schedules } = this.props\n const repeatDefaults = Map({\n unit: \"\",\n value: \"\",\n startingAt: \"\",\n from: \"\",\n to: \"\",\n days: List()\n })\n const onceDefaults = Map({\n activeTab: 0,\n schedules: List([Map({ minutes: \"\", hours: \"\", days: List() })])\n })\n if (schedules.size === 0) {\n this.state = {\n checked: REPEAT,\n repeat: repeatDefaults,\n once: onceDefaults,\n loading: false\n }\n } else {\n const schedule = schedules.first()\n if (_includes(schedule.get(\"day_of_week\"), \"*\")) {\n this.state = {\n checked: REPEAT,\n repeat: repeatDefaults,\n once: onceDefaults,\n loading: false\n }\n } else {\n if (_includes(schedule.get(\"minute\"), \"/\") || _includes(schedule.get(\"hour\"), \"/\")) {\n // TODO here!\n const unit = _includes(schedule.get(\"minute\"), \"/\") ? \"Min\" : \"Hour\"\n let value = \"\"\n let startingAt = \"\"\n let from = \"\"\n let to = \"\"\n if (unit === \"Min\") {\n const parts = schedule.get(\"minute\").split(\"/\")\n value = _last(parts)\n startingAt = _first(_first(parts).split(\"-\"))\n if (schedule.get(\"hour\").includes(\"-\")) {\n //from - to exists\n const parts = schedule.get(\"hour\").split(\"-\")\n from = parts[0]\n if (schedules.size > 1) {\n // crosing the day\n to = schedules.getIn([1, \"hour\"]).split(\"-\")[1]\n } else {\n to = parts[1]\n }\n }\n } else {\n const parts = schedule.get(\"hour\").split(\"/\")\n value = _last(parts)\n if (_first(parts).includes(\"-\")) {\n const hourParts = _first(parts).split(\"-\")\n if (schedules.size > 1) {\n // crosing the day\n from = hourParts[0]\n to = schedules\n .getIn([1, \"hour\"])\n .split(\"/\")[0]\n .split(\"-\")[1]\n } else {\n if (_toInteger(value) > _toInteger(hourParts[0]) && hourParts[1] === \"23\") {\n // Delayed by\n startingAt = hourParts[0]\n } else {\n // from to\n from = hourParts[0]\n to = hourParts[1]\n }\n }\n }\n }\n const days = List(_map(schedule.get(\"day_of_week\").split(\",\"), day => _toInteger(day)))\n this.state = {\n checked: REPEAT,\n repeat: Map({\n unit,\n value: `${value} ${unit}`,\n days,\n startingAt: startingAt !== \"*\" ? startingAt : \"\",\n from,\n to\n }),\n once: onceDefaults,\n loading: false\n }\n } else {\n // once\n const schedulesTransformed = schedules.map(schedule => {\n const minutes = moment({\n minute: _toInteger(schedule.get(\"minute\"))\n }).format(\"mm\")\n const hours = moment.utc({ hour: _toInteger(schedule.get(\"hour\")) }).hours()\n const days = List(_map(schedule.get(\"day_of_week\").split(\",\"), day => _toInteger(day)))\n return Map({ minutes, hours, days })\n })\n this.state = {\n checked: ONCE,\n repeat: repeatDefaults,\n once: Map({\n activeTab: 0,\n schedules: schedulesTransformed\n }),\n loading: false\n }\n }\n }\n }\n }\n\n addSchedule = () => {\n this.setState(prevState => ({\n once: prevState.once.set(\"activeTab\", prevState.once.get(\"schedules\").size).set(\n \"schedules\",\n prevState.once.get(\"schedules\").push(\n Map({\n minutes: \"\",\n hours: \"\",\n days: List()\n })\n )\n )\n }))\n }\n\n deleteSchedule = () => {\n const { once } = this.state\n if (once.get(\"schedules\").size === 1) {\n // erase last schedule, don't delete tab\n this.setState({\n once: Map({\n activeTab: 0,\n schedules: List([Map({ minutes: \"\", hours: \"\", days: List() })])\n })\n })\n } else {\n this.setState(prevState => ({\n once: prevState.once.set(\"activeTab\", 0).set(\n \"schedules\",\n prevState.once\n .get(\"schedules\")\n .filterNot((schedule, sidx) => prevState.once.get(\"activeTab\") === sidx)\n )\n }))\n }\n }\n\n selectActiveSchedule = idx => () => {\n this.setState(prevState => ({\n once: prevState.once.set(\"activeTab\", idx)\n }))\n }\n\n handleRepeatFormSubmit = () => {\n if (!this.state.loading) {\n const { repeat } = this.state\n if (repeat.get(\"days\").size === 0) {\n this.setState(prevState => ({\n repeat: prevState.repeat.set(\"dayError\", \"Please select at least one day\")\n }))\n } else if (!repeat.get(\"value\")) {\n this.setState(prevState => ({\n repeat: prevState.repeat.set(\"timeError\", \"Please select a value\")\n }))\n } else {\n // valid\n this.setState({ loading: true })\n const { onSubmit } = this.props\n onSubmit({\n type: REPEAT,\n schedule: {\n unit: repeat.get(\"unit\"),\n value: _toInteger(repeat.get(\"value\").split(\" \")[0]),\n days: repeat.get(\"days\").toArray(),\n startingAt: repeat.get(\"startingAt\"),\n from: repeat.get(\"from\"),\n to: repeat.get(\"to\")\n }\n }).catch(() => {\n this.setState({ loading: false })\n })\n }\n }\n }\n\n handleRepeatValueInputChange = option => {\n const { repeat } = this.state\n this.setState({\n repeat: repeat\n .set(\"value\", option.value)\n .set(\"unit\", option.type)\n .set(\"timeError\", false)\n .set(\"startingAt\", repeat.get(\"startingAt\") < option.value ? repeat.get(\"startingAt\") : \"\")\n })\n }\n\n handleRepeatFromValueInputChange = evt => {\n const { value } = evt.target\n if (\n value === \"\" ||\n (_isInteger(parseInt(value)) && _toInteger(value) >= 0 && _toInteger(value) < 24)\n ) {\n if (value !== \"00\") {\n this.setState(prevState => ({\n repeat: prevState.repeat.set(\"from\", value)\n }))\n }\n }\n }\n\n handleRepeatToValueInputChange = evt => {\n const { value } = evt.target\n if (\n value === \"\" ||\n (_isInteger(parseInt(value)) && _toInteger(value) >= 0 && _toInteger(value) < 24)\n ) {\n if (value !== \"00\") {\n this.setState(prevState => ({\n repeat: prevState.repeat.set(\"to\", value)\n }))\n }\n }\n }\n\n handleStartingAtValueInputChange = option => {\n const { repeat } = this.state\n this.setState({\n repeat: repeat.set(\"startingAt\", option ? option.value : null)\n })\n }\n\n handleTimeChange = evt => {\n const { value, name } = evt.target\n\n this.setState(prevState => ({\n once: prevState.once.set(\n \"schedules\",\n prevState.once.get(\"schedules\").map((schedule, sidx) => {\n if (sidx === prevState.once.get(\"activeTab\")) {\n return schedule.set(name, value).set(\"timeError\", false)\n }\n return schedule\n })\n )\n }))\n }\n\n isScheduleTimeValid = schedule => {\n if (\n _isNaN(schedule.get(\"minutes\")) ||\n _isNaN(schedule.get(\"hours\")) ||\n !_inRange(schedule.get(\"hours\"), 0, 24) ||\n !_inRange(schedule.get(\"minutes\"), 0, 60)\n ) {\n return false\n }\n return true\n }\n\n handleOnceFormSubmit = () => {\n if (!this.state.loading) {\n const { once } = this.state\n\n let valid = true\n const schedulesCheck = once.get(\"schedules\").map(schedule => {\n if (schedule.get(\"days\").size === 0) {\n valid = false\n if (!this.isScheduleTimeValid(schedule)) {\n return schedule.set(\"dayError\", \"Please select at least one day\").set(\"timeError\", true)\n }\n return schedule.set(\"dayError\", \"Please select at least one day\")\n } else {\n if (!this.isScheduleTimeValid(schedule)) {\n valid = false\n return schedule.set(\"timeError\", true)\n }\n }\n return schedule\n })\n\n if (valid) {\n // submit\n this.setState({ loading: true })\n const schedulesUtc = once.get(\"schedules\").map(schedule => ({\n minutes: _toInteger(schedule.get(\"minutes\")),\n hours: moment.utc({ hour: _toInteger(schedule.get(\"hours\")) }).hours(),\n days: schedule.get(\"days\").toArray()\n }))\n\n this.props.onSubmit({ type: ONCE, schedules: schedulesUtc.toArray() }).catch(() => {\n this.setState({ loading: false })\n })\n } else {\n this.setState(prevState => ({\n once: prevState.once.set(\"schedules\", schedulesCheck)\n }))\n }\n }\n }\n\n dayOfWeekActive = dayNumber => {\n if (this.state.checked === REPEAT) {\n return this.state.repeat.get(\"days\").includes(dayNumber)\n } else {\n const { once } = this.state\n const schedule = once.getIn([\"schedules\", once.get(\"activeTab\")])\n\n return schedule.get(\"days\").includes(dayNumber)\n }\n }\n\n unsetDayOfWeek = dayNumber => {\n if (this.state.checked === REPEAT) {\n this.setState(prevState => ({\n repeat: prevState.repeat.set(\n \"days\",\n prevState.repeat.get(\"days\").filterNot(day => day === dayNumber)\n )\n }))\n } else {\n this.setState(prevState => ({\n once: prevState.once.set(\n \"schedules\",\n prevState.once.get(\"schedules\").map((schedule, sidx) => {\n if (sidx === prevState.once.get(\"activeTab\")) {\n return schedule.set(\n \"days\",\n schedule.get(\"days\").filterNot(day => day === dayNumber)\n )\n }\n return schedule\n })\n )\n }))\n }\n }\n\n setDayOfWeek = dayNumber => {\n if (this.state.checked === REPEAT) {\n this.setState(prevState => ({\n repeat: prevState.repeat\n .set(\"dayError\", false)\n .set(\"days\", prevState.repeat.get(\"days\").push(dayNumber))\n }))\n } else {\n this.setState(prevState => ({\n once: prevState.once.set(\n \"schedules\",\n prevState.once.get(\"schedules\").map((schedule, sidx) => {\n if (sidx === prevState.once.get(\"activeTab\")) {\n return schedule\n .set(\"dayError\", false)\n .set(\"days\", schedule.get(\"days\").push(dayNumber))\n }\n return schedule\n })\n )\n }))\n }\n }\n\n toggleDayOfWeek = dayNumber => {\n if (this.state.checked === REPEAT) {\n if (this.state.repeat.get(\"days\").includes(dayNumber)) {\n this.unsetDayOfWeek(dayNumber)\n } else {\n this.setDayOfWeek(dayNumber)\n }\n } else {\n const schedule = this.state.once.getIn([\"schedules\", this.state.once.get(\"activeTab\")])\n if (schedule.get(\"days\").includes(dayNumber)) {\n this.unsetDayOfWeek(dayNumber)\n } else {\n this.setDayOfWeek(dayNumber)\n }\n }\n }\n\n toggleDayOfWeekFormType = evt => {\n this.setState({\n checked: evt.target.value\n })\n }\n\n render() {\n const {\n notificationEmails,\n handleEmailAdd,\n handleEmailDelete,\n handleFormTypeChange,\n handleFormClose,\n handleEntireSchedulesDelete\n } = this.props\n const { checked, repeat, once, loading } = this.state\n\n let startingAtDisabled = true\n let startingAtOptions = []\n if (checked === REPEAT) {\n const selectedValue = repeat.get(\"value\") ? _toInteger(repeat.get(\"value\").split(\" \")[0]) : 0\n startingAtDisabled = selectedValue < 2\n const length = repeat.get(\"unit\") === \"Min\" ? 29 : 11\n startingAtOptions = Array.from({ length: length }, (v, k) => ({\n value: k + 1,\n label: `${k + 1}`,\n type: repeat.get(\"unit\")\n })).filter(obj => obj.value < selectedValue)\n }\n\n let fromToDisabled = false\n let startingAtDisabledDueToFromToFilled = false\n if (repeat.get(\"value\").endsWith(\"Hour\")) {\n if (repeat.get(\"startingAt\")) {\n fromToDisabled = true\n } else if (repeat.get(\"from\") || repeat.get(\"to\")) {\n startingAtDisabled = true\n startingAtDisabledDueToFromToFilled = true\n }\n }\n return (\n
    \n \n \n
    \n {checked === ONCE && (\n
    \n {once.get(\"schedules\").map((schedule, idx) => {\n let color = \"grey\"\n if (once.get(\"activeTab\") === idx) {\n color = \"primary\"\n }\n if (schedule.get(\"dayError\") || schedule.get(\"timeError\")) {\n color = \"red\"\n }\n return (\n \n Time {convertToRomanNum(idx + 1)}\n \n )\n })}\n {once.get(\"schedules\").size < 8 && (\n \n + ADD TIME\n \n )}\n
    \n )}\n \n
    \n
    \n \n

    Days

    \n this.toggleDayOfWeek(1)}\n color={this.dayOfWeekActive(1) ? \"primary inner-shadow border\" : \"white\"}\n size=\"big\"\n >\n Mon\n \n this.toggleDayOfWeek(2)}\n color={this.dayOfWeekActive(2) ? \"primary inner-shadow border\" : \"white\"}\n size=\"big\"\n >\n Tue\n \n this.toggleDayOfWeek(3)}\n color={this.dayOfWeekActive(3) ? \"primary inner-shadow border\" : \"white\"}\n size=\"big\"\n >\n Wed\n \n this.toggleDayOfWeek(4)}\n color={this.dayOfWeekActive(4) ? \"primary inner-shadow border\" : \"white\"}\n size=\"big\"\n >\n Thu\n \n this.toggleDayOfWeek(5)}\n color={this.dayOfWeekActive(5) ? \"primary inner-shadow border\" : \"white\"}\n size=\"big\"\n >\n Fri\n \n this.toggleDayOfWeek(6)}\n color={this.dayOfWeekActive(6) ? \"primary inner-shadow border\" : \"white\"}\n size=\"big\"\n >\n Sat\n \n this.toggleDayOfWeek(7)}\n color={this.dayOfWeekActive(7) ? \"primary inner-shadow border\" : \"white\"}\n size=\"big\"\n >\n Sun\n \n {checked === REPEAT && repeat.get(\"dayError\") && (\n

    {repeat.get(\"dayError\")}

    \n )}\n {checked === ONCE && once.getIn([\"schedules\", once.get(\"activeTab\"), \"dayError\"]) && (\n

    \n {once.getIn([\"schedules\", once.get(\"activeTab\"), \"dayError\"])}\n

    \n )}\n
    \n
    \n {checked === REPEAT && (\n
    \n

    Repeat every

    \n
    \n \n \n \n
    \n \n \n
    \n {fromToDisabled && (\n \n For hours set either \"From-To\" or \"Delayed by\".\n \n )}\n
    \n \n \n
    \n {fromToDisabled && (\n \n For hours set either \"From-To\" or \"Delayed by\".\n \n )}\n \n

    Delayed by

    \n \n
    \n {startingAtDisabled && (\n \n {!repeat.get(\"unit\") && (\n Set \"Repeat every\" first.\n )}\n {repeat.get(\"unit\") === \"Min\" && (\n \n You can not set \"Delayed by\" for \"Repeat every\" that equals 1 min.\n \n )}\n {repeat.get(\"unit\") === \"Hour\" && !startingAtDisabledDueToFromToFilled && (\n \n You can not set \"Delayed by\" for \"Repeat every\" that equals 1 hour.\n \n )}\n {repeat.get(\"unit\") === \"Hour\" && startingAtDisabledDueToFromToFilled && (\n \n For hours set either \"From-To\" or \"Delayed by\".\n \n )}\n \n )}\n
    \n {repeat.get(\"timeError\") && (\n

    {repeat.get(\"timeError\")}

    \n )}\n
    \n )}\n {checked === ONCE && (\n
    \n
    \n

    Time (in UTC)

    \n \n \n :\n \n
    \n {once.getIn([\"schedules\", once.get(\"activeTab\"), \"timeError\"]) && (\n

    Please enter the correct time (0-23:00-59)

    \n )}\n
    \n
    \n )}\n {checked === ONCE && (\n
    \n \n Scheduled\n Time\n \n
    \n )}\n \n
    \n \n
    \n \n \n )\n }\n}\n\nDayOfWeekForm.propTypes = {\n onSubmit: PropTypes.func.isRequired,\n schedules: PropTypes.instanceOf(List).isRequired,\n notificationEmails: PropTypes.instanceOf(List).isRequired,\n handleEmailAdd: PropTypes.func.isRequired,\n handleEmailDelete: PropTypes.func.isRequired,\n handleFormTypeChange: PropTypes.func.isRequired,\n handleFormClose: PropTypes.func.isRequired,\n handleEntireSchedulesDelete: PropTypes.func\n}\n\nexport default DayOfWeekForm\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport _each from \"lodash/each\"\nimport _join from \"lodash/join\"\nimport _sortBy from \"lodash/sortBy\"\nimport _get from \"lodash/get\"\nimport _toInteger from \"lodash/toInteger\"\nimport { List, Record } from \"immutable\"\n\n// actions\nimport { showToast } from \"actions/toast.action\"\n\n// ui components\nimport DayOfMonthForm from \"./SubForms/DayOfMonthForm\"\nimport DayOfWeekForm from \"./SubForms/DayOfWeekForm\"\n\n// constants\nimport { REPEAT, ONCE, SCHEDULE_FORM_TYPE, TOAST } from \"sharedConstants\"\n\nclass SetScheduleForm extends PureComponent {\n constructor(props) {\n super(props)\n\n this.state = {\n // default initial type\n type: SCHEDULE_FORM_TYPE.DAY_OF_WEEK,\n notificationEmails: this.props.notificationEmails\n }\n }\n\n componentDidMount() {\n const { schedules } = this.props\n if (schedules.size) {\n const schedule = schedules.first()\n\n if (schedule.get(\"day\") !== \"*\") {\n this.setState({\n type: SCHEDULE_FORM_TYPE.DAY_OF_MONTH\n })\n } else {\n // day of week\n this.setState({\n type: SCHEDULE_FORM_TYPE.DAY_OF_WEEK\n })\n }\n }\n }\n\n selectFormVariant = type => () => {\n if (this.state.type === type) {\n return\n }\n this.setState({\n type\n })\n }\n\n submitForm = async data => {\n const { modifyEntity, entity, onCloseAction, showToast } = this.props\n const { type, notificationEmails } = this.state\n if (\n type === SCHEDULE_FORM_TYPE.DAY_OF_MONTH ||\n (type === SCHEDULE_FORM_TYPE.DAY_OF_WEEK && data.type === ONCE)\n ) {\n let schedules = []\n if (data.type === ONCE) {\n _each(data.schedules, schedule => {\n schedules.push({\n minute: schedule.minutes,\n hour: schedule.hours,\n day: \"*\",\n month: \"*\",\n day_of_week: _join(_sortBy(schedule.days), \",\")\n })\n })\n } else {\n _each(data.schedules, schedule => {\n schedules.push({\n minute: schedule.minutes,\n hour: schedule.hours,\n day: _join(_sortBy(schedule.days), \",\"),\n month: \"*\",\n day_of_week: \"*\"\n })\n })\n }\n\n const settings = entity.settings\n .merge({\n schedules,\n notification_emails: notificationEmails\n })\n .toJS()\n\n await modifyEntity(entity.id, { settings }, { settings: entity.settings.toJS() })\n .then(() => {\n showToast(\"Schedule has been set.\", TOAST.TYPE.SUCCESS)\n onCloseAction()\n })\n .catch(err => {\n if (_get(err, \"type\") === \"nothing_changed\") {\n onCloseAction()\n }\n })\n } else if (type === SCHEDULE_FORM_TYPE.DAY_OF_WEEK) {\n if (data.type === REPEAT) {\n let schedules = []\n let fromToVariant = null\n if (data.schedule.from && data.schedule.to) {\n if (data.schedule.from !== data.schedule.to) {\n if (_toInteger(data.schedule.from) > _toInteger(data.schedule.to)) {\n fromToVariant = \"crossing\"\n } else {\n fromToVariant = \"regular\"\n }\n }\n }\n switch (data.schedule.unit) {\n case \"Min\":\n if (fromToVariant === \"crossing\") {\n const hours = [`${data.schedule.from}-23`, `0-${data.schedule.to}`]\n schedules = hours.map(hour => ({\n minute: `${data.schedule.startingAt ? `${data.schedule.startingAt}-59` : \"*\"}/${\n data.schedule.value\n }`,\n hour,\n day: \"*\",\n month: \"*\",\n day_of_week: _join(_sortBy(data.schedule.days), \",\")\n }))\n } else {\n let hour = \"*\"\n if (fromToVariant === \"regular\") {\n hour = `${data.schedule.from}-${data.schedule.to}`\n }\n schedules.push({\n minute: `${data.schedule.startingAt ? `${data.schedule.startingAt}-59` : \"*\"}/${\n data.schedule.value\n }`,\n hour,\n day: \"*\",\n month: \"*\",\n day_of_week: _join(_sortBy(data.schedule.days), \",\")\n })\n }\n break\n case \"Hour\":\n if (fromToVariant === \"crossing\") {\n let overDay = _toInteger(data.schedule.from)\n while (overDay < 24) {\n overDay += _toInteger(data.schedule.value)\n }\n const endScheduleFrom = overDay - 24\n const hours = [`${data.schedule.from}-23`]\n if (endScheduleFrom < _toInteger(data.schedule.to)) {\n hours.push(`${endScheduleFrom}-${data.schedule.to}`)\n } else if (endScheduleFrom === _toInteger(data.schedule.to)) {\n hours.push(`${endScheduleFrom}`)\n }\n schedules = hours.map(hour => ({\n minute: \"0\",\n hour: `${hour}/${data.schedule.value}`,\n day: \"*\",\n month: \"*\",\n day_of_week: _join(_sortBy(data.schedule.days), \",\")\n }))\n } else if (fromToVariant === \"regular\") {\n schedules.push({\n minute: \"0\",\n hour: `${data.schedule.from}-${data.schedule.to}/${data.schedule.value}`,\n day: \"*\",\n month: \"*\",\n day_of_week: _join(_sortBy(data.schedule.days), \",\")\n })\n } else {\n schedules.push({\n minute: \"0\",\n hour: `${data.schedule.startingAt ? `${data.schedule.startingAt}-23` : \"*\"}/${\n data.schedule.value\n }`,\n day: \"*\",\n month: \"*\",\n day_of_week: _join(_sortBy(data.schedule.days), \",\")\n })\n }\n break\n default:\n // this should never happen\n break\n }\n const settings = entity.settings\n .merge({\n schedules,\n notification_emails: notificationEmails\n })\n .toJS()\n\n await modifyEntity(entity.id, { settings }, { settings: entity.settings.toJS() })\n .then(() => {\n showToast(\"Schedule has been set.\", TOAST.TYPE.SUCCESS)\n onCloseAction()\n })\n .catch(err => {\n if (_get(err, \"type\") === \"nothing_changed\") {\n onCloseAction()\n }\n })\n }\n }\n }\n\n addNotificationEmail = email => {\n const { notificationEmails } = this.state\n if (notificationEmails.includes(email)) {\n return { error: \"Email already added\" }\n } else {\n this.setState({\n notificationEmails: notificationEmails.push(email)\n })\n return { value: email }\n }\n }\n\n deleteNotificationEmail = email => {\n this.setState(prevState => ({\n notificationEmails: prevState.notificationEmails.filterNot(\n notificationEmail => notificationEmail === email\n )\n }))\n }\n\n render() {\n const { onCloseAction, schedules, deleteEntireSchedulesFunc } = this.props\n const { type, notificationEmails } = this.state\n\n return (\n
    \n {type === SCHEDULE_FORM_TYPE.DAY_OF_MONTH && (\n
    \n \n
    \n )}\n {type === SCHEDULE_FORM_TYPE.DAY_OF_WEEK && (\n
    \n \n
    \n )}\n
    \n )\n }\n}\n\nSetScheduleForm.propTypes = {\n entity: PropTypes.instanceOf(Record).isRequired,\n onCloseAction: PropTypes.func.isRequired,\n schedules: PropTypes.instanceOf(List).isRequired,\n notificationEmails: PropTypes.instanceOf(List).isRequired,\n modifyEntity: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired,\n deleteEntireSchedulesFunc: PropTypes.func\n}\n\nexport default connect(null, { showToast })(SetScheduleForm)\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport moment from \"moment\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport _noop from \"lodash/noop\"\nimport { List, Map } from \"immutable\"\nimport ReactTooltip from \"react-tooltip\"\n\n// ui components\nimport SetScheduleForm from \"./SetScheduleForm\"\nimport Paper from \"components/UI/elements/Paper\"\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Button from \"components/UI/elements/Button\"\nimport ConfirmModal from \"components/UI/components/ConfirmModal\"\n\n// constants, helpers\nimport { MODAL, TOAST, MOMENT } from \"sharedConstants\"\nimport {\n generateSchedulesReadableObject,\n getSetSchedulesDescription,\n computeNextSchedulesDates\n} from \"helpers/schedules.helper\"\n\nimport \"./SetScheduleCard.css\"\n\nclass SetScheduleCard extends PureComponent {\n constructor(props) {\n super(props)\n\n this.state = {\n deleteDialog: Map({\n open: false,\n isLoading: false\n }),\n nextSchedulesDates: List(),\n nextSchedulesCheckInterval: null,\n schedulesReadable: List()\n }\n }\n\n checkAndUpdateNextSchedulesDates = () => {\n const { entity } = this.props\n const { nextSchedulesDates } = this.state\n if (nextSchedulesDates.size) {\n const dateNow = moment.utc()\n if (dateNow > nextSchedulesDates.first()) {\n // re-compute next schedules because the first one is old\n const schedules = entity.getIn([\"settings\", \"schedules\"])\n const nextSchedulesDates = computeNextSchedulesDates(schedules)\n this.setState({\n nextSchedulesDates\n })\n }\n }\n }\n\n generateSchedulesReadableObject = () => {\n const schedules = this.props.entity.getIn([\"settings\", \"schedules\"])\n const schedulesReadable = generateSchedulesReadableObject(schedules)\n this.setState({\n schedulesReadable\n })\n }\n\n toggleDeleteDialog = () => {\n this.setState(prevState => ({\n deleteDialog: prevState.deleteDialog\n .set(\"open\", !prevState.deleteDialog.get(\"open\"))\n .set(\"isLoading\", false)\n }))\n }\n\n deleteSchedule = () => {\n if (!this.state.deleteDialog.get(\"isLoading\")) {\n const { entity, modifyEntity, showToast } = this.props\n const settings = entity.settings\n .delete(\"schedules\")\n .delete(\"notification_emails\")\n .toJS()\n\n this.setState(prevState => ({\n deleteDialog: prevState.deleteDialog.set(\"isLoading\", true)\n }))\n modifyEntity(entity.id, { settings }, { settings: entity.settings.toJS() })\n .then(() => {\n showToast(\"Schedule has been deleted.\", TOAST.TYPE.SUCCESS)\n this.toggleDeleteDialog()\n this.disabledScheduleForm()\n })\n .catch(() => {\n this.setState(prevState => ({\n deleteDialog: prevState.deleteDialog.set(\"isLoading\", true)\n }))\n })\n }\n }\n\n componentDidMount() {\n this.generateSchedulesReadableObject()\n\n const schedules = this.props.entity.getIn([\"settings\", \"schedules\"])\n if (List.isList(schedules) && schedules.size) {\n const nextSchedulesDates = computeNextSchedulesDates(schedules)\n const nextSchedulesCheckInterval = setInterval(this.checkAndUpdateNextSchedulesDates, 60000)\n this.setState({\n nextSchedulesDates,\n nextSchedulesCheckInterval\n })\n }\n }\n\n componentDidUpdate(prevProps) {\n const schedules = this.props.entity.getIn([\"settings\", \"schedules\"])\n const prevSchedules = prevProps.entity.getIn([\"settings\", \"schedules\"])\n if (schedules !== prevSchedules) {\n clearInterval(this.state.nextSchedulesCheckInterval)\n let nextSchedulesDates = List()\n let nextSchedulesCheckInterval = null\n if (List.isList(schedules) && schedules.size) {\n nextSchedulesDates = computeNextSchedulesDates(schedules)\n nextSchedulesCheckInterval = setInterval(this.checkAndUpdateNextSchedulesDates, 60000)\n }\n this.setState({\n nextSchedulesDates,\n nextSchedulesCheckInterval\n })\n }\n }\n\n componentWillUnmount() {\n clearInterval(this.state.nextSchedulesCheckInterval)\n }\n\n enabledScheduleForm = () => {\n const { editMode, toggleEditMode } = this.props\n if (!editMode) {\n toggleEditMode()()\n }\n }\n\n disabledScheduleForm = () => {\n const { editMode, toggleEditMode } = this.props\n this.generateSchedulesReadableObject()\n if (editMode) {\n toggleEditMode()()\n }\n }\n\n renderReadableSchedules = () => {\n const { schedulesReadable } = this.state\n return getSetSchedulesDescription(schedulesReadable)\n }\n\n render() {\n const {\n entity,\n isEditable,\n editMode,\n readyToEdit,\n modifyEntity,\n currentlyEditing = \"\"\n } = this.props\n const { schedulesReadable, nextSchedulesDates, deleteDialog } = this.state\n const schedules = entity.getIn([\"settings\", \"schedules\"], List())\n const notificationEmails = entity.getIn([\"settings\", \"notification_emails\"], List())\n\n const deleteModal = (\n \n )\n\n if (editMode) {\n return (\n \n 0 ? this.toggleDeleteDialog : null}\n />\n {deleteModal}\n \n )\n } else {\n return (\n
    \n \n

    Schedules

    \n
    \n {schedulesReadable.size === 0 && (\n \n Create schedule\n \n )}\n {schedulesReadable.size > 0 && (\n
    \n \n Delete\n \n \n Edit\n \n
    \n )}\n
    \n
    \n {schedulesReadable.size > 0 && (\n \n
    \n

    Set schedules (in UTC)

    \n

    {this.renderReadableSchedules()}

    \n
    \n {nextSchedulesDates.size > 0 && (\n \n \n \n \n \n \n {notificationEmails.size > 0 && (\n \n \n \n \n )}\n \n
    Next schedules (local time)\n
    \n {nextSchedulesDates.map((momentObject, idx) => (\n
    \n {momentObject.local().format(MOMENT.DATE_TIME_FORMAT)}\n
    \n ))}\n
    \n \n Schedules in UTC:\n {nextSchedulesDates.map((momentObject, idx) => (\n
    \n {momentObject.utc().format(MOMENT.DATE_TIME_FORMAT)}\n
    \n ))}\n
    \n
    Notify errors\n {notificationEmails.map((email, idx) => {\n if (idx === 0) {\n return email\n } else {\n return `, ${email}`\n }\n })}\n
    \n )}\n
    \n )}\n {deleteModal}\n
    \n )\n }\n }\n}\n\nSetScheduleCard.defaultProps = {\n readyToEdit: true\n}\n\nSetScheduleCard.propTypes = {\n entity: PropTypes.object.isRequired,\n modifyEntity: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired,\n isEditable: PropTypes.bool.isRequired,\n currentlyEditing: PropTypes.string,\n toggleEditMode: PropTypes.func.isRequired,\n editMode: PropTypes.bool.isRequired,\n readyToEdit: PropTypes.bool\n}\n\nexport default SetScheduleCard\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Record, List, Map } from \"immutable\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport _trim from \"lodash/trim\"\nimport _forEach from \"lodash/forEach\"\nimport _isEmpty from \"lodash/isEmpty\"\nimport _toLower from \"lodash/toLower\"\nimport _noop from \"lodash/noop\"\nimport _get from \"lodash/get\"\nimport _startsWith from \"lodash/startsWith\"\nimport ReactTooltip from \"react-tooltip\"\nimport AceEditor from \"react-ace\"\n\n// UI components\nimport Button from \"components/UI/elements/Button\"\nimport IconButton from \"components/UI/elements/IconButton\"\nimport Paper from \"components/UI/elements/Paper\"\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport ToggleSwitch from \"components/UI/elements/ToggleSwitch\"\nimport ConfirmModal from \"components/UI/components/ConfirmModal\"\n\n// constants, helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { isJSONObject } from \"helpers/validators.helper\"\nimport { TOAST, MODAL } from \"sharedConstants\"\n\nimport \"./VariablesCard.css\"\n\nconst VALUE_TYPE = \"value\"\nconst KEY_TYPE = \"key\"\n\nclass VariablesCard extends PureComponent {\n constructor(props) {\n super(props)\n\n this.state = {\n form: List(),\n loading: false,\n formType: \"form\",\n variablesJsonString: \"\",\n deleteModal: Map({\n open: false,\n rowIndex: null\n })\n }\n }\n\n enableVariablesForm = () => {\n const {\n toggleEditMode,\n workspace: { variables }\n } = this.props\n\n if (Map.isMap(variables) && variables.size > 0) {\n this.setState(\n {\n form: variables\n .sortBy((value, key) =>\n _toLower(key.startsWith(\"#\") ? key.substring(1, key.length) : key)\n )\n .map((value, key) => Map({ key, value }))\n .toList(),\n loading: false,\n formType: \"form\"\n },\n () => {\n toggleEditMode()()\n }\n )\n } else {\n this.setState(\n {\n form: List([Map({ key: \"\", value: \"\" })]),\n loading: false,\n formType: \"form\"\n },\n () => {\n toggleEditMode()()\n }\n )\n }\n }\n\n renderVariablesMessage = () => {\n const { variables } = this.props.workspace\n\n if (Map.isMap(variables)) {\n switch (variables.size) {\n case 0:\n return \"You have no variables\"\n case 1:\n return \"You have 1 variable\"\n default:\n return `You have ${variables.size} variables`\n }\n }\n return \"You have no variables\"\n }\n\n addVariablesRow = () => {\n this.setState(prevState => ({\n form: prevState.form.push(Map({ key: \"\", value: \"\" }))\n }))\n }\n\n removeVariablesRowModalOpen = index => () => {\n if (this.state.form.getIn([index, \"key\"])) {\n this.setState(prevState => ({\n deleteModal: prevState.deleteModal.set(\"open\", true).set(\"rowIndex\", index)\n }))\n } else {\n this.removeVariablesRow(index)()\n }\n }\n\n removeVariablesRowModalClose = () => {\n this.setState(prevState => ({\n deleteModal: prevState.deleteModal.set(\"open\", false)\n }))\n }\n\n removeVariablesRow = rowIndex => () => {\n this.setState(prevState => ({\n form: prevState.form.delete(rowIndex),\n deleteModal: prevState.deleteModal.set(\"open\", false)\n }))\n }\n\n handleVariablesRowChange = (index, type) => evt => {\n const form = this.state.form\n .setIn([index, type], evt.target.value)\n .setIn([index, \"error\"], false)\n\n this.setState({ form })\n }\n\n saveVariables = () => {\n if (!this.state.loading) {\n const { onSubmit, toggleEditMode, workspace } = this.props\n const { form, formType, variablesJsonString } = this.state\n\n if (formType === \"form\") {\n let valid = true\n const formCheck = form.map(row => {\n if (_trim(row.get(\"key\")).length === 0) {\n valid = false\n return row.set(\"error\", true)\n }\n return row\n })\n\n if (valid) {\n const variables = form.reduce((returnObj, row) => {\n returnObj[row.get(\"key\")] = row.get(\"value\")\n return returnObj\n }, {})\n\n this.setState({ loading: true })\n onSubmit(\n { variables },\n {\n variables: Map.isMap(workspace.variables)\n ? workspace.variables.toJS()\n : workspace.variables\n },\n \"Workspace variables have been modified\"\n )\n .then(toggleEditMode())\n .catch(err => {\n if (_get(err, \"type\") === \"nothing_changed\") {\n toggleEditMode()()\n } else {\n this.setState({\n loading: false\n })\n }\n })\n } else {\n this.setState({\n form: formCheck\n })\n }\n } else if (formType === \"json\") {\n if (this.isVariablesJsonStringValid()) {\n this.setState({ loading: true })\n const variables = variablesJsonString.length ? JSON.parse(variablesJsonString) : {}\n onSubmit(\n { variables },\n {\n variables: Map.isMap(workspace.variables)\n ? workspace.variables.toJS()\n : workspace.variables\n },\n \"Workspace variables have been modified\"\n )\n .then(toggleEditMode())\n .catch(err => {\n if (_get(err, \"type\") === \"nothing_changed\") {\n toggleEditMode()()\n } else {\n this.setState({\n loading: false\n })\n }\n })\n } else {\n this.setState({\n jsonError: true\n })\n }\n }\n }\n }\n\n renderVariablesSummary = () => {\n const { variables } = this.props.workspace\n\n if (Map.isMap(variables)) {\n if (variables.size > 0) {\n return (\n \n \n \n \n \n \n \n \n \n {variables\n .sortBy((value, key) =>\n _toLower(key.startsWith(\"#\") ? key.substring(1, key.length) : key)\n )\n .map((value, key) => {\n const longValue = value.length > 40\n const longKey = key.length > 40\n return (\n \n \n \n \n )\n })\n .toArray()}\n \n
    KeyValue
    \n {longKey ? (\n
    \n \n {shortenString(key, 40)}\n \n \n {key}\n \n
    \n ) : (\n key\n )}\n
    \n {longValue ? (\n
    \n \n {shortenString(value, 40)}\n this.copyVariableToClipboard(value)}\n >\n \n \n \n \n {value}\n \n
    \n ) : (\n \n {value}\n this.copyVariableToClipboard(value)}\n >\n \n \n \n )}\n
    \n
    \n )\n }\n }\n\n return null\n }\n\n renderVariablesForm = () => {\n const { form, deleteModal } = this.state\n const { isEditable } = this.props\n\n if (form.size) {\n return (\n \n
    \n
    \n

    Keys *

    \n

    Values

    \n
    \n {form.map((row, index) => (\n \n \n \n \n \n \n {row.get(\"error\") &&

    Fill at least 'key' input

    }\n \n ))}\n \n + Add more\n \n \n \n
    \n )\n } else {\n return (\n \n \n + Add more\n \n \n )\n }\n }\n\n renderCodeEditor = () => {\n const { variablesJsonString, jsonError } = this.state\n return (\n \n
    \n {\n this.setState({ variablesJsonString: newValue, jsonError: false })\n }}\n name=\"json_settings\"\n value={variablesJsonString}\n editorProps={{ $blockScrolling: true }}\n setOptions={{ maxLines: 50 }}\n width=\"100%\"\n wrapEnabled={true}\n />\n
    \n {jsonError && (\n

    Must be a JSON object with key:value (string) pairs.

    \n )}\n
    \n )\n }\n\n isVariablesJsonStringValid = () => {\n const { variablesJsonString } = this.state\n if (isJSONObject(variablesJsonString)) {\n const variables = JSON.parse(variablesJsonString)\n let valid = true\n _forEach(variables, (value, key) => {\n // check if object has some complex values\n if (typeof value !== \"string\" || key.length === 0) {\n valid = false\n }\n })\n return valid\n } else if (variablesJsonString.length > 0) {\n return false\n }\n return true\n }\n\n toggleFormType = () => {\n const { formType, variablesJsonString, form } = this.state\n\n if (formType === \"form\") {\n const formToVariables = {}\n if (List.isList(form)) {\n form.forEach(value => {\n if (value.get(\"key\")) {\n formToVariables[value.get(\"key\")] = value.get(\"value\")\n }\n })\n }\n this.setState({\n formType: \"json\",\n variablesJsonString: _isEmpty(formToVariables)\n ? \"{}\"\n : JSON.stringify(formToVariables, null, 2)\n })\n } else {\n if (this.isVariablesJsonStringValid()) {\n this.setState({\n formType: \"form\",\n form:\n variablesJsonString.length !== 0\n ? Map(JSON.parse(variablesJsonString))\n .map((value, key) => Map({ key, value }))\n .toList()\n : List([Map({ key: \"\", value: \"\" })])\n })\n } else {\n this.setState({\n jsonError: true\n })\n }\n }\n }\n\n copyVariablesJsonToClipboard = () => {\n if (!this.state.editMode) {\n const {\n showToastMessage,\n workspace: { variables }\n } = this.props\n const dummy = document.createElement(\"textarea\")\n document.body.appendChild(dummy)\n dummy.value = JSON.stringify(variables.toJS(), null, 2)\n dummy.select()\n document.execCommand(\"copy\")\n document.body.removeChild(dummy)\n showToastMessage(\"Variables JSON setting has been copied to clipboard\", TOAST.TYPE.SUCCESS)\n }\n }\n\n copyVariableToClipboard = variable => {\n if (!this.state.editMode) {\n const { showToastMessage } = this.props\n const dummy = document.createElement(\"input\")\n document.body.appendChild(dummy)\n dummy.value = variable\n dummy.select()\n document.execCommand(\"copy\")\n document.body.removeChild(dummy)\n showToastMessage(\"Variable has been copied to clipboard\", TOAST.TYPE.SUCCESS)\n }\n }\n\n render() {\n const { loading, formType } = this.state\n const {\n isEditable,\n editMode,\n toggleEditMode,\n readyToEdit,\n currentlyEditing = \"\",\n workspace: { variables }\n } = this.props\n\n const cardView = editMode ? \"expanded\" : \"default\"\n return (\n
    \n \n
    \n

    Variables

    \n {Map.isMap(variables) && variables.size > 0 && (\n \n \n \n )}\n
    \n
    \n {cardView === \"default\" && (\n \n

    {this.renderVariablesMessage()}

    \n
    \n \n Manage variables\n \n \n )}\n {cardView === \"expanded\" && (\n \n \n
    \n \n \n Save\n \n \n )}\n
    \n \n {cardView === \"expanded\" && formType === \"form\" && this.renderVariablesForm()}\n {cardView === \"expanded\" && formType === \"json\" && this.renderCodeEditor()}\n {cardView === \"default\" && this.renderVariablesSummary()}\n
    \n )\n }\n}\n\nVariablesCard.defaultProps = {\n readyToEdit: true\n}\n\nVariablesCard.propTypes = {\n workspace: PropTypes.instanceOf(Record).isRequired,\n isEditable: PropTypes.bool.isRequired,\n currentlyEditing: PropTypes.string,\n toggleEditMode: PropTypes.func.isRequired,\n editMode: PropTypes.bool.isRequired,\n onSubmit: PropTypes.func.isRequired,\n showToastMessage: PropTypes.func.isRequired,\n readyToEdit: PropTypes.bool\n}\n\nexport default VariablesCard\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Map, List } from \"immutable\"\nimport { Link, withRouter } from \"react-router-dom\"\n\n// ui components\nimport Paper from \"components/UI/elements/Paper\"\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport StatusElement from \"components/UI/elements/StatusElement\"\nimport DateTimeWithTooltip from \"components/UI/elements/DateTimeWithTooltip\"\n\n// helpers\nimport { getRoutePath } from \"routes\"\nimport Username from \"helpers/Username.helper\"\n\nimport \"./EntityJobsCard.css\"\nimport { capitalize } from \"helpers/string.helper\"\n\nclass EntityJobsCard extends PureComponent {\n render() {\n const {\n entityName,\n jobs,\n className,\n hideViewAll,\n match: {\n params: { id: entityId }\n }\n } = this.props\n\n let allPathname\n if (entityName === \"dawg\") {\n allPathname = \"dawg.dawgJob.list\"\n } else {\n allPathname = \"workspace.workspaceJob.list\"\n }\n return (\n \n \n

    {capitalize(entityName)} activity

    \n {!hideViewAll && (\n \n View all\n \n )}\n \n {List.isList(jobs) && jobs.size > 0 && (\n \n {jobs.map(job => {\n let pathname, params\n if (entityName === \"dawg\") {\n pathname = \"dawg.dawgJob.show\"\n params = { id: entityId, aid: job.id }\n } else {\n pathname = \"workspace.workspaceJob.show\"\n params = { id: entityId, aid: job.id }\n }\n return (\n \n
    \n
    \n

    \n \n

    \n
    \n \n
    \n
    \n \n
    \n \n )\n })}\n
    \n )}\n
    \n )\n }\n}\n\nEntityJobsCard.propTypes = {\n entityName: PropTypes.string.isRequired,\n jobs: PropTypes.instanceOf(List),\n className: PropTypes.string,\n hideViewAll: PropTypes.bool\n}\n\nexport default withRouter(EntityJobsCard)\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Map, List } from \"immutable\"\nimport { Link, withRouter } from \"react-router-dom\"\n\n// ui components\nimport Paper from \"components/UI/elements/Paper\"\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport StatusElement from \"components/UI/elements/StatusElement\"\nimport DateTimeWithTooltip from \"components/UI/elements/DateTimeWithTooltip\"\n\n// helpers, constants\nimport { getRoutePath } from \"routes\"\nimport { getComponentIconSrc } from \"helpers/component.helper\"\n\nimport \"./EntityChildrenJobsCard.css\"\nimport { capitalize } from \"helpers/string.helper\"\n\nclass EntityChildrenJobsCard extends PureComponent {\n render() {\n const {\n jobs,\n rootEntityName,\n match: {\n params: { id: entityId }\n }\n } = this.props\n\n const entityName = rootEntityName === \"dawg\" ? \"workspace\" : \"configuration\"\n return (\n \n \n \n View all\n \n \n {List.isList(jobs) && jobs.size > 0 && (\n \n {jobs.map(job => {\n const icon =\n entityName === \"workspace\"\n ? \"workspace.png\"\n : job.getIn([\"configuration\", \"component\", \"icon\"], \"dummy.png\")\n let entityPath,\n entityPathParams = {},\n jobPath,\n jobPathParams = {}\n if (entityName === \"workspace\") {\n entityPath = \"workspace.show\"\n entityPathParams = { id: job.getIn([\"workspace\", \"id\"]) }\n jobPath = \"workspace.workspaceJob.show\"\n jobPathParams = {\n id: job.getIn([\"workspace\", \"id\"]),\n aid: job.id\n }\n } else {\n entityPath = \"workspace.configuration.show\"\n entityPathParams = { id: entityId, cid: job.getIn([\"configuration\", \"id\"]) }\n jobPath = \"workspace.configuration.configurationJob.show\"\n jobPathParams = {\n id: entityId,\n cid: job.getIn([\"configuration\", \"id\"]),\n aid: job.id\n }\n }\n\n return (\n
    \n
    \n \n \"icon\"\n
    \n

    {job.getIn([entityName, \"name\"])}

    \n \n \n \n
    \n \n \n \n \n
    \n
    \n )\n })}\n
    \n )}\n
    \n )\n }\n}\n\nEntityChildrenJobsCard.propTypes = {\n jobs: PropTypes.instanceOf(List),\n rootEntityName: PropTypes.string.isRequired\n}\n\nexport default withRouter(EntityChildrenJobsCard)\n","export default __webpack_public_path__ + \"static/media/arrow.334e1ee5.png\";","export default __webpack_public_path__ + \"static/media/disable.457b3fc5.png\";","export default __webpack_public_path__ + \"static/media/play.a59ddde6.png\";","export default __webpack_public_path__ + \"static/media/trash.e6692138.png\";","export default __webpack_public_path__ + \"static/media/waiting.c108b9fd.png\";","export default __webpack_public_path__ + \"static/media/warning.5c81bcdd.png\";","export default __webpack_public_path__ + \"static/media/running.d47c8b30.png\";","export default __webpack_public_path__ + \"static/media/error.6ad4490c.png\";","export default __webpack_public_path__ + \"static/media/finished.1065af29.png\";","export default __webpack_public_path__ + \"static/media/canceled.9853b279.png\";","import arrow from \"./images/arrow.png\"\nimport times from \"./images/delete.png\"\nimport disable from \"./images/disable.png\"\nimport play from \"./images/play.png\"\nimport trash from \"./images/trash.png\"\n\nimport waiting from \"./images/waiting.png\"\nimport warning from \"./images/warning.png\"\nimport running from \"./images/running.png\"\nimport error from \"./images/error.png\"\nimport finished from \"./images/finished.png\"\nimport canceled from \"./images/canceled.png\"\n\nconst conf = {\n style: [\n {\n selector: \"node[label]\",\n style: {\n content: \"data(label)\",\n width: 80,\n height: 80,\n \"text-halign\": \"center\",\n \"text-valign\": \"bottom\",\n \"text-margin-y\": 13,\n \"text-wrap\": \"wrap\",\n \"text-max-width\": \"180px\",\n \"text-background-color\": \"#ffffff\",\n \"text-background-shape\": \"roundrectangle\",\n \"text-background-padding\": \"3px\",\n \"text-background-opacity\": 1,\n \"font-size\": \"13px\",\n \"background-fit\": \"contain\",\n shape: \"ellipse\",\n \"border-width\": \"2\",\n \"background-color\": \"#ffffff\"\n }\n },\n {\n selector: \"node[?clickable]\",\n style: {\n \"background-image\": \"data(icon)\",\n \"border-color\": \"data(border)\"\n }\n },\n {\n selector: \"node[?hidden]\",\n style: {\n \"background-color\": \"#facdcb\",\n \"background-fit\": \"contain contain\",\n color: \"#ed382a\"\n }\n },\n {\n selector: \"node[?disabled]\",\n style: {\n \"background-color\": \"#C4C4C4\"\n }\n },\n {\n selector: \"node[label]:selected\",\n style: {\n \"background-color\": \"#fadfb1\"\n }\n },\n {\n selector: \"node[?statuschip]\",\n style: {\n width: 11,\n height: 11,\n shape: \"ellipse\",\n \"overlay-opacity\": 0,\n opacity: 0,\n \"border-opacity\": 0,\n \"background-fit\": \"contain\",\n padding: 2,\n \"background-width-relative-to\": \"inner\",\n \"background-height-relative-to\": \"inner\"\n }\n },\n {\n selector: \"node[statuschip = 'waiting']\",\n style: {\n \"background-image\": `${waiting}`,\n opacity: 1,\n \"background-color\": \"data(color)\"\n }\n },\n {\n selector: \"node[statuschip = 'running']\",\n style: {\n \"background-image\": `${running}`,\n opacity: 1,\n \"background-color\": \"data(color)\"\n }\n },\n {\n selector: \"node[statuschip = 'warning']\",\n style: {\n \"background-image\": `${warning}`,\n opacity: 1,\n \"background-color\": \"data(color)\"\n }\n },\n {\n selector: \"node[statuschip = 'error']\",\n style: {\n \"background-image\": `${error}`,\n opacity: 1,\n \"background-color\": \"data(color)\"\n }\n },\n {\n selector: \"node[statuschip = 'finished']\",\n style: {\n \"background-image\": `${finished}`,\n opacity: 1,\n \"background-color\": \"data(color)\"\n }\n },\n {\n selector: \"node[statuschip = 'canceled']\",\n style: {\n \"background-image\": `${canceled}`,\n opacity: 1,\n \"background-color\": \"data(color)\"\n }\n },\n {\n selector: \"node[?transparent]\",\n style: {\n opacity: 0.3\n }\n },\n {\n selector: \"edge\",\n style: {\n \"curve-style\": \"bezier\",\n width: 2,\n \"target-arrow-shape\": \"triangle\",\n \"source-arrow-shape\": \"circle\",\n \"line-color\": \"#C4C4C4\",\n \"target-arrow-color\": \"#6c6c6c\",\n \"arrow-scale\": 1.2,\n \"source-arrow-color\": \"#C4C4C4\",\n \"overlay-opacity\": 0\n }\n },\n {\n selector: \"edge.highlighted\",\n style: {\n \"target-arrow-color\": \"#555555\",\n \"line-color\": \"#555555\",\n \"source-arrow-color\": \"#555555\"\n }\n },\n {\n selector: \"#delete-edge\",\n style: {\n \"background-color\": \"#ed382a\",\n width: 26,\n height: 26,\n shape: \"ellipse\",\n \"overlay-opacity\": 0,\n \"border-width\": 4,\n \"border-opacity\": 0,\n \"background-image\": `${trash}`,\n \"background-fit\": \"contain\"\n }\n },\n\n {\n selector: \"#delete-node\",\n style: {\n \"background-color\": \"#ed382a\",\n width: 26,\n height: 26,\n shape: \"ellipse\",\n \"overlay-opacity\": 0,\n \"border-width\": 4,\n \"border-opacity\": 0,\n \"background-image\": `${trash}`,\n \"background-fit\": \"contain\"\n }\n },\n\n {\n selector: \"#disable-node[!disabled]\",\n style: {\n \"background-color\": \"#ed382a\",\n width: 26,\n height: 26,\n shape: \"ellipse\",\n \"overlay-opacity\": 0,\n \"border-width\": 4,\n \"border-opacity\": 0,\n \"background-image\": `${disable}`,\n \"background-fit\": \"contain\"\n }\n },\n\n {\n selector: \"#disable-node[?disabled]\",\n style: {\n \"background-color\": \"#41b05e\",\n width: 26,\n height: 26,\n shape: \"ellipse\",\n \"overlay-opacity\": 0,\n \"border-width\": 4,\n \"border-opacity\": 0,\n \"background-image\": `${disable}`,\n \"background-fit\": \"contain\"\n }\n },\n\n {\n selector: \"#action-node\",\n style: {\n \"background-color\": \"#41b05e\",\n width: 26,\n height: 26,\n shape: \"ellipse\",\n \"overlay-opacity\": 0,\n \"border-width\": 4,\n \"border-opacity\": 0,\n \"background-image\": `${play}`,\n \"background-fit\": \"contain\"\n }\n },\n\n {\n selector: \"#cancel-node\",\n style: {\n \"background-color\": \"#ed382a\",\n width: 26,\n height: 26,\n shape: \"ellipse\",\n \"overlay-opacity\": 0,\n \"border-width\": 4,\n \"border-opacity\": 0,\n \"background-image\": `${times}`,\n \"background-fit\": \"contain\"\n }\n },\n\n {\n selector: \".eh-handle\",\n style: {\n \"background-color\": \"#999999\",\n width: 26,\n height: 26,\n shape: \"ellipse\",\n \"overlay-opacity\": 0,\n \"border-width\": 4, // makes the handle easier to hit\n \"border-opacity\": 0,\n \"background-image\": `${arrow}`,\n \"background-fit\": \"contain\"\n }\n },\n\n {\n selector: \".eh-hover\",\n style: {\n \"background-color\": \"#F7F8F9\"\n }\n },\n\n {\n selector: \".eh-source\",\n style: {\n \"border-width\": 2,\n \"border-color\": \"#777777\"\n }\n },\n\n {\n selector: \".eh-target\",\n style: {\n \"border-width\": 2,\n \"border-color\": \"#777777\",\n \"background-color\": \"#F7F8F9\"\n }\n },\n\n {\n selector: \".eh-preview, .eh-ghost-edge\",\n style: {\n \"background-color\": \"#F7F8F9\",\n \"line-color\": \"#777777\",\n \"target-arrow-color\": \"#777777\",\n \"source-arrow-color\": \"#777777\"\n }\n }\n ],\n\n userZoomingEnabled: false,\n userPanningEnabled: true,\n boxSelectionEnabled: true,\n minZoom: 0.25,\n maxZoom: 1.2\n}\n\nexport default conf\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAMAAAD8CC+4AAAC3FBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+GTFYVAAAA9HRSTlMAHjlQW1ZFKQQdWgUQUZnL1+Hk4tzQrWwoAZjf464mHG7P+P796YwvAs736C4JUqbwxD3CeRtC1frvVxfF8X4KZersdwtLzIUVYd7mkGTJ/IFKx/uJ+XjK9UYDBudmDHBHYDTRfDXTcwi/bzfBaBnISFzd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\"","export default __webpack_public_path__ + \"static/media/exclamation.405a8109.png\";","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { withRouter } from \"react-router\"\nimport { connect } from \"react-redux\"\nimport cytoscape from \"cytoscape\"\nimport edgehandles from \"cytoscape-edgehandles\"\nimport klay from \"cytoscape-klay\"\nimport _noop from \"lodash/noop\"\nimport _toString from \"lodash/toString\"\nimport _toInteger from \"lodash/toInteger\"\nimport _includes from \"lodash/includes\"\nimport { List, Map, Record } from \"immutable\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nimport { showToast } from \"actions/toast.action\"\n\nimport { getComponentsData } from \"selectors/component.selector\"\n\n// cytoscape config\nimport cytoscapeDefaults from \"./CytoscapeConf\"\n\n// ui elements\nimport IconButton from \"components/UI/elements/IconButton\"\nimport ConfirmModal from \"components/UI/components/ConfirmModal\"\n\n// constants, helpers\nimport { MODAL, TOAST } from \"sharedConstants\"\nimport { getComponentIconSrc } from \"helpers/component.helper\"\nimport { getUndefinedWorkspaceVariables } from \"helpers/validators.helper\"\n\nimport \"./Dag.css\"\nimport { getRoutePath } from \"routes\"\nimport exclamationImg from \"./images/exclamation.png\"\n\nconst DELETE_TYPE = {\n ENTITY: \"entity\",\n EDGE: \"edge\"\n}\n\n//register extensions\ncytoscape.use(edgehandles)\ncytoscape.use(klay)\n\nclass Dag extends PureComponent {\n cy = null\n eh = null\n nodesPositionChangeCompleted = true\n\n constructor(props) {\n super(props)\n\n this.state = {\n deleteModal: Map({\n open: false,\n type: \"\",\n entity: null,\n isLoading: false\n }),\n runModal: Map({\n open: false,\n entity: null,\n htmlText: [],\n isLoading: false\n }),\n cancelModal: Map({\n open: false,\n entity: null,\n isLoading: false\n }),\n creatingEdge: false,\n quickTipShown: false,\n quickTipPage: 1\n }\n }\n\n componentDidMount() {\n const { isEditable, history, rootEntityName } = this.props\n const { id: entityId } = this.props.match.params\n\n if (this.cy === null) {\n const container = {\n container: this.containerDOM\n }\n\n this.cy = cytoscape(Object.assign({}, container, cytoscapeDefaults))\n\n // command/ctrl key event handler\n\n window.addEventListener(\"keydown\", this.handleKeyDown, false)\n window.addEventListener(\"keyup\", this.handleKeyUp, false)\n\n // show configuration section on node tap\n this.cy.on(\"vclick\", \"node[?clickable]\", evt => {\n if (!evt.originalEvent.shiftKey) {\n const node = evt.target\n if (this.eh) {\n this.eh.hide()\n }\n const targetPath =\n rootEntityName === \"workspace\"\n ? `/workspaces/${entityId}/configurations/${node.id()}`\n : `/workspaces/${node.id()}`\n if (evt.originalEvent.metaKey || evt.originalEvent.ctrlKey) {\n window.open(`${process.env.PUBLIC_URL}${targetPath}`, \"_blank\")\n } else {\n history.push({\n pathname: targetPath,\n state: {\n previous: true\n }\n })\n }\n } else {\n // shift click - show action nodes because edgehandle is also shown\n if (isEditable) {\n const element = evt.target\n this.cy.add({\n group: \"nodes\",\n data: {\n id: \"delete-node\",\n entityId: element.data().id,\n label: \"\"\n },\n position: {\n x: element.position(\"x\") - 41,\n y: element.position(\"y\") - 41\n },\n locked: true\n })\n this.cy.add({\n group: \"nodes\",\n data: {\n id: \"disable-node\",\n entityId: element.data().id,\n disabled: element.data().disabled,\n label: \"\"\n },\n position: {\n x: element.position(\"x\") - 41,\n y: element.position(\"y\") + 41\n },\n locked: true\n })\n if (\n _includes(\n [\"running\", \"waiting\"],\n this.props.entityStatuses.getIn([_toString(element.data().id), \"status\"])\n )\n ) {\n this.cy.add({\n group: \"nodes\",\n data: {\n id: \"cancel-node\",\n entityId: element.data().id,\n label: \"\"\n },\n position: {\n x: element.position(\"x\") + 41,\n y: element.position(\"y\") + 41\n },\n locked: true\n })\n } else {\n this.cy.add({\n group: \"nodes\",\n data: {\n id: \"action-node\",\n entityId: element.data().id,\n label: \"\"\n },\n position: {\n x: element.position(\"x\") + 41,\n y: element.position(\"y\") + 41\n },\n locked: true\n })\n }\n }\n }\n })\n\n if (isEditable) {\n // create edge handles behaviour\n this.eh = this.cy.edgehandles({\n preview: false,\n handleNodes: \"node[?clickable]\",\n hoverDelay: 100,\n loopAllowed: () => {\n return false\n },\n handlePosition: node => {\n return \"right top\"\n },\n start: () => {\n this.cy.remove(\"#delete-edge\")\n this.cy.remove(\"#delete-node\")\n this.cy.remove(\"#disable-node\")\n this.cy.remove(\"#action-node\")\n this.cy.remove(\"#cancel-node\")\n this.cy.edges().removeClass(\"highlighted\")\n this.setState({\n creatingEdge: true\n })\n },\n stop: () => {\n this.setState({\n creatingEdge: false\n })\n }\n })\n\n // remove delete button / edgehandles button on mouseout from container\n document.getElementById(\"cytoscape\").addEventListener(\"mouseout\", () => {\n this.eh.hide()\n this.cy.remove(\"#delete-edge\")\n this.cy.remove(\"#delete-node\")\n this.cy.remove(\"#disable-node\")\n this.cy.remove(\"#action-node\")\n this.cy.remove(\"#cancel-node\")\n this.cy.edges().removeClass(\"highlighted\")\n })\n\n // show delete/disable/run button on clickable node mouseover\n this.cy.on(\"mouseover\", \"node[?clickable]\", evt => {\n if (!this.state.creatingEdge) {\n const element = evt.target\n this.cy.remove(\"#delete-edge\")\n this.cy.remove(\"#delete-node\")\n this.cy.edges().removeClass(\"highlighted\")\n this.cy.add({\n group: \"nodes\",\n data: {\n id: \"delete-node\",\n entityId: element.data().id,\n label: \"\"\n },\n position: {\n x: element.position(\"x\") - 41,\n y: element.position(\"y\") - 41\n },\n locked: true\n })\n this.cy.remove(\"#disable-node\")\n this.cy.add({\n group: \"nodes\",\n data: {\n id: \"disable-node\",\n entityId: element.data().id,\n disabled: element.data().disabled,\n label: \"\"\n },\n position: {\n x: element.position(\"x\") - 41,\n y: element.position(\"y\") + 41\n },\n locked: true\n })\n this.cy.remove(\"#action-node\")\n this.cy.remove(\"#cancel-node\")\n if (\n _includes(\n [\"running\", \"waiting\"],\n this.props.entityStatuses.getIn([_toString(element.data().id), \"status\"])\n )\n ) {\n this.cy.add({\n group: \"nodes\",\n data: {\n id: \"cancel-node\",\n entityId: element.data().id,\n label: \"\"\n },\n position: {\n x: element.position(\"x\") + 41,\n y: element.position(\"y\") + 41\n },\n locked: true\n })\n } else {\n this.cy.add({\n group: \"nodes\",\n data: {\n id: \"action-node\",\n entityId: element.data().id,\n label: \"\"\n },\n position: {\n x: element.position(\"x\") + 41,\n y: element.position(\"y\") + 41\n },\n locked: true\n })\n }\n\n // highlight edges\n element.connectedEdges().addClass(\"highlighted\")\n }\n })\n\n this.cy.on(\"mousedown\", \"node[?clickable]\", evt => {\n this.cy.remove(\"#delete-node\")\n this.cy.remove(\"#disable-node\")\n this.cy.remove(\"#action-node\")\n this.cy.remove(\"#cancel-node\")\n this.cy.edges().removeClass(\"highlighted\")\n\n const element = evt.target\n if (!element.selected() && !evt.originalEvent.shiftKey) {\n // clicked element is not selected, deselect all\n this.cy.$(\"node:selected\").unselect()\n }\n })\n\n // show delete button on edge mouseover\n this.cy.on(\"mouseover\", \"edge\", evt => {\n if (!this.state.creatingEdge) {\n const element = evt.target\n this.eh.hide()\n this.cy.remove(\"#delete-edge\")\n this.cy.remove(\"#delete-node\")\n this.cy.remove(\"#disable-node\")\n this.cy.remove(\"#action-node\")\n this.cy.remove(\"#cancel-node\")\n this.cy.edges().removeClass(\"highlighted\")\n this.cy.add({\n group: \"nodes\",\n data: {\n id: \"delete-edge\",\n source: element.data().source,\n target: element.data().target,\n label: \"\"\n },\n position: element.midpoint(),\n locked: true\n })\n }\n })\n\n // delete edge\n this.cy.on(\"tap\", \"#delete-edge\", evt => {\n const nodeData = evt.target.data()\n let entity\n if (rootEntityName === \"workspace\") {\n entity = this.props.childEntities\n .get(nodeData.target)\n .deleteIn([\"input_settings\", \"inputs\", nodeData.source])\n } else {\n const el = this.props.childEntities.get(nodeData.target)\n entity = el.setIn(\n [\"input_settings\", \"inputs\"],\n el\n .getIn([\"input_settings\", \"inputs\"])\n .filterNot(val => val === _toInteger(nodeData.source))\n )\n }\n\n this.setState(prevState => ({\n deleteModal: prevState.deleteModal\n .set(\"open\", true)\n .set(\"type\", DELETE_TYPE.EDGE)\n .set(\"entity\", entity)\n }))\n })\n\n // delete node\n this.cy.on(\"tap\", \"#delete-node\", evt => {\n const element = evt.target\n const entity = this.props.childEntities.get(element.data().entityId)\n this.setState(prevState => ({\n deleteModal: prevState.deleteModal\n .set(\"open\", true)\n .set(\"type\", rootEntityName === \"workspace\" ? \"configuration\" : \"workspace\")\n .set(\"entity\", entity)\n }))\n })\n\n // enable/disable node\n this.cy.on(\"tap\", \"#disable-node\", evt => {\n const { childEntities, modifyEntity, showToast, rootEntityName } = this.props\n const element = evt.target\n const entity = childEntities.get(element.data().entityId)\n\n const ids =\n rootEntityName === \"workspace\"\n ? [entity.workspace_id, entity.id]\n : [entity.dawg_id, entity.id]\n modifyEntity(...ids, { disabled: entity.disabled ? 0 : 1 })\n .then(() => {\n showToast(\n entity.disabled\n ? `${\n rootEntityName === \"workspace\" ? \"Configuration\" : \"Workspace\"\n } has been enabled.`\n : `${\n rootEntityName === \"workspace\" ? \"Configuration\" : \"Workspace\"\n } has been disabled`,\n TOAST.TYPE.SUCCESS\n )\n })\n .catch(_noop)\n })\n\n this.cy.on(\"tap\", \"#action-node\", evt => {\n const element = evt.target\n const entity = this.props.childEntities.get(element.data().entityId)\n const { entity: rootEntity, rootEntityName } = this.props\n let htmlText = [\n

    \n Do you really want to run selected{\" \"}\n {rootEntityName === \"workspace\" ? \"configuration\" : \"workspace\"}?\n

    \n ]\n if (rootEntityName === \"workspace\" && rootEntity && entity) {\n const undefinedPlaceholders = getUndefinedWorkspaceVariables(\n Map.isMap(entity.settings) ? entity.settings.toJS() : {},\n rootEntity.variables\n )\n if (undefinedPlaceholders.length > 0) {\n htmlText = [\n

    Do you really want to run selected configuration?

    ,\n

    \n Notice:\n

    ,\n

    \n Configuration contains placeholder(s) undefined in workspace variable(s):{\" \"}\n {undefinedPlaceholders.join(\", \")}.\n

    \n ]\n }\n }\n\n this.setState(prevState => ({\n runModal: prevState.runModal\n .set(\"open\", true)\n .set(\"entity\", entity)\n .set(\"htmlText\", htmlText)\n }))\n })\n\n this.cy.on(\"tap\", \"#cancel-node\", evt => {\n const element = evt.target\n const entity = this.props.childEntities.get(element.data().entityId)\n\n this.setState(prevState => ({\n cancelModal: prevState.cancelModal.set(\"open\", true).set(\"entity\", entity)\n }))\n })\n\n // create edge\n this.cy.on(\"ehcomplete\", (event, sourceNode, targetNode, addedEles) => {\n const { childEntities, modifyEntity, showToast, rootEntityName } = this.props\n const sourceNodeId = sourceNode.data(\"id\")\n const targetNodeId = targetNode.data(\"id\")\n\n if (_toInteger(targetNodeId)) {\n let entity = childEntities.get(targetNodeId)\n const originInputSettings = entity ? entity.input_settings : {}\n if (entity.hasIn([\"input_settings\", \"inputs\"])) {\n if (rootEntityName === \"workspace\") {\n entity = entity.setIn(\n [\"input_settings\", \"inputs\"],\n entity.getIn([\"input_settings\", \"inputs\"]).merge({\n [sourceNodeId]: { filters: [\"*\"] }\n })\n )\n } else {\n // dawg\n if (\n !entity.getIn([\"input_settings\", \"inputs\"]).includes(_toInteger(sourceNodeId))\n ) {\n entity = entity.setIn(\n [\"input_settings\", \"inputs\"],\n entity.getIn([\"input_settings\", \"inputs\"]).push(_toInteger(sourceNodeId))\n )\n }\n }\n } else {\n // inputs does not exist yet\n if (Map.isMap(entity.input_settings)) {\n if (rootEntityName === \"workspace\") {\n // conf\n entity = entity.setIn(\n [\"input_settings\", \"inputs\"],\n Map({ [sourceNodeId]: { filters: [\"*\"] } })\n )\n } else {\n // dawg\n entity = entity.setIn(\n [\"input_settings\", \"inputs\"],\n List([_toInteger(sourceNodeId)])\n )\n }\n } else {\n if (rootEntityName === \"workspace\") {\n entity = entity.set(\n \"input_settings\",\n Map({ inputs: { [sourceNodeId]: { filters: [\"*\"] } } })\n )\n } else {\n entity = entity.set(\n \"input_settings\",\n Map({ inputs: List([_toInteger(sourceNodeId)]) })\n )\n }\n }\n }\n\n const ids =\n rootEntityName === \"workspace\"\n ? [entity.workspace_id, entity.id]\n : [entity.dawg_id, entity.id]\n modifyEntity(\n ...ids,\n {\n input_settings: Map.isMap(entity.input_settings)\n ? entity.input_settings.toJS()\n : entity.input_settings\n },\n {\n input_settings: Map.isMap(originInputSettings)\n ? originInputSettings.toJS()\n : originInputSettings\n }\n )\n .then(() => {\n showToast(\"Edge has been created.\", TOAST.TYPE.SUCCESS)\n })\n .catch(this._renderDag)\n }\n })\n\n // changing node/nodes position/positions\n this.cy.on(\"dragfree\", \"node[?clickable]\", evt => {\n const selectedElements = this.cy.$(\"node[?clickable]:selected\")\n if (selectedElements.length < 2) {\n // single node move, contains only \"modifiedNodesCount\" attribute\n const { childEntities, modifyEntity, rootEntityName } = this.props\n const node = evt.target\n const entity = childEntities.get(node.id())\n const nodePosition = node.position()\n\n const ids =\n rootEntityName === \"workspace\"\n ? [entity.workspace_id, entity.id]\n : [entity.dawg_id, entity.id]\n modifyEntity(...ids, {\n frontend_settings: {\n position: nodePosition\n }\n }).catch(_noop)\n } else {\n // multiple selected elements move\n if (this.nodesPositionChangeCompleted) {\n const {\n childEntities,\n modifyEntitiesBulk,\n match: {\n params: { id: rootEntityId }\n }\n } = this.props\n this.nodesPositionChangeCompleted = false\n const entitiesUpdate = []\n selectedElements.forEach(el => {\n if (el.data().clickable) {\n const entity = childEntities.get(el.id())\n let feSettings = entity.frontend_settings\n if (Map.isMap(feSettings)) {\n feSettings = feSettings\n .setIn([\"position\", \"x\"], el.position().x)\n .setIn([\"position\", \"y\"], el.position().y)\n .toJS()\n } else {\n feSettings = {\n position: {\n x: el.position().x,\n y: el.position().y\n }\n }\n }\n entitiesUpdate.push({\n id: entity.id,\n frontend_settings: feSettings\n })\n }\n })\n\n modifyEntitiesBulk(rootEntityId, entitiesUpdate)\n .then(res => {\n this.nodesPositionChangeCompleted = true\n })\n .catch(err => {\n this.nodesPositionChangeCompleted = true\n })\n }\n }\n })\n\n // move element's status node with position change\n this.cy.on(\"position\", \"node[?clickable]\", evt => {\n const node = evt.target\n const statusEl = this.cy.getElementById(`${node.id()}-status`)\n statusEl\n .unlock()\n .position({\n x: node.position(\"x\") + 40,\n y: node.position(\"y\")\n })\n .lock()\n })\n\n // quick tip\n let quickTipAlreadyClosed\n try {\n quickTipAlreadyClosed = window.localStorage.getItem(\"miDataFlowQuickTipClosed\")\n } catch (err) {}\n if (quickTipAlreadyClosed !== \"true\") {\n this.setState({\n quickTipShown: true\n })\n }\n }\n }\n\n if (!this.props.isChildrenFetching) {\n this._renderDag(true)\n }\n }\n\n handleKeyUp = evt => {\n if (!evt.metaKey && !evt.ctrlKey) {\n this.cy.userZoomingEnabled(false)\n this.cy.autounselectify(false)\n }\n }\n\n handleKeyDown = evt => {\n if (evt.metaKey || evt.ctrlKey) {\n this.cy.userZoomingEnabled(true)\n this.cy.autounselectify(true)\n }\n }\n\n quickTipClose = evt => {\n evt.stopPropagation()\n this.setState({\n quickTipShown: false\n })\n try {\n window.localStorage.setItem(\"miDataFlowQuickTipClosed\", \"true\")\n } catch (err) {}\n }\n\n quickTipOpen = evt => {\n evt.stopPropagation()\n this.setState({\n quickTipShown: true\n })\n try {\n window.localStorage.setItem(\"miDataFlowQuickTipClosed\", \"false\")\n } catch (err) {}\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.childEntities !== this.props.childEntities) {\n if (prevProps.match.params.id !== this.props.match.params.id) {\n // changed workspace via toast notification link (from another workspace detail)\n this._renderDag(true)\n } else {\n // configuration add, configuration position change\n // it's also fired when user come to previously visited workspace, so it's necessary to\n // center DAG because other users could make some changes in workspace\n if (prevProps.isChildrenFetching && !this.props.isChildrenFetching) {\n this._renderDag(true)\n } else {\n // position change, don't center DAG\n this._renderDag(false)\n }\n }\n }\n if (prevProps.entityStatuses !== this.props.entityStatuses) {\n this._setNodesStatuses()\n }\n if (prevProps.highlightedEntities !== this.props.highlightedEntities) {\n this._setHighlightedNodes()\n }\n if (\n this.props.arrangementCallbackValue !== null &&\n prevProps.arrangementCallbackValue !== this.props.arrangementCallbackValue\n ) {\n if (this.props.arrangementCallbackValue === 1) {\n // save arrangement\n this.arrangeDagConfirm()\n } else if (this.props.arrangementCallbackValue === 0) {\n // cancel arrangement\n this._renderDag(true)\n }\n }\n }\n\n _setNodesStatuses = () => {\n const { entityStatuses } = this.props\n entityStatuses.forEach((job, key) => {\n const color = this._getBorderColor(job.get(\"status\"))\n const el = this.cy.getElementById(key)\n el.data(\"border\", color)\n const statusEl = this.cy.getElementById(`${key}-status`)\n statusEl.data(\"color\", color).data(\"statuschip\", job.get(\"status\"))\n })\n }\n\n _setHighlightedNodes = () => {\n const { highlightedEntities } = this.props\n if (highlightedEntities.get(\"active\")) {\n // set transparent flag to nodes not included in ids array\n if (this.cy) {\n const nodes = this.cy.$(\"node[?clickable]\")\n nodes.forEach(element => {\n if (_includes(highlightedEntities.get(\"ids\"), _toInteger(element.data().id))) {\n element.data(\"transparent\", false)\n } else {\n element.data(\"transparent\", true)\n }\n })\n }\n } else {\n // unset all transparent flags\n if (this.cy) {\n const nodes = this.cy.$(\"node[?clickable]\")\n nodes.data(\"transparent\", false)\n }\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"keyup\", this.handleKeyUp, false)\n window.removeEventListener(\"keydown\", this.handleKeyDown, false)\n this.cy.elements().remove()\n this.cy.destroy()\n }\n\n _getBorderColor = status => {\n switch (status) {\n case \"running\":\n return \"#229ace\"\n case \"waiting\":\n case \"warning\":\n return \"#fabe53\"\n case \"canceled\":\n return \"#494a4a\"\n case \"error\":\n return \"#ed382a\"\n case \"finished\":\n return \"#3aa545\"\n default:\n return \"#C4C4C4\"\n }\n }\n\n _renderDag = (center = false) => {\n const { childEntities, components, entityStatuses, isEditable, rootEntityName } = this.props\n\n let edges = List()\n const statusNodes = []\n const elements = childEntities.map(entity => {\n if (entity.hasIn([\"input_settings\", \"inputs\"])) {\n const inputEdges =\n rootEntityName === \"workspace\"\n ? entity.getIn([\"input_settings\", \"inputs\"]).keySeq()\n : entity.getIn([\"input_settings\", \"inputs\"], List())\n const mappings = inputEdges.map(stringNodeId => ({\n data: {\n id: `${stringNodeId}-${entity.id}`,\n source: stringNodeId,\n target: _toString(entity.id),\n label: \"\"\n }\n }))\n edges = edges.concat(mappings)\n }\n let icon =\n rootEntityName === \"workspace\"\n ? components.getIn([_toString(entity.component_id), \"icon\"])\n : \"workspace.png\"\n const isHidden =\n rootEntityName === \"workspace\"\n ? components.getIn([_toString(entity.component_id), \"hidden\"])\n : 0\n if (!icon) {\n icon = \"dummy.png\"\n }\n\n statusNodes.push({\n data: {\n id: `${entity.id}-status`,\n clickable: false,\n statuschip: true,\n icon: \"waiting\",\n color: \"transparent\",\n label: \"\"\n },\n position: {\n x: entity.getIn([\"frontend_settings\", \"position\", \"x\"], 0) + 40,\n y: entity.getIn([\"frontend_settings\", \"position\", \"y\"], 0)\n },\n locked: true\n })\n\n const nodeIcon = entity.disabled ? getComponentIconSrc(icon, true) : getComponentIconSrc(icon)\n return {\n data: {\n id: entity.id,\n label: entity.name,\n isEntity: true,\n disabled: entity.disabled === 1,\n clickable: true,\n icon: isHidden === 1 ? [nodeIcon, exclamationImg] : nodeIcon,\n border: this._getBorderColor(entityStatuses.getIn([_toString(entity.id), \"status\"])),\n hidden: isHidden === 1\n },\n locked: !isEditable,\n position: Map.isMap(entity.getIn([\"frontend_settings\", \"position\"]))\n ? entity.getIn([\"frontend_settings\", \"position\"]).toJS()\n : { x: 0, y: 0 }\n }\n })\n\n if (this.cy) {\n this.cy.json({\n elements: elements\n .toList()\n .concat(edges)\n .concat(statusNodes)\n .toJS()\n })\n\n if (center) {\n this.centerDag()\n }\n\n this._setNodesStatuses()\n }\n }\n\n centerDag = () => {\n if (this.cy !== null) {\n this.cy.fit(this.cy.$(\"node\"), 15)\n }\n }\n\n closeDeleteModal = () => {\n this.setState(prevState => ({\n deleteModal: prevState.deleteModal.set(\"open\", false).set(\"isLoading\", false)\n }))\n }\n\n confirmDeleteModal = () => {\n if (!this.state.deleteModal.get(\"isLoading\")) {\n const { deleteEntity, modifyEntity, showToast, rootEntityName } = this.props\n const { deleteModal } = this.state\n const entity = deleteModal.get(\"entity\")\n const ids =\n rootEntityName === \"workspace\"\n ? [entity.workspace_id, entity.id]\n : [entity.dawg_id, entity.id]\n if (deleteModal.get(\"type\") !== DELETE_TYPE.EDGE) {\n this.setState(prevState => ({\n deleteModal: prevState.deleteModal.set(\"isLoading\", true)\n }))\n\n deleteEntity(...ids)\n .then(() => {\n this.closeDeleteModal()\n showToast(\n `${rootEntityName === \"workspace\" ? \"Configuration\" : \"Workspace\"} has been deleted${\n rootEntityName === \"dawg\" ? \" from the DAWG\" : \"\"\n }.`,\n TOAST.TYPE.SUCCESS\n )\n })\n .catch(() => {\n this.setState(prevState => ({\n deleteModal: prevState.deleteModal.set(\"isLoading\", false)\n }))\n })\n } else {\n this.setState(prevState => ({\n deleteModal: prevState.deleteModal.set(\"isLoading\", true)\n }))\n modifyEntity(...ids, {\n input_settings: entity.input_settings.toJS()\n })\n .then(() => {\n this.closeDeleteModal()\n showToast(\"Edge has been deleted.\", TOAST.TYPE.SUCCESS)\n })\n .catch(() => {\n this.setState(prevState => ({\n deleteModal: prevState.deleteModal.set(\"isLoading\", false)\n }))\n })\n }\n }\n }\n\n closeRunModal = () => {\n this.setState(prevState => ({\n runModal: prevState.runModal.set(\"open\", false).set(\"isLoading\", false)\n }))\n }\n\n confirmRunModal = () => {\n if (!this.state.runModal.get(\"isLoading\")) {\n const {\n rootEntityName,\n runEntityJob,\n showToast,\n match: {\n params: { id: rootEntityId }\n }\n } = this.props\n const { runModal } = this.state\n const entity = runModal.get(\"entity\")\n this.setState(prevState => ({\n runModal: prevState.runModal.set(\"isLoading\", true)\n }))\n const ids = rootEntityName === \"workspace\" ? [entity.workspace_id, entity.id] : [entity.id]\n runEntityJob(...ids)\n .then(response => {\n const job = response.value.job ? response.value.job : response.value.workspace_job\n this.closeRunModal()\n const routeParams = {\n id: rootEntityName === \"workspace\" ? rootEntityId : job.workspace_id,\n aid: job.id\n }\n if (rootEntityName === \"workspace\") {\n routeParams[\"cid\"] = job.configuration_id\n }\n showToast(\n `${rootEntityName === \"workspace\" ? \"Configuration\" : \"Workspace\"} job has started.`,\n TOAST.TYPE.SUCCESS,\n getRoutePath(\n rootEntityName === \"workspace\"\n ? \"workspace.configuration.configurationJob.show\"\n : \"workspace.workspaceJob.show\",\n routeParams\n )\n )\n })\n .catch(() => {\n this.setState(prevState => ({\n runModal: prevState.runModal.set(\"isLoading\", false)\n }))\n })\n }\n }\n\n closeCancelModal = () => {\n this.setState(prevState => ({\n cancelModal: prevState.cancelModal.set(\"open\", false).set(\"isLoading\", false)\n }))\n }\n\n confirmCancelModal = () => {\n if (!this.state.cancelModal.get(\"isLoading\")) {\n const { cancelEntityJob, showToast, entityStatuses, rootEntityName } = this.props\n const { cancelModal } = this.state\n const entity = cancelModal.get(\"entity\")\n const jobId = entityStatuses.getIn([_toString(entity.id), \"id\"])\n if (jobId) {\n this.setState(prevState => ({\n cancelModal: prevState.cancelModal.set(\"isLoading\", true)\n }))\n const ids = rootEntityName === \"workspace\" ? [entity.workspace_id, entity.id] : [entity.id]\n cancelEntityJob(...ids, jobId)\n .then(() => {\n this.closeCancelModal()\n showToast(\n `${\n rootEntityName === \"workspace\" ? \"Configuration\" : \"Workspace\"\n } job is being cancelled.`,\n TOAST.TYPE.SUCCESS\n )\n })\n .catch(() => {\n this.setState(prevState => ({\n cancelModal: prevState.cancelModal.set(\"isLoading\", false)\n }))\n })\n }\n }\n }\n\n moveQuickTipPage = direction => () => {\n const { quickTipPage } = this.state\n if (direction === \"prev\" && quickTipPage !== 1) {\n this.setState({\n quickTipPage: quickTipPage - 1\n })\n } else if (direction === \"next\" && quickTipPage !== 3) {\n this.setState({\n quickTipPage: quickTipPage + 1\n })\n }\n }\n\n arrangeDag = () => {\n if (this.cy) {\n const layout = this.cy.layout({\n nodeDimensionsIncludeLabels: true,\n animate: true,\n animationDuration: 500,\n name: \"klay\",\n klay: {\n addUnnecessaryBendpoints: false,\n aspectRatio: 1.6,\n borderSpacing: 20,\n compactComponents: false,\n crossingMinimization: \"LAYER_SWEEP\",\n cycleBreaking: \"GREEDY\",\n direction: \"UNDEFINED\",\n edgeRouting: \"ORTHOGONAL\",\n edgeSpacingFactor: 0.6,\n feedbackEdges: false,\n fixedAlignment: \"NONE\",\n inLayerSpacingFactor: 1.0,\n layoutHierarchy: false,\n linearSegmentsDeflectionDampening: 0.3,\n mergeEdges: false,\n mergeHierarchyCrossingEdges: true,\n nodeLayering: \"NETWORK_SIMPLEX\",\n nodePlacement: \"LINEAR_SEGMENTS\",\n randomizationSeed: 1,\n routeSelfLoopInside: false,\n separateConnectedComponents: true,\n spacing: 25,\n thoroughness: 100\n }\n })\n layout.run()\n this.props.togglePreviewMode()\n }\n }\n\n arrangeDagConfirm = () => {\n if (this.nodesPositionChangeCompleted) {\n const {\n childEntities,\n modifyEntitiesBulk,\n match: {\n params: { id: entityId }\n }\n } = this.props\n this.nodesPositionChangeCompleted = false\n const entitiesUpdate = []\n this.cy.elements(\"node[isEntity]\").forEach(el => {\n if (el.data().clickable) {\n const entity = childEntities.get(el.id())\n let feSettings = entity.frontend_settings\n if (Map.isMap(feSettings)) {\n if (\n feSettings.getIn([\"position\", \"x\"]) === el.position().x &&\n feSettings.getIn([\"position\", \"y\"]) === el.position().y\n ) {\n // entity position is same\n feSettings = null\n } else {\n feSettings = feSettings\n .setIn([\"position\", \"x\"], el.position().x)\n .setIn([\"position\", \"y\"], el.position().y)\n .toJS()\n }\n } else {\n feSettings = {\n position: {\n x: el.position().x,\n y: el.position().y\n }\n }\n }\n if (feSettings !== null) {\n entitiesUpdate.push({\n id: entity.id,\n frontend_settings: feSettings\n })\n }\n }\n })\n\n if (entitiesUpdate.length > 0) {\n this.props.togglePreviewMode()\n modifyEntitiesBulk(entityId, entitiesUpdate)\n .then(res => {\n this.nodesPositionChangeCompleted = true\n })\n .catch(err => {\n this._renderDag(true)\n this.nodesPositionChangeCompleted = true\n })\n } else {\n this.props.togglePreviewMode()\n this.nodesPositionChangeCompleted = true\n }\n }\n }\n\n render() {\n const { deleteModal, runModal, cancelModal, quickTipShown, quickTipPage } = this.state\n const { isEntitiesModifying, preview, rootEntityName } = this.props\n\n return (\n \n
    \n
    \n
    (this.containerDOM = el)} className=\"cytoscape\" />\n {!preview && (\n \n \n \n \n \n \n \n
    \n {quickTipShown && (\n \n \n \n \n

    \n {quickTipPage === 1 && (\n \n Quick tip! You can zoom in/out the data flow by\n pressing CTRL / ⌘ + scroll.\n \n )}\n {quickTipPage === 2 && (\n \n Quick tip! Hold Shift + left mouse click:\n select or deselect multiple nodes.\n
    \n Hold Shift + select area by mouse: select multiple nodes.\n
    \n Click on the blank space of data flow: deselect multiple nodes.\n
    \n Drag and drop selected nodes.\n
    \n )}\n {quickTipPage === 3 && (\n \n Quick tip! You can open entity in a new window by\n pressing CTRL / ⌘ + left mouse click.\n \n )}\n

    \n
    \n \n \n \n {quickTipPage}\n \n \n \n
    \n
    \n )}\n {!quickTipShown && (\n \n )}\n
    \n
    \n )}\n
    \n \n Do you want to delete this {deleteModal.get(\"type\")}\n {deleteModal.get(\"type\") === \"workspace\" ? \" from the DAWG\" : \"\"}?\n

    \n ]}\n isLoading={deleteModal.get(\"isLoading\")}\n />\n \n \n
    \n {preview &&
    }\n \n )\n }\n}\n\nDag.propTypes = {\n rootEntityName: PropTypes.string.isRequired,\n entity: PropTypes.instanceOf(Record),\n isChildrenFetching: PropTypes.bool.isRequired,\n isEntitiesModifying: PropTypes.bool,\n childEntities: PropTypes.instanceOf(Map).isRequired,\n components: PropTypes.instanceOf(Map),\n isEditable: PropTypes.bool.isRequired,\n highlightedEntities: PropTypes.instanceOf(Map).isRequired,\n entityStatuses: PropTypes.instanceOf(Map).isRequired,\n preview: PropTypes.bool.isRequired,\n arrangementCallbackValue: PropTypes.number,\n togglePreviewMode: PropTypes.func.isRequired,\n modifyEntity: PropTypes.func.isRequired,\n deleteEntity: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired,\n runEntityJob: PropTypes.func.isRequired,\n cancelEntityJob: PropTypes.func.isRequired,\n modifyEntitiesBulk: PropTypes.func.isRequired\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n components: getComponentsData(state)\n})\n\nexport default withRouter(\n connect(mapStateToProps, {\n showToast\n })(Dag)\n)\n","import React, { PureComponent } from \"react\"\nimport { Map, Record } from \"immutable\"\nimport { Link } from \"react-router-dom\"\nimport { CSSTransition } from \"react-transition-group\"\nimport PropTypes from \"prop-types\"\n\nimport Paper from \"components/UI/elements/Paper\"\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport SearchForm from \"components/UI/components/SearchForm\"\nimport Button from \"components/UI/elements/Button\"\nimport Dag from \"components/UI/DawgWsShared/Dag\"\n\nimport { getRoutePath } from \"routes\"\n\nimport \"./DataFlow.css\"\n\nclass DataFlow extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n dag: Map({\n previewMode: false,\n // 1 means sort, 0 means cancel\n callbackValue: null\n }),\n highlightedEntities: Map({\n active: false,\n ids: []\n })\n }\n }\n\n togglePreviewMode = (cancel = false) => () => {\n this.setState(prevState => ({\n dag: prevState.dag\n .set(\"previewMode\", !prevState.dag.get(\"previewMode\"))\n .set(\"callbackValue\", cancel ? 0 : null)\n }))\n }\n\n setDagCallbackValue = value => () => {\n this.setState(prevState => ({\n dag: prevState.dag.set(\"callbackValue\", value)\n }))\n }\n\n searchEntities = searchTerm => {\n const entitiesFuseData = this.props.entitiesFuseSearchInstance.get(\"data\")\n let entitiesList = searchTerm\n ? entitiesFuseData.search(searchTerm).toArray()\n : entitiesFuseData.list.toArray()\n\n if (searchTerm) {\n this.setState({\n highlightedEntities: Map({\n active: true,\n ids: entitiesList.map(ent => ent.id)\n })\n })\n } else {\n this.setState({\n highlightedEntities: Map({\n active: false,\n ids: []\n })\n })\n }\n }\n\n render() {\n const {\n entityName,\n entity,\n isEntitiesFulfilled,\n components,\n isEditable,\n entityStatuses,\n isChildrenFetching,\n isChildrenModifying,\n childEntities,\n modifyEntity,\n deleteEntity,\n runEntityJob,\n cancelEntityJob,\n modifyEntitiesBulk\n } = this.props\n const { dag, highlightedEntities } = this.state\n\n const childEntity = entityName === \"workspace\" ? \"configuration\" : \"workspace\"\n const componentsReady = entityName === \"workspace\" ? Map.isMap(components) : true\n\n return (\n
    \n \n {!dag.get(\"previewMode\") && (\n \n

    Data flow

    \n \n \n + {entityName === \"workspace\" ? \"Create\" : \"Add\"} {childEntity}\n \n
    \n )}\n {dag.get(\"previewMode\") && (\n \n

    Data Flow preview

    \n
    \n

    Do you wish to organize this {entityName}?

    \n \n \n
    \n
    \n )}\n
    \n \n {isEntitiesFulfilled && componentsReady && (\n \n )}\n \n \n
    \n \n
    \n )\n }\n}\n\nDataFlow.propTypes = {\n entitiesFuseSearchInstance: PropTypes.instanceOf(Map).isRequired,\n entityName: PropTypes.string.isRequired,\n entity: PropTypes.instanceOf(Record),\n isEntitiesFulfilled: PropTypes.bool.isRequired,\n components: PropTypes.instanceOf(Map),\n isEditable: PropTypes.bool.isRequired,\n entityStatuses: PropTypes.instanceOf(Map).isRequired,\n isChildrenFetching: PropTypes.bool.isRequired,\n isChildrenModifying: PropTypes.bool,\n childEntities: PropTypes.instanceOf(Map),\n modifyEntity: PropTypes.func.isRequired,\n deleteEntity: PropTypes.func.isRequired,\n runEntityJob: PropTypes.func.isRequired,\n cancelEntityJob: PropTypes.func.isRequired,\n modifyEntitiesBulk: PropTypes.func.isRequired\n}\n\nexport default DataFlow\n","import _toString from \"lodash/toString\"\n\nexport const getWorkspaceAclsData = (state, workspaceId) => {\n if (state.acls.get(\"workspaces\")) {\n return state.acls.getIn([\"workspaces\", _toString(workspaceId)])\n } else {\n return null\n }\n}\n\nexport const getDawgAclsData = (state, dawgId) => {\n if (state.acls.get(\"dawgs\")) {\n return state.acls.getIn([\"dawgs\", _toString(dawgId)])\n } else {\n return null\n }\n}\n","import _toInteger from \"lodash/toInteger\"\nimport { createSelector } from \"reselect\"\nimport { List } from \"immutable\"\n\nexport const getWorkspaceJobsData = state => {\n if (state.workspaceJobs !== null) {\n return state.workspaceJobs.get(\"data\")\n }\n return null\n}\n\nexport const getWorkspaceJobsSelectionSettings = state => {\n if (state.workspaceJobs !== null) {\n return state.workspaceJobs.get(\"selectionSettings\")\n }\n return null\n}\n\nexport const haveWorkspaceJobsMoreItems = state => {\n if (state.workspaceJobs !== null) {\n return state.workspaceJobs.get(\"hasMoreItems\") === true\n }\n return false\n}\n\nexport const getWorkspaceJobData = (state, jobId) => {\n const data = getWorkspaceJobsData(state)\n if (List.isList(data)) {\n const jobIdInt = _toInteger(jobId)\n return data.find(job => job.id === jobIdInt)\n }\n return null\n}\n\nexport const isWorkspaceJobsFetching = state => {\n if (state.workspaceJobs !== null) {\n return state.workspaceJobs.get(\"isFetching\") === true\n }\n return true\n}\n\nexport const getLastWorkspaceJobsData = createSelector(getWorkspaceJobsData, data => {\n if (List.isList(data)) {\n return data.slice(0, 3)\n }\n return null\n})\n","import { List } from \"immutable\"\n\nexport const getWorkspaceDashboardConfJobs = (state, workspaceId) => {\n const data = state.workspaceConfigurationJobs.getIn([workspaceId, \"data\"])\n if (List.isList(data)) {\n return data.take(6)\n }\n return null\n}\n\nexport const getWorkspaceConfJobs = (state, workspaceId) =>\n state.workspaceConfigurationJobs.getIn([workspaceId, \"data\"])\n\nexport const getWorkspaceConfJobsSelectionSettings = (state, workspaceId) =>\n state.workspaceConfigurationJobs.getIn([workspaceId, \"selectionSettings\"])\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { connect } from \"react-redux\"\nimport { Prompt } from \"react-router-dom\"\nimport _noop from \"lodash/noop\"\nimport _get from \"lodash/get\"\nimport { Record } from \"immutable\"\nimport { Map, List } from \"immutable\"\n\n// ui components\nimport Header from \"components/UI/DawgWsShared/DetailHeader\"\nimport SetScheduleCard from \"components/UI/DawgWsShared/SetSchedule\"\nimport VariablesCard from \"./cards/Variables\"\nimport DescriptionCard from \"components/UI/components/DescriptionCard\"\nimport ConfirmModal from \"components/UI/components/ConfirmModal\"\nimport EntityJobsCard from \"components/UI/DawgWsShared/EntityJobsCard\"\nimport ConfigurationJobsCard from \"components/UI/DawgWsShared/EntityChildrenJobsCard\"\nimport DataFlowComponent from \"components/UI/DawgWsShared/DataFlow\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\nimport { getUsersWorkspaceAcl } from \"selectors/usersAcl.selector\"\nimport { getWorkspaceAclsData } from \"selectors/acl.selector\"\nimport {\n isConfigurationsFulfilled,\n getWorkspaceConfigurationsFuseData,\n getIsConfigurationsFetching,\n getWorkspaceConfigurationsData,\n getIsWorkspaceConfigurationsModifying\n} from \"selectors/configuration.selector\"\nimport { getComponentsData } from \"selectors/component.selector\"\nimport { getLastWorkspaceJobsData } from \"selectors/workspaceJob.selector\"\nimport { getWorkspaceDashboardConfJobs } from \"selectors/workspaceConfigurationJob.selector\"\n\n// helpers\nimport { hasWritePermission } from \"helpers/authenticatedUser.helper\"\nimport { getRoutePath } from \"routes\"\nimport { api } from \"api\"\nimport PendingPromise from \"helpers/pendingPromise.helper\"\n\n// actions\nimport {\n retrieveWorkspace,\n modifyWorkspace,\n deleteWorkspace,\n cloneWorkspace,\n assignTagToWorkspace,\n unassignTagFromWorkspace\n} from \"actions/workspace.action\"\nimport { fetchWorkspaceAcl } from \"actions/acl.action\"\nimport { showToast } from \"actions/toast.action\"\nimport {\n fetchConfigurationList,\n modifyConfiguration,\n deleteConfiguration,\n modifyConfigurationsBulk\n} from \"actions/configuration.action\"\nimport {\n clearCachedConfigurationJobs,\n listWorkspaceConfigurationJob\n} from \"actions/configurationJob.action\"\nimport { clearCachedConfigurationHistory } from \"actions/configurationHistory.action\"\nimport {\n listWorkspaceJob,\n runWorkspaceJob,\n cancelWorkspaceJob,\n refreshLastWorkspaceJob,\n clearCachedWorkspaceJobs\n} from \"actions/workspaceJob.action\"\nimport { runConfigurationJob, cancelConfigurationJob } from \"actions/configurationJob.action\"\nimport { showLoadingBar, hideLoadingBar } from \"actions/loadingBar.action\"\nimport { enableLogout, disableLogout } from \"actions/authenticatedUser.action\"\nimport { clearCachedWorkspaceHistory } from \"actions/workspaceHistory.action\"\nimport { createAcl, fetchUsersAcl, modifyAcl, deleteAcl } from \"actions/acl.action\"\n\n// constants\nimport { MODAL, INTERVAL, WORKSPACE, TOAST } from \"sharedConstants\"\n\nimport \"./WorkspaceShow.css\"\n\nconst initialState = {\n confirmModalVariables: Map({\n open: false,\n type: \"\",\n handleClose: () => {},\n handleConfirm: () => {},\n title: \"\",\n action: \"\",\n what: \"\",\n text: \"\",\n isLoading: false\n }),\n editModes: Map({\n workspaceName: false,\n description: false,\n variables: false,\n schedule: false\n }),\n configurationStatuses: Map(),\n isWorkspaceReloading: true\n}\n\nclass WorkspaceShow extends PureComponent {\n runningCalls = {\n lastWorkspaceJobs: false,\n lastConfigurationJobs: false,\n workspaceConfigurationsLastJobs: false\n }\n\n constructor(props) {\n super(props)\n this.state = initialState\n this.pendingPromises = new PendingPromise()\n }\n\n componentDidMount() {\n this._init()\n }\n\n _init(clearWorkspaceCache = false) {\n const { id } = this.props.match.params\n const {\n retrieveWorkspace,\n fetchWorkspaceAcl,\n fetchConfigurationList,\n clearCachedConfigurationJobs,\n clearCachedConfigurationHistory,\n listWorkspaceJob,\n clearCachedWorkspaceJobs,\n clearCachedWorkspaceHistory\n } = this.props\n\n clearCachedConfigurationJobs()\n clearCachedConfigurationHistory()\n if (clearWorkspaceCache) {\n clearCachedWorkspaceJobs()\n clearCachedWorkspaceHistory()\n }\n\n retrieveWorkspace(id)\n .then(() => {\n this.setState({ isWorkspaceReloading: false })\n })\n .catch(() => {\n this.setState({ isWorkspaceReloading: false })\n })\n fetchWorkspaceAcl(id).catch(_noop)\n fetchConfigurationList(id).catch(_noop)\n\n this.runningCalls.lastWorkspaceJobs = true\n listWorkspaceJob(id, 0, WORKSPACE.JOB.LOADING_LIMIT, 0)\n .then(() => {\n this.runningCalls.lastWorkspaceJobs = false\n })\n .catch(() => {\n this.runningCalls.lastWorkspaceJobs = false\n })\n\n this.fetchLastConfigurationJobs()\n\n this.fetchWorkspaceConfigurationsLastJobs()\n\n this.intervalId = setInterval(() => {\n this.refreshLastWorkspaceJob()\n this.fetchLastConfigurationJobs(false)\n this.fetchWorkspaceConfigurationsLastJobs()\n }, INTERVAL.WORKSPACE_SHOW)\n }\n\n _cleanup = (clearState = false) => {\n clearInterval(this.intervalId)\n this.pendingPromises.cancelAll()\n this.runningCalls = {\n lastWorkspaceJobs: false,\n lastConfigurationJobs: false,\n workspaceConfigurationsLastJobs: false\n }\n\n if (clearState) {\n this.setState(initialState)\n }\n }\n\n componentDidUpdate(prevProps) {\n const { id } = this.props.match.params\n const prevId = prevProps.match.params.id\n if (id && prevId && id !== prevId) {\n this._cleanup()\n this._init(true)\n }\n }\n\n componentWillUnmount() {\n this._cleanup()\n }\n\n modifyWorkspace = async (\n parameters,\n previousParameters = {},\n message = \"\",\n toastType = TOAST.TYPE.SUCCESS\n ) => {\n const { modifyWorkspace, showToast, workspace } = this.props\n await modifyWorkspace(workspace.id, parameters, previousParameters)\n showToast(message ? message : \"Workspace has been modified.\", toastType)\n }\n\n deleteWorkspace = () => {\n if (!this.state.confirmModalVariables.get(\"isLoading\")) {\n const { deleteWorkspace, showToast, history } = this.props\n const { id: workspaceId } = this.props.match.params\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", true)\n }))\n deleteWorkspace(workspaceId)\n .then(() => {\n showToast(\"Workspace has been deleted.\", TOAST.TYPE.SUCCESS)\n history.push(getRoutePath(\"workspace.list\"))\n })\n .catch(() => {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", false)\n }))\n })\n }\n }\n\n toggleDeleteModal = () => {\n const open = this.state.confirmModalVariables.get(\"open\")\n if (open) {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", false)\n .set(\"isLoading\", false)\n }))\n this.intervalId = setInterval(() => {\n this.refreshLastWorkspaceJob()\n this.fetchLastConfigurationJobs(false)\n this.fetchWorkspaceConfigurationsLastJobs()\n }, INTERVAL.WORKSPACE_SHOW)\n } else {\n clearInterval(this.intervalId)\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", true)\n .set(\"type\", MODAL.TYPE.DELETE)\n .set(\"handleClose\", this.toggleDeleteModal)\n .set(\"handleConfirm\", this.deleteWorkspace)\n .set(\"title\", \"Delete workspace\")\n .set(\"action\", \"delete\")\n .set(\"what\", \"workspace\")\n .set(\"text\", \"\")\n }))\n }\n }\n\n toggleRunModal = () => {\n const open = this.state.confirmModalVariables.get(\"open\")\n if (open) {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", false)\n .set(\"isLoading\", false)\n }))\n } else {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", true)\n .set(\"type\", MODAL.TYPE.SUCCESS)\n .set(\"handleClose\", this.toggleRunModal)\n .set(\"handleConfirm\", this.runWorkspace)\n .set(\"title\", \"Run workspace\")\n .set(\"action\", \"run\")\n .set(\"what\", \"workspace\")\n .set(\"text\", \"\")\n }))\n }\n }\n\n toggleWorkspaceCancelModal = () => {\n const open = this.state.confirmModalVariables.get(\"open\")\n if (open) {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", false)\n .set(\"isLoading\", false)\n }))\n } else {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", true)\n .set(\"type\", MODAL.TYPE.CANCEL)\n .set(\"handleClose\", this.toggleWorkspaceCancelModal)\n .set(\"handleConfirm\", this.cancelWorkspaceJob)\n .set(\"title\", \"Cancel workspace\")\n .set(\"action\", \"cancel\")\n .set(\"what\", \"workspace job\")\n .set(\"text\", \"\")\n }))\n }\n }\n\n toggleDataEraseModal = () => {\n const open = this.state.confirmModalVariables.get(\"open\")\n if (open) {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", false)\n .set(\"isLoading\", false)\n }))\n } else {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", true)\n .set(\"type\", MODAL.TYPE.ERASE)\n .set(\"handleClose\", this.toggleDataEraseModal)\n .set(\"handleConfirm\", this.eraseWorkspaceData)\n .set(\"title\", \"Erase workspace data\")\n .set(\"text\", \"Do you really want to erase all workspace data?\")\n }))\n }\n }\n\n toggleCloneModal = () => {\n const open = this.state.confirmModalVariables.get(\"open\")\n if (open) {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", false)\n .set(\"isLoading\", false)\n }))\n } else {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", true)\n .set(\"type\", MODAL.TYPE.SUCCESS)\n .set(\"handleClose\", this.toggleCloneModal)\n .set(\"handleConfirm\", this.cloneWorkspace)\n .set(\"title\", \"Clone workspace\")\n .set(\"action\", \"clone\")\n .set(\"what\", \"workspace\")\n .set(\"text\", \"\")\n }))\n }\n }\n\n eraseWorkspaceData = async () => {\n if (!this.state.confirmModalVariables.get(\"isLoading\")) {\n const {\n showToast,\n match: {\n params: { id }\n }\n } = this.props\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", true)\n }))\n const eraseWorkspaceDataRequest = this.pendingPromises.create(api().workspace.data.delete(id))\n try {\n await eraseWorkspaceDataRequest.promise\n showToast(\"Workspace data has been erased.\", TOAST.TYPE.SUCCESS)\n this.toggleDataEraseModal()\n } catch (err) {\n if (!_get(err, \"isCanceled\")) {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", false)\n }))\n }\n } finally {\n this.pendingPromises.remove(eraseWorkspaceDataRequest)\n }\n }\n }\n\n cancelWorkspaceJob = async () => {\n const {\n lastWorkspaceJobs,\n cancelWorkspaceJob,\n showToast,\n match: {\n params: { id }\n }\n } = this.props\n if (List.isList(lastWorkspaceJobs) && lastWorkspaceJobs.size > 0) {\n const job = lastWorkspaceJobs.get(0)\n this.runningCalls.lastWorkspaceJobs = true\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", true)\n }))\n try {\n await cancelWorkspaceJob(id, job.id)\n showToast(\"Workspace job is being cancelled.\", TOAST.TYPE.SUCCESS)\n this.runningCalls.lastWorkspaceJobs = false\n this.toggleWorkspaceCancelModal()\n } catch (err) {\n this.runningCalls.lastWorkspaceJobs = false\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", false)\n }))\n }\n } else {\n this.toggleWorkspaceCancelModal()\n }\n }\n\n runWorkspace = async () => {\n if (!this.state.confirmModalVariables.get(\"isLoading\")) {\n const { showToast, runWorkspaceJob } = this.props\n const { id: workspaceId } = this.props.match.params\n this.runningCalls.lastWorkspaceJobs = true\n\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", true)\n }))\n runWorkspaceJob(workspaceId, 0)\n .then(response => {\n showToast(\n \"Workspace job has started.\",\n TOAST.TYPE.SUCCESS,\n getRoutePath(\"workspace.workspaceJob.show\", {\n id: response.value.workspace_job.workspace_id,\n aid: response.value.workspace_job.id\n })\n )\n this.runningCalls.lastWorkspaceJobs = false\n this.toggleRunModal()\n })\n .catch(() => {\n this.runningCalls.lastWorkspaceJobs = false\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", false)\n }))\n })\n }\n }\n\n cloneWorkspace = () => {\n if (!this.state.confirmModalVariables.get(\"isLoading\")) {\n const { cloneWorkspace, showToast } = this.props\n const { id: workspaceId } = this.props.match.params\n\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", true),\n highlightedConfigurations: Map({\n active: false,\n ids: []\n })\n }))\n cloneWorkspace(workspaceId)\n .then(response => {\n showToast(\n \"Workspace has been cloned.\",\n TOAST.TYPE.SUCCESS,\n getRoutePath(\"workspace.show\", { id: response.value.id })\n )\n this.toggleCloneModal()\n })\n .catch(() => {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", true)\n }))\n })\n }\n }\n\n refreshLastWorkspaceJob = () => {\n if (!this.runningCalls.lastWorkspaceJobs) {\n this.runningCalls.lastWorkspaceJobs = true\n const {\n refreshLastWorkspaceJob,\n match: {\n params: { id }\n }\n } = this.props\n refreshLastWorkspaceJob(id, 0)\n .then(() => {\n this.runningCalls.lastWorkspaceJobs = false\n })\n .catch(() => {\n this.runningCalls.lastWorkspaceJobs = false\n })\n }\n }\n\n fetchLastConfigurationJobs = async (promise = true) => {\n if (!this.runningCalls.lastConfigurationJobs) {\n this.runningCalls.lastConfigurationJobs = true\n const {\n listWorkspaceConfigurationJob,\n match: {\n params: { id }\n }\n } = this.props\n\n try {\n await listWorkspaceConfigurationJob(id, 0, 6, 1, \"status\", \"DESC\", promise)\n } catch (err) {\n } finally {\n this.runningCalls.lastConfigurationJobs = false\n }\n }\n }\n\n fetchWorkspaceConfigurationsLastJobs = async () => {\n if (!this.runningCalls.workspaceConfigurationsLastJobs) {\n this.runningCalls.workspaceConfigurationsLastJobs = true\n const { id } = this.props.match.params\n const { configurationStatuses } = this.state\n const lastConfJobsPromise = this.pendingPromises.create(\n api().workspace.configuration.listLastJobs(id)\n )\n\n try {\n const response = await lastConfJobsPromise.promise\n if (response.last_configuration_jobs.length > 0) {\n const currentStatuses = Map(\n response.last_configuration_jobs.reduce((returnObj, job) => {\n returnObj[job.configuration_id] = Map({\n id: _get(job, \"last_job.id\"),\n status: _get(job, \"last_job.status\")\n })\n return returnObj\n }, {})\n )\n\n if (!configurationStatuses.equals(currentStatuses)) {\n this.setState({\n configurationStatuses: currentStatuses\n })\n }\n }\n } catch (err) {\n } finally {\n this.runningCalls.workspaceConfigurationsLastJobs = false\n this.pendingPromises.remove(lastConfJobsPromise)\n }\n }\n }\n\n toggleEditMode = editMode => (cb = _noop) => () => {\n this.setState(\n prevState => ({\n editModes: prevState.editModes.set(editMode, !prevState.editModes.get(editMode))\n }),\n () => {\n let isEditing = false\n this.state.editModes.forEach(mode => {\n if (mode) {\n isEditing = true\n }\n })\n\n if (isEditing) {\n this.props.disableLogout()\n } else {\n this.props.enableLogout()\n }\n cb()\n }\n )\n }\n\n toggleDeleteDataCheckbox = evt => {\n const { workspace } = this.props\n const value = evt.target.checked\n\n this.modifyWorkspace(\n {\n settings: workspace.settings.set(\"delete_data_after_success\", value).toJS()\n },\n {},\n value\n ? \"Workspace data will be deleted after execution.\"\n : \"Workspace data won't be deleted after execution.\",\n TOAST.TYPE.SUCCESS\n )\n }\n\n transferOwnership = async userId => {\n const { modifyWorkspace, showToast, workspace } = this.props\n await modifyWorkspace(workspace.id, { owner_id: userId })\n showToast(\"Workspace owner has been changed.\", TOAST.TYPE.SUCCESS)\n }\n\n render() {\n const {\n createAcl,\n fetchUsersAcl,\n modifyAcl,\n deleteAcl,\n workspace,\n usersAcl,\n workspaceUsers,\n isConfigurationsFulfilled,\n lastWorkspaceJobs,\n components,\n configurationJobs,\n assignTagToWorkspace,\n unassignTagFromWorkspace,\n configurationsFuseSearchInstance,\n isConfigurationsFetching,\n isConfigurationsModifying,\n configurations,\n modifyConfiguration,\n deleteConfiguration,\n runConfigurationJob,\n cancelConfigurationJob,\n modifyConfigurationsBulk\n } = this.props\n const {\n confirmModalVariables,\n editModes,\n configurationStatuses,\n isWorkspaceReloading\n } = this.state\n\n const isEditable = hasWritePermission(usersAcl)\n let currentlyEditing = \"\"\n editModes.forEach((mode, key) => {\n if (mode) {\n switch (key) {\n case \"workspaceName\": {\n currentlyEditing = \"workspace name\"\n break\n }\n case \"description\": {\n currentlyEditing = \"workspace description\"\n break\n }\n case \"variables\": {\n currentlyEditing = \"workspace variables\"\n break\n }\n case \"schedule\": {\n currentlyEditing = \"workspace schedule\"\n break\n }\n default:\n currentlyEditing = \"\"\n }\n }\n })\n\n return (\n
    \n {workspace && (\n \n \n \n
    \n
    \n \n {\n this.props.showToast(message, toastType)\n }}\n readyToEdit={!isWorkspaceReloading}\n />\n \n
    \n
    \n \n {List.isList(configurationJobs) && (\n \n )}\n
    \n
    \n
    \n )}\n \n 0}\n message={`Do you really want to leave current page and lose unsaved ${currentlyEditing}?`}\n />\n
    \n )\n }\n}\n\nWorkspaceShow.propTypes = {\n acls: PropTypes.instanceOf(List),\n workspace: PropTypes.instanceOf(Record),\n usersAcl: PropTypes.instanceOf(Record),\n isConfigurationsFulfilled: PropTypes.bool.isRequired,\n configurationsFuseSearchInstance: PropTypes.instanceOf(Map).isRequired,\n components: PropTypes.instanceOf(Map),\n lastWorkspaceJobs: PropTypes.instanceOf(List),\n retrieveWorkspace: PropTypes.func.isRequired,\n modifyWorkspace: PropTypes.func.isRequired,\n fetchWorkspaceAcl: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired,\n showLoadingBar: PropTypes.func.isRequired,\n hideLoadingBar: PropTypes.func.isRequired,\n clearCachedConfigurationJobs: PropTypes.func.isRequired,\n listWorkspaceJob: PropTypes.func.isRequired,\n runWorkspaceJob: PropTypes.func.isRequired,\n refreshLastWorkspaceJob: PropTypes.func.isRequired,\n enableLogout: PropTypes.func.isRequired,\n disableLogout: PropTypes.func.isRequired,\n clearCachedConfigurationHistory: PropTypes.func.isRequired,\n listWorkspaceConfigurationJob: PropTypes.func.isRequired,\n configurationJobs: PropTypes.instanceOf(List),\n workspaceUsers: PropTypes.instanceOf(List),\n createAcl: PropTypes.func.isRequired,\n fetchUsersAcl: PropTypes.func.isRequired,\n modifyAcl: PropTypes.func.isRequired,\n deleteAcl: PropTypes.func.isRequired,\n assignTagToWorkspace: PropTypes.func.isRequired,\n unassignTagFromWorkspace: PropTypes.func.isRequired,\n isConfigurationsFetching: PropTypes.bool.isRequired,\n isConfigurationsModifying: PropTypes.bool.isRequired,\n configurations: PropTypes.instanceOf(Map),\n modifyConfiguration: PropTypes.func.isRequired,\n deleteConfiguration: PropTypes.func.isRequired,\n modifyConfigurationsBulk: PropTypes.func.isRequired,\n runConfigurationJob: PropTypes.func.isRequired,\n cancelConfigurationJob: PropTypes.func.isRequired\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n workspace: getWorkspaceRecord(state, ownProps.match.params.id),\n usersAcl: getUsersWorkspaceAcl(state, ownProps.match.params.id),\n workspaceUsers: getWorkspaceAclsData(state, ownProps.match.params.id),\n isConfigurationsFulfilled: isConfigurationsFulfilled(state, ownProps.match.params.id),\n lastWorkspaceJobs: getLastWorkspaceJobsData(state),\n components: getComponentsData(state),\n configurationsFuseSearchInstance: getWorkspaceConfigurationsFuseData(\n state,\n ownProps.match.params.id\n ),\n configurationJobs: getWorkspaceDashboardConfJobs(state, ownProps.match.params.id),\n isConfigurationsFetching: getIsConfigurationsFetching(state),\n configurations: getWorkspaceConfigurationsData(state, ownProps.match.params.id),\n isConfigurationsModifying: getIsWorkspaceConfigurationsModifying(state, ownProps.match.params.id)\n})\n\nexport default connect(mapStateToProps, {\n retrieveWorkspace,\n modifyWorkspace,\n deleteWorkspace,\n fetchWorkspaceAcl,\n showToast,\n fetchConfigurationList,\n cloneWorkspace,\n showLoadingBar,\n hideLoadingBar,\n clearCachedConfigurationJobs,\n clearCachedWorkspaceJobs,\n clearCachedWorkspaceHistory,\n clearCachedConfigurationHistory,\n listWorkspaceJob,\n runWorkspaceJob,\n cancelWorkspaceJob,\n refreshLastWorkspaceJob,\n enableLogout,\n disableLogout,\n listWorkspaceConfigurationJob,\n createAcl,\n fetchUsersAcl,\n modifyAcl,\n deleteAcl,\n assignTagToWorkspace,\n unassignTagFromWorkspace,\n modifyConfiguration,\n deleteConfiguration,\n modifyConfigurationsBulk,\n runConfigurationJob,\n cancelConfigurationJob\n})(WorkspaceShow)\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Line } from \"react-chartjs-2\"\nimport { List } from \"immutable\"\nimport _includes from \"lodash/includes\"\nimport _round from \"lodash/round\"\nimport moment from \"moment\"\n\n// constants, helpers\nimport { MOMENT } from \"sharedConstants\"\nimport { formatBytes } from \"helpers/dataUnits.helper\"\n\nconst epoch_to_hh_mm_ss = epoch => {\n console.log(epoch)\n return new Date(epoch * 1000).toISOString().substr(12, 7)\n}\n\nconst jobsChartOptions = {\n responsive: true,\n maintainAspectRatio: false,\n hoverMode: \"index\",\n stacked: false,\n title: {\n display: false\n },\n legend: {\n position: \"left\",\n align: \"center\",\n labels: {\n usePointStyle: false,\n padding: 15,\n fontStyle: \"bold\",\n fontSize: 12,\n color: \"#999999\"\n }\n },\n layout: {\n padding: {\n bottom: 10\n }\n },\n scales: {\n yAxes: [\n {\n type: \"linear\",\n display: true,\n position: \"left\",\n id: \"y-axis-1\",\n ticks: {\n userCallback: val => {\n const value = val < 0 ? 0 : _round(val)\n return epoch_to_hh_mm_ss(value)\n },\n fontSize: 10\n },\n gridLines: {\n color: \"rgba(196,196,196,0.5)\"\n }\n },\n {\n type: \"linear\",\n display: true,\n position: \"right\",\n id: \"y-axis-2\",\n ticks: {\n userCallback: val => {\n const value = val < 0 ? 0 : _round(val)\n return formatBytes(value)\n },\n fontSize: 10\n },\n // grid line settings\n gridLines: {\n drawOnChartArea: false,\n color: \"rgba(196,196,196,0.5)\"\n }\n }\n ],\n xAxes: [\n {\n ticks: {\n fontSize: 10\n }\n }\n ]\n },\n tooltips: {\n callbacks: {\n label: (tooltipItem, data) => {\n switch (tooltipItem.datasetIndex) {\n case 0: {\n return `${data.datasets[tooltipItem.datasetIndex].label}: ${epoch_to_hh_mm_ss(\n tooltipItem.yLabel\n )}`\n }\n case 1: {\n return `${data.datasets[tooltipItem.datasetIndex].label}: ${formatBytes(\n tooltipItem.yLabel\n )}`\n }\n default: {\n return `${data.datasets[tooltipItem.datasetIndex].label}: ${tooltipItem.yLabel}`\n }\n }\n }\n }\n }\n}\n\nclass JobsLineChart extends PureComponent {\n constructChartData = jobs => {\n if (List.isList(jobs) && jobs.size > 2) {\n let labels = []\n let durationData = []\n let volumeData = []\n let pointBackgroundColors = []\n for (let i = jobs.size - 1; i >= 0; i--) {\n const job = jobs.get(i)\n if (!_includes([\"waiting\", \"running\"], job.status)) {\n // x label\n labels.push(\n moment\n .utc(job.created)\n .local()\n .format(MOMENT.DATE_TIME_FORMAT)\n )\n\n // duration in seconds\n let duration = 0\n if (job.hasIn([\"stats\", \"statuses_history\"])) {\n const seconds = moment\n .duration(\n moment(job.getIn([\"stats\", \"statuses_history\", job.status])).diff(\n moment(job.getIn([\"stats\", \"statuses_history\", \"waiting\"]))\n )\n )\n .asSeconds()\n duration = Math.round(seconds)\n }\n durationData.push(duration)\n\n // sum of volume\n let volume = 0\n if (\n job.hasIn([\"stats\", \"data_volumes\", \"/in\"]) &&\n job.hasIn([\"stats\", \"data_volumes\", \"/out\"])\n ) {\n volume =\n job.getIn([\"stats\", \"data_volumes\", \"/in\"]) +\n job.getIn([\"stats\", \"data_volumes\", \"/out\"])\n }\n volumeData.push(volume)\n\n // color of points\n switch (job.status) {\n case \"finished\": {\n pointBackgroundColors.push(\"#3aa545\")\n break\n }\n case \"error\": {\n pointBackgroundColors.push(\"#ed382a\")\n break\n }\n case \"canceled\": {\n pointBackgroundColors.push(\"#494a4a\")\n break\n }\n case \"waiting\":\n case \"warning\": {\n pointBackgroundColors.push(\"#fabe53\")\n break\n }\n case \"running\": {\n pointBackgroundColors.push(\"#229ace\")\n break\n }\n default: {\n pointBackgroundColors.push(\"#999999\")\n break\n }\n }\n }\n }\n return {\n labels: labels,\n datasets: [\n {\n label: \"Duration\",\n borderColor: \"#8855DB\",\n backgroundColor: \"rgba(136,85,219, 0.5)\",\n fill: true,\n data: durationData,\n pointBackgroundColor: pointBackgroundColors,\n yAxisID: \"y-axis-1\",\n pointRadius: 4,\n pointHoverRadius: 5\n },\n {\n label: \"Data Volume\",\n borderColor: \"#5FC4BE\",\n backgroundColor: \"rgba(95,196,190, 0.5)\",\n fill: true,\n data: volumeData,\n pointBackgroundColor: pointBackgroundColors,\n yAxisID: \"y-axis-2\",\n pointRadius: 4,\n pointHoverRadius: 5\n }\n ]\n }\n }\n }\n\n render() {\n const chartData = this.constructChartData(this.props.jobs)\n if (!chartData) {\n return null\n }\n return \n }\n}\n\nJobsLineChart.propTypes = {\n jobs: PropTypes.instanceOf(List).isRequired\n}\n\nexport default JobsLineChart\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Link, withRouter } from \"react-router-dom\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { List, Record, Map } from \"immutable\"\nimport _isNil from \"lodash/isNil\"\nimport _includes from \"lodash/includes\"\nimport _noop from \"lodash/noop\"\nimport _get from \"lodash/get\"\nimport { Waypoint } from \"react-waypoint\"\n\n// ui components\nimport Paper from \"components/UI/elements/Paper\"\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Button from \"components/UI/elements/Button\"\nimport StatusElement from \"components/UI/elements/StatusElement\"\nimport IconButton from \"components/UI/elements/IconButton\"\nimport Duration from \"components/UI/elements/Duration\"\nimport ConfirmModal from \"components/UI/components/ConfirmModal\"\nimport JobsLineChart from \"components/UI/elements/JobsLineChart\"\nimport DateTimeWithTooltip from \"components/UI/elements/DateTimeWithTooltip\"\n\n// helpers\nimport { getRoutePath } from \"routes\"\nimport { formatBytes } from \"helpers/dataUnits.helper\"\nimport PendingPromise from \"helpers/pendingPromise.helper\"\nimport { hasWritePermission } from \"helpers/authenticatedUser.helper\"\nimport { goBack } from \"helpers/backButton.helper\"\nimport Username from \"helpers/Username.helper\"\nimport { capitalize } from \"helpers/string.helper\"\n\n// constants\nimport { INTERVAL, MODAL, TOAST } from \"sharedConstants\"\n\nconst JOB_LOADING_LIMIT = 20\n\nclass JobList extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n cancelModal: Map({\n open: false,\n jobId: null,\n isLoading: false\n })\n }\n\n this.pendingPromises = new PendingPromise()\n }\n\n componentDidMount() {\n const {\n listEntityJob,\n match: {\n params: { id, wid }\n }\n } = this.props\n\n if (wid) {\n listEntityJob(id, wid, 0, JOB_LOADING_LIMIT, 0).catch(_noop)\n } else {\n listEntityJob(id, 0, JOB_LOADING_LIMIT, 0).catch(_noop)\n }\n this.intervalId = setInterval(this.refreshLastEntityJob, INTERVAL.DAWG_WS_JOBLIST_REFRESH)\n }\n\n componentWillUnmount() {\n clearInterval(this.intervalId)\n this.pendingPromises.cancelAll()\n }\n\n refreshLastEntityJob = () => {\n const {\n refreshLastEntityJob,\n isLoading,\n match: {\n params: { id, wid }\n }\n } = this.props\n if (!isLoading) {\n if (wid) {\n refreshLastEntityJob(id, wid, 0).catch(_noop)\n } else {\n refreshLastEntityJob(id, 0).catch(_noop)\n }\n }\n }\n\n renderDataCell = (bytes, files) => {\n if (_isNil(bytes)) {\n return \"–\"\n }\n\n return (\n \n {formatBytes(bytes)}{\" \"}\n \n in {files} {files === 1 ? \"file\" : \"files\"}\n \n \n )\n }\n\n loadMoreJobs = () => {\n const {\n listEntityJob,\n selectionSettings,\n match: {\n params: { id, wid }\n }\n } = this.props\n\n if (wid) {\n listEntityJob(\n id,\n wid,\n selectionSettings.offset + selectionSettings.limit,\n selectionSettings.limit,\n 0\n ).catch(_noop)\n } else {\n listEntityJob(\n id,\n selectionSettings.offset + selectionSettings.limit,\n selectionSettings.limit,\n 0\n ).catch(_noop)\n }\n }\n\n renderWaypoint = () => {\n const { hasMoreJobs, isLoading } = this.props\n if (hasMoreJobs && !isLoading) {\n return \n }\n }\n\n confirmCancelModal = async () => {\n if (!this.state.cancelModal.get(\"isLoading\")) {\n const {\n cancelEntityJob,\n showToast,\n match: {\n params: { id, wid }\n }\n } = this.props\n const { cancelModal } = this.state\n\n this.setState(prevState => ({\n cancelModal: prevState.cancelModal.set(\"isLoading\", true)\n }))\n\n const entityId = wid ? wid : id\n const cancelPromise = this.pendingPromises.create(\n cancelEntityJob(entityId, cancelModal.get(\"jobId\"))\n )\n try {\n await cancelPromise.promise\n this.setState(prevState => ({\n cancelModal: prevState.cancelModal.set(\"open\", false)\n }))\n showToast(\"Activity is being cancelled.\", TOAST.TYPE.SUCCESS)\n } catch (err) {\n if (!_get(err, \"isCanceled\")) {\n this.setState(prevState => ({\n cancelModal: prevState.cancelModal.set(\"isLoading\", false)\n }))\n }\n } finally {\n this.pendingPromises.remove(cancelPromise)\n }\n }\n }\n\n toggleCancelModal = (jobId = null) => evt => {\n evt.preventDefault()\n this.setState(prevState => ({\n cancelModal: prevState.cancelModal\n .set(\"jobId\", jobId)\n .set(\"open\", !prevState.cancelModal.get(\"open\"))\n .set(\"isLoading\", false)\n }))\n }\n\n render() {\n const {\n jobs,\n usersAcl,\n history,\n entityName,\n match: {\n params: { id, wid }\n }\n } = this.props\n const { cancelModal } = this.state\n const isEditable = hasWritePermission(usersAcl)\n\n let backPath = entityName === \"workspace\" && !wid ? \"workspace.show\" : \"dawg.show\"\n return (\n
    \n {List.isList(jobs) && (\n \n \n
    \n \n Back\n \n

    {capitalize(entityName)} activity

    \n
    \n
    \n {jobs.size > 2 && (\n \n \n \n )}\n \n {jobs.size > 0 && (\n \n
    \n
    \n
    \n
     
    \n
    Status
    \n
    Duration
    \n
    Modified
    \n
    Data in
    \n
    Data out
    \n
    User
    \n
     
    \n
     
    \n
    \n
    \n
    \n {jobs.map(job => {\n return (\n \n
     
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n {this.renderDataCell(\n job.getIn([\"stats\", \"data_volumes\", \"/in\"]),\n job.getIn([\"stats\", \"files_count\", \"/in\"])\n )}\n
    \n
    \n {this.renderDataCell(\n job.getIn([\"stats\", \"data_volumes\", \"/out\"]),\n job.getIn([\"stats\", \"files_count\", \"/out\"])\n )}\n
    \n
    \n \n
    \n
    \n \n \n \n
    \n
     
    \n \n )\n })}\n
    \n
    \n {this.renderWaypoint()}\n
    \n )}\n {jobs.size === 0 && (\n

    \n The {entityName} doesn't have an activity history yet. Run the {entityName} at\n least once.\n

    \n )}\n
    \n \n
    \n )}\n
    \n )\n }\n}\n\nJobList.propTypes = {\n jobs: PropTypes.instanceOf(List),\n selectionSettings: PropTypes.instanceOf(Record),\n hasMoreJobs: PropTypes.bool.isRequired,\n usersAcl: PropTypes.instanceOf(Record),\n isLoading: PropTypes.bool.isRequired,\n listEntityJob: PropTypes.func.isRequired,\n refreshLastEntityJob: PropTypes.func.isRequired,\n cancelEntityJob: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired,\n entityName: PropTypes.string.isRequired\n}\n\nexport default withRouter(JobList)\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { connect } from \"react-redux\"\nimport { List, Record } from \"immutable\"\n\n// actions\nimport {\n listWorkspaceJob,\n refreshLastWorkspaceJob,\n cancelWorkspaceJob\n} from \"actions/workspaceJob.action\"\nimport { showToast } from \"actions/toast.action\"\n\n// selectors\nimport {\n getWorkspaceJobsData,\n getWorkspaceJobsSelectionSettings,\n haveWorkspaceJobsMoreItems,\n isWorkspaceJobsFetching\n} from \"selectors/workspaceJob.selector\"\nimport { getUsersWorkspaceAcl } from \"selectors/usersAcl.selector\"\n\nimport JobList from \"components/UI/DawgWsShared/JobList\"\n\nclass WorkspaceJobList extends PureComponent {\n render() {\n const {\n jobs,\n usersAcl,\n listWorkspaceJob,\n refreshLastWorkspaceJob,\n cancelWorkspaceJob,\n selectionSettings,\n hasMoreJobs,\n isLoading,\n showToast\n } = this.props\n\n return (\n \n )\n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n jobs: getWorkspaceJobsData(state),\n selectionSettings: getWorkspaceJobsSelectionSettings(state),\n hasMoreJobs: haveWorkspaceJobsMoreItems(state),\n isLoading: isWorkspaceJobsFetching(state),\n usersAcl: getUsersWorkspaceAcl(state, ownProps.match.params.id)\n }\n}\n\nWorkspaceJobList.propTypes = {\n jobs: PropTypes.instanceOf(List),\n selectionSettings: PropTypes.instanceOf(Record),\n hasMoreJobs: PropTypes.bool.isRequired,\n usersAcl: PropTypes.instanceOf(Record),\n isLoading: PropTypes.bool.isRequired,\n listWorkspaceJob: PropTypes.func.isRequired,\n refreshLastWorkspaceJob: PropTypes.func.isRequired,\n cancelWorkspaceJob: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired\n}\n\nexport default connect(mapStateToProps, {\n listWorkspaceJob,\n refreshLastWorkspaceJob,\n cancelWorkspaceJob,\n showToast\n})(WorkspaceJobList)\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport Gantt from \"5minute-frappe-gantt\"\nimport { List } from \"immutable\"\nimport { Link, withRouter } from \"react-router-dom\"\nimport moment from \"moment\"\nimport _includes from \"lodash/includes\"\nimport _toString from \"lodash/toString\"\nimport _keys from \"lodash/keys\"\nimport _get from \"lodash/get\"\nimport _join from \"lodash/join\"\nimport _pick from \"lodash/pick\"\nimport humanizeDuration from \"humanize-duration\"\n\n// helpers\nimport { shortenString } from \"helpers/string.helper\"\nimport { getRoutePath } from \"routes\"\nimport { getComponentIconSrc } from \"helpers/component.helper\"\n\nimport \"./JobsGanttChart.css\"\n\nconst DATE_TIME_FORMAT = \"YYYY-MM-DD HH:mm:ss\"\n\nconst shortEnglishHumanizer = humanizeDuration.humanizer({\n language: \"shortEn\",\n languages: {\n shortEn: {\n y: () => \"y\",\n mo: () => \"mo\",\n w: () => \"w\",\n d: () => \"d\",\n h: () => \"h\",\n m: () => \"m\",\n s: () => \"s\",\n ms: () => \"ms\"\n }\n },\n delimiter: \" \",\n spacer: \"\"\n})\n\nclass JobsGanttChart extends PureComponent {\n gantt = null\n metaKey = false\n\n componentDidMount() {\n const { rootEntityName } = this.props\n const selector = rootEntityName === \"dawg\" ? \"workspace\" : \"configuration\"\n const tasks = this.getTasksFromJobs()\n this.gantt = new Gantt(this.containerDOM, tasks, {\n on_click: task => {\n const { deleted } = task.entity\n const {\n match: {\n params: { id }\n },\n history\n } = this.props\n if (!deleted) {\n let path\n if (rootEntityName === \"workspace\") {\n path = getRoutePath(\"workspace.configuration.configurationJob.show\", {\n id,\n cid: task.entity.id,\n aid: task.job_id\n })\n } else {\n path = getRoutePath(\"workspace.workspaceJob.show\", {\n id: task.entity.id,\n aid: task.job_id\n })\n }\n if (this.metaKey) {\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location)\n window.open(publicUrl.origin + path, \"_blank\")\n } else {\n history.push({\n pathname: path,\n state: {\n previous: this.props.location.pathname\n }\n })\n }\n }\n },\n view_mode: \"Minute\",\n language: \"en\",\n date_format: DATE_TIME_FORMAT,\n header_height: 20,\n bar_height: 28,\n column_width: 305,\n is_editable: false,\n popup_trigger: \"mouseover\",\n min_columns_count: 3,\n width: 918,\n responsive: true,\n custom_popup_html: function(task) {\n let icon = _get(task, \"entity.component.icon\", null)\n if (!icon) {\n if (rootEntityName === \"dawg\") {\n icon = \"workspace.png\"\n } else {\n icon = \"dummy.png\"\n }\n }\n\n let overalDuration, runningDuration\n if (task.runningStart) {\n overalDuration = moment.duration(moment(task.end).diff(moment(task.start))).asSeconds()\n runningDuration = moment\n .duration(moment(task.end).diff(moment.utc(task.runningStart)))\n .asSeconds()\n }\n\n let div\n if (task.entity.deleted) {\n div =\n '
    ' +\n '\"icon\"' +\n '

    Deleted ' +\n selector +\n (task.runningStart\n ? '
    ' +\n shortEnglishHumanizer(runningDuration * 1000) +\n \" of \" +\n shortEnglishHumanizer(overalDuration * 1000) +\n \"\"\n : \"\") +\n \"

    \" +\n \"
    \"\n } else {\n div =\n '
    ' +\n '\"icon\"' +\n \"

    \" +\n _get(task, \"entity.component.name\", \"Workspace\") +\n (task.runningStart\n ? '
    ' +\n shortEnglishHumanizer(runningDuration * 1000) +\n \" of \" +\n shortEnglishHumanizer(overalDuration * 1000) +\n \"\"\n : \"\") +\n \"

    \" +\n \"
    \"\n }\n\n return div\n }\n })\n\n // command/ctrl key event handler\n window.addEventListener(\"keydown\", this.handleKeyDown, false)\n window.addEventListener(\"keyup\", this.handleKeyUp, false)\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"keyup\", this.handleKeyUp, false)\n window.removeEventListener(\"keydown\", this.handleKeyDown, false)\n }\n\n handleKeyUp = evt => {\n if (!evt.metaKey) {\n this.metaKey = false\n }\n }\n\n handleKeyDown = evt => {\n if (evt.metaKey) {\n this.metaKey = true\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.jobs !== this.props.jobs) {\n const tasks = this.getTasksFromJobs()\n this.gantt.refresh(tasks)\n }\n }\n\n getTasksFromJobs = () => {\n const { jobs, rootEntityName } = this.props\n const selector = rootEntityName === \"dawg\" ? \"workspace\" : \"configuration\"\n const tasks = jobs.map(job => {\n return {\n start: job.origin_created\n ? moment\n .utc(job.origin_created)\n .local()\n .format(DATE_TIME_FORMAT)\n : moment\n .utc(job.created)\n .local()\n .format(DATE_TIME_FORMAT),\n end: _includes([\"running\", \"waiting\"], job.status)\n ? moment()\n .local()\n .format(DATE_TIME_FORMAT)\n : moment\n .utc(job.created)\n .local()\n .format(DATE_TIME_FORMAT),\n name: job.status,\n id: _toString(job[selector].id),\n dependencies:\n rootEntityName === \"dawg\"\n ? _join(_get(job, \"workspace.input_settings.inputs\", []))\n : _join(_keys(_get(job, \"configuration.input_settings.inputs\", {}))),\n custom_class: `bar-${job.status}`,\n entity: _pick(job[selector], [\"id\", \"component\", \"deleted\"]),\n job_id: job.id,\n runningStart: _get(job.stats, \"statuses_history.running\", null)\n }\n })\n return tasks.toArray()\n }\n\n renderSvgBackground = () => {\n const { jobs } = this.props\n const height = 46 * jobs.size + 30\n return (\n \n \n {jobs.map((job, index) => (\n \n ))}\n \n \n )\n }\n\n render() {\n const { jobs, rootEntityName } = this.props\n\n const selector = rootEntityName === \"dawg\" ? \"workspace\" : \"configuration\"\n return (\n
    \n {this.renderSvgBackground()}\n
    \n

    \n Name (minute)\n

    \n {jobs\n .map(job => {\n let path\n if (rootEntityName === \"workspace\") {\n path = getRoutePath(\"workspace.configuration.show\", {\n id: job.configuration.workspace.id,\n cid: job.configuration.id\n })\n } else {\n path = getRoutePath(\"workspace.show\", {\n id: job.workspace.id\n })\n }\n return (\n
    \n {job[selector].deleted === 1 && (\n \n \n {shortenString(job[selector].name, 25)}\n \n )}\n {job[selector].deleted === 0 && (\n \n \n {shortenString(job[selector].name, 25)}\n \n )}\n
    \n )\n })\n .toArray()}\n
    \n
    (this.containerDOM = el)} className=\"conf-jobs-gantt-chart\" />\n
    \n )\n }\n}\n\nJobsGanttChart.propTypes = {\n jobs: PropTypes.instanceOf(List).isRequired,\n rootEntityName: PropTypes.string.isRequired\n}\n\nexport default withRouter(JobsGanttChart)\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { connect } from \"react-redux\"\nimport { Record } from \"immutable\"\nimport _isNil from \"lodash/isNil\"\nimport _noop from \"lodash/noop\"\nimport _get from \"lodash/get\"\nimport _includes from \"lodash/includes\"\nimport _findIndex from \"lodash/findIndex\"\nimport _map from \"lodash/map\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { List, Map } from \"immutable\"\nimport moment from \"moment\"\nimport { Waypoint } from \"react-waypoint\"\nimport Linkify from \"react-linkify\"\nimport { Link, withRouter } from \"react-router-dom\"\nimport ReactTooltip from \"react-tooltip\"\n\n// actions\nimport { showLoadingBar, hideLoadingBar } from \"actions/loadingBar.action\"\nimport { showToast } from \"actions/toast.action\"\n\n// ui components\nimport Paper from \"components/UI/elements/Paper\"\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport StatusElement from \"components/UI/elements/StatusElement\"\nimport Duration from \"components/UI/elements/Duration\"\nimport ConfirmModal from \"components/UI/components/ConfirmModal\"\nimport Button from \"components/UI/elements/Button\"\nimport JobsGanttChart from \"./JobsGanttChart\"\nimport DateTimeWithTooltip from \"components/UI/elements/DateTimeWithTooltip\"\n\n// models\nimport SelectionSettingsModel from \"models/selectionSettings.model\"\nimport { ConfigurationJobFull as ConfigurationJobModel } from \"models/configurationJob.model\"\nimport { WorkspaceJobFull as WorkspaceJobModel } from \"models/workspaceJob.model\"\n\n// helpers\nimport { getRoutePath } from \"routes\"\nimport AllResourceItemsFetcher from \"helpers/AllResourceItemsFetcher.helper\"\nimport { api } from \"api\"\nimport { formatBytes } from \"helpers/dataUnits.helper\"\nimport PendingPromise from \"helpers/pendingPromise.helper\"\nimport { hasWritePermission } from \"helpers/authenticatedUser.helper\"\nimport { goBackInHistory } from \"helpers/backButton.helper\"\nimport Username from \"helpers/Username.helper\"\nimport { capitalize } from \"helpers/string.helper\"\n\n// constants\nimport { MOMENT, LOG, INTERVAL, TOAST, MODAL } from \"sharedConstants\"\n\nimport \"./JobShow.css\"\n\nclass JobShow extends PureComponent {\n timelineFetcher = null\n childJobsFetcher = null\n\n constructor(props) {\n super(props)\n this.state = {\n timeline: null,\n logs: Map({\n isLoading: false,\n orderDir: \"DESC\",\n orderDirButtonEnabled: false\n }),\n childJobs: null,\n cancelModal: Map({\n open: false,\n isLoading: false\n })\n }\n\n const {\n entityName,\n match: {\n params: { id, aid }\n }\n } = props\n this.timelineFetcher = new AllResourceItemsFetcher()\n .setEndpointCall((offset, limit, loadFullStructure) =>\n entityName === \"workspace\"\n ? api().workspace.job.history.list(\n id,\n aid,\n offset,\n limit,\n loadFullStructure,\n \"id\",\n \"DESC\"\n )\n : api().dawg.job.history.list(id, aid, offset, limit, loadFullStructure, \"id\", \"DESC\")\n )\n .setDataPath(\"history_list\")\n .setLoadFullStructure(0)\n\n this.childJobsFetcher = new AllResourceItemsFetcher()\n .setEndpointCall((offset, limit, loadFullStructure) =>\n entityName === \"workspace\"\n ? api().workspace.job.configurationJob.list(\n id,\n aid,\n offset,\n limit,\n loadFullStructure,\n \"id\",\n \"ASC\",\n 1\n )\n : api().dawg.job.workspaceJob.list(\n id,\n aid,\n offset,\n limit,\n loadFullStructure,\n \"id\",\n \"ASC\",\n 1\n )\n )\n .setDataPath(entityName === \"workspace\" ? \"configuration_jobs\" : \"workspace_jobs\")\n .setLoadFullStructure(1)\n\n this.pendingPromises = new PendingPromise()\n }\n\n componentDidMount() {\n const {\n entity,\n entityName,\n entityJob,\n retrieveEntity,\n retrieveEntityJob,\n match: {\n params: { id, aid }\n }\n } = this.props\n\n if (_isNil(entity)) {\n retrieveEntity(id).catch(_noop)\n }\n\n if (_isNil(entityJob)) {\n retrieveEntityJob(id, aid, 0, true)\n .then(response => {\n if (\n _includes(\n [\"waiting\", \"running\"],\n _get(\n response,\n entityName === \"workspace\" ? \"value.workspace_job.status\" : \"value.dawg_job.status\"\n )\n )\n ) {\n this.intervalId = setInterval(this.refreshPageData, INTERVAL.DAWG_WS_JOB_REFRESH)\n } else {\n this.setState(prevState => ({\n logs: prevState.logs.set(\"orderDirButtonEnabled\", true)\n }))\n }\n })\n .catch(_noop)\n } else {\n if (_includes([\"waiting\", \"running\"], entityJob.status)) {\n this.intervalId = setInterval(this.refreshPageData, INTERVAL.DAWG_WS_JOB_REFRESH)\n } else {\n this.setState(prevState => ({\n logs: prevState.logs.set(\"orderDirButtonEnabled\", true)\n }))\n }\n }\n\n const timelinePromise = this.pendingPromises.create(this.fetchWholeTimeline(true))\n timelinePromise.promise\n .then(response => {\n this.setState({\n timeline: List(response)\n })\n this.pendingPromises.remove(timelinePromise)\n })\n .catch(() => {\n this.pendingPromises.remove(timelinePromise)\n })\n\n const childJobsPromise = this.pendingPromises.create(this.fetchEntityJobChildJobs(true))\n childJobsPromise.promise\n .then(response => {\n this.setState({\n childJobs: List(\n _map(response, job =>\n entityName === \"workspace\"\n ? new ConfigurationJobModel(job)\n : new WorkspaceJobModel(job)\n )\n )\n })\n this.pendingPromises.remove(childJobsPromise)\n })\n .catch(() => {\n this.pendingPromises.remove(childJobsPromise)\n })\n\n this.setState(prevState => ({\n logs: prevState.logs.set(\"isLoading\", true)\n }))\n const jobLogsPromise = this.pendingPromises.create(\n this.fetchEntityJobLogs(0, LOG.LOADING_LIMIT, true)\n )\n jobLogsPromise.promise\n .then(response => {\n const ret = entityName === \"workspace\" ? response.workspace_logs : response.dawg_logs\n this.setState(prevState => ({\n logs: prevState.logs\n .set(\"data\", List(ret))\n .set(\"selectionSettings\", new SelectionSettingsModel(response.selection_settings))\n .set(\"hasMoreItems\", ret.length === LOG.LOADING_LIMIT)\n .set(\"isLoading\", false)\n }))\n this.pendingPromises.remove(jobLogsPromise)\n })\n .catch(() => {\n this.pendingPromises.remove(jobLogsPromise)\n })\n }\n\n componentWillUnmount() {\n clearInterval(this.intervalId)\n this.pendingPromises.cancelAll()\n }\n\n fetchWholeTimeline = async (showLoading = false) => {\n const { showLoadingBar, hideLoadingBar } = this.props\n if (showLoading) {\n showLoadingBar()\n }\n const data = await this.timelineFetcher.run()\n if (showLoading) {\n hideLoadingBar()\n }\n return data\n }\n\n fetchEntityJobChildJobs = async (showLoading = false) => {\n const { showLoadingBar, hideLoadingBar } = this.props\n if (showLoading) {\n showLoadingBar()\n }\n const data = await this.childJobsFetcher.run()\n if (showLoading) {\n hideLoadingBar()\n }\n return data\n }\n\n fetchEntityJobLogs = async (offset, limit, showLoading = false, orderDir = null) => {\n const {\n showLoadingBar,\n hideLoadingBar,\n entityName,\n match: {\n params: { id, aid }\n }\n } = this.props\n const { logs } = this.state\n if (showLoading) {\n showLoadingBar()\n }\n\n let response\n if (entityName === \"workspace\") {\n response = await api()\n .workspace.job.log.list(\n id,\n aid,\n offset,\n limit,\n 0,\n \"id\",\n orderDir ? orderDir : logs.get(\"orderDir\")\n )\n .catch(_noop)\n } else {\n response = await api()\n .dawg.job.log.list(\n id,\n aid,\n offset,\n limit,\n 0,\n \"id\",\n orderDir ? orderDir : logs.get(\"orderDir\")\n )\n .catch(_noop)\n }\n if (showLoading) {\n hideLoadingBar()\n }\n return response\n }\n\n refreshPageData = () => {\n const {\n retrieveEntityJob,\n entityName,\n match: {\n params: { id, aid }\n }\n } = this.props\n\n if (!this.state.logs.get(\"isLoading\")) {\n retrieveEntityJob(id, aid, 0, false)\n .then(response => {\n const retJob =\n entityName === \"workspace\"\n ? _get(response, \"payload.workspace_job\")\n : _get(response, \"payload.dawg_job\")\n const timelinePromise = this.pendingPromises.create(this.fetchWholeTimeline(false))\n timelinePromise.promise\n .then(response => {\n this.setState({\n timeline: List(response)\n })\n this.pendingPromises.remove(timelinePromise)\n })\n .catch(() => {\n this.pendingPromises.remove(timelinePromise)\n })\n\n const childJobsPromise = this.pendingPromises.create(this.fetchEntityJobChildJobs(false))\n childJobsPromise.promise\n .then(response => {\n this.setState({\n childJobs: List(\n _map(response, job =>\n entityName === \"workspace\"\n ? new ConfigurationJobModel(job)\n : new WorkspaceJobModel(job)\n )\n )\n })\n this.pendingPromises.remove(childJobsPromise)\n })\n .catch(() => {\n this.pendingPromises.remove(childJobsPromise)\n })\n\n this.refreshLogsData()\n\n if (!_includes([\"waiting\", \"running\"], _get(retJob, \"status\"))) {\n clearInterval(this.intervalId)\n this.setState(prevState => ({\n logs: prevState.logs.set(\"orderDirButtonEnabled\", true)\n }))\n return\n }\n })\n .catch(_noop)\n }\n }\n\n refreshLogsData = () => {\n const { entityName } = this.props\n if (!this.state.logs.get(\"isLoading\")) {\n this.setState(prevState => ({\n logs: prevState.logs.set(\"isLoading\")\n }))\n }\n\n const jobLogsPromise = this.pendingPromises.create(this.fetchEntityJobLogs(0, 10, false))\n jobLogsPromise.promise\n .then(response => {\n const retLogs = entityName === \"workspace\" ? response.workspace_logs : response.dawg_logs\n const lastLogItem = this.state.logs.getIn([\"data\", 0])\n if (lastLogItem) {\n const index = _findIndex(retLogs, {\n id: lastLogItem.id\n })\n if (index === -1) {\n this.setState(prevState => ({\n logs: prevState.logs\n .set(\"data\", prevState.logs.get(\"data\").unshift(...retLogs))\n .set(\n \"selectionSettings\",\n prevState.logs\n .get(\"selectionSettings\")\n .set(\n \"offset\",\n prevState.logs.getIn([\"selectionSettings\", \"offset\"]) + retLogs.length\n )\n )\n .set(\"isLoading\", false)\n }))\n } else {\n this.setState(prevState => ({\n logs: prevState.logs\n .set(\"data\", prevState.logs.get(\"data\").unshift(...retLogs.slice(0, index)))\n .set(\n \"selectionSettings\",\n prevState.logs\n .get(\"selectionSettings\")\n .set(\"offset\", prevState.logs.getIn([\"selectionSettings\", \"offset\"]) + index)\n )\n .set(\"isLoading\", false)\n }))\n }\n } else {\n this.setState(prevState => ({\n logs: prevState.logs\n .set(\"data\", List(retLogs))\n .set(\n \"selectionSettings\",\n prevState.logs\n .get(\"selectionSettings\")\n .set(\n \"offset\",\n prevState.logs.getIn([\"selectionSettings\", \"offset\"]) + retLogs.length\n )\n )\n .set(\"isLoading\", false)\n }))\n }\n this.pendingPromises.remove(jobLogsPromise)\n })\n .catch(err => {\n if (!_get(err, \"isCanceled\")) {\n clearInterval(this.intervalId)\n this.props.showToast(\n \"Auto-refresh failed because of network connection, please refresh the page.\",\n TOAST.TYPE.ERROR\n )\n }\n this.pendingPromises.remove(jobLogsPromise)\n })\n }\n\n loadMoreLogs = () => {\n const { entityName } = this.props\n if (!this.state.logs.get(\"isLoading\")) {\n this.setState(prevState => ({\n logs: prevState.logs.set(\"isLoading\", true)\n }))\n\n const { logs } = this.state\n const jobLogsPromise = this.pendingPromises.create(\n this.fetchEntityJobLogs(\n logs.getIn([\"selectionSettings\", \"offset\"]) + logs.getIn([\"selectionSettings\", \"limit\"]),\n LOG.LOADING_LIMIT,\n true\n )\n )\n jobLogsPromise.promise\n .then(response => {\n const retLogs = entityName === \"workspace\" ? response.workspace_logs : response.dawg_logs\n const lastLogItem = logs.get(\"data\").last()\n const index = _findIndex(retLogs, {\n id: lastLogItem.id\n })\n\n this.setState(prevState => ({\n logs: prevState.logs\n .set(\n \"data\",\n prevState.logs.get(\"data\").concat(retLogs.slice(index + 1, retLogs.length))\n )\n .set(\n \"selectionSettings\",\n new SelectionSettingsModel({\n ...response.selection_settings,\n offset: response.selection_settings.offset + index + 1\n })\n )\n .set(\"hasMoreItems\", retLogs.length === LOG.LOADING_LIMIT)\n .set(\"isLoading\", false)\n }))\n this.pendingPromises.remove(jobLogsPromise)\n })\n .catch(() => {\n this.pendingPromises.remove(jobLogsPromise)\n })\n }\n }\n\n renderWaypoint = () => {\n const { logs } = this.state\n\n if (logs.get(\"hasMoreItems\") && !logs.get(\"isLoading\")) {\n return \n }\n }\n\n toggleCancelModal = () => {\n this.setState(prevState => ({\n cancelModal: prevState.cancelModal\n .set(\"open\", !prevState.cancelModal.get(\"open\"))\n .set(\"isLoading\", false)\n }))\n }\n\n confirmCancelModal = () => {\n if (!this.state.cancelModal.get(\"isLoading\")) {\n const {\n cancelEntityJob,\n showToast,\n match: {\n params: { id, aid }\n }\n } = this.props\n\n this.setState(prevState => ({\n cancelModal: prevState.cancelModal.set(\"isLoading\", true)\n }))\n\n const cancelPromise = this.pendingPromises.create(cancelEntityJob(id, aid))\n cancelPromise.promise\n .then(() => {\n this.setState(prevState => ({\n cancelModal: prevState.cancelModal.set(\"open\", false).set(\"isLoading\", false)\n }))\n showToast(\"Activity is being been cancelled.\", TOAST.TYPE.SUCCESS)\n this.pendingPromises.remove(cancelPromise)\n })\n .catch(err => {\n if (!_get(err, \"isCanceled\")) {\n this.setState(prevState => ({\n cancelModal: prevState.cancelModal.set(\"isLoading\", false)\n }))\n }\n this.pendingPromises.remove(cancelPromise)\n })\n }\n }\n\n reverseLogsOrder = () => {\n const { entityName } = this.props\n const { logs } = this.state\n this.setState({\n logs: logs.set(\"isLoading\", true)\n })\n const jobLogsPromise = this.pendingPromises.create(\n this.fetchEntityJobLogs(\n 0,\n LOG.LOADING_LIMIT,\n true,\n logs.get(\"orderDir\") === \"ASC\" ? \"DESC\" : \"ASC\"\n )\n )\n jobLogsPromise.promise\n .then(response => {\n const retLogs = entityName === \"workspace\" ? response.workspace_logs : response.dawg_logs\n this.setState(prevState => ({\n logs: prevState.logs\n .set(\"data\", List(retLogs))\n .set(\"selectionSettings\", new SelectionSettingsModel(response.selection_settings))\n .set(\"isLoading\", false)\n .set(\"hasMoreItems\", retLogs.length === LOG.LOADING_LIMIT)\n .set(\"orderDir\", prevState.logs.get(\"orderDir\") === \"ASC\" ? \"DESC\" : \"ASC\")\n }))\n this.pendingPromises.remove(jobLogsPromise)\n })\n .catch(() => {\n this.pendingPromises.remove(jobLogsPromise)\n })\n }\n\n render() {\n const {\n entityJob,\n entityName,\n usersAcl,\n history,\n match: {\n params: { id, aid }\n }\n } = this.props\n const { timeline, logs, cancelModal, childJobs } = this.state\n\n const stats = entityJob ? entityJob.stats : null\n const isEditable = hasWritePermission(usersAcl)\n\n return (\n
    \n
    \n
    \n \n
    \n \n Back\n \n

    Timeline

    \n
    \n \n Cancel\n \n
    \n {List.isList(timeline) && (\n \n
    \n
    \n
    \n
     
    \n
    Status
    \n
    Modified
    \n
    User
    \n
     
    \n
    \n
    \n
    \n {timeline.map(historyItem => (\n \n
     
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
     
    \n \n ))}\n
    \n
    \n
    \n )}\n
    \n
    \n \n

    Stats

    \n
    \n {entityJob && !_isNil(stats) && (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    Data volumes\n In: {formatBytes(stats.getIn([\"data_volumes\", \"/in\"]))}\n \n Out: {formatBytes(stats.getIn([\"data_volumes\", \"/out\"]))}\n
    Files count\n In: {stats.getIn([\"files_count\", \"/in\"])}\n \n Out: {stats.getIn([\"files_count\", \"/out\"])}\n
    Duration\n \n
    \n
    \n )}\n
    \n
    \n \n

    {entityName === \"workspace\" ? \"Configuration\" : \"Workspace\"} Jobs

    \n
    \n {List.isList(childJobs) && childJobs.size > 0 && (\n \n \n \n )}\n \n \n \n Reverse order\n \n {!logs.get(\"orderDirButtonEnabled\") && (\n \n Logs order can't be reversed while job is still running.\n \n )}\n \n \n {List.isList(logs.get(\"data\")) && logs.get(\"data\").size > 0 && (\n \n \n \n \n \n \n \n \n \n \n \n {logs.get(\"data\").map(row => (\n \n \n \n \n \n ))}\n \n
    LevelTimeText
    {row.level}\n {moment\n .utc(row.created)\n .local()\n .format(MOMENT.DATE_TIME_WITH_SECONDS)}\n \n {row.text}\n
    \n {this.renderWaypoint()}\n
    \n
    \n )}\n \n
    \n )\n }\n}\n\nJobShow.propTypes = {\n entityName: PropTypes.string.isRequired,\n entity: PropTypes.instanceOf(Record),\n entityJob: PropTypes.instanceOf(Record),\n retrieveEntity: PropTypes.func.isRequired,\n retrieveEntityJob: PropTypes.func.isRequired,\n cancelEntityJob: PropTypes.func.isRequired,\n usersAcl: PropTypes.instanceOf(Record)\n}\n\nexport default withRouter(connect(null, { showLoadingBar, hideLoadingBar, showToast })(JobShow))\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { Record } from \"immutable\"\n\n// actions\nimport { retrieveWorkspace } from \"actions/workspace.action\"\nimport { retrieveWorkspaceJob, cancelWorkspaceJob } from \"actions/workspaceJob.action\"\n\n// selectors\nimport { getWorkspaceRecord } from \"selectors/workspace.selector\"\nimport { getWorkspaceJobData } from \"selectors/workspaceJob.selector\"\nimport { getUsersWorkspaceAcl } from \"selectors/usersAcl.selector\"\n\n// ui components\nimport JobDetail from \"components/UI/DawgWsShared/JobDetail\"\n\nclass WorkspaceJobShow extends PureComponent {\n render() {\n const {\n workspace,\n workspaceJob,\n usersAcl,\n retrieveWorkspace,\n retrieveWorkspaceJob,\n cancelWorkspaceJob\n } = this.props\n return (\n \n )\n }\n}\n\nWorkspaceJobShow.propTypes = {\n workspace: PropTypes.instanceOf(Record),\n workspaceJob: PropTypes.instanceOf(Record),\n usersAcl: PropTypes.instanceOf(Record),\n retrieveWorkspace: PropTypes.func.isRequired,\n retrieveWorkspaceJob: PropTypes.func.isRequired,\n cancelWorkspaceJob: PropTypes.func.isRequired\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id, aid }\n }\n } = ownProps\n return {\n workspace: getWorkspaceRecord(state, id),\n workspaceJob: getWorkspaceJobData(state, aid),\n usersAcl: getUsersWorkspaceAcl(state, id)\n }\n}\n\nexport default connect(mapStateToProps, {\n retrieveWorkspace,\n retrieveWorkspaceJob,\n cancelWorkspaceJob\n})(WorkspaceJobShow)\n","import React, { PureComponent } from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport _get from \"lodash/get\"\nimport moment from \"moment\"\nimport TimeAgo from \"react-timeago\"\n\n// helpers, contants\nimport { goBackInHistory } from \"helpers/backButton.helper\"\nimport { getRoutePath } from \"routes\"\nimport PendingPromise from \"helpers/pendingPromise.helper\"\nimport { api } from \"api\"\nimport Username from \"helpers/Username.helper\"\n\n// ui components\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Paper from \"components/UI/elements/Paper\"\nimport Button from \"components/UI/elements/Button\"\nimport StatusElement from \"components/UI/elements/StatusElement\"\n\nclass WorkspaceJobHistory extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n historyItem: _get(this.props, \"location.state.historyItem\", null)\n }\n\n this.pendingPromises = new PendingPromise()\n }\n\n componentDidMount() {\n const {\n history,\n location,\n match: {\n params: { id, aid, hid }\n }\n } = this.props\n\n if (!this.state.historyItem) {\n const historyItemRequest = this.pendingPromises.create(\n api().workspace.job.history.retrieve(id, aid, hid)\n )\n historyItemRequest.promise\n .then(response => {\n this.setState({\n historyItem: response.history\n })\n this.pendingPromises.remove(historyItemRequest)\n })\n .catch(() => {\n this.pendingPromises.remove(historyItemRequest)\n })\n } else {\n // erase state, otherwise page reload will not re-fetch activity detail history\n history.replace({\n pathname: location.path,\n state: {\n ...this.props.location.state,\n historyItem: null\n }\n })\n }\n }\n\n componentWillUnmount() {\n this.pendingPromises.cancelAll()\n }\n\n render() {\n const {\n history,\n match: {\n params: { id, aid }\n }\n } = this.props\n const { historyItem } = this.state\n\n return (\n
    \n {historyItem && (\n \n \n
    \n \n Back\n \n

    Activity detail history

    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    StatusUserModified
    \n \n \n \n \n \n
    \n

    Settings

    \n
    \n
    {JSON.stringify(historyItem.workspace_job.settings, null, 2)}
    \n
    \n

    Stats

    \n
    \n
    {JSON.stringify(historyItem.workspace_job.stats, null, 2)}
    \n
    \n
    \n
    \n )}\n
    \n )\n }\n}\n\nexport default WorkspaceJobHistory\n","import _toInteger from \"lodash/toInteger\"\n\nexport const getWorkspaceHistoryList = state => state.workspaceHistory.get(\"data\")\n\nexport const getWorkspaceHistorySelectionSettings = state =>\n state.workspaceHistory.get(\"selectionSettings\")\n\nexport const hasWorkspaceHistoryMoreItems = state => state.workspaceHistory.get(\"hasMoreItems\")\n\nexport const getWorkspaceHistoryItem = (state, historyItemId) => {\n if (historyItemId === \"0\") {\n return state.workspaceHistory.get(\"data\").find(historyItem => historyItem.id === null)\n } else {\n return state.workspaceHistory\n .get(\"data\")\n .find(historyItem => historyItem.id === _toInteger(historyItemId))\n }\n}\n\nexport const isWorkspaceHistoryFulfilled = state => state.workspaceHistory.get(\"isFulfilled\")\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Link } from \"react-router-dom\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { List, Record, Map } from \"immutable\"\nimport _noop from \"lodash/noop\"\nimport { Waypoint } from \"react-waypoint\"\nimport { withRouter } from \"react-router-dom\"\n\n// ui components\nimport Paper from \"components/UI/elements/Paper\"\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Button from \"components/UI/elements/Button\"\nimport IconButton from \"components/UI/elements/IconButton\"\nimport ConfirmModal from \"components/UI/components/ConfirmModal\"\nimport DateTimeWithTooltip from \"components/UI/elements/DateTimeWithTooltip\"\n\n// helpers\nimport { getRoutePath } from \"routes\"\nimport PendingPromise from \"helpers/pendingPromise.helper\"\nimport { hasWritePermission } from \"helpers/authenticatedUser.helper\"\nimport { goBack } from \"helpers/backButton.helper\"\nimport Username from \"helpers/Username.helper\"\nimport { capitalize } from \"helpers/string.helper\"\n\n// constants\nimport { MODAL, TOAST } from \"sharedConstants\"\n\nconst LOADING_LIMIT = 20\n\nclass EntityHistoryList extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n confirmModal: Map({\n open: false,\n historyId: null,\n isLoading: false\n })\n }\n\n this.pendingPromises = new PendingPromise()\n }\n\n componentDidMount() {\n const {\n listEntityHistory,\n match: {\n params: { id }\n }\n } = this.props\n listEntityHistory(id, 0, LOADING_LIMIT, 0).catch(_noop)\n }\n\n componentWillUnmount() {\n this.pendingPromises.cancelAll()\n }\n\n loadMoreHistoryItems = () => {\n const {\n listEntityHistory,\n selectionSettings,\n match: {\n params: { id }\n }\n } = this.props\n\n listEntityHistory(\n id,\n selectionSettings.offset + selectionSettings.limit,\n selectionSettings.limit,\n 0\n ).catch(_noop)\n }\n\n renderWaypoint = () => {\n const { hasMoreHistoryItems } = this.props\n if (hasMoreHistoryItems) {\n return \n }\n }\n\n confirmEntityRevert = () => {\n if (!this.state.confirmModal.get(\"isLoading\")) {\n const {\n revertEntityTo,\n showToast,\n entityName,\n match: {\n params: { id }\n }\n } = this.props\n const { confirmModal } = this.state\n\n this.setState(prevState => ({\n confirmModal: prevState.confirmModal.set(\"isLoading\", true)\n }))\n\n const revertToPromise = this.pendingPromises.create(\n revertEntityTo(id, confirmModal.get(\"historyId\"), 0, true)\n )\n revertToPromise.promise\n .then(() => {\n this.setState(prevState => ({\n confirmModal: prevState.confirmModal.set(\"open\", false)\n }))\n showToast(`${capitalize(entityName)} has been reverted.`, TOAST.TYPE.SUCCESS)\n this.pendingPromises.remove(revertToPromise)\n })\n .catch(() => {\n this.pendingPromises.remove(revertToPromise)\n })\n }\n }\n\n toggleConfirmModal = (historyId = null) => evt => {\n evt.preventDefault()\n this.setState(prevState => ({\n confirmModal: prevState.confirmModal\n .set(\"historyId\", historyId)\n .set(\"open\", !prevState.confirmModal.get(\"open\"))\n .set(\"isLoading\", false)\n }))\n }\n\n render() {\n const {\n historyList,\n isHistoryListFulfilled,\n usersAcl,\n history,\n entityName,\n getEntityChangedKeys,\n match: {\n params: { id, cid }\n }\n } = this.props\n const { confirmModal } = this.state\n const isEditable = hasWritePermission(usersAcl)\n\n let backPath,\n nextPath,\n pathParams = {}\n if (entityName === \"workspace\") {\n backPath = \"workspace.show\"\n nextPath = \"workspace.workspaceHistory.show\"\n pathParams = { id }\n } else if (entityName === \"configuration\") {\n backPath = \"workspace.configuration.show\"\n nextPath = \"workspace.configuration.configurationHistory.list\"\n pathParams = { id, cid }\n } else {\n backPath = \"dawg.show\"\n nextPath = \"dawg.dawgHistory.show\"\n pathParams = { id }\n }\n\n return (\n
    \n {isHistoryListFulfilled && List.isList(historyList) && (\n \n \n
    \n \n Back\n \n

    {capitalize(entityName)} Version History

    \n
    \n
    \n \n {historyList.size > 0 && (\n \n
    \n
    \n
    \n
     
    \n
    User
    \n
    Modified
    \n
    Changed
    \n
     
    \n
     
    \n
    \n
    \n
    \n {historyList.map(historyItem => {\n return (\n \n
     
    \n
    \n \n
    \n
    \n \n
    \n
    \n {getEntityChangedKeys(\n historyItem.get(entityName),\n historyItem.getIn([\"previous_history\", entityName], Map())\n ).join(\", \")}\n
    \n
    \n \n \n \n
    \n
     
    \n \n )\n })}\n
    \n
    \n {this.renderWaypoint()}\n
    \n )}\n
    \n \n
    \n )}\n
    \n )\n }\n}\n\nEntityHistoryList.propTypes = {\n historyList: PropTypes.instanceOf(List).isRequired,\n isHistoryListFulfilled: PropTypes.bool.isRequired,\n selectionSettings: PropTypes.instanceOf(Record).isRequired,\n hasMoreHistoryItems: PropTypes.bool.isRequired,\n usersAcl: PropTypes.instanceOf(Record),\n listEntityHistory: PropTypes.func.isRequired,\n revertEntityTo: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired,\n getEntityChangedKeys: PropTypes.func.isRequired,\n entityName: PropTypes.string.isRequired\n}\n\nexport default withRouter(EntityHistoryList)\n","import { Map, List } from \"immutable\"\n\nconst getChangedKeys = (left, right, omitKeys) => {\n let diffKeys = []\n let it = left.keys()\n let key = it.next()\n\n while (!key.done) {\n if (!omitKeys.includes(key.value)) {\n const value = left.get(key.value)\n if (Map.isMap(value) || List.isList(value)) {\n if (!value.equals(right.get(key.value))) {\n diffKeys.push(key.value)\n }\n } else {\n if (value !== right.get(key.value)) {\n diffKeys.push(key.value)\n }\n }\n }\n key = it.next()\n }\n return diffKeys\n}\n\nexport const getDawgChangedKeys = (left, right) => {\n return getChangedKeys(left, right, [\n \"id\",\n \"user\",\n \"frontend_settings\",\n \"last_run\",\n \"last_run_duration\",\n \"author\",\n \"created\"\n ])\n}\n\nexport const getWorkspaceChangedKeys = (left, right) => {\n return getChangedKeys(left, right, [\"created\", \"frontend_settings\", \"last_run\", \"id\", \"user_id\"])\n}\n\nexport const getConfigurationChangedKeys = (left, right) => {\n return getChangedKeys(left, right, [\n \"created\",\n \"frontend_settings\",\n \"workspace_id\",\n \"id\",\n \"component_id\",\n \"user_id\"\n ])\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { connect } from \"react-redux\"\nimport { List, Record } from \"immutable\"\n\n// actions\nimport { listWorkspaceHistory, revertWorkspaceTo } from \"actions/workspaceHistory.action\"\nimport { showToast } from \"actions/toast.action\"\n\n// selectors\nimport {\n getWorkspaceHistoryList,\n getWorkspaceHistorySelectionSettings,\n hasWorkspaceHistoryMoreItems,\n isWorkspaceHistoryFulfilled\n} from \"selectors/workspaceHistory.selector\"\nimport { getUsersWorkspaceAcl } from \"selectors/usersAcl.selector\"\n\nimport EntityHistoryList from \"components/UI/DawgWsShared/EntityHistoryList\"\n\n// helpers\nimport { getWorkspaceChangedKeys } from \"helpers/objectChanges.helper\"\n\nclass WorkspaceHistoryList extends PureComponent {\n render() {\n const {\n historyList,\n selectionSettings,\n hasMoreHistoryItems,\n usersAcl,\n isHistoryListFulfilled,\n listWorkspaceHistory,\n revertWorkspaceTo,\n showToast\n } = this.props\n\n return (\n \n )\n }\n}\n\nWorkspaceHistoryList.propTypes = {\n historyList: PropTypes.instanceOf(List).isRequired,\n isHistoryListFulfilled: PropTypes.bool.isRequired,\n selectionSettings: PropTypes.instanceOf(Record).isRequired,\n hasMoreHistoryItems: PropTypes.bool.isRequired,\n usersAcl: PropTypes.instanceOf(Record),\n listWorkspaceHistory: PropTypes.func.isRequired,\n revertWorkspaceTo: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired\n}\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n historyList: getWorkspaceHistoryList(state),\n selectionSettings: getWorkspaceHistorySelectionSettings(state),\n hasMoreHistoryItems: hasWorkspaceHistoryMoreItems(state),\n usersAcl: getUsersWorkspaceAcl(state, ownProps.match.params.id),\n isHistoryListFulfilled: isWorkspaceHistoryFulfilled(state)\n }\n}\n\nexport default connect(mapStateToProps, { listWorkspaceHistory, revertWorkspaceTo, showToast })(\n WorkspaceHistoryList\n)\n","import React, { PureComponent } from \"react\"\nimport { withRouter } from \"react-router-dom\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport _noop from \"lodash/noop\"\nimport moment from \"moment\"\nimport { Record, Map } from \"immutable\"\nimport TimeAgo from \"react-timeago\"\nimport ReactDiffViewer from \"react-diff-viewer\"\n\n// helpers, constants\nimport { getRoutePath } from \"routes\"\nimport { goBack } from \"helpers/backButton.helper\"\nimport { hasWritePermission } from \"helpers/authenticatedUser.helper\"\nimport PendingPromise from \"helpers/pendingPromise.helper\"\nimport { MODAL, TOAST } from \"sharedConstants\"\nimport { capitalize } from \"helpers/string.helper\"\n\n// ui components\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Button from \"components/UI/elements/Button\"\nimport Paper from \"components/UI/elements/Paper\"\nimport ConfirmModal from \"components/UI/components/ConfirmModal\"\n\n// helpers\nimport Username from \"helpers/Username.helper\"\n\nclass EntityHistoryDetail extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n confirmModal: Map({\n open: false,\n isLoading: false\n })\n }\n\n this.pendingPromises = new PendingPromise()\n }\n\n componentDidMount() {\n const {\n historyItem,\n retrieveEntityHistoryItem,\n match: {\n params: { id, hid }\n }\n } = this.props\n\n if (!historyItem) {\n retrieveEntityHistoryItem(id, hid).catch(_noop)\n }\n }\n\n confirmEntityRevert = () => {\n if (!this.state.confirmModal.get(\"isLoading\")) {\n const {\n revertEntityTo,\n showToast,\n entityName,\n match: {\n params: { id, hid }\n }\n } = this.props\n\n this.setState(prevState => ({\n confirmModal: prevState.confirmModal.set(\"isLoading\", true)\n }))\n\n const revertToPromise = this.pendingPromises.create(revertEntityTo(id, hid))\n revertToPromise.promise\n .then(() => {\n this.setState(prevState => ({\n confirmModal: prevState.confirmModal.set(\"open\", false)\n }))\n showToast(\n `${entityName === \"dawg\" ? \"DAWG\" : capitalize(entityName)} has been reverted.`,\n TOAST.TYPE.SUCCESS\n )\n this.pendingPromises.remove(revertToPromise)\n })\n .catch(() => {\n this.pendingPromises.remove(revertToPromise)\n })\n }\n }\n\n toggleConfirmModal = () => {\n this.setState(prevState => ({\n confirmModal: prevState.confirmModal\n .set(\"open\", !prevState.confirmModal.get(\"open\"))\n .set(\"isLoading\", false)\n }))\n }\n\n render() {\n const {\n history,\n historyItem,\n usersAcl,\n getEntityChangedKeys,\n entityName,\n match: {\n params: { id }\n }\n } = this.props\n const { confirmModal } = this.state\n const isEditable = hasWritePermission(usersAcl)\n const pathname =\n entityName === \"workspace\" ? \"workspace.workspaceHistory.list\" : \"dawg.dawgHistory.list\"\n\n return (\n
    \n {historyItem && (\n \n \n
    \n \n Back\n \n

    {capitalize(entityName)} Version History Detail

    \n
    \n \n Revert\n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    ChangesUserModified
    \n {getEntityChangedKeys(\n historyItem.get(entityName),\n historyItem.getIn([\"previous_history\", entityName], Map())\n ).join(\", \")}\n \n \n \n \n
    \n
    \n \n
    \n
    \n \n
    \n )}\n
    \n )\n }\n}\n\nEntityHistoryDetail.propTypes = {\n usersAcl: PropTypes.instanceOf(Record),\n historyItem: PropTypes.instanceOf(Record),\n revertEntityTo: PropTypes.func.isRequired,\n retrieveEntityHistoryItem: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired,\n getEntityChangedKeys: PropTypes.func.isRequired,\n entityName: PropTypes.string.isRequired\n}\n\nexport default withRouter(EntityHistoryDetail)\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { connect } from \"react-redux\"\nimport { Record } from \"immutable\"\n\n// selectors\nimport { getWorkspaceHistoryItem } from \"selectors/workspaceHistory.selector\"\nimport { getUsersWorkspaceAcl } from \"selectors/usersAcl.selector\"\n\n// actions\nimport { retrieveWorkspaceHistoryItem, revertWorkspaceTo } from \"actions/workspaceHistory.action\"\nimport { showToast } from \"actions/toast.action\"\n\nimport EntityHistoryDetail from \"components/UI/DawgWsShared/EntityHistoryDetail\"\nimport { getWorkspaceChangedKeys } from \"helpers/objectChanges.helper.js\"\n\nclass WorkspaceHistoryDetail extends PureComponent {\n render() {\n const {\n historyItem,\n usersAcl,\n retrieveWorkspaceHistoryItem,\n revertWorkspaceTo,\n showToast\n } = this.props\n\n return (\n \n )\n }\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n historyItem: getWorkspaceHistoryItem(state, ownProps.match.params.hid),\n usersAcl: getUsersWorkspaceAcl(state, ownProps.match.params.id)\n})\n\nWorkspaceHistoryDetail.propTypes = {\n usersAcl: PropTypes.instanceOf(Record),\n historyItem: PropTypes.instanceOf(Record),\n revertWorkspaceTo: PropTypes.func.isRequired,\n retrieveWorkspaceHistoryItem: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired\n}\n\nexport default connect(mapStateToProps, {\n revertWorkspaceTo,\n retrieveWorkspaceHistoryItem,\n showToast\n})(WorkspaceHistoryDetail)\n","import _get from \"lodash/get\"\nimport { api } from \"api\"\nimport { DAWG } from \"sharedConstants\"\n\nexport const runDawgJob = (dawgId, loadFullStructure = 0) => async dispatch =>\n dispatch({\n type: DAWG.JOB.ACTION.RUN,\n payload: {\n promise: (async () => await api().dawg.job.run(dawgId, loadFullStructure))()\n }\n })\n\nexport const listDawgJob = (dawgId, offset, limit, loadFullStructure = 0) => async dispatch =>\n dispatch({\n type: DAWG.JOB.ACTION.LIST,\n payload: {\n promise: (async () => await api().dawg.job.list(dawgId, offset, limit, loadFullStructure))()\n }\n })\n\nexport const refreshLastDawgJob = (dawgId, loadFullStructure = 0) => async dispatch =>\n dispatch({\n type: DAWG.JOB.ACTION.REFRESH_LAST,\n payload: {\n dawg_job: _get(\n await api().dawg.job.list(dawgId, 0, 1, loadFullStructure),\n \"dawg_jobs[0]\",\n null\n )\n }\n })\n\nexport const clearCachedDawgJobs = () => dispatch =>\n dispatch({\n type: DAWG.JOB.ACTION.CLEAR_CACHE,\n payload: {}\n })\n\nexport const cancelDawgJob = (dawgId, jobId, loadFullStructure = 0) => async dispatch =>\n dispatch({\n type: DAWG.JOB.ACTION.CANCEL,\n payload: {\n promise: (async () => await api().dawg.job.cancel(dawgId, jobId, loadFullStructure))()\n }\n })\n\nexport const retrieveDawgJob = (\n dawgId,\n jobId,\n loadFullStructure = 0,\n promise = true\n) => async dispatch => {\n if (promise) {\n return dispatch({\n type: DAWG.JOB.ACTION.RETRIEVE,\n payload: {\n promise: (async () => await api().dawg.job.retrieve(dawgId, jobId, loadFullStructure))()\n }\n })\n } else {\n return dispatch({\n type: DAWG.JOB.ACTION.RETRIEVE,\n payload: await api().dawg.job.retrieve(dawgId, jobId, loadFullStructure)\n })\n }\n}\n","import { api } from \"api\"\nimport _get from \"lodash/get\"\nimport { DAWG } from \"sharedConstants\"\n\nexport const listDawgHistory = (dawgId, offset, limit, loadFullStructure = 0) => async dispatch =>\n dispatch({\n type: DAWG.HISTORY.ACTION.LIST,\n payload: {\n promise: (async () => {\n return await api().dawg.history.list(dawgId, offset, limit, loadFullStructure)\n })()\n }\n })\n\nexport const revertDawgTo = (\n dawgId,\n historyId,\n loadFullStructure = 0,\n updateRedux = false\n) => async dispatch =>\n dispatch({\n type: DAWG.ACTION.MODIFY,\n payload: {\n promise: (async () => {\n const response = await api().dawg.history.revertTo(dawgId, historyId, loadFullStructure)\n if (updateRedux) {\n dispatch({\n type: DAWG.HISTORY.ACTION.GET_LAST_TWO,\n payload: {\n promise: async () => {\n return await api().dawg.history.list(dawgId, 0, 2, loadFullStructure)\n }\n }\n })\n }\n return _get(response, \"dawg\", {})\n })()\n }\n })\n\nexport const retrieveDawgHistoryItem = (\n dawgId,\n historyId,\n loadFullStructure = 0\n) => async dispatch =>\n dispatch({\n type: DAWG.HISTORY.ACTION.RETRIEVE,\n payload: {\n promise: (async () => {\n return await api().dawg.history.retrieve(dawgId, historyId, loadFullStructure)\n })()\n }\n })\n\nexport const clearCachedDawgHistory = () => dispatch =>\n dispatch({\n type: DAWG.HISTORY.ACTION.CLEAR_CACHE,\n payload: {}\n })\n","import { List } from \"immutable\"\n\nexport const getDashboardWsJobs = state => {\n const data = state.projectWorkspaceJobs.get(\"data\")\n if (List.isList(data)) {\n return data.take(10)\n }\n return null\n}\n\nexport const getProjectWsJobs = state => state.projectWorkspaceJobs.get(\"data\")\n\nexport const getProjectWsJobsSelectionSettings = state =>\n state.projectWorkspaceJobs.get(\"selectionSettings\")\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Record, Map, List } from \"immutable\"\nimport _isFunction from \"lodash/isFunction\"\n\n// ui elements\nimport ListItem, {\n DataProcessed,\n Author,\n LastRun,\n ItemName,\n ItemStatus,\n Schedules,\n Row,\n Tags,\n DawgWorkspaces\n} from \"components/UI/DawgWsShared/ListItem\"\n\n// helpers, routes\nimport { getRoutePath } from \"routes\"\n\nclass DawgListItem extends PureComponent {\n componentDidMount() {\n const { onInit } = this.props\n if (_isFunction(onInit)) {\n onInit()\n }\n }\n\n render() {\n const {\n job,\n dawg,\n selectFilterTag,\n innerRef,\n expandedSchedules,\n expandDawgSchedules\n } = this.props\n\n const authorName = dawg.getIn([\"owner\", \"name\"])\n const schedulesSetting = dawg.getIn([\"settings\", \"schedules\"])\n const scheduleExists = List.isList(schedulesSetting) && schedulesSetting.size > 0\n\n return (\n \n \n \n \n \n \n \n \n \n \n {dawg.workspaces_count > 0 && (\n \n \n \n )}\n {scheduleExists && (\n \n \n \n )}\n \n \n )\n }\n}\n\nDawgListItem.propTypes = {\n job: PropTypes.instanceOf(Record),\n dawg: PropTypes.instanceOf(Record).isRequired,\n selectFilterTag: PropTypes.func.isRequired,\n expandedSchedules: PropTypes.instanceOf(Map).isRequired,\n expandDawgSchedules: PropTypes.func.isRequired,\n onInit: PropTypes.func\n}\n\nexport default React.forwardRef((props, ref) => )\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Map, List, Record } from \"immutable\"\nimport { connect } from \"react-redux\"\nimport _get from \"lodash/get\"\nimport _noop from \"lodash/noop\"\nimport _toString from \"lodash/toString\"\nimport _isNil from \"lodash/isNil\"\nimport { Waypoint } from \"react-waypoint\"\n\nimport { fetchDawgList, createDawg, fetchLastDawgsJobs } from \"actions/dawg.action\"\nimport { showLoadingBar, hideLoadingBar } from \"actions/loadingBar.action\"\nimport { fetchDawgUsersAcl } from \"actions/acl.action\"\nimport {\n setSortingOptions,\n setFilterByTags,\n setFilterAndSorting,\n setFilterBy\n} from \"actions/table.action\"\nimport { listProjectWorkspaceJob, clearCachedWorkspaceJobs } from \"actions/workspaceJob.action\"\nimport { clearCachedConfigurationJobs } from \"actions/configurationJob.action\"\nimport { clearCachedWorkspaceHistory } from \"actions/workspaceHistory.action\"\nimport { clearCachedConfigurationHistory } from \"actions/configurationHistory.action\"\nimport { clearCachedDawgJobs } from \"actions/dawgJob.action\"\nimport { clearCachedDawgHistory } from \"actions/dawgHistory.action\"\nimport {\n getDawgs,\n getDawgsSelectionSettings,\n getDawgsHasMoreItem,\n getLastDawgsJobs\n} from \"selectors/dawg.selector\"\nimport { getDashboardWsJobs } from \"selectors/projectWorkspaceJob.selector\"\nimport { areTagsAlreadyFetched } from \"selectors/tag.selector\"\nimport { canCreateDawgs } from \"helpers/authenticatedUser.helper\"\nimport { DAWG, INTERVAL } from \"sharedConstants\"\n\nimport Header from \"components/UI/DawgWsShared/Header\"\nimport SubHeader from \"components/UI/DawgWsShared/SubHeader\"\nimport CreateActionModal from \"components/UI/DawgWsShared/CreateActionModal\"\nimport ProjectJobsCard from \"components/UI/DawgWsShared/ProjectJobsCard\"\nimport DawgListItem from \"./DawgListItem\"\n\nimport \"./DawgList.css\"\n\nclass DawgList extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n createDawgModalOpen: false,\n expandedSchedules: Map()\n }\n }\n\n componentDidMount() {\n const {\n fetchDawgList,\n dawgs,\n fetchLastDawgsJobs,\n listProjectWorkspaceJob,\n clearCachedConfigurationJobs,\n clearCachedWorkspaceJobs,\n clearCachedWorkspaceHistory,\n clearCachedConfigurationHistory,\n clearCachedDawgJobs,\n clearCachedDawgHistory\n } = this.props\n\n // cache clear\n clearCachedConfigurationJobs()\n clearCachedConfigurationHistory()\n clearCachedWorkspaceJobs()\n clearCachedWorkspaceHistory()\n clearCachedDawgJobs()\n clearCachedDawgHistory()\n\n const filterVars = this._getDawgsFilterOptions()\n fetchDawgList(\n 0,\n DAWG.LOADING_LIMIT,\n 1,\n filterVars.orderBy,\n filterVars.orderDir,\n filterVars.searchText,\n filterVars.selectedTags,\n this._determineShowEnabled(filterVars.filterBy),\n this._determineShowDisabled(filterVars.filterBy)\n )\n .then(response => {\n this.fetchLastDawgsJobs(response)\n })\n .catch(_noop)\n\n listProjectWorkspaceJob(0, 10, 1, \"status\", \"DESC\", true)\n\n this.intervalId = setInterval(() => {\n listProjectWorkspaceJob(0, 10, 1, \"status\", \"DESC\", false).catch(_noop)\n if (dawgs) {\n const dawgIds = dawgs.map(dawg => dawg.id).toArray()\n fetchLastDawgsJobs(dawgIds, 0).catch(_noop)\n }\n }, INTERVAL.DAWG_LIST)\n }\n\n _getDawgsFilterOptions = () => {\n const { filterValues } = this.props\n const selectedTags = _get(filterValues, \"selectedTags\", [])\n const orderBy = _get(filterValues, \"orderBy\", \"last_run\")\n const orderDir = _get(filterValues, \"orderDir\", \"DESC\")\n const searchText = _get(filterValues, \"search\", \"\")\n const filterBy = _get(filterValues, \"filterBy\", \"all\")\n return {\n selectedTags,\n orderBy,\n orderDir,\n searchText,\n filterBy\n }\n }\n\n componentWillUnmount() {\n clearInterval(this.intervalId)\n }\n\n fetchLastDawgsJobs = response => {\n const { showLoadingBar, hideLoadingBar, fetchLastDawgsJobs } = this.props\n const dawgIds = response.value.dawgs.map(dawg => dawg.id)\n showLoadingBar()\n fetchLastDawgsJobs(dawgIds, 0)\n .then(hideLoadingBar)\n .catch(hideLoadingBar)\n }\n\n toggleCreateDawgModalOpen = () => {\n this.setState(prevState => ({\n createDawgModalOpen: !prevState.createDawgModalOpen\n }))\n }\n\n _loadMoreDawgs = () => {\n const { selectionSettings, fetchDawgList } = this.props\n fetchDawgList(\n selectionSettings.offset + selectionSettings.limit,\n selectionSettings.limit,\n 1,\n selectionSettings.order_by,\n selectionSettings.order_dir,\n selectionSettings.name_filter,\n selectionSettings.tag_ids,\n selectionSettings.show_enabled,\n selectionSettings.show_disabled\n )\n .then(response => {\n this.fetchLastDawgsJobs(response)\n })\n .catch(_noop)\n }\n\n onSearchSubmit = filterName => {\n const { fetchDawgList } = this.props\n const filterVars = this._getDawgsFilterOptions()\n\n fetchDawgList(\n 0,\n DAWG.LOADING_LIMIT,\n 1,\n filterVars.orderBy,\n filterVars.orderDir,\n filterName,\n filterVars.selectedTags,\n this._determineShowEnabled(filterVars.filterBy),\n this._determineShowDisabled(filterVars.filterBy)\n )\n .then(response => {\n this.fetchLastDawgsJobs(response)\n })\n .catch(_noop)\n }\n\n onSortSubmit = values => {\n const { setSortingOptions, fetchDawgList } = this.props\n const filterVars = this._getDawgsFilterOptions()\n const sortOpt = this._determineSortOptions(values)\n\n setSortingOptions(\"DawgFilter\", sortOpt.column, sortOpt.order)\n fetchDawgList(\n 0,\n DAWG.LOADING_LIMIT,\n 1,\n sortOpt.column,\n sortOpt.order,\n filterVars.searchText,\n filterVars.selectedTags,\n this._determineShowEnabled(filterVars.filterBy),\n this._determineShowDisabled(filterVars.filterBy)\n )\n .then(response => {\n this.fetchLastDawgsJobs(response)\n })\n .catch(_noop)\n }\n\n onFilterBySubmit = values => {\n const { setFilterBy, fetchDawgList } = this.props\n const filterVars = this._getDawgsFilterOptions()\n const filterBy = _get(values, \"filterBy.value\", \"all\")\n setFilterBy(\"DawgFilter\", filterBy)\n fetchDawgList(\n 0,\n DAWG.LOADING_LIMIT,\n 1,\n filterVars.orderBy,\n filterVars.orderDir,\n filterVars.searchText,\n filterVars.selectedTags,\n this._determineShowEnabled(filterBy),\n this._determineShowDisabled(filterBy)\n )\n .then(response => {\n this.fetchLastDawgsJobs(response)\n })\n .catch(_noop)\n }\n\n selectFilterTag = tagId => () => {\n const { fetchDawgList, setFilterByTags } = this.props\n const filterVars = this._getDawgsFilterOptions()\n\n if (!filterVars.selectedTags.includes(tagId)) {\n const newTags = [...filterVars.selectedTags, tagId]\n fetchDawgList(\n 0,\n DAWG.LOADING_LIMIT,\n 1,\n filterVars.orderBy,\n filterVars.orderDir,\n filterVars.searchText,\n newTags,\n this._determineShowEnabled(filterVars.filterBy),\n this._determineShowDisabled(filterVars.filterBy)\n )\n .then(response => {\n this.fetchLastDawgsJobs(response)\n })\n .catch(_noop)\n\n setFilterByTags(\"DawgFilter\", newTags)\n }\n }\n\n deselectFilterTag = tagId => () => {\n const { fetchDawgList, setFilterByTags } = this.props\n const filterVars = this._getDawgsFilterOptions()\n\n let newTags = [...filterVars.selectedTags]\n newTags = newTags.filter(tag => tag !== tagId)\n fetchDawgList(\n 0,\n DAWG.LOADING_LIMIT,\n 1,\n filterVars.orderBy,\n filterVars.orderDir,\n filterVars.searchText,\n newTags,\n this._determineShowEnabled(filterVars.filterBy),\n this._determineShowDisabled(filterVars.filterBy)\n )\n .then(response => {\n this.fetchLastDawgsJobs(response)\n })\n .catch(_noop)\n\n setFilterByTags(\"DawgFilter\", newTags)\n }\n\n /*\n * It executes defined onEnter function whenever user scrolls to\n * the element 'Waypoint'. We are using it for infinite scrolling.\n */\n renderWaypoint = () => {\n const { hasDawgsMoreItems } = this.props\n if (hasDawgsMoreItems) {\n return \n }\n }\n\n _determineShowEnabled = filterBy => {\n return filterBy === \"all\" || filterBy === \"enabled\" ? 1 : 0\n }\n\n _determineShowDisabled = filterBy => {\n return filterBy === \"all\" || filterBy === \"disabled\" ? 1 : 0\n }\n\n _determineSortOptions = values => ({\n column: values.sortBy.value,\n order: values.order ? \"ASC\" : \"DESC\"\n })\n\n expandDawgSchedules = dawgId => () => {\n this.setState(prevState => ({\n expandedSchedules: prevState.expandedSchedules.set(dawgId, true)\n }))\n }\n\n renderDawgs = () => {\n const { dawgs, lastDawgsJobs, areTagsAlreadyFetched } = this.props\n const { expandedSchedules } = this.state\n\n if (!areTagsAlreadyFetched || !List.isList(dawgs)) {\n return null\n }\n\n if (dawgs.size === 0) {\n return
    No DAWGs found.
    \n }\n\n const renderDawg = dawg => {\n const dawgJob = !_isNil(lastDawgsJobs) ? lastDawgsJobs.get(_toString(dawg.id)) : null\n\n return (\n \n )\n }\n\n return (\n
    \n {dawgs.map((dawg, index) => {\n return renderDawg(dawg)\n })}\n {this.renderWaypoint()}\n
    \n )\n }\n\n render() {\n const { createDawgModalOpen } = this.state\n const { createDawg, fetchDawgUsersAcl, projectWsJobs } = this.props\n return (\n
    \n
    \n \n \n {this.renderDawgs()}\n
    \n
    \n \n
    \n \n
    \n )\n }\n}\n\nDawgList.propTypes = {\n areTagsAlreadyFetched: PropTypes.bool.isRequired,\n dawgs: PropTypes.instanceOf(List),\n selectionSettings: PropTypes.instanceOf(Record).isRequired,\n hasDawgsMoreItems: PropTypes.bool.isRequired,\n fetchDawgList: PropTypes.func.isRequired,\n showLoadingBar: PropTypes.func.isRequired,\n hideLoadingBar: PropTypes.func.isRequired,\n createDawg: PropTypes.func.isRequired,\n fetchDawgUsersAcl: PropTypes.func.isRequired,\n fetchLastDawgsJobs: PropTypes.func.isRequired,\n lastDawgsJobs: PropTypes.instanceOf(Map),\n listProjectWorkspaceJob: PropTypes.func.isRequired,\n projectWsJobs: PropTypes.instanceOf(List),\n clearCachedConfigurationJobs: PropTypes.func.isRequired,\n clearCachedWorkspaceJobs: PropTypes.func.isRequired,\n clearCachedWorkspaceHistory: PropTypes.func.isRequired,\n clearCachedConfigurationHistory: PropTypes.func.isRequired,\n clearCachedDawgJobs: PropTypes.func.isRequired,\n clearCachedDawgHistory: PropTypes.func.isRequired\n}\n\nconst mapStateToProps = state => ({\n dawgs: getDawgs(state),\n selectionSettings: getDawgsSelectionSettings(state),\n hasDawgsMoreItems: getDawgsHasMoreItem(state),\n areTagsAlreadyFetched: areTagsAlreadyFetched(state),\n lastDawgsJobs: getLastDawgsJobs(state),\n projectWsJobs: getDashboardWsJobs(state)\n})\n\nexport default connect(mapStateToProps, {\n fetchDawgList,\n showLoadingBar,\n hideLoadingBar,\n createDawg,\n fetchDawgUsersAcl,\n setSortingOptions,\n setFilterByTags,\n setFilterAndSorting,\n setFilterBy,\n fetchLastDawgsJobs,\n listProjectWorkspaceJob,\n clearCachedConfigurationJobs,\n clearCachedWorkspaceJobs,\n clearCachedWorkspaceHistory,\n clearCachedConfigurationHistory,\n clearCachedDawgJobs,\n clearCachedDawgHistory\n})(DawgList)\n","import _toInteger from \"lodash/toInteger\"\nimport { createSelector } from \"reselect\"\nimport { List } from \"immutable\"\n\nexport const getDawgJobsData = state => {\n if (state.dawgJobs !== null) {\n return state.dawgJobs.get(\"data\")\n }\n return null\n}\n\nexport const getDawgJobsSelectionSettings = state => {\n if (state.dawgJobs !== null) {\n return state.dawgJobs.get(\"selectionSettings\")\n }\n return null\n}\n\nexport const haveDawgJobsMoreItems = state => {\n if (state.dawgJobs !== null) {\n return state.dawgJobs.get(\"hasMoreItems\") === true\n }\n return false\n}\n\nexport const getDawgJobData = (state, jobId) => {\n const data = getDawgJobsData(state)\n if (List.isList(data)) {\n const jobIdInt = _toInteger(jobId)\n return data.find(job => job.id === jobIdInt)\n }\n return null\n}\n\nexport const isDawgJobsFetching = state => {\n if (state.dawgJobs !== null) {\n return state.dawgJobs.get(\"isFetching\") === true\n }\n return true\n}\n\nexport const getLastDawgJobsData = createSelector(getDawgJobsData, data => {\n if (List.isList(data)) {\n return data.slice(0, 3)\n }\n return null\n})\n","import _toString from \"lodash/toString\"\nimport { createSelector } from \"reselect\"\nimport { Map, List } from \"immutable\"\n\nimport { initFuseImmutableSearch } from \"helpers/table.helper\"\n\nexport const getAreDawgWorkspacesFetching = state => state.dawgWorkspaces.get(\"isFetching\")\n\nexport const areDawgWorkspacesFulfilled = (state, dawgId) => {\n return state.dawgWorkspaces.getIn([\"data\", _toString(dawgId), \"isFulfilled\"]) === true\n}\n\nexport const getAreDawgWorkspacesModifying = (state, dawgId) => {\n return state.dawgWorkspaces.getIn([\"data\", _toString(dawgId), \"isModifying\"]) === true\n}\n\nexport const getDawgWorkspacesData = (state, dawgId) => {\n if (state.dawgWorkspaces.getIn([\"data\", _toString(dawgId)])) {\n return state.dawgWorkspaces.getIn([\"data\", _toString(dawgId), \"workspaces\"])\n }\n return null\n}\n\nexport const getDawgWorkspaceData = (state, dawgId, workspaceId) => {\n if (state.dawgWorkspaces.getIn([\"data\", _toString(dawgId)])) {\n return state.dawgWorkspaces.getIn([\n \"data\",\n _toString(dawgId),\n \"workspaces\",\n _toString(workspaceId)\n ])\n }\n return null\n}\n\nexport const getDawgWorkspacesFuseData = createSelector([getDawgWorkspacesData], workspaces => {\n if (workspaces) {\n return Map({\n isFulfilled: true,\n data: initFuseImmutableSearch(List(workspaces.toArray()), [\"name\"])\n })\n } else {\n return Map({\n isFulfilled: false,\n data: initFuseImmutableSearch(List(), [\"name\"])\n })\n }\n})\n","import { List } from \"immutable\"\n\nexport const getDawgDashboardWorkspaceJobs = (state, dawgId) => {\n const data = state.dawgWorkspaceJobs.getIn([dawgId, \"data\"])\n if (List.isList(data)) {\n return data.take(6)\n }\n return null\n}\n\nexport const getDawgWorkspaceJobs = (state, dawgId) =>\n state.dawgWorkspaceJobs.getIn([dawgId, \"data\"])\n\nexport const getDawgWorkspaceJobsSelectionSettings = (state, dawgId) =>\n state.dawgWorkspaceJobs.getIn([dawgId, \"selectionSettings\"])\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Record, Map, List } from \"immutable\"\nimport { connect } from \"react-redux\"\nimport _noop from \"lodash/noop\"\nimport _toInteger from \"lodash/toInteger\"\nimport _get from \"lodash/get\"\n\nimport {\n fetchDawgAcl,\n createDawgAcl,\n modifyDawgAcl,\n deleteDawgAcl,\n fetchDawgUsersAcl\n} from \"actions/acl.action\"\nimport {\n retrieveDawg,\n deleteDawg,\n modifyDawg,\n assignTagToDawg,\n unassignTagFromDawg\n} from \"actions/dawg.action\"\nimport { listDawgJob, runDawgJob, cancelDawgJob, refreshLastDawgJob } from \"actions/dawgJob.action\"\nimport { enableLogout, disableLogout } from \"actions/authenticatedUser.action\"\nimport { showToast } from \"actions/toast.action\"\nimport {\n fetchDawgWorkspaceList,\n modifyDawgWorkspace,\n deleteWorkspaceFromDawg,\n modifyDawgWorkspacesBulk\n} from \"actions/dawgWorkspace.action\"\nimport {\n runWorkspaceJob,\n cancelWorkspaceJob,\n listDawgWorkspaceJob,\n clearCachedWorkspaceJobs\n} from \"actions/workspaceJob.action\"\nimport { clearCachedWorkspaceHistory } from \"actions/workspaceHistory.action\"\n\nimport { getDawgRecord } from \"selectors/dawg.selector\"\nimport { getUsersDawgAcl } from \"selectors/usersAcl.selector\"\nimport { getDawgAclsData } from \"selectors/acl.selector\"\nimport { getLastDawgJobsData } from \"selectors/dawgJob.selector\"\nimport {\n getDawgWorkspacesFuseData,\n areDawgWorkspacesFulfilled,\n getDawgWorkspacesData,\n getAreDawgWorkspacesFetching,\n getAreDawgWorkspacesModifying\n} from \"selectors/dawgWorkspace.selector\"\nimport { getDawgDashboardWorkspaceJobs } from \"selectors/dawgWorkspaceJob.selector\"\n\nimport { hasWritePermission } from \"helpers/authenticatedUser.helper\"\nimport PendingPromise from \"helpers/pendingPromise.helper\"\nimport { MODAL, TOAST, INTERVAL, DAWG } from \"sharedConstants\"\nimport { getRoutePath } from \"routes\"\n\nimport Header from \"components/UI/DawgWsShared/DetailHeader\"\nimport ConfirmModal from \"components/UI/components/ConfirmModal\"\nimport DescriptionCard from \"components/UI/components/DescriptionCard\"\nimport SetScheduleCard from \"components/UI/DawgWsShared/SetSchedule\"\nimport EntityJobsCard from \"components/UI/DawgWsShared/EntityJobsCard\"\nimport DataFlowComponent from \"components/UI/DawgWsShared/DataFlow\"\nimport WorkspaceJobsCard from \"components/UI/DawgWsShared/EntityChildrenJobsCard\"\n\nimport { api } from \"api\"\n\nimport \"./DawgDetail.css\"\n\nconst initialState = {\n confirmModalVariables: Map({\n open: false,\n type: \"\",\n handleConfirm: () => {},\n title: \"\",\n action: \"\",\n what: \"\",\n text: \"\",\n isLoading: false\n }),\n highlightedWorkspaces: Map({\n active: false,\n ids: []\n }),\n editModes: Map({\n dawgName: false,\n description: false,\n schedule: false\n }),\n workspaceStatuses: Map(),\n dag: Map({\n previewMode: false,\n // 1 means sort, 0 means cancel\n callbackValue: null\n }),\n isDawgReloading: true\n}\n\nclass DawgDetail extends PureComponent {\n runningCalls = {\n lastDawgJobs: false,\n lastWorkspaceJobs: false,\n dawgWorkspacesLastJobs: false\n }\n\n constructor(props) {\n super(props)\n this.state = initialState\n this.pendingPromises = new PendingPromise()\n }\n\n componentDidMount() {\n this._init()\n }\n\n _init() {\n const {\n retrieveDawg,\n fetchDawgAcl,\n fetchDawgWorkspaceList,\n listDawgJob,\n clearCachedWorkspaceHistory,\n clearCachedWorkspaceJobs,\n match: {\n params: { id }\n }\n } = this.props\n\n clearCachedWorkspaceJobs()\n clearCachedWorkspaceHistory()\n\n retrieveDawg(id)\n .then(() => {\n this.setState({ isDawgReloading: false })\n })\n .catch(() => {\n this.setState({ isDawgReloading: false })\n })\n\n fetchDawgAcl(id).catch(_noop)\n fetchDawgWorkspaceList(id)\n .then(response => {\n this.fetchDawgWorkspacesLastJobs()\n this.intervalId = setInterval(() => {\n this.refreshLastDawgJob()\n this.fetchLastWorkspaceJobs(false)\n this.fetchDawgWorkspacesLastJobs()\n }, INTERVAL.DAWG_SHOW)\n })\n .catch(_noop)\n\n this.runningCalls.lastDawgJobs = true\n listDawgJob(id, 0, DAWG.JOB.LOADING_LIMIT, 0)\n .then(() => {\n this.runningCalls.lastDawgJobs = false\n })\n .catch(() => {\n this.runningCalls.lastDawgJobs = false\n })\n this.fetchLastWorkspaceJobs()\n }\n\n _cleanup = (clearState = false) => {\n clearInterval(this.intervalId)\n this.pendingPromises.cancelAll()\n this.runningCalls = {\n lastWorkspaceJobs: false,\n lastConfigurationJobs: false,\n workspaceConfigurationsLastJobs: false\n }\n\n if (clearState) {\n this.setState(initialState)\n }\n }\n\n componentWillUnmount() {\n this._cleanup()\n }\n\n refreshLastDawgJob = () => {\n if (!this.runningCalls.lastDawgJobs) {\n this.runningCalls.lastDawgJobs = true\n const {\n refreshLastDawgJob,\n match: {\n params: { id }\n }\n } = this.props\n refreshLastDawgJob(id, 0)\n .then(() => {\n this.runningCalls.lastDawgJobs = false\n })\n .catch(() => {\n this.runningCalls.lastDawgJobs = false\n })\n }\n }\n\n fetchLastWorkspaceJobs = async (promise = true) => {\n if (!this.runningCalls.lastWorkspaceJobs) {\n this.runningCalls.lastWorkspaceJobs = true\n const {\n listDawgWorkspaceJob,\n match: {\n params: { id }\n }\n } = this.props\n\n try {\n await listDawgWorkspaceJob(id, 0, 6, 1, \"status\", \"DESC\", promise)\n } catch (err) {\n } finally {\n this.runningCalls.lastWorkspaceJobs = false\n }\n }\n }\n\n fetchDawgWorkspacesLastJobs = async () => {\n if (!this.runningCalls.dawgWorkspacesLastJobs) {\n const { dawgWorkspaces } = this.props\n this.runningCalls.dawgWorkspacesLastJobs = true\n const { workspaceStatuses } = this.state\n const [...workspaceIds] = dawgWorkspaces.keys()\n if (workspaceIds.length > 0) {\n const lastWsJobsPromise = this.pendingPromises.create(\n api().workspace.listLastJobs(workspaceIds.map(val => _toInteger(val)))\n )\n try {\n const response = await lastWsJobsPromise.promise\n if (response.last_workspace_jobs.length > 0) {\n const currentStatuses = Map(\n response.last_workspace_jobs.reduce((returnObj, job) => {\n returnObj[job.workspace_id] = Map({\n id: _get(job, \"last_job.id\"),\n status: _get(job, \"last_job.status\")\n })\n return returnObj\n }, {})\n )\n\n if (!workspaceStatuses.equals(currentStatuses)) {\n this.setState({\n workspaceStatuses: currentStatuses\n })\n }\n }\n } catch (err) {\n } finally {\n this.runningCalls.dawgWorkspacesLastJobs = false\n }\n } else {\n this.runningCalls.dawgWorkspacesLastJobs = false\n }\n }\n }\n\n toggleConfirmModal = (\n title,\n action,\n what,\n handleConfirm,\n htmlText = [],\n type = MODAL.TYPE.SUCCESS,\n stopInterval = false\n ) => () => {\n const open = this.state.confirmModalVariables.get(\"open\")\n if (open) {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", false)\n .set(\"isLoading\", false)\n }))\n if (!this.intervalId) {\n this.intervalId = setInterval(() => {\n this.refreshLastDawgJob()\n this.fetchLastWorkspaceJobs(false)\n this.fetchDawgWorkspacesLastJobs()\n }, INTERVAL.DAWG_SHOW)\n }\n } else {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables\n .set(\"open\", true)\n .set(\"type\", type)\n .set(\"handleConfirm\", handleConfirm)\n .set(\"title\", title)\n .set(\"action\", action)\n .set(\"what\", what)\n .set(\"htmlText\", htmlText)\n }))\n if (stopInterval) {\n clearInterval(this.intervalId)\n this.intervalId = null\n }\n }\n }\n\n deleteDawg = () => {\n if (!this.state.confirmModalVariables.get(\"isLoading\")) {\n const { deleteDawg, showToast, history } = this.props\n const { id: dawgId } = this.props.match.params\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", true)\n }))\n deleteDawg(dawgId)\n .then(() => {\n showToast(\"DAWG has been deleted.\", TOAST.TYPE.SUCCESS)\n history.push(getRoutePath(\"dawg.list\"))\n })\n .catch(() => {\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", false)\n }))\n })\n }\n }\n\n modifyDawg = async (\n parameters,\n previousParameters = {},\n message = \"\",\n toastType = TOAST.TYPE.SUCCESS\n ) => {\n const { modifyDawg, showToast, dawg } = this.props\n await modifyDawg(dawg.id, parameters, previousParameters).then(() => {\n showToast(message ? message : \"DAWG has been modified.\", toastType)\n })\n }\n\n runDawg = async () => {\n if (!this.state.confirmModalVariables.get(\"isLoading\")) {\n const { showToast, runDawgJob } = this.props\n const { id: dawgId } = this.props.match.params\n this.runningCalls.lastDawgJobs = true\n\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", true)\n }))\n runDawgJob(dawgId, 0)\n .then(response => {\n showToast(\n \"DAWG job has started.\",\n TOAST.TYPE.SUCCESS,\n getRoutePath(\"dawg.dawgJob.show\", {\n id: response.value.dawg_job.dawg_id,\n aid: response.value.dawg_job.id\n })\n )\n this.runningCalls.lastDawgJobs = false\n this.toggleConfirmModal()()\n })\n .catch(error => {\n this.runningCalls.lastDawgJobs = false\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", false)\n }))\n })\n }\n }\n\n cancelDawgJob = async () => {\n const {\n lastDawgJobs,\n cancelDawgJob,\n showToast,\n match: {\n params: { id }\n }\n } = this.props\n if (List.isList(lastDawgJobs) && lastDawgJobs.size > 0) {\n const job = lastDawgJobs.get(0)\n this.runningCalls.lastDawgJobs = true\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", true)\n }))\n try {\n await cancelDawgJob(id, job.id)\n showToast(\"DAWG job is being cancelled.\", TOAST.TYPE.SUCCESS)\n this.runningCalls.lastDawgJobs = false\n this.toggleConfirmModal()()\n } catch (err) {\n this.runningCalls.lastDawgJobs = false\n this.setState(prevState => ({\n confirmModalVariables: prevState.confirmModalVariables.set(\"isLoading\", false)\n }))\n }\n } else {\n this.toggleConfirmModal()()\n }\n }\n\n toggleEditMode = editMode => (cb = _noop) => () => {\n this.setState(\n prevState => ({\n editModes: prevState.editModes.set(editMode, !prevState.editModes.get(editMode))\n }),\n () => {\n let isEditing = false\n this.state.editModes.forEach(mode => {\n if (mode) {\n isEditing = true\n }\n })\n\n if (isEditing) {\n this.props.disableLogout()\n } else {\n this.props.enableLogout()\n }\n cb()\n }\n )\n }\n\n transferOwnership = async userId => {\n const { modifyDawg, showToast, dawg } = this.props\n await modifyDawg(dawg.id, { owner_id: userId })\n showToast(\"DAWG owner has been changed.\", TOAST.TYPE.SUCCESS)\n }\n\n render() {\n const {\n dawg,\n usersAcl,\n createDawgAcl,\n modifyDawgAcl,\n deleteDawgAcl,\n fetchDawgUsersAcl,\n dawgUsers,\n assignTagToDawg,\n unassignTagFromDawg,\n lastDawgJobs,\n dawgWorkspacesFuseData,\n areDawgWorkspacesFulfilled,\n dawgWorkspaces,\n areDawgWorkspacesFetching,\n areDawgWorkspacesModifying,\n modifyDawgWorkspace,\n deleteWorkspaceFromDawg,\n runWorkspaceJob,\n cancelWorkspaceJob,\n workspaceJobs,\n modifyDawgWorkspacesBulk\n } = this.props\n const { editModes, isDawgReloading, confirmModalVariables, workspaceStatuses } = this.state\n const isEditable = hasWritePermission(usersAcl)\n let currentlyEditing = \"\"\n editModes.forEach((mode, key) => {\n if (mode) {\n switch (key) {\n case \"dawgName\": {\n currentlyEditing = \"dawg name\"\n break\n }\n case \"description\": {\n currentlyEditing = \"dawg description\"\n break\n }\n case \"schedule\": {\n currentlyEditing = \"dawg schedule\"\n break\n }\n default:\n currentlyEditing = \"\"\n }\n }\n })\n\n return (\n
    \n {dawg && (\n \n \n Do you want to delete this dawg?{\" \"}\n Beware the step is irreversible!\n

    \n ],\n MODAL.TYPE.DELETE,\n true\n )}\n handleEntityModify={this.modifyDawg}\n handleEntityRun={this.toggleConfirmModal(\"Run Dawg\", \"run\", \"dawg\", this.runDawg)}\n handleEntityCancel={this.toggleConfirmModal(\n \"Cancel dawg\",\n \"cancel\",\n \"dawg\",\n this.cancelDawgJob,\n [],\n MODAL.TYPE.CANCEL\n )}\n assignTagToEntity={assignTagToDawg}\n unassignTagFromEntity={unassignTagFromDawg}\n isEditable={isEditable}\n currentlyEditing={currentlyEditing}\n toggleNameFormEditMode={this.toggleEditMode(\"dawgName\")}\n nameFormEditMode={editModes.get(\"dawgName\")}\n entityStatus={List.isList(lastDawgJobs) ? lastDawgJobs.getIn([0, \"status\"]) : null}\n isEntityReloading={isDawgReloading}\n transferOwnership={this.transferOwnership}\n />\n \n
    \n
    \n \n \n
    \n\n
    \n \n {List.isList(workspaceJobs) && (\n \n )}\n
    \n
    \n
    \n )}\n \n
    \n )\n }\n}\n\nDawgDetail.propTypes = {\n dawg: PropTypes.instanceOf(Record),\n retrieveDawg: PropTypes.func.isRequired,\n fetchDawgAcl: PropTypes.func.isRequired,\n usersAcl: PropTypes.instanceOf(Record),\n createDawgAcl: PropTypes.func.isRequired,\n modifyDawgAcl: PropTypes.func.isRequired,\n deleteDawgAcl: PropTypes.func.isRequired,\n dawgUsers: PropTypes.instanceOf(List),\n fetchDawgUsersAcl: PropTypes.func.isRequired,\n deleteDawg: PropTypes.func.isRequired,\n modifyDawg: PropTypes.func.isRequired,\n listDawgJob: PropTypes.func.isRequired,\n runDawgJob: PropTypes.func.isRequired,\n cancelDawgJob: PropTypes.func.isRequired,\n refreshLastDawgJob: PropTypes.func.isRequired,\n lastDawgJobs: PropTypes.instanceOf(List),\n assignTagToDawg: PropTypes.func.isRequired,\n unassignTagFromDawg: PropTypes.func.isRequired,\n enableLogout: PropTypes.func.isRequired,\n disableLogout: PropTypes.func.isRequired,\n dawgWorkspacesFuseData: PropTypes.instanceOf(Map).isRequired,\n areDawgWorkspacesFulfilled: PropTypes.bool.isRequired,\n areDawgWorkspacesFetching: PropTypes.bool.isRequired,\n areDawgWorkspacesModifying: PropTypes.bool,\n modifyDawgWorkspace: PropTypes.func.isRequired,\n deleteWorkspaceFromDawg: PropTypes.func.isRequired,\n runWorkspaceJob: PropTypes.func.isRequired,\n cancelWorkspaceJob: PropTypes.func.isRequired,\n listDawgWorkspaceJob: PropTypes.func.isRequired,\n workspaceJobs: PropTypes.instanceOf(List),\n clearCachedWorkspaceHistory: PropTypes.func.isRequired,\n clearCachedWorkspaceJobs: PropTypes.func.isRequired,\n modifyDawgWorkspacesBulk: PropTypes.func.isRequired\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n dawg: getDawgRecord(state, ownProps.match.params.id),\n usersAcl: getUsersDawgAcl(state, ownProps.match.params.id),\n dawgUsers: getDawgAclsData(state, ownProps.match.params.id),\n lastDawgJobs: getLastDawgJobsData(state),\n dawgWorkspacesFuseData: getDawgWorkspacesFuseData(state, ownProps.match.params.id),\n areDawgWorkspacesFulfilled: areDawgWorkspacesFulfilled(state, ownProps.match.params.id),\n dawgWorkspaces: getDawgWorkspacesData(state, ownProps.match.params.id),\n areDawgWorkspacesFetching: getAreDawgWorkspacesFetching(state),\n areDawgWorkspacesModifying: getAreDawgWorkspacesModifying(state, ownProps.match.params.id),\n workspaceJobs: getDawgDashboardWorkspaceJobs(state, ownProps.match.params.id)\n})\n\nexport default connect(mapStateToProps, {\n retrieveDawg,\n fetchDawgAcl,\n createDawgAcl,\n modifyDawgAcl,\n deleteDawgAcl,\n fetchDawgUsersAcl,\n deleteDawg,\n modifyDawg,\n listDawgJob,\n runDawgJob,\n cancelDawgJob,\n refreshLastDawgJob,\n assignTagToDawg,\n unassignTagFromDawg,\n enableLogout,\n disableLogout,\n showToast,\n fetchDawgWorkspaceList,\n modifyDawgWorkspace,\n deleteWorkspaceFromDawg,\n runWorkspaceJob,\n cancelWorkspaceJob,\n listDawgWorkspaceJob,\n clearCachedWorkspaceHistory,\n clearCachedWorkspaceJobs,\n modifyDawgWorkspacesBulk\n})(DawgDetail)\n","import _get from \"lodash/get\"\nimport { api } from \"api\"\nimport { DAWG } from \"sharedConstants\"\nimport AllResourceItemsFetcher from \"helpers/AllResourceItemsFetcher.helper\"\n\nexport const fetchDawgWorkspaceList = (dawgId, loadFullStructure = 0) => async dispatch => {\n const caller = new AllResourceItemsFetcher()\n\n return dispatch({\n type: DAWG.WORKSPACE.ACTION.LIST,\n payload: {\n promise: (async () => {\n const data = await caller\n .setEndpointCall((offset, limit, loadFullStructure) =>\n api().dawg.workspace.list(dawgId, offset, limit, loadFullStructure)\n )\n .setDataPath(\"workspaces\")\n .setLoadFullStructure(loadFullStructure)\n .run()\n return {\n dawgId,\n data\n }\n })()\n }\n })\n}\n\nexport const addWorkspaceToDawg = (dawgId, workspaceId) => async dispatch =>\n dispatch({\n type: DAWG.WORKSPACE.ACTION.ADD,\n payload: {\n promise: (async () => {\n const response = await api().workspace.modifyWorkspace(workspaceId, { dawg_id: dawgId })\n return _get(response, \"workspace\", {})\n })()\n }\n })\n\nexport const deleteWorkspaceFromDawg = (dawgId, workspaceId) => async dispatch =>\n dispatch({\n type: DAWG.WORKSPACE.ACTION.DELETE,\n payload: {\n promise: (async () => {\n await api().workspace.modifyWorkspace(workspaceId, { dawg_id: null })\n return { dawgId, workspaceId }\n })()\n }\n })\n\nexport const modifyDawgWorkspacesBulk = (dawgId, data, loadFullStructure = 0) => async dispatch =>\n dispatch({\n type: DAWG.WORKSPACE.ACTION.MODIFY_BULK,\n meta: {\n dawgId\n },\n payload: {\n promise: (async () => {\n const response = await api().dawg.workspace.modifyBulk(dawgId, data, loadFullStructure)\n return _get(response, \"workspaces\", [])\n })()\n }\n })\n\nexport const modifyDawgWorkspace = (\n dawgId,\n workspaceId,\n data,\n originData = {},\n loadFullStructure = 0\n) => async dispatch =>\n dispatch({\n type: DAWG.WORKSPACE.ACTION.MODIFY,\n meta: {\n dawgId\n },\n payload: {\n promise: (async () => {\n const response = await api().workspace.modifyWorkspace(\n workspaceId,\n data,\n originData,\n loadFullStructure\n )\n return _get(response, \"workspace\", {})\n })()\n }\n })\n","import _toInteger from \"lodash/toInteger\"\n\nexport const getDawgHistoryList = state => state.dawgHistory.get(\"data\")\n\nexport const getDawgHistorySelectionSettings = state => state.dawgHistory.get(\"selectionSettings\")\n\nexport const hasDawgHistoryMoreItems = state => state.dawgHistory.get(\"hasMoreItems\")\n\nexport const getDawgHistoryItem = (state, historyItemId) => {\n if (historyItemId === \"0\") {\n return state.dawgHistory.get(\"data\").find(historyItem => historyItem.id === null)\n } else {\n return state.dawgHistory\n .get(\"data\")\n .find(historyItem => historyItem.id === _toInteger(historyItemId))\n }\n}\n\nexport const isDawgHistoryFulfilled = state => state.dawgHistory.get(\"isFulfilled\")\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { connect } from \"react-redux\"\nimport { List, Record } from \"immutable\"\n\n// actions\nimport { listDawgHistory, revertDawgTo } from \"actions/dawgHistory.action\"\nimport { showToast } from \"actions/toast.action\"\n\n// selectors\nimport {\n getDawgHistoryList,\n getDawgHistorySelectionSettings,\n hasDawgHistoryMoreItems,\n isDawgHistoryFulfilled\n} from \"selectors/dawgHistory.selector\"\nimport { getUsersDawgAcl } from \"selectors/usersAcl.selector\"\n\nimport EntityHistoryList from \"components/UI/DawgWsShared/EntityHistoryList\"\n\n// helpers\nimport { getDawgChangedKeys } from \"helpers/objectChanges.helper\"\n\nclass DawgHistoryList extends PureComponent {\n render() {\n const {\n historyList,\n selectionSettings,\n hasMoreHistoryItems,\n usersAcl,\n isHistoryListFulfilled,\n listDawgHistory,\n revertDawgTo,\n showToast\n } = this.props\n\n return (\n \n )\n }\n}\n\nDawgHistoryList.propTypes = {\n historyList: PropTypes.instanceOf(List).isRequired,\n isHistoryListFulfilled: PropTypes.bool.isRequired,\n selectionSettings: PropTypes.instanceOf(Record).isRequired,\n hasMoreHistoryItems: PropTypes.bool.isRequired,\n usersAcl: PropTypes.instanceOf(Record),\n listDawgHistory: PropTypes.func.isRequired,\n revertDawgTo: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired\n}\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n historyList: getDawgHistoryList(state),\n selectionSettings: getDawgHistorySelectionSettings(state),\n hasMoreHistoryItems: hasDawgHistoryMoreItems(state),\n usersAcl: getUsersDawgAcl(state, ownProps.match.params.id),\n isHistoryListFulfilled: isDawgHistoryFulfilled(state)\n }\n}\n\nexport default connect(mapStateToProps, { listDawgHistory, revertDawgTo, showToast })(\n DawgHistoryList\n)\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { connect } from \"react-redux\"\nimport { Record } from \"immutable\"\n\n// selectors\nimport { getDawgHistoryItem } from \"selectors/dawgHistory.selector\"\nimport { getUsersDawgAcl } from \"selectors/usersAcl.selector\"\n\n// actions\nimport { retrieveDawgHistoryItem, revertDawgTo } from \"actions/dawgHistory.action\"\nimport { showToast } from \"actions/toast.action\"\n\nimport EntityHistoryDetail from \"components/UI/DawgWsShared/EntityHistoryDetail\"\nimport { getDawgChangedKeys } from \"helpers/objectChanges.helper.js\"\n\nclass DawgHistoryDetail extends PureComponent {\n render() {\n const { historyItem, usersAcl, retrieveDawgHistoryItem, revertDawgTo, showToast } = this.props\n\n return (\n \n )\n }\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n historyItem: getDawgHistoryItem(state, ownProps.match.params.hid),\n usersAcl: getUsersDawgAcl(state, ownProps.match.params.id)\n})\n\nDawgHistoryDetail.propTypes = {\n usersAcl: PropTypes.instanceOf(Record),\n historyItem: PropTypes.instanceOf(Record),\n revertDawgTo: PropTypes.func.isRequired,\n retrieveDawgHistoryItem: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired\n}\n\nexport default connect(mapStateToProps, {\n revertDawgTo,\n retrieveDawgHistoryItem,\n showToast\n})(DawgHistoryDetail)\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { connect } from \"react-redux\"\nimport { List, Record } from \"immutable\"\n\n// actions\nimport { listDawgJob, refreshLastDawgJob, cancelDawgJob } from \"actions/dawgJob.action\"\nimport { showToast } from \"actions/toast.action\"\n\n// selectors\nimport {\n getDawgJobsData,\n getDawgJobsSelectionSettings,\n haveDawgJobsMoreItems,\n isDawgJobsFetching\n} from \"selectors/dawgJob.selector\"\nimport { getUsersDawgAcl } from \"selectors/usersAcl.selector\"\n\nimport JobList from \"components/UI/DawgWsShared/JobList\"\n\nclass DawgJobList extends PureComponent {\n render() {\n const {\n jobs,\n usersAcl,\n listDawgJob,\n refreshLastDawgJob,\n cancelDawgJob,\n selectionSettings,\n hasMoreJobs,\n isLoading,\n showToast\n } = this.props\n\n return (\n \n )\n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n jobs: getDawgJobsData(state),\n selectionSettings: getDawgJobsSelectionSettings(state),\n hasMoreJobs: haveDawgJobsMoreItems(state),\n isLoading: isDawgJobsFetching(state),\n usersAcl: getUsersDawgAcl(state, ownProps.match.params.id)\n }\n}\n\nDawgJobList.propTypes = {\n jobs: PropTypes.instanceOf(List),\n selectionSettings: PropTypes.instanceOf(Record),\n hasMoreJobs: PropTypes.bool.isRequired,\n usersAcl: PropTypes.instanceOf(Record),\n isLoading: PropTypes.bool.isRequired,\n listDawgJob: PropTypes.func.isRequired,\n refreshLastDawgJob: PropTypes.func.isRequired,\n cancelDawgJob: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired\n}\n\nexport default connect(mapStateToProps, {\n listDawgJob,\n refreshLastDawgJob,\n cancelDawgJob,\n showToast\n})(DawgJobList)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport { Record } from \"immutable\"\n\n// actions\nimport { retrieveDawg } from \"actions/dawg.action\"\nimport { retrieveDawgJob, cancelDawgJob } from \"actions/dawgJob.action\"\n\n// selectors\nimport { getDawgRecord } from \"selectors/dawg.selector\"\nimport { getDawgJobData } from \"selectors/dawgJob.selector\"\nimport { getUsersDawgAcl } from \"selectors/usersAcl.selector\"\n\n// ui components\nimport JobDetail from \"components/UI/DawgWsShared/JobDetail\"\n\nclass DawgJobShow extends PureComponent {\n render() {\n const { dawg, dawgJob, usersAcl, retrieveDawg, retrieveDawgJob, cancelDawgJob } = this.props\n return (\n \n )\n }\n}\n\nDawgJobShow.propTypes = {\n dawg: PropTypes.instanceOf(Record),\n dawgJob: PropTypes.instanceOf(Record),\n usersAcl: PropTypes.instanceOf(Record),\n retrieveDawg: PropTypes.func.isRequired,\n retrieveDawgJob: PropTypes.func.isRequired,\n cancelDawgJob: PropTypes.func.isRequired\n}\n\nconst mapStateToProps = (state, ownProps) => {\n const {\n match: {\n params: { id, aid }\n }\n } = ownProps\n return {\n dawg: getDawgRecord(state, id),\n dawgJob: getDawgJobData(state, aid),\n usersAcl: getUsersDawgAcl(state, id)\n }\n}\n\nexport default connect(mapStateToProps, {\n retrieveDawg,\n retrieveDawgJob,\n cancelDawgJob\n})(DawgJobShow)\n","import React, { PureComponent } from \"react\"\nimport { connect } from \"react-redux\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { List, Map } from \"immutable\"\nimport TimeAgo from \"react-timeago\"\nimport moment from \"moment\"\nimport _noop from \"lodash/noop\"\nimport _get from \"lodash/get\"\nimport _toString from \"lodash/toString\"\nimport _toInteger from \"lodash/toInteger\"\nimport { Waypoint } from \"react-waypoint\"\n\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Button from \"components/UI/elements/Button\"\nimport SearchForm from \"components/UI/components/SearchForm\"\nimport LoadingCircle from \"components/UI/elements/LoadingCircle\"\nimport Tag from \"components/UI/elements/Tag\"\nimport StatusElement from \"components/UI/elements/StatusElement\"\n\nimport { getRoutePath } from \"routes\"\nimport { goBack } from \"helpers/backButton.helper\"\n\nimport WorkspaceModel from \"models/workspace.model\"\nimport SelectionSettingsModel from \"models/selectionSettings.model\"\n\nimport { addWorkspaceToDawg } from \"actions/dawgWorkspace.action\"\nimport { showToast } from \"actions/toast.action\"\n\nimport { api } from \"api\"\nimport { TOAST } from \"sharedConstants\"\nimport PendingPromise from \"helpers/pendingPromise.helper\"\n\nimport \"./DawgWorkspaceAdd.css\"\n\nconst LOADING_LIMIT = 20\n\nclass DawgWorkspaceAdd extends PureComponent {\n runningWsJobCall = false\n intervalId = null\n\n constructor(props) {\n super(props)\n this.state = {\n loading: true,\n workspaces: List(),\n selectionSettings: new SelectionSettingsModel(),\n hasMoreItems: false,\n workspaceStatuses: Map()\n }\n this.pendingPromises = new PendingPromise()\n }\n\n componentDidMount() {\n this.fetchWorkspaces(0)\n }\n\n componentWillUnmount() {\n clearInterval(this.intervalId)\n }\n\n onSearchSubmit = searchTerm => {\n this.fetchWorkspaces(0, searchTerm)\n }\n\n fetchWorkspaces = async (offset, searchTerm = \"\") => {\n this.setState({ loading: true })\n try {\n const response = await api().workspace.list(\n offset,\n LOADING_LIMIT,\n 1,\n \"available_to_graph\",\n \"ASC\",\n searchTerm,\n [],\n 1,\n 1\n )\n const workspaceList = List(response.workspaces.map(ws => new WorkspaceModel(ws)))\n this.setState(prevState => ({\n loading: false,\n workspaces: offset === 0 ? workspaceList : prevState.workspaces.concat(workspaceList),\n selectionSettings: new SelectionSettingsModel(response.selection_settings),\n hasMoreItems: response.workspaces.length === LOADING_LIMIT\n }))\n this.fetchDawgWorkspacesLastJobs(workspaceList)\n } catch (err) {\n this.setState({\n loading: false\n })\n }\n }\n\n loadMoreWorkspaces = async () => {\n const { selectionSettings } = this.state\n this.fetchWorkspaces(\n selectionSettings.offset + selectionSettings.limit,\n selectionSettings.name_filter\n )\n }\n\n addWorkspaceToDawg = workspaceId => () => {\n const {\n addWorkspaceToDawg,\n showToast,\n history,\n match: {\n params: { id }\n }\n } = this.props\n addWorkspaceToDawg(id, workspaceId)\n .then(() => {\n showToast(\"Workspace has been added to DAWG.\", TOAST.TYPE.SUCCESS)\n history.push(getRoutePath(\"dawg.show\", { id }))\n })\n .catch(_noop)\n }\n\n renderWaypoint = () => {\n const { hasMoreItems } = this.state\n if (hasMoreItems) {\n return \n }\n }\n\n fetchDawgWorkspacesLastJobs = async (workspacesParam = null) => {\n if (!this.runningWsJobCall) {\n const workspaces = workspacesParam ? workspacesParam : this.state.workspaces\n this.runningWsJobCall = true\n const { workspaceStatuses } = this.state\n const [...workspaceIds] = workspaces.map(ws => _toInteger(ws.id))\n if (workspaceIds.length > 0) {\n const lastWsJobsPromise = this.pendingPromises.create(\n api().workspace.listLastJobs(workspaceIds.map(val => _toInteger(val)))\n )\n try {\n const response = await lastWsJobsPromise.promise\n if (response.last_workspace_jobs.length > 0) {\n const currentStatuses = Map(\n response.last_workspace_jobs.reduce((returnObj, job) => {\n returnObj[job.workspace_id] = Map({\n id: _get(job, \"last_job.id\"),\n status: _get(job, \"last_job.status\"),\n created: _get(job, \"last_job.origin_created\"),\n history: Map(_get(job, \"last_job.stats.statuses_history\", {}))\n })\n return returnObj\n }, {})\n )\n\n if (!workspaceStatuses.equals(currentStatuses)) {\n this.setState({\n workspaceStatuses: currentStatuses\n })\n\n if (!this.intervalId) {\n this.intervalId = setInterval(() => {\n this.fetchDawgWorkspacesLastJobs()\n }, 10000)\n }\n }\n }\n } catch (err) {\n } finally {\n this.runningWsJobCall = false\n }\n } else {\n this.runningWsJobCall = false\n }\n }\n }\n\n renderWorkspace = workspace => {\n const { workspaceStatuses } = this.state\n const wsJob = workspaceStatuses.get(_toString(workspace.id))\n return (\n
    \n
    \n
    \n

    {workspace.name}

    \n {Map.isMap(wsJob) && (\n
    \n \n
    \n )}\n
    \n
    \n
    \n {workspace.dawg && (\n \n DAWG:\n

    {workspace.dawg.name}

    \n
    \n )}\n {!workspace.dawg && (\n \n Add to DAWG\n \n )}\n
    \n
    \n Activity\n \n {!workspace.last_run && \"–\"}\n {workspace.last_run && (\n \n )}\n \n
    \n {!workspace.dawg}\n
    \n
    \n {workspace.tags.length !== 0 && (\n
    \n Tags\n
    \n {workspace.tags.map(tag => {\n return (\n \n {tag.name}\n \n )\n })}\n
    \n
    \n )}\n
    \n )\n }\n\n render() {\n const {\n history,\n match: {\n params: { id }\n }\n } = this.props\n const { workspaces, loading } = this.state\n\n return (\n
    \n \n
    \n \n Back\n \n

    Add workspace to DAWG

    \n
    \n \n
    \n
    \n {loading === false && workspaces.size === 0 && (\n

    No workspaces found.

    \n )}\n
    \n {workspaces\n .map((workspace, idx) => {\n if (idx % 2 === 0) {\n return this.renderWorkspace(workspace)\n }\n return null\n })\n .toArray()}\n
    \n
    \n {workspaces\n .map((workspace, idx) => {\n if (idx % 2 === 1) {\n return this.renderWorkspace(workspace)\n }\n return null\n })\n .toArray()}\n
    \n {this.renderWaypoint()}\n
    \n {loading && }\n
    \n )\n }\n}\n\nexport default connect(null, { addWorkspaceToDawg, showToast })(DawgWorkspaceAdd)\n","import React, { PureComponent } from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport _get from \"lodash/get\"\nimport moment from \"moment\"\nimport TimeAgo from \"react-timeago\"\n\n// helpers, contants\nimport { goBackInHistory } from \"helpers/backButton.helper\"\nimport { getRoutePath } from \"routes\"\nimport PendingPromise from \"helpers/pendingPromise.helper\"\nimport { api } from \"api\"\nimport Username from \"helpers/Username.helper\"\n\n// ui components\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Paper from \"components/UI/elements/Paper\"\nimport Button from \"components/UI/elements/Button\"\nimport StatusElement from \"components/UI/elements/StatusElement\"\n\nclass DawgJobHistory extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n historyItem: _get(this.props, \"location.state.historyItem\", null)\n }\n\n this.pendingPromises = new PendingPromise()\n }\n\n componentDidMount() {\n const {\n history,\n location,\n match: {\n params: { id, aid, hid }\n }\n } = this.props\n\n if (!this.state.historyItem) {\n const historyItemRequest = this.pendingPromises.create(\n api().dawg.job.history.retrieve(id, aid, hid)\n )\n historyItemRequest.promise\n .then(response => {\n this.setState({\n historyItem: response.history\n })\n this.pendingPromises.remove(historyItemRequest)\n })\n .catch(() => {\n this.pendingPromises.remove(historyItemRequest)\n })\n } else {\n // erase state, otherwise page reload will not re-fetch activity detail history\n history.replace({\n pathname: location.path,\n state: {\n ...this.props.location.state,\n historyItem: null\n }\n })\n }\n }\n\n componentWillUnmount() {\n this.pendingPromises.cancelAll()\n }\n\n render() {\n const {\n history,\n match: {\n params: { id, aid }\n }\n } = this.props\n const { historyItem } = this.state\n\n return (\n
    \n {historyItem && (\n \n \n
    \n \n Back\n \n

    Activity detail history

    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    StatusUserModified
    \n \n \n \n \n \n
    \n

    Settings

    \n
    \n
    {JSON.stringify(historyItem.dawg_job.settings, null, 2)}
    \n
    \n

    Stats

    \n
    \n
    {JSON.stringify(historyItem.dawg_job.stats, null, 2)}
    \n
    \n
    \n
    \n )}\n
    \n )\n }\n}\n\nexport default DawgJobHistory\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Link, withRouter } from \"react-router-dom\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { List, Record, Map } from \"immutable\"\nimport moment from \"moment\"\nimport _isNil from \"lodash/isNil\"\n\n// ui components\nimport Paper from \"components/UI/elements/Paper\"\nimport PaperHeader from \"components/UI/elements/PaperHeader\"\nimport Button from \"components/UI/elements/Button\"\nimport StatusElement from \"components/UI/elements/StatusElement\"\n\n// helpers\nimport { getRoutePath } from \"routes\"\nimport { formatBytes } from \"helpers/dataUnits.helper\"\nimport { goBack } from \"helpers/backButton.helper\"\nimport Username from \"helpers/Username.helper\"\nimport { getComponentIconSrc } from \"helpers/component.helper\"\n\n// constants\nimport { MOMENT } from \"sharedConstants\"\n\nimport \"./EntityChildrenJobsList.css\"\nimport { capitalize } from \"helpers/string.helper\"\n\nconst LOADING_LIMIT = 20\n\nclass EntityChildrenJobsList extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n loadingMore: false\n }\n }\n\n async componentDidMount() {\n const {\n selectionSettings,\n match: {\n params: { id: entityId }\n }\n } = this.props\n try {\n const limit =\n selectionSettings && selectionSettings.limit > 20 ? selectionSettings.limit : LOADING_LIMIT\n await this.props.listEntityChildrenJobs(entityId, 0, limit, 1, \"status\", \"DESC\")\n this.intervalId = setInterval(this.refreshEntityChildrenJobs, 8000)\n } catch (e) {}\n }\n\n componentWillUnmount() {\n clearInterval(this.intervalId)\n }\n\n refreshEntityChildrenJobs = async () => {\n const {\n listEntityChildrenJobs,\n selectionSettings,\n match: {\n params: { id: entityId }\n }\n } = this.props\n if (!this.state.loadingMore) {\n try {\n await listEntityChildrenJobs(\n entityId,\n selectionSettings.offset,\n selectionSettings.limit,\n 1,\n selectionSettings.order_by,\n selectionSettings.order_dir,\n false\n )\n } catch (e) {}\n }\n }\n\n renderDataCell = (bytes, files) => {\n if (_isNil(bytes)) {\n return \"–\"\n }\n\n return (\n \n {formatBytes(bytes)}{\" \"}\n \n in {files} {files === 1 ? \"file\" : \"files\"}\n \n \n )\n }\n\n renderLoadMoreButton = () => {\n const { selectionSettings, jobs } = this.props\n const { loadingMore } = this.state\n if (List.isList(jobs)) {\n if (\n selectionSettings.limit < 100 &&\n jobs.size < 100 &&\n jobs.size === selectionSettings.limit\n ) {\n return (\n \n Load more\n \n )\n }\n }\n }\n\n loadMoreJobs = async () => {\n const {\n selectionSettings,\n refreshEntityChildrenJobs,\n match: {\n params: { id: entityId }\n }\n } = this.props\n this.setState({\n loadingMore: true\n })\n try {\n await refreshEntityChildrenJobs(\n entityId,\n 0,\n selectionSettings.limit + LOADING_LIMIT,\n 1,\n \"status\",\n \"DESC\"\n )\n } catch (e) {\n } finally {\n this.setState({ loadingMore: false })\n }\n }\n\n render() {\n const {\n jobs,\n history,\n rootEntityName,\n match: {\n params: { id: entityId }\n }\n } = this.props\n\n return (\n
    \n {List.isList(jobs) && (\n \n \n
    \n \n Back\n \n

    \n {capitalize(rootEntityName)}{\" \"}\n {rootEntityName === \"dawg\" ? \"workspace\" : \"configuration\"} activity\n

    \n
    \n
    \n \n {jobs.size > 0 && (\n \n
    \n
    \n
    \n
     
    \n
    Name
    \n
    Status
    \n
    Modified
    \n
    Data in
    \n
    Data out
    \n
    User
    \n
     
    \n
    \n
    \n
    \n {jobs.map(job => {\n const pathname =\n rootEntityName === \"workspace\"\n ? \"workspace.configuration.configurationJob.show\"\n : \"workspace.workspaceJob.show\"\n const pathParams =\n rootEntityName === \"workspace\"\n ? {\n id: job.getIn([\"configuration\", \"workspace\", \"id\"]),\n cid: job.getIn([\"configuration\", \"id\"]),\n aid: job.id\n }\n : {\n id: job.getIn([\"workspace\", \"id\"]),\n aid: job.id\n }\n return (\n \n
     
    \n
    \n
    \n \n
    \n \n {rootEntityName === \"workspace\"\n ? job.getIn([\"configuration\", \"name\"])\n : job.getIn([\"workspace\", \"name\"])}\n \n \n {rootEntityName === \"workspace\"\n ? job.getIn([\"configuration\", \"component\", \"name\"])\n : \"Workspace\"}\n \n
    \n
    \n
    \n
    \n \n
    \n
    \n {moment\n .utc(job.created)\n .local()\n .format(MOMENT.DATE_TIME_FORMAT)}\n
    \n
    \n {this.renderDataCell(\n job.getIn([\"stats\", \"data_volumes\", \"/in\"]),\n job.getIn([\"stats\", \"files_count\", \"/in\"])\n )}\n
    \n
    \n {this.renderDataCell(\n job.getIn([\"stats\", \"data_volumes\", \"/out\"]),\n job.getIn([\"stats\", \"files_count\", \"/out\"])\n )}\n
    \n
    \n \n
    \n
     
    \n \n )\n })}\n
    \n
    \n
    \n )}\n {jobs.size === 0 && (\n

    \n The {rootEntityName} doesn't have an activity history yet.\n

    \n )}\n
    \n {this.renderLoadMoreButton()}\n
    \n )}\n
    \n )\n }\n}\n\nEntityChildrenJobsList.propTypes = {\n jobs: PropTypes.instanceOf(List),\n selectionSettings: PropTypes.instanceOf(Record),\n listEntityChildrenJobs: PropTypes.func.isRequired\n}\n\nexport default withRouter(EntityChildrenJobsList)\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { List, Record } from \"immutable\"\nimport { connect } from \"react-redux\"\n\n// actions\nimport { listDawgWorkspaceJob } from \"actions/workspaceJob.action\"\n\n// selectors\nimport {\n getDawgWorkspaceJobs,\n getDawgWorkspaceJobsSelectionSettings\n} from \"selectors/dawgWorkspaceJob.selector\"\n\nimport EntityChildrenJobsList from \"components/UI/DawgWsShared/EntityChildrenJobsList\"\n\nclass DawgWorkspaceJobList extends PureComponent {\n render() {\n const { jobs, selectionSettings, listDawgWorkspaceJob } = this.props\n return (\n \n )\n }\n}\n\nDawgWorkspaceJobList.propTypes = {\n jobs: PropTypes.instanceOf(List),\n selectionSettings: PropTypes.instanceOf(Record),\n listDawgWorkspaceJob: PropTypes.func.isRequired\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n jobs: getDawgWorkspaceJobs(state, ownProps.match.params.id),\n selectionSettings: getDawgWorkspaceJobsSelectionSettings(state, ownProps.match.params.id)\n})\n\nexport default connect(mapStateToProps, { listDawgWorkspaceJob })(DawgWorkspaceJobList)\n","import _get from \"lodash/get\"\nimport { api } from \"api\"\nimport { USER } from \"sharedConstants\"\nimport AllResourceItemsFetcher from \"helpers/AllResourceItemsFetcher.helper\"\n\nexport const fetchUserList = () => async dispatch => {\n const caller = new AllResourceItemsFetcher()\n\n return dispatch({\n type: USER.ACTION.LIST,\n payload: {\n promise: (async () => {\n const data = await caller\n .setEndpointCall((offset, limit, loadFullStructure) =>\n api().user.list(offset, limit, loadFullStructure)\n )\n .setDataPath(\"users\")\n .setLoadFullStructure(0)\n .run()\n return data\n })()\n }\n })\n}\n\nexport const fetchTrashedUserList = () => async dispatch => {\n const caller = new AllResourceItemsFetcher()\n\n return dispatch({\n type: USER.TRASH.ACTION.LIST,\n payload: {\n promise: (async () => {\n const data = await caller\n .setEndpointCall((offset, limit, loadFullStructure) =>\n api().user.trash.list(offset, limit, loadFullStructure)\n )\n .setDataPath(\"trashed_users\")\n .setLoadFullStructure(0)\n .run()\n return data\n })()\n }\n })\n}\n\nexport const retrieveUser = user_id => async dispatch =>\n dispatch({\n type: USER.ACTION.RETRIEVE,\n payload: {\n promise: (async () => {\n const response = await api().user.retrieve(user_id)\n return _get(response, \"user\", {})\n })()\n }\n })\n\nexport const createUser = data => async dispatch =>\n dispatch({\n type: USER.ACTION.CREATE,\n payload: {\n promise: (async () => {\n const response = await api().user.create(data)\n return _get(response, \"user\", {})\n })()\n }\n })\n\nexport const inviteUser = data => async dispatch =>\n dispatch({\n type: USER.ACTION.CREATE,\n payload: {\n promise: (async () => {\n const response = await api().user.sendInvitation(data)\n return _get(response, \"user\", {})\n })()\n }\n })\n\nexport const modifyUser = (id, data, originData) => async dispatch =>\n dispatch({\n type: USER.ACTION.MODIFY,\n payload: {\n promise: (async () => {\n const response = await api().user.modify(id, data, originData)\n return _get(response, \"user\", {})\n })()\n }\n })\n\nexport const deleteUser = id => async dispatch =>\n dispatch({\n type: USER.ACTION.DELETE,\n payload: {\n promise: (async () => {\n await api().user.delete(id)\n return id\n })()\n }\n })\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nimport \"./ToggleButton.css\"\n\nconst ToggleButton = ({ value, handleToggle, className }) => (\n \n \n \n \n \n)\n\nToggleButton.propTypes = {\n value: PropTypes.bool.isRequired,\n handleToggle: PropTypes.func.isRequired,\n className: PropTypes.string\n}\n\nexport default ToggleButton\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nimport \"./CheckboxField.css\"\n\nconst CheckboxField = ({\n input,\n label,\n className,\n meta: { touched, error },\n onChange = () => {},\n disabled = false,\n ...fieldAttrs\n}) => {\n const errorMessage = touched ? error : \"\"\n return (\n
    \n \n {errorMessage &&

    {errorMessage}

    }\n
    \n )\n}\n\nCheckboxField.propTypes = {\n input: PropTypes.object.isRequired,\n label: PropTypes.string.isRequired,\n meta: PropTypes.object.isRequired,\n className: PropTypes.string\n}\n\nexport default CheckboxField\n","import React, { Component } from \"react\"\nimport { connect } from \"react-redux\"\nimport { reduxForm, Field, FieldArray, getFormValues } from \"redux-form\"\nimport PropTypes from \"prop-types\"\nimport { List, Map } from \"immutable\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Waypoint } from \"react-waypoint\"\nimport _get from \"lodash/get\"\nimport _isArray from \"lodash/isArray\"\nimport _trim from \"lodash/trim\"\nimport _toLower from \"lodash/toLower\"\nimport _isNumber from \"lodash/isNumber\"\nimport _forEach from \"lodash/forEach\"\n\n// ui components\nimport Modal from \"components/UI/elements/Modal\"\nimport Button from \"components/UI/elements/Button\"\nimport IconButton from \"components/UI/elements/IconButton\"\nimport TextField from \"components/UI/elements/TextField\"\nimport ToggleSwitchField from \"components/UI/elements/ToggleSwitch/ToggleSwitchField\"\nimport Avatar from \"components/UI/elements/Avatar\"\nimport CheckboxField from \"components/UI/elements/CheckboxField\"\n\n// helpers\nimport { required, email, minLength12, passwordStrength } from \"helpers/validators.helper\"\n\n// actions\nimport { inviteUser, createUser } from \"actions/user.action\"\nimport { showToast } from \"actions/toast.action\"\nimport {\n setDefaultPermissions,\n markAllWorkspaces,\n setPermisionsAndMarkWorkspaces,\n setActiveUser,\n toggleAllSwitch,\n toggleAllUserPermissions\n} from \"actions/inviteForm.action\"\n\n// models\nimport { WorkspaceSimple as WorkspaceModel } from \"models/workspace.model\"\nimport SelectionSettings from \"models/selectionSettings.model\"\n\nimport { getAllUsersMap } from \"selectors/user.selector\"\n\n// constants, helpers\nimport { TOAST, PERMISSION, WORKSPACE } from \"sharedConstants\"\nimport { api } from \"api\"\nimport AllResourceItemsFetcher from \"helpers/AllResourceItemsFetcher.helper\"\n\nimport \"./CreateUserModal.css\"\n\nclass CreateUserModal extends Component {\n constructor(props) {\n super(props)\n this.state = {\n page: 1,\n workspaces: null,\n selectionSettings: null,\n hasWorkspacesMoreItems: false\n }\n }\n\n async componentDidUpdate(prevProps) {\n if (this.props.open && !prevProps.open) {\n const response = await api().workspace.list(0, WORKSPACE.LOADING_LIMIT, 0, \"name\", \"ASC\")\n this.setState({\n workspaces: List(response.workspaces.map(ws => new WorkspaceModel(ws))),\n selectionSettings: new SelectionSettings(response.selection_settings),\n hasWorkspacesMoreItems: WORKSPACE.LOADING_LIMIT === response.workspaces.length\n })\n }\n }\n\n onSubmit = values => {\n const { type, showToast } = this.props\n const { page, loading } = this.state\n\n if (type === \"user\" && page === 1) {\n this.changeNextPage(true)\n } else {\n if (!loading) {\n this.setState({ loading: true })\n this.usersCreated = 0\n this.createUsers(\n List(values[\"invite-users\"]),\n type,\n values.send_invitation_emails ? \"invite\" : \"create\",\n isSuccess => {\n this.setState({ loading: false })\n if (isSuccess) {\n if (this.usersCreated > 0) {\n let toastMessage = \"\"\n if (values.send_invitation_emails) {\n toastMessage = `${\n this.usersCreated === 1 ? \"Invite\" : \"Invites\"\n } to Meiro Integrations ${this.usersCreated === 1 ? \"has\" : \"have\"} been sent.`\n } else {\n toastMessage = `${\n this.usersCreated === 1 ? \"User has\" : \"Users have\"\n } been created.`\n }\n\n showToast(toastMessage, TOAST.TYPE.SUCCESS)\n }\n this.cancel()\n }\n }\n )\n }\n }\n }\n\n createUsers = (users, type, apiCallType, cbFn) => {\n if (users.size === 0) {\n cbFn(true)\n } else {\n const { inviteUser, createUser } = this.props\n const user = users.last()\n const data = {\n name: _trim(user.name),\n email: _trim(user.email),\n role: type\n }\n if (apiCallType === \"create\") {\n data.password = user.password\n }\n if (type === \"user\") {\n const workspacesAcl = {}\n if (user[\"workspace-selected\"]) {\n _forEach(user[\"workspace-selected\"], (value, key) => {\n if (value) {\n workspacesAcl[Number(key.split(\"-\")[1])] =\n user[\"workspace-permission\"] && user[\"workspace-permission\"][key]\n ? user[\"workspace-permission\"][key]\n : PERMISSION.READ\n }\n })\n }\n data[\"workspaces_acl\"] = workspacesAcl\n }\n\n const callerFunc = apiCallType === \"invite\" ? inviteUser : createUser\n callerFunc(data)\n .then(() => {\n this.usersCreated += 1\n this.createUsers(users.pop(), type, apiCallType, cbFn)\n })\n .catch(() => {\n this.createUsers(users.pop(), type, apiCallType, cbFn)\n })\n }\n }\n\n cancel = () => {\n const { handleClose, reset } = this.props\n handleClose()\n\n // reset after fade out\n setTimeout(() => {\n this.changeNextPage(false)\n reset()\n }, 500)\n }\n\n setPermissionsDefault = (workspaces = null) => {\n const { setDefaultPermissions } = this.props\n if (workspaces) {\n setDefaultPermissions(\n \"CreateUserForm\",\n workspaces.map(ws => ws.id)\n )\n } else if (List.isList(this.state.workspaces)) {\n setDefaultPermissions(\"CreateUserForm\", this.state.workspaces.map(ws => ws.id).toArray())\n }\n }\n\n setWorkspaceDefaultPermissionsAndMarkThem = (workspaces, userIndex, markValue) => {\n this.props.setPermisionsAndMarkWorkspaces(\n \"CreateUserForm\",\n workspaces.map(sg => sg.id),\n userIndex,\n markValue\n )\n }\n\n emailUnique = value => {\n const { formValues, users } = this.props\n const otherFormUsers = _get(formValues, \"invite-users\")\n if (_isArray(otherFormUsers)) {\n let occurences = 0\n otherFormUsers.forEach(user => {\n if (_toLower(_trim(user.email)) === _toLower(_trim(value))) {\n occurences++\n }\n })\n if (occurences > 1) {\n return \"Email has been used more than once\"\n }\n }\n\n const existingUser = users.find(user => _toLower(_trim(user.email)) === _toLower(_trim(value)))\n if (existingUser && existingUser.deleted) {\n return \"User is already in Trash\"\n } else if (existingUser && !existingUser.deleted) {\n return \"User already exists\"\n }\n return undefined\n }\n\n onMarkAllChange = member => async evt => {\n const { allWorkspacesLoaded, hasWorkspacesMoreItems } = this.state\n const { markAllWorkspaces } = this.props\n const { value } = evt.currentTarget\n const index = Number(member.match(/\\[(\\d)\\]/)[1])\n if (_isNumber(index)) {\n if (value === \"true\") {\n markAllWorkspaces(\"CreateUserForm\", index, false)\n } else {\n if (allWorkspacesLoaded || !hasWorkspacesMoreItems) {\n markAllWorkspaces(\"CreateUserForm\", index, true)\n } else {\n // we need to load all workspaces\n const caller = new AllResourceItemsFetcher()\n this.setState({ loadingAllWorkspaces: true })\n const data = await caller\n .setEndpointCall((offset, limit, loadFullStructure) =>\n api().workspace.list(offset, limit, 0, \"name\", \"ASC\")\n )\n .setDataPath(\"workspaces\")\n .setLoadFullStructure(0)\n .run()\n\n this.setWorkspaceDefaultPermissionsAndMarkThem(data, index, true)\n this.setState({\n loadingAllWorkspaces: false,\n allWorkspacesLoaded: true,\n hasWorkspacesMoreItems: false,\n workspaces: List(data.map(ws => new WorkspaceModel(ws)))\n })\n }\n }\n }\n }\n\n onToggleAllChange = member => async evt => {\n const { toggleAllSwitch } = this.props\n const { value } = evt.currentTarget\n const index = Number(member.match(/\\[(\\d+)\\]/)[1])\n if (_isNumber(index)) {\n toggleAllSwitch(\"CreateUserForm\", index, value === \"true\")\n }\n }\n\n toggleAllSwitchesIfMarked = member => evt => {\n const { formValues, toggleAllUserPermissions } = this.props\n const index = Number(member.match(/\\[(\\d+)\\]/)[1])\n if (_isNumber(index)) {\n const toggleAll = _get(formValues, `invite-users[${index}].toggle-all`)\n if (toggleAll) {\n toggleAllUserPermissions(\"CreateUserForm\", index, evt.currentTarget.value)\n }\n }\n }\n\n renderWorkspaces = userIndex => {\n const { formValues } = this.props\n const { workspaces, loadingAllWorkspaces } = this.state\n\n if (!workspaces || workspaces.size === 0) {\n return null\n }\n\n const member = `invite-users[${userIndex}]`\n\n return (\n
    \n
    \n
    \n
    \n )\n}\n","import React, { Component } from \"react\"\nimport { Route, Switch, Redirect } from \"react-router-dom\"\nimport { withRouter } from \"react-router\"\n\nimport { getRoutePath } from \"routes\"\nimport AdminProtectedRoute from \"./AdminProtectedRoute\"\n\n// pages\nimport ConfigurationShowPage from \"components/Configuration/pages/ConfigurationShow\"\nimport ConfigurationCreatePage from \"components/Configuration/pages/ConfigurationCreate\"\nimport SearchPage from \"components/Search/pages/Search\"\n\nimport WorkspaceListPage from \"components/Workspace/pages/WorkspaceList\"\nimport WorkspaceShowPage from \"components/Workspace/pages/WorkspaceShow\"\nimport WorkspaceJobListPage from \"components/WorkspaceJob/WorkspaceJobList\"\nimport WorkspaceJobShowPage from \"components/WorkspaceJob/WorkspaceJobShow\"\nimport WorkspaceJobHistoryPage from \"components/WorkspaceJobHistory\"\nimport WorkspaceHistoryListPage from \"components/WorkspaceHistory/WorkspaceHistoryList\"\nimport WorkspaceHistoryDetailPage from \"components/WorkspaceHistory/WorkspaceHistoryDetail\"\n\nimport DawgListPage from \"components/Dawg/DawgList\"\nimport DawgDetailPage from \"components/Dawg/DawgDetail\"\nimport DawgHistoryListPage from \"components/DawgHistory/DawgHistoryList\"\nimport DawgHistoryDetailPage from \"components/DawgHistory/DawgHistoryDetail\"\nimport DawgJobListPage from \"components/DawgJob/DawgJobList\"\nimport DawgJobDetailPage from \"components/DawgJob/DawgJobShow\"\nimport DawgWorkspaceAddPage from \"components/Dawg/DawgWorkspaceAdd\"\nimport DawgJobHistoryDetail from \"components/DawgJobHistory\"\nimport DawgWorkspaceJobList from \"components/DawgWorkspaceJob/DawgWorkspaceJobList\"\n\nimport UserListPage from \"components/User/pages/UserList\"\nimport TagListPage from \"components/Tag/pages/TagList\"\nimport OAuthListPage from \"components/Oauth/pages/OAuthList\"\nimport TrashList from \"components/Trash/pages/TrashList\"\nimport DataPreviewDetailPage from \"components/DataPreview/DataPreviewDetail\"\nimport DataPreviewListPage from \"components/DataPreview/DataPreviewList\"\nimport ConfigurationJobListPage from \"components/ConfigurationJob/ConfigurationJobList\"\nimport ConfigurationJobShowPage from \"components/ConfigurationJob/ConfigurationJobShow\"\nimport ConfigurationJobShowHistoryPage from \"components/ConfigurationJobHistory\"\nimport ConfigurationHistoryListPage from \"components/ConfigurationHistory/ConfigurationHistoryList\"\nimport ConfigurationHistoryDetailPage from \"components/ConfigurationHistory/ConfigurationHistoryDetail\"\nimport UserSettings from \"components/DropDown/pages/UserSettings\"\nimport NotAuthorizedPage from \"components/Page/NotAuthorizedPage\"\nimport NotFoundPage from \"components/Page/NotFoundPage\"\nimport ProjectConfigurationJobListPage from \"components/Project/ConfigurationJob\"\nimport ProjectWorkspaceJobListPage from \"components/Project/WorkspaceJob\"\nimport WorkspaceConfigurationJobListPage from \"components/WorkspaceConfigurationJob/WorkspaceConfigurationJobList\"\nimport UserPermissionsListPage from \"components/UserPermissions/pages/UserPermissionsList\"\n\nclass AuthenticatedRoutesSwitch extends Component {\n redirectToWorkspaces = () => {\n return \n }\n\n redirectToUsersAdministration = () => {\n return \n }\n\n render() {\n return (\n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n\n \n\n \n \n )\n }\n}\n\nexport default withRouter(AuthenticatedRoutesSwitch)\n","import React, { Component } from \"react\"\nimport { connect } from \"react-redux\"\nimport PropTypes from \"prop-types\"\nimport _noop from \"lodash/noop\"\n\n// components\nimport HeaderContainer from \"./components/HeaderContainer\"\nimport FooterContainer from \"./components/FooterContainer\"\nimport AuthenticatedRoutesSwitch from \"./AuthenticatedRoutesSwitch\"\n\n// actions\nimport { fetchComponentList } from \"actions/component.action\"\nimport { fetchUsersAcl, fetchDawgUsersAcl } from \"actions/acl.action\"\nimport { verifyUser } from \"actions/authenticatedUser.action\"\nimport { fetchTagsList } from \"actions/tag.action\"\nimport { fetchUserList, fetchTrashedUserList } from \"actions/user.action\"\nimport { refreshToken } from \"actions/authenticatedUser.action\"\n\nimport \"./AuthenticatedLayout.css\"\n\n// 5 hours\nconst REFRESH_TOKEN_INTERVAL = 18000000\n\nclass AuthenticatedLayout extends Component {\n constructor(props) {\n super(props)\n this.state = {\n aclsFetched: false,\n dawgAclsFetched: false\n }\n }\n\n fetchAppData = () => {\n const {\n authenticatedUser,\n fetchUsersAcl,\n fetchDawgUsersAcl,\n fetchComponentList,\n fetchUserList,\n fetchTagsList,\n fetchTrashedUserList\n } = this.props\n\n fetchUsersAcl(authenticatedUser.data.id)\n .then(() => {\n this.setState({\n aclsFetched: true\n })\n })\n .catch(_noop)\n fetchDawgUsersAcl(authenticatedUser.data.id)\n .then(() => {\n this.setState({\n dawgAclsFetched: true\n })\n })\n .catch(_noop)\n\n fetchComponentList().catch(_noop)\n fetchUserList().catch(_noop)\n fetchTagsList().catch(_noop)\n fetchTrashedUserList().catch(_noop)\n }\n\n refreshTokenAndData = () => {\n this.props\n .refreshToken()\n .then(this.fetchAppData)\n .catch(_noop)\n }\n\n componentDidMount() {\n const { authenticatedUser, verifyUser } = this.props\n\n verifyUser(authenticatedUser.token)\n .then(() => {\n const timestamp = Date.now()\n const diff = timestamp - authenticatedUser.loginTimestamp\n if (diff < REFRESH_TOKEN_INTERVAL) {\n this.fetchAppData()\n } else {\n this.refreshTokenAndData()\n }\n // check token every hour\n this.tokenRefreshInterval = setInterval(this.refreshTokenAndData, 3600000)\n })\n .catch(_noop)\n }\n\n componentWillUnmount() {\n clearInterval(this.tokenRefreshInterval)\n }\n\n render() {\n const { authenticatedUser } = this.props\n const { aclsFetched, dawgAclsFetched } = this.state\n\n return (\n
    \n {authenticatedUser.isFetching === false &&\n aclsFetched &&\n dawgAclsFetched &&\n authenticatedUser.data !== null && (\n \n
    \n \n
    \n \n
    \n
    \n \n
    \n )}\n
    \n )\n }\n}\n\nAuthenticatedLayout.propTypes = {\n fetchComponentList: PropTypes.func.isRequired,\n fetchUsersAcl: PropTypes.func.isRequired,\n fetchDawgUsersAcl: PropTypes.func.isRequired,\n fetchUserList: PropTypes.func.isRequired,\n fetchTagsList: PropTypes.func.isRequired,\n verifyUser: PropTypes.func.isRequired,\n authenticatedUser: PropTypes.object.isRequired,\n fetchTrashedUserList: PropTypes.func.isRequired\n}\n\nconst mapStateToProps = state => {\n return {\n authenticatedUser: state.authenticatedUser\n }\n}\n\nexport default connect(mapStateToProps, {\n fetchComponentList,\n fetchUsersAcl,\n fetchDawgUsersAcl,\n verifyUser,\n fetchUserList,\n fetchTagsList,\n fetchTrashedUserList,\n refreshToken\n})(AuthenticatedLayout)\n","import { api } from \"api\"\nimport { COMPONENT } from \"sharedConstants\"\nimport AllResourceItemsFetcher from \"helpers/AllResourceItemsFetcher.helper\"\n\nexport const fetchComponentList = () => async dispatch => {\n const caller = new AllResourceItemsFetcher()\n\n return dispatch({\n type: COMPONENT.ACTION.LIST,\n payload: {\n promise: (async () => {\n const data = await caller\n .setEndpointCall((offset, limit, loadFullStructure) =>\n api().component.list(offset, limit, loadFullStructure)\n )\n .setDataPath(\"components\")\n .setLoadFullStructure(0)\n .run()\n return data\n })()\n }\n })\n}\n","import React, { Component } from \"react\"\nimport { connect } from \"react-redux\"\nimport { reduxForm, Field } from \"redux-form\"\nimport PropTypes from \"prop-types\"\nimport { Link } from \"react-router-dom\"\nimport ReCAPTCHA from \"react-google-recaptcha\"\n\nimport TextField from \"components/UI/elements/TextField\"\nimport Button from \"components/UI/elements/Button\"\nimport { required, email } from \"helpers/validators.helper\"\nimport { TOAST } from \"sharedConstants\"\nimport { showToast } from \"actions/toast.action\"\nimport { getRoutePath } from \"routes\"\nimport { api } from \"api\"\nimport logo from \"images/meiro-symbol-white-transparent.svg\"\n\nlet recaptchaSiteKey = null\nif (process.env.NODE_ENV === \"production\") {\n recaptchaSiteKey = \"[[RECAPTCHA_SITE_KEY]]\"\n} else {\n recaptchaSiteKey =\n process.env.REACT_APP_RECAPTCHA_SITE_KEY === '\"\"'\n ? \"\"\n : process.env.REACT_APP_RECAPTCHA_SITE_KEY\n}\n\nclass PasswordReset extends Component {\n constructor(props) {\n super(props)\n this.state = {\n recaptchaToken: \"\"\n }\n }\n\n componentDidMount() {\n document.body.classList.add(\"toastify-on-top\")\n }\n\n componentWillUnmount() {\n document.body.classList.remove(\"toastify-on-top\")\n }\n\n onSubmit = async values => {\n if (!this.state.loading) {\n const { email } = values\n const { showToast, history } = this.props\n const { recaptchaToken: recaptcha_token } = this.state\n this.setState({ loading: true })\n await api()\n .user.resetPassword({ email, recaptcha_token })\n .then(() => {\n showToast(\n \"The email with instructions has been sent. If you did not receive an email please contact your administrator.\",\n TOAST.TYPE.SUCCESS\n )\n history.push(getRoutePath(\"login\"))\n })\n .catch(() => {\n this.setState({ loading: false })\n })\n }\n }\n\n setRecaptchaToken = recaptchaToken => {\n this.setState({ recaptchaToken })\n }\n\n render() {\n const { handleSubmit } = this.props\n const { recaptchaToken } = this.state\n\n return (\n
    \n
    \n \"meiro\n
    \n

    Password reset

    \n
    \n \n
    \n {recaptchaSiteKey && (\n
    \n \n
    \n )}\n \n Reset Password\n \n \n Back to login\n \n \n
    \n
    \n
    \n

    Meiro Integrations

    \n

    Your way out of the data labyrinth.

    \n
    \n
    \n
    \n )\n }\n}\n\nPasswordReset.propTypes = {\n handleSubmit: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired\n}\n\nPasswordReset = reduxForm({\n form: \"PasswordResetForm\",\n touchOnBlur: false\n})(connect(null, { showToast })(PasswordReset))\n\nexport default PasswordReset\n","import React, { Component } from \"react\"\nimport { connect } from \"react-redux\"\nimport { reduxForm, Field } from \"redux-form\"\nimport PropTypes from \"prop-types\"\n\nimport Button from \"components/UI/elements/Button\"\nimport PasswordField from \"components/UI/components/PasswordField\"\nimport TextField from \"components/UI/elements/TextField\"\nimport { PASSWORD_SET, TOAST } from \"sharedConstants\"\nimport { logout } from \"actions/authenticatedUser.action\"\nimport { showToast } from \"actions/toast.action\"\nimport { getRoutePath } from \"routes\"\nimport { api } from \"api\"\n\nimport logo from \"images/meiro-symbol-white-transparent.svg\"\nimport \"./PasswordSet.css\"\n\nclass PasswordSet extends Component {\n constructor(props) {\n super(props)\n this.state = {\n heading: \"Set new password\",\n passwordFieldLabel: \"New password\",\n submitButtonText: \"Set password\"\n }\n }\n\n componentDidMount() {\n const { search } = this.props.location\n\n if (search) {\n const params = new URLSearchParams(search)\n const email = params.get(\"email\")\n const resetToken = params.get(\"reset_token\")\n const referrer = params.get(\"referrer\")\n if (referrer === PASSWORD_SET.REFERRER.INVITATION) {\n this.setState({\n heading: \"You've got invited\",\n passwordFieldLabel: \"Create password\",\n submitButtonText: \"Create account\",\n referrer,\n email,\n resetToken\n })\n } else {\n this.setState({\n referrer,\n email,\n resetToken\n })\n }\n }\n document.body.classList.add(\"toastify-on-top\")\n }\n\n componentWillUnmount() {\n document.body.classList.remove(\"toastify-on-top\")\n }\n\n onSubmit = async values => {\n this.setState({ loading: true })\n const { email, resetToken, referrer } = this.state\n const { history, showToast, logout } = this.props\n const data = {\n email,\n password_reset_token: resetToken,\n password: values.password\n }\n\n await api()\n .user.setPassword(data)\n .then(() => {\n logout()\n showToast(\n referrer === PASSWORD_SET.REFERRER.INVITATION\n ? \"Password has been created. Please feel free to login!\"\n : \"Password has been successfully reset.\",\n TOAST.TYPE.SUCCESS\n )\n history.push(getRoutePath(\"login\"))\n })\n .catch(() => {\n this.setState({ loading: false })\n })\n }\n\n render() {\n const { handleSubmit } = this.props\n const { passwordFieldLabel, submitButtonText, heading, email, referrer, loading } = this.state\n const passwordFormName = \"forgetPassword\"\n\n return (\n
    \n
    \n \"meiro\n
    \n

    {heading}

    \n {referrer === PASSWORD_SET.REFERRER.INVITATION && (\n

    \n on {email} email\n

    \n )}\n \n \n \n \n \n {submitButtonText}\n \n
    \n
    \n
    \n
    \n

    Meiro Integrations

    \n

    Your way out of the data labyrinth.

    \n
    \n
    \n
    \n )\n }\n}\n\nconst validate = values => {\n const errors = {}\n if (values.password && values.password !== values.repeat_password) {\n errors.repeat_password = \"Password doesn't match\"\n }\n return errors\n}\n\nPasswordSet.propTypes = {\n handleSubmit: PropTypes.func.isRequired,\n logout: PropTypes.func.isRequired,\n showToast: PropTypes.func.isRequired\n}\n\nPasswordSet = reduxForm({\n form: \"PasswordSetForm\",\n touchOnBlur: false,\n validate\n})(connect(null, { logout, showToast })(PasswordSet))\n\nexport default PasswordSet\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\n\n// ui components\nimport ConfirmModal from \"components/UI/components/ConfirmModal\"\n\n// constants\nimport { MODAL } from \"sharedConstants\"\n\nconst getUserConfirmation = (message, callback) => {\n const modal = document.createElement(\"div\")\n document.body.appendChild(modal)\n\n const withCleanup = answer => {\n ReactDOM.unmountComponentAtNode(modal)\n document.body.removeChild(modal)\n callback(answer)\n }\n\n ReactDOM.render(\n withCleanup(false)}\n handleConfirm={() => withCleanup(true)}\n title=\"Are you sure?\"\n text={message}\n />,\n modal\n )\n}\n\nexport default getUserConfirmation\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { CSSTransition } from \"react-transition-group\"\n\nimport Button from \"components/UI/elements/Button\"\n\nimport \"./AppUpdateModal.css\"\nimport meiroLogoSrc from \"images/meiro-symbol-white-transparent.svg\"\n\nclass AppUpdateModal extends PureComponent {\n unlisten = null\n\n constructor(props) {\n super(props)\n this.state = {\n ownOpenState: true\n }\n }\n\n componentDidMount() {\n if (this.props.open) {\n this.listenForHistoryChanges()\n this.removeFocusFromInputs()\n window.addEventListener(\"keyup\", this.handleKeyUp, false)\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.open && !prevProps.open) {\n this.listenForHistoryChanges()\n this.removeFocusFromInputs()\n window.addEventListener(\"keyup\", this.handleKeyUp, false)\n } else if (!this.props.open && prevProps.open) {\n this.unlistenForHistoryChanges()\n window.removeEventListener(\"keyup\", this.handleKeyUp, false)\n }\n }\n\n componentWillUnmount() {\n this.unlistenForHistoryChanges()\n window.removeEventListener(\"keyup\", this.handleKeyUp, false)\n }\n\n listenForHistoryChanges = () => {\n const { history, open } = this.props\n\n this.unlisten = history.listen(() => {\n if (open && !this.state.ownOpenState) {\n this.setState({\n ownOpenState: true\n })\n }\n })\n }\n\n unlistenForHistoryChanges = () => {\n if (this.unlisten) {\n this.unlisten()\n }\n }\n\n removeFocusFromInputs = () => {\n const el = document.querySelector(\":focus\")\n if (el) el.blur()\n }\n\n handleKeyUp = evt => {\n const keys = {\n 27: () => {\n evt.preventDefault()\n this.closeModal()\n }\n }\n if (keys[evt.keyCode]) {\n keys[evt.keyCode]()\n }\n }\n\n closeModal = () => {\n window.removeEventListener(\"keyup\", this.handleKeyUp, false)\n this.setState({\n ownOpenState: false\n })\n }\n\n openModal = () => {\n this.removeFocusFromInputs()\n window.addEventListener(\"keyup\", this.handleKeyUp, false)\n this.setState({\n ownOpenState: true\n })\n }\n\n render() {\n const { open, updateFn } = this.props\n const { ownOpenState } = this.state\n\n return (\n \n
    \n
    \n
    \n \"\"\n

    Yuppi! The new version of Meiro is available

    \n
    \n
    \n
    \n

    Update to the latest version of Meiro Integrations.

    \n

    \n If you want to finish unsaved work, click on “No, ask me later”,\n save changes and proceed with an update later.\n

    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n )\n }\n}\n\nAppUpdateModal.propTypes = {\n open: PropTypes.bool.isRequired,\n updateFn: PropTypes.func.isRequired,\n history: PropTypes.object.isRequired\n}\n\nexport default AppUpdateModal\n","import React, { Component } from \"react\"\nimport { connect } from \"react-redux\"\nimport { Router, Route, Switch, Link } from \"react-router-dom\"\nimport { createBrowserHistory } from \"history\"\nimport { ToastContainer, toast as toastShow } from \"react-toastify\"\nimport LoadingBar from \"react-redux-loading-bar\"\nimport Bowser from \"bowser\"\nimport _get from \"lodash/get\"\n\n// font awesome\nimport { library } from \"@fortawesome/fontawesome-svg-core\"\n\nimport {\n faCaretUp,\n faCaretDown,\n faSearch,\n faCodeBranch,\n faWrench,\n faTrashAlt as solidTrashAlt,\n faChevronLeft as chevronLeftSolid,\n faPlay as faPlaySolid,\n faPause,\n faExclamation,\n faCheck,\n faHourglass,\n faTimes as faTimesSolid,\n faMinus,\n faArrowAltCircleDown,\n faArrowAltCircleUp,\n faCloud,\n faCode,\n faInfoCircle,\n faStream as faStreamSolid,\n faFileContract,\n faUser as faUserSolid,\n faLifeRing,\n faMicrochip,\n faCopy as faCopySolid,\n faArrowCircleUp,\n faBan,\n faExclamationTriangle,\n faCogs as faCogsSolid,\n faTerminal as faTerminalSolid,\n faDatabase as faDatabaseSolid\n} from \"@fortawesome/free-solid-svg-icons\"\n\nimport {\n faUser,\n faEnvelope,\n faTrashAlt as trashAltRegular,\n faClone,\n faPaperPlane,\n faEdit,\n faEyeSlash,\n faEye as faEyeRegular,\n faUserCircle\n} from \"@fortawesome/free-regular-svg-icons\"\n\nimport {\n faQuestion,\n faTimes,\n faChevronRight,\n faChevronLeft,\n faChevronDown,\n faChevronUp,\n faLocation,\n faPlay,\n faPlus,\n faUserEdit,\n faRedo,\n faPowerOff as faPowerOffRegular,\n faLevelUp,\n faStream,\n faFilter,\n faDownload,\n faCogs as faCogsRegular,\n faUndo,\n faTag,\n faEraser,\n faUserPlus,\n faPlusCircle as faPlusCircleRegular,\n faSortSizeDownAlt,\n faSortAlphaDown,\n faSortAlphaUp,\n faCog,\n faExclamationTriangle as faExclamationTriangleRegular\n} from \"@fortawesome/pro-regular-svg-icons\"\n\nimport { faEye, faPencil, faPowerOff, faCopy } from \"@fortawesome/pro-light-svg-icons\"\n\nimport {\n faTrafficCone,\n faSignOut,\n faTachometerFastest,\n faChartNetwork,\n faSortAlt,\n faGearCode,\n faBinary,\n faMapMarkerAlt,\n faCrown,\n faEye as faEyeSolid,\n faPencil as faPencilSolid,\n faLockKeyhole\n} from \"@fortawesome/pro-solid-svg-icons\"\n\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\n// scroll to top\nimport ScrollToTop from \"./ScrollToTop\"\n\n// auth helpers\nimport { userIsAuthenticatedRedir, userIsNotAuthenticatedRedir } from \"auth\"\n\n// ui components\nimport Login from \"components/Login\"\nimport OktaCallback from \"components/Login/oktaCallback\"\nimport LogoutPage from \"components/Page/LogoutPage\"\nimport AuthenticatedLayout from \"components/UI/AuthenticatedLayout\"\nimport PasswordResetSection from \"components/Password/pages/PasswordReset\"\nimport PasswordSetSection from \"components/Password/pages/PasswordSet\"\nimport getUserConfirmation from \"./getUserConfirmation\"\nimport AppUpdateModal from \"./AppUpdateModal\"\n\n// constants, helpers\nimport { TOAST } from \"sharedConstants\"\nimport { getRoutePath } from \"routes\"\n\nimport \"./App.css\"\nimport \"react-toastify/dist/ReactToastify.css\"\n\n// own history instance\nexport const history = createBrowserHistory({\n getUserConfirmation: getUserConfirmation\n})\n\nconst LoginSection = userIsNotAuthenticatedRedir(Login)\nconst OktaCallbackSection = userIsNotAuthenticatedRedir(OktaCallback)\nconst AuthenticatedSection = userIsAuthenticatedRedir(AuthenticatedLayout)\n\nlibrary.add(\n faEyeSolid,\n faPencilSolid,\n faCrown,\n faCaretUp,\n faCaretDown,\n faSignOut,\n faUser,\n faEnvelope,\n faQuestion,\n faSearch,\n faTimes,\n faTag,\n faChevronRight,\n faChevronLeft,\n faCodeBranch,\n faWrench,\n solidTrashAlt,\n chevronLeftSolid,\n faEye,\n faPencil,\n trashAltRegular,\n faLocation,\n faClone,\n faPowerOff,\n faPlay,\n faPlus,\n faPaperPlane,\n faUserEdit,\n faEdit,\n faRedo,\n faPlaySolid,\n faPause,\n faExclamation,\n faMinus,\n faCheck,\n faHourglass,\n faPowerOffRegular,\n faLevelUp,\n faStream,\n faFilter,\n faTrafficCone,\n faChevronUp,\n faChevronDown,\n faDownload,\n faTimesSolid,\n faCogsRegular,\n faUndo,\n faArrowAltCircleDown,\n faArrowAltCircleUp,\n faCopy,\n faEraser,\n faUserPlus,\n faCloud,\n faCode,\n faExclamationTriangle,\n faPlusCircleRegular,\n faInfoCircle,\n faEyeSlash,\n faEyeRegular,\n faStreamSolid,\n faFileContract,\n faUserSolid,\n faLifeRing,\n faTachometerFastest,\n faMicrochip,\n faCopySolid,\n faSortSizeDownAlt,\n faSortAlphaDown,\n faSortAlphaUp,\n faArrowCircleUp,\n faChartNetwork,\n faUserCircle,\n faSortAlt,\n faBan,\n faCog,\n faExclamationTriangleRegular,\n faCogsSolid,\n faTerminalSolid,\n faDatabaseSolid,\n faGearCode,\n faBinary,\n faMapMarkerAlt,\n faLockKeyhole\n)\n\n/*\n * Toast custom close button\n */\nconst CloseButton = ({ closeToast }) => (\n \n \n \n)\n\nconst ToastContent = ({ text, route, closeToast, type }) => {\n const renderToastIcon = () => {\n let faIcon\n if (type === TOAST.TYPE.ERROR) {\n faIcon = \"exclamation-triangle\"\n } else if (type === TOAST.TYPE.SUCCESS) {\n faIcon = \"check\"\n } else {\n faIcon = \"cogs\"\n }\n return (\n \n \n \n )\n }\n\n if (route) {\n return (\n \n {renderToastIcon()}\n\n \n {text}\n \n View \n \n \n \n )\n } else {\n return (\n \n {renderToastIcon()}\n \n {text}\n \n \n )\n }\n}\n\nclass App extends Component {\n constructor(props) {\n super(props)\n this.registration = false\n this.state = {\n isValidBrowser: true,\n invalidBrowserWarningClosed: false,\n newServiceWorkerDetected: false\n }\n\n window.addEventListener(\"blur\", this.dismissAllToasts, false)\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"blur\", this.dismissAllToasts, false)\n document.removeEventListener(\"onNewServiceWorker\", this.handleNewServiceWorker)\n }\n\n dismissAllToasts = () => {\n toastShow.dismiss()\n }\n\n componentDidMount() {\n const browser = Bowser.getParser(window.navigator.userAgent)\n const isValidBrowser = browser.satisfies({\n chrome: \">=58\",\n edge: \">=16\",\n firefox: \">=54\",\n chromium: \">=58\",\n safari: \">=10.1\",\n opera: \">=44\"\n })\n this.setState({\n isValidBrowser\n })\n document.addEventListener(\"onNewServiceWorker\", this.handleNewServiceWorker)\n }\n\n componentDidUpdate(prevProps) {\n const { toast } = this.props\n if (toast.id !== prevProps.toast.id) {\n if (this.toastId && toast.message === prevProps.toast.message) {\n toastShow.dismiss(this.toastId)\n }\n this.toastId = this.notify(toast)\n }\n }\n\n notify = data => {\n const message = _get(data, \"message\", \"\")\n const wider = message.length > 120\n // display notification only if the app is visible\n switch (data.type) {\n case TOAST.TYPE.ERROR:\n return toastShow.error(, {\n position: toastShow.POSITION.TOP_RIGHT,\n className: `toast toast-error ${wider ? \"wide\" : \"\"} ${data.route ? \"with-route\" : \"\"}`,\n bodyClassName: \"toast-body\",\n closeButton: ,\n autoClose: false,\n draggable: false,\n closeOnClick: false\n })\n case TOAST.TYPE.SUCCESS:\n return toastShow.success(\n ,\n {\n position: toastShow.POSITION.TOP_RIGHT,\n className: `toast toast-success ${wider ? \"wide\" : \"\"} ${\n data.route ? \"with-route\" : \"\"\n }`,\n bodyClassName: \"toast-body\",\n closeButton: ,\n pauseOnHover: true,\n pauseOnFocusLoss: false,\n autoClose: 5000,\n draggable: false,\n closeOnClick: false\n }\n )\n case TOAST.TYPE.INFO:\n default:\n return toastShow.info(, {\n position: toastShow.POSITION.TOP_RIGHT,\n className: `toast toast-info ${wider ? \"wide\" : \"\"} ${data.route ? \"with-route\" : \"\"}`,\n bodyClassName: \"toast-body\",\n closeButton: ,\n pauseOnHover: true,\n pauseOnFocusLoss: false,\n autoClose: false,\n draggable: false,\n closeOnClick: false\n })\n }\n }\n\n closeInvalidBrowserWarning = () => {\n this.setState({\n invalidBrowserWarningClosed: true\n })\n }\n\n handleNewServiceWorker = evt => {\n this.registration = evt.detail.registration\n this.setState({\n newServiceWorkerDetected: true\n })\n }\n\n render() {\n const { isValidBrowser, invalidBrowserWarningClosed, newServiceWorkerDetected } = this.state\n const { onLoadNewServiceWorkerAccept } = this.props\n return (\n \n \n
    \n \n {!isValidBrowser && !invalidBrowserWarningClosed && (\n
    \n
    \n
    \n \n

    \n Bear in mind that you use old and unsupported browser. We recommend upgrading\n to the latest{\" \"}\n \n Safari\n \n ,{\" \"}\n \n Chrome\n {\" \"}\n or{\" \"}\n \n Firefox\n \n .\n

    \n
    \n
    \n \n Dismiss\n \n
    \n
    \n
    \n )}\n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n )\n }\n}\n\nfunction mapStateToProps({ toast }) {\n return { toast }\n}\n\nexport default connect(mapStateToProps)(App)\n","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\nlet isInitialServiceWorker = false\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n)\n\nexport default function register(config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return\n }\n\n window.addEventListener(\"load\", () => {\n if (!navigator.serviceWorker.controller) {\n isInitialServiceWorker = true\n }\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config)\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\"\n )\n })\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config)\n }\n })\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing\n if (installingWorker == null) {\n return\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\"\n )\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration)\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\")\n }\n } else if (installingWorker.state === \"activated\") {\n if (!isInitialServiceWorker) {\n window.location.reload()\n }\n }\n }\n }\n\n if (registration.waiting) {\n const waitingWorker = registration.waiting\n\n if (config && config.onUpdate) {\n config.onUpdate(registration)\n }\n\n waitingWorker.onstatechange = () => {\n if (waitingWorker.state === \"activated\") {\n window.location.reload()\n }\n }\n }\n\n if (registration.waiting === null) {\n setInterval(() => registration.update(), 3600000)\n }\n })\n .catch(error => {\n console.error(\"Error during service worker registration:\", error)\n })\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { \"Service-Worker\": \"script\" }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\")\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf(\"javascript\") === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload()\n })\n })\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config)\n }\n })\n .catch(() => {\n console.log(\"No internet connection found. App is running in offline mode.\")\n })\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister()\n })\n .catch(error => {\n console.error(error.message)\n })\n }\n}\n","import \"react-app-polyfill/ie11\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Provider } from \"react-redux\"\nimport { PersistGate } from \"redux-persist/lib/integration/react\"\n\nimport \"index.css\"\nimport App from \"components/App\"\nimport store, { persistor } from \"store\"\nimport { unregister } from \"registerServiceWorker\"\n\n// gantt chart css\nimport \"5minute-frappe-gantt/dist/frappe-gantt.css\"\n\n// import brace modes\nimport \"brace/mode/python\"\nimport \"brace/mode/sql\"\nimport \"brace/mode/r\"\nimport \"brace/mode/sh\"\n// import brace searchbox extension\nimport \"brace/ext/searchbox\"\n// import code editor custom theme\nimport \"components/UI/elements/CodeEditorTheme/meiro\"\n\nconst updateSW = registration => () => {\n if (registration && registration.waiting) {\n registration.waiting.postMessage({ type: \"SKIP_WAITING\" })\n }\n}\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById(\"root\")\n)\n\nunregister()\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"body\":\"TransferOwnershipModal_body__ZoTtd\",\"buttons\":\"TransferOwnershipModal_buttons__ZTi2Z\",\"disabled\":\"TransferOwnershipModal_disabled__1TTC-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"UserPermissionsList_header__1p4C_\",\"search\":\"UserPermissionsList_search__SF8G7\",\"noResults\":\"UserPermissionsList_noResults__3kYAm\",\"table\":\"UserPermissionsList_table__1BCdS\",\"tableHeader\":\"UserPermissionsList_tableHeader__3_LBv\",\"tableRow\":\"UserPermissionsList_tableRow__3_CJC\",\"tableCell\":\"UserPermissionsList_tableCell__2gJrZ\",\"user\":\"UserPermissionsList_user__svyGN\",\"inactive\":\"UserPermissionsList_inactive__1v9vF\",\"name\":\"UserPermissionsList_name__1vQeb\",\"role\":\"UserPermissionsList_role__1MlG8\",\"badge\":\"UserPermissionsList_badge__1yllC\",\"adminAccess\":\"UserPermissionsList_adminAccess__3til8\",\"list\":\"UserPermissionsList_list__xHj7m\",\"linkedEntity\":\"UserPermissionsList_linkedEntity__Wm48d\",\"icon\":\"UserPermissionsList_icon__2xtca\",\"link\":\"UserPermissionsList_link__1VoYQ\"};"],"sourceRoot":""}