{"version":3,"sources":["webpack:///./vue_shared/components/user_avatar/user_avatar_image.vue","webpack:///./vue_shared/components/user_avatar/user_avatar_image.vue?5b71","webpack:///vue_shared/components/user_avatar/user_avatar_image.vue","webpack:///./vue_shared/components/user_avatar/user_avatar_image.vue?7c05","webpack:///./ci/common/pipelines_table.vue","webpack:///./ci/pipelines_page/components/failure_widget/failed_job_details.vue","webpack:///./ci/pipelines_page/components/failure_widget/failed_job_details.vue?31be","webpack:///ci/pipelines_page/components/failure_widget/failed_job_details.vue","webpack:///./ci/pipelines_page/components/failure_widget/failed_job_details.vue?d988","webpack:///./ci/pipelines_page/components/failure_widget/constants.js","webpack:///ci/pipelines_page/components/failure_widget/failed_jobs_list.vue","webpack:///./ci/pipelines_page/components/failure_widget/failed_jobs_list.vue?9c11","webpack:///./ci/pipelines_page/components/failure_widget/utils.js","webpack:///./ci/pipelines_page/components/failure_widget/failed_jobs_list.vue?cb03","webpack:///./ci/pipelines_page/components/failure_widget/failed_jobs_list.vue","webpack:///./ci/pipelines_page/components/failure_widget/pipeline_failed_jobs_widget.vue?0d2e","webpack:///ci/pipelines_page/components/failure_widget/pipeline_failed_jobs_widget.vue","webpack:///./ci/pipelines_page/components/failure_widget/pipeline_failed_jobs_widget.vue?68a4","webpack:///./ci/pipelines_page/components/failure_widget/pipeline_failed_jobs_widget.vue","webpack:///ci/pipelines_page/components/pipeline_multi_actions.vue","webpack:///./ci/pipelines_page/components/pipeline_multi_actions.vue?623a","webpack:///./ci/pipelines_page/components/pipeline_multi_actions.vue?1722","webpack:///./ci/pipelines_page/components/pipeline_multi_actions.vue","webpack:///./ci/pipelines_page/components/pipelines_manual_actions.vue?d4f1","webpack:///ci/pipelines_page/components/pipelines_manual_actions.vue","webpack:///./ci/pipelines_page/components/pipelines_manual_actions.vue?785f","webpack:///./ci/pipelines_page/components/pipelines_manual_actions.vue","webpack:///./ci/pipelines_page/components/pipeline_stop_modal.vue?db3f","webpack:///ci/pipelines_page/components/pipeline_stop_modal.vue","webpack:///./ci/pipelines_page/components/pipeline_stop_modal.vue?4659","webpack:///./ci/pipelines_page/components/pipeline_stop_modal.vue","webpack:///./ci/pipelines_page/components/pipeline_operations.vue?848c","webpack:///ci/pipelines_page/components/pipeline_operations.vue","webpack:///./ci/pipelines_page/components/pipeline_operations.vue?6e64","webpack:///./ci/pipelines_page/components/pipeline_operations.vue","webpack:///./ci/pipelines_page/components/pipeline_triggerer.vue?a471","webpack:///ci/pipelines_page/components/pipeline_triggerer.vue","webpack:///./ci/pipelines_page/components/pipeline_triggerer.vue?c90f","webpack:///./ci/pipelines_page/components/pipeline_triggerer.vue","webpack:///./ci/pipelines_page/components/pipeline_labels.vue?3264","webpack:///ci/pipelines_page/components/pipeline_labels.vue","webpack:///./ci/pipelines_page/components/pipeline_labels.vue?f32e","webpack:///./ci/pipelines_page/components/pipeline_labels.vue","webpack:///./ci/pipelines_page/components/pipeline_url.vue?7fa3","webpack:///ci/pipelines_page/components/pipeline_url.vue","webpack:///./ci/pipelines_page/components/pipeline_url.vue?f29a","webpack:///./ci/pipelines_page/components/pipeline_url.vue","webpack:///./ci/pipelines_page/components/time_ago.vue?4957","webpack:///ci/pipelines_page/components/time_ago.vue","webpack:///./ci/pipelines_page/components/time_ago.vue?f528","webpack:///./ci/pipelines_page/components/time_ago.vue","webpack:///./ci/pipelines_page/components/pipeline_status_badge.vue?ebf1","webpack:///ci/pipelines_page/components/pipeline_status_badge.vue","webpack:///./ci/pipelines_page/components/pipeline_status_badge.vue?8e8b","webpack:///./ci/pipelines_page/components/pipeline_status_badge.vue","webpack:///ci/common/pipelines_table.vue","webpack:///./ci/common/pipelines_table.vue?8684","webpack:///./ci/common/pipelines_table.vue?f0ab","webpack:///./ci/jobs_page/graphql/fragments/job.fragment.graphql","webpack:///./ci/pipeline_mini_graph/graphql/mutations/job_play.mutation.graphql","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/scorer.js","webpack:///./ci/pipeline_details/stores/pipelines_store.js","webpack:///./ci/pipeline_mini_graph/graphql/mutations/job_unschedule.mutation.graphql","webpack:///./ci/pipelines_page/graphql/queries/get_pipeline_actions.query.graphql","webpack:///./ci/pipeline_mini_graph/graphql/queries/get_pipeline_stage_jobs.query.graphql","webpack:///./ci/pipeline_mini_graph/pipeline_mini_graph.vue","webpack:///./ci/pipeline_mini_graph/utils/data_utils.js","webpack:///./ci/pipeline_mini_graph/downstream_pipelines.vue","webpack:///./ci/pipeline_mini_graph/downstream_pipelines.vue?f504","webpack:///ci/pipeline_mini_graph/downstream_pipelines.vue","webpack:///./ci/pipeline_mini_graph/downstream_pipelines.vue?0382","webpack:///./ci/pipeline_mini_graph/pipeline_stage_dropdown.vue?5247","webpack:///ci/pipeline_mini_graph/pipeline_stage_dropdown.vue","webpack:///./ci/pipeline_mini_graph/pipeline_stages.vue?789d","webpack:///ci/pipeline_mini_graph/pipeline_stages.vue","webpack:///./ci/pipeline_mini_graph/pipeline_stage_dropdown.vue?93d4","webpack:///./ci/pipeline_mini_graph/pipeline_stage_dropdown.vue","webpack:///./ci/pipeline_mini_graph/pipeline_stages.vue?35b5","webpack:///./ci/pipeline_mini_graph/pipeline_stages.vue","webpack:///./ci/pipeline_mini_graph/pipeline_mini_graph.vue?7660","webpack:///ci/pipeline_mini_graph/pipeline_mini_graph.vue","webpack:///./ci/pipeline_mini_graph/pipeline_mini_graph.vue?73e2","webpack:///../images/no_avatar.png","webpack:///./ci/pipelines_page/services/pipelines_service.js","webpack:///./ci/pipelines_page/graphql/queries/get_pipeline_failed_jobs.query.graphql","webpack:///./ci/pipeline_mini_graph/graphql/mutations/job_cancel.mutation.graphql","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/fuzzaldrin.js","webpack:///./ci/pipeline_mini_graph/graphql/fragments/job.fragment.graphql","webpack:///./vue_shared/components/pagination/table_pagination.vue","webpack:///./vue_shared/components/pagination/table_pagination.vue?cb6b","webpack:///vue_shared/components/pagination/table_pagination.vue","webpack:///./vue_shared/components/pagination/table_pagination.vue?217e","webpack:///./lib/utils/http_status.js","webpack:///./vue_shared/components/gl_countdown.vue","webpack:///./vue_shared/components/gl_countdown.vue?1908","webpack:///vue_shared/components/gl_countdown.vue","webpack:///./vue_shared/components/gl_countdown.vue?3137","webpack:///./ci/mixins/delayed_job_mixin.js","webpack:///./ci/merge_requests/graphql/mutations/retry_mr_failed_job.mutation.graphql","webpack:///./vue_shared/components/user_avatar/user_avatar_link.vue","webpack:///./vue_shared/components/user_avatar/user_avatar_link.vue?c50c","webpack:///vue_shared/components/user_avatar/user_avatar_link.vue","webpack:///./vue_shared/components/user_avatar/user_avatar_link.vue?d6b5","webpack:///./ci/pipelines_page/constants.js","webpack:///./ci/pipelines_page/graphql/queries/get_pipeline_failed_jobs_count.query.graphql","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/query.js","webpack:///./vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue","webpack:///vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue","webpack:///./vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue?bc46","webpack:///./vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue?b534","webpack:///./vue_shared/components/crud_component.vue","webpack:///./vue_shared/components/crud_component.vue?0a0d","webpack:///vue_shared/components/crud_component.vue","webpack:///./vue_shared/components/crud_component.vue?18b8","webpack:///./lib/utils/poll.js","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/pathScorer.js","webpack:///./ci/pipeline_details/graph/constants.js","webpack:///./ci/constants.js","webpack:///./ci/common/private/job_name_component.vue","webpack:///./ci/common/private/job_name_component.vue?272b","webpack:///ci/common/private/job_name_component.vue","webpack:///./ci/common/private/job_name_component.vue?453a","webpack:////build/source/ee/app/assets/javascripts/ci/job_details/components/root_cause_analysis_button.vue","webpack:////build/source/ee/app/assets/javascripts/ci/job_details/components/root_cause_analysis_button.vue?82b2","webpack:///../../../ee/app/assets/javascripts/ci/job_details/components/root_cause_analysis_button.vue","webpack:////build/source/ee/app/assets/javascripts/ci/job_details/components/root_cause_analysis_button.vue?4b80","webpack:///./ci/utils.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/pagination/pagination.js","webpack:///./ci/pipeline_details/mixins/pipelines_mixin.js","webpack:///./ci/pipeline_mini_graph/graphql/mutations/job_retry.mutation.graphql","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/matcher.js","webpack:///./ci/jobs_page/graphql/mutations/job_play.mutation.graphql","webpack:///./commit/pipelines/legacy_pipelines_table_wrapper.vue","webpack:///./commit/pipelines/legacy_pipelines_table_wrapper.vue?706a","webpack:///commit/pipelines/legacy_pipelines_table_wrapper.vue","webpack:///./commit/pipelines/legacy_pipelines_table_wrapper.vue?ed66","webpack:///./ci/common/private/job_dropdown_item.vue","webpack:///./ci/common/private/job_action_modal.vue?21ee","webpack:///ci/common/private/job_action_modal.vue","webpack:///./ci/common/private/job_action_modal.vue?c514","webpack:///./ci/common/private/job_action_modal.vue","webpack:///ci/common/private/job_action_button.vue","webpack:///./ci/common/private/job_action_button.vue?28db","webpack:///./ci/common/private/job_dropdown_item.vue?1d97","webpack:///ci/common/private/job_dropdown_item.vue","webpack:///./ci/common/private/job_action_button.vue?6d71","webpack:///./ci/common/private/job_action_button.vue","webpack:///./ci/common/private/job_dropdown_item.vue?6f73","webpack:///./ci/event_hub.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/table-lite.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/table_lite/table_lite.js","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/filter.js"],"names":["name","components","GlTooltip","GlAvatar","props","lazy","type","Boolean","required","default","imgSrc","String","defaultAvatarUrl","cssClasses","imgAlt","__","size","Number","Object","tooltipText","tooltipPlacement","pseudo","computed","sanitizedSource","baseSrc","indexOf","includes","maximumSize","_isObject","Math","max","values","resultantSrcAttribute","placeholderImage","component","_vm","this","_c","_self","ref","staticClass","class","style","backgroundImage","attrs","undefined","_v","$scopedSlots","$refs","userAvatar","_t","_s","_e","CiIcon","GlButton","GlLink","RootCauseAnalysisButton","directives","GlTooltipDirective","SafeHtml","job","canTroubleshootJob","data","isLoadingAction","canRetryJob","retryable","userPermissions","updateBuild","isBridgeJob","detailedStatus","_this$job","detailsPath","_this$detailedStatus","statusGroup","_this$detailedStatus2","group","kind","BRIDGE_KIND","parsedJobId","getIdFromGraphQLId","id","tooltipErrorText","$options","i18n","cannotRetryTrigger","cannotRetry","sprintf","jobActionTooltipText","jobName","isBuildJob","BUILD_KIND","methods","jobRetry","errors","$apollo","mutate","mutation","RetryMrFailedJobMutation","variables","length","Error","$emit","error","createAlert","message","retryError","cannotReadBuild","s__","retry","stage","retryBtn","rawName","on","$event","stopPropagation","retryJob","apply","arguments","JOB_ID_HEADER","JOB_NAME_HEADER","STAGE_HEADER","GlAlert","GlLoadingIcon","GlSprintf","FailedJobDetails","inject","isMaximumJobLimitReached","pipelineIid","pipelinePath","projectPath","failedJobs","isLoadingMore","apollo","context","getQueryHeaders","graphqlResourceEtag","query","getPipelineFailedJobs","pollInterval","fullPath","update","_data$project","jobs","sort","a","_job$detailedStatus","isFailedJob","sortJobsByStatus","project","pipeline","nodes","result","_data$project2","troubleshootJobWithAi","e","fetchError","variant","graphqlEtagPipelinePath","graphqlPath","isInitialLoading","isLoading","queries","loading","mounted","toggleQueryPollingByVisibility","refetchJobs","$toast","show","retriedJobsSuccess","refetch","columns","text","maximumJobLimitAlert","title","scopedSlots","_u","key","fn","content","_l","col","GlBadge","GlIcon","FailedJobsList","CrudComponent","failedJobsCount","getPipelineFailedJobsCount","_project$pipeline","_project$pipeline2","isPipelineActive","active","count","isExpanded","bodyClasses","failedJobsCountBadge","iconName","watch","startPolling","stopPolling","beforeDestroy","toggleWidget","ariaControlsId","toString","proxy","refetchCount","searchPlaceholder","downloadArtifacts","artifactsFetchErrorMessage","artifactsFetchWarningMessage","emptyArtifactsMessage","GlDisclosureDropdown","GlSearchBoxByType","mixins","Tracking","mixin","artifactsEndpoint","artifactsEndpointPlaceholder","pipelineId","artifacts","hasError","searchQuery","isNewPipeline","hasArtifacts","filteredArtifacts","fuzzaldrinPlus","filter","items","map","path","href","extraAttrs","download","rel","fetchArtifacts","_this","track","label","TRACKING_CATEGORIES","table","oldArtifacts","endpoint","replace","axios","get","then","catch","finally","onDisclosureDropdownShown","onDisclosureDropdownHidden","model","value","callback","$$v","trim","expression","GlCountdown","GlDisclosureDropdownItem","iid","actions","getPipelineActionsQuery","limit","manualActionsLimit","skip","hasDropdownBeenShown","isDropdownVisible","isActionsLoading","isDropdownLimitReached","action","scheduledAt","confirmationMessage","confirmAction","confirmJobConfirmationMessage","jobPlayMutation","fetchActions","trackClick","hideAction","jobItem","disabled","canPlayJob","modifiers","onClickAction","GlModal","deep","showConfirmationModal","hasRef","_isEmpty","modalTitle","modalText","primaryProps","attributes","showModal","set","emitSubmit","event","cancelProps","details","status","commit","commit_path","short_id","BUTTON_TOOLTIP_RETRY","BUTTON_TOOLTIP_CANCEL","PipelineMultiActions","PipelinesManualActions","PipelineStopModal","isCanceling","isRetrying","pipelineToCancel","hasActions","_this$pipeline","_this$pipeline2","has_manual_actions","has_scheduled_actions","onCloseModal","onConfirmCancelPipeline","handleCancelClick","handleRetryClick","flags","cancelable","GlAvatarLink","user","avatar_url","GlPopover","pipelineSchedulesPath","isScheduled","source","SCHEDULE_ORIGIN","isTriggered","TRIGGER_ORIGIN","isForked","forked","showMergedResultsBadge","merged_result_pipeline","merge_train_pipeline","autoDevopsTagId","autoDevopsHelpPath","helpPagePath","isApi","API_ORIGIN","latest","yaml_errors","failure_reason","auto_devops","stuck","detached_merge_request_pipeline","PipelineLabels","TooltipOnTruncate","UserAvatarLink","pipelineIdType","PIPELINE_ID_KEY","validator","PIPELINE_IID_KEY","refClass","mergeRequestRef","merge_request","commitRef","commitTag","_this$commitRef","tag","commitUrl","_this$pipeline3","commitShortSha","_this$pipeline4","refUrl","_this$commitRef2","_this$commitRef3","ref_url","tooltipTitle","_this$mergeRequestRef","_this$commitRef4","commitAuthor","_this$pipeline5","commitAuthorInformation","pipelineCommit","pipelineCommitAuthor","author","author_gravatar_url","author_email","username","author_name","commitIcon","ICONS","TAG","MR","BRANCH","commitIconTooltipTitle","commitTitle","_this$pipeline6","pipelineIdentifier","pipeline_schedule","pipelineSchedule","link","description","timeagoMixin","fontSize","duration","durationFormatted","formatTime","finishedTime","finished_at","finishedAt","timeFormatted","PipelinesTimeago","pipelineStatus","_this$pipeline$detail","cellHeight","GlSkeletonLoader","GlTableLite","PipelineFailedJobsWidget","PipelineMiniGraph","PipelineOperations","PipelineStatusBadge","PipelineTriggerer","PipelineUrl","useFailedJobsWidget","isCreatingPipeline","pipelines","Array","isMobile","GlBreakpointInstance","getBreakpointSize","tableFields","columnClass","tdClass","tdClasses","thAttr","pipelinesWithDetails","p","failed_builds_count","_showDetails","cellWidth","_this$$refs$ref","offsetWidth","displayFailedJobsWidget","item","getDownstreamPipelines","downstream","triggered","keepLatestDownstreamPipelines","getProjectPath","cleanLeadingSeparator","full_path","getStages","_item$details","stages","onCancelPipeline","onRefreshPipelinesTable","onRetryPipeline","rowClass","setLoaderPosition","trackPipelineMiniGraph","TBODY_TR_ATTR","fields","field","triggered_by","doc","loc","definitionRefs","findOperation","i","definitions","element","forEach","def","refs","Set","collectFragmentReferences","node","add","selectionSet","selections","selection","variableDefinitions","module","exports","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","prevRefs","has","childRef","op","push","oneQuery","names","concat","AcronymResult","computeScore","emptyAcronymResult","isAcronymFullWord","isMatch","isSeparator","isWordEnd","isWordStart","scoreAcronyms","scoreCharacter","scoreConsecutives","scoreExact","scoreExactMatch","scorePattern","scorePosition","scoreSize","score","string","options","preparedQuery","string_lw","allowErrors","core_lw","core_up","toLowerCase","ceil","subject","query_lw","query_up","j","m","n","qj_lw","qj_up","si","charCodeAt","subject_lw","acro","acro_score","align","csc_diag","csc_row","csc_score","csc_should_rebuild","miss_budget","miss_left","pos","record_miss","score_diag","score_row","score_up","si_lw","start","sz","charCodes","curr_s","prev_s","len","next_s","c","sc","abs","quality","sameCase","end","bonus","posBonus","startOfWord","k","mi","nj","pos2","fullWord","sepCount","sumPos","nbAcronymInQuery","call","PipelinesStore","constructor","state","pageInfo","isRunningMergeRequestPipeline","storePipelines","isUsingAsyncPipelineCreation","firstPipelineFromTable","firstPipelineFromRequest","created_at","toggleIsRunningPipeline","storeCount","storePagination","pagination","paginationInfo","keys","normalizedHeaders","normalizeHeaders","parseIntPagination","hasDetailedStatus","maxRenderedPipelines","totalPipelineCount","pipelinesTrimmed","slice","shouldRenderCounter","counterLabel","counterTooltipText","pipelineTooltipText","_pipeline$project","_pipeline$detailedSta","loadingText","mergeTrainMessage","stageJobsFetchError","viewStageLabel","JobDropdownItem","isMergeTrain","emits","isDropdownOpen","stageJobs","graphqlEtag","getPipelineStageJobsQuery","PIPELINE_POLL_INTERVAL_DEFAULT","_data$ciPipelineStage","ciPipelineStage","reportToSentry","dropdownHeaderText","dropdownTooltipTitle","tooltip","graphqlEtagStagePath","onHideDropdown","onShowDropdown","stageAriaLabel","PipelineStageDropdown","arrowStyles","DownstreamPipelines","PipelineStages","downstreamPipelines","pipelineStages","upstreamPipeline","formattedDownstreamPipelines","convertToGraphQLId","TYPENAME_CI_PIPELINE","formattedStages","s","TYPENAME_CI_STAGE","icon","hasDownstreamPipelines","latestDownstreamPipelines","hasUpstreamPipeline","_this$upstreamPipelin","upstreamPipelineStatus","_this$upstreamPipelin2","_this$upstreamPipelin3","upstreamTooltipText","_this$upstreamPipelin4","_this$upstreamPipelin5","PipelinesService","root","getPipelines","scope","page","CancelToken","queryParams","validateParams","cancelationSource","params","cancelToken","token","postAction","post","runMRPipeline","projectId","mergeRequestId","Api","postMergeRequestPipeline","Query","defaultPathSeparator","matcher","parseOptions","pathScorer","preparedQueryCache","scorer","process","platform","candidates","usePathScoring","match","_results","_i","_ref","wrap","prepareQuery","useExtensionBonus","pathSeparator","optCharRegEx","GlPagination","change","Function","showPagination","nextPage","previousPage","_b","perPage","total","$attrs","HTTP_STATUS_ABORTED","HTTP_STATUS_OK","HTTP_STATUS_CREATED","HTTP_STATUS_NO_CONTENT","HTTP_STATUS_BAD_REQUEST","HTTP_STATUS_UNAUTHORIZED","HTTP_STATUS_FORBIDDEN","HTTP_STATUS_NOT_FOUND","HTTP_STATUS_CONFLICT","HTTP_STATUS_GONE","HTTP_STATUS_PAYLOAD_TOO_LARGE","HTTP_STATUS_UNPROCESSABLE_ENTITY","HTTP_STATUS_TOO_MANY_REQUESTS","HTTP_STATUS_INTERNAL_SERVER_ERROR","successCodes","endDateString","isNaN","Date","getTime","remainingTime","countdownUpdateIntervalId","updateRemainingTime","remainingMilliseconds","calculateRemainingMilliseconds","window","setInterval","clearInterval","remainingTimeIntervalId","startRemainingTimeInterval","isDelayedJob","_this$job2","scheduled","scheduledTime","scheduled_at","UserAvatarImage","linkHref","imgCssClasses","imgCssWrapperClasses","imgSize","popoverUserId","popoverUsername","userId","shouldShowUsername","avatarTooltipText","ANY_TRIGGER_AUTHOR","FILTER_PIPELINES_SEARCH_DELAY","CATALOG_TRACKING_LABEL","GITLAB_UNIVERSITY_TRACKING_LABEL","MIGRATE_FROM_JENKINS_TRACKING_LABEL","coreChars","countDir","getCharCodes","getExtension","opt_char_re","truncatedUpperCase","_arg","_ref1","core","depth","ext","str","upper","_len","toUpperCase","GlResizeObserver","GlResizeObserverDirective","placement","boundary","truncateTarget","tooltipDisabled","classes","$nextTick","updateTooltip","created","updateTooltipDebounced","_debounce","selectTarget","_isFunction","$el","childNodes","hasHorizontalOverflow","onResize","toggleText","toggleAriaLabel","isCollapsible","collapsed","anchorId","headerClass","titleClass","bodyClass","persistCollapsedState","isCollapsed","localStorage","getItem","getLocalStorageKeyName","isFormVisible","isContentVisible","empty","toggleIcon","toggleLabel","ariaExpandedAttr","displayedCount","isFormUsedAndVisible","form","handler","newVal","toggleCollapse","setItem","showForm","hideForm","toggleForm","footer","Poll","notificationCallback","intervalHeader","timeoutID","canPoll","checkConditions","response","headers","parseInt","clearTimeout","setTimeout","makeRequest","successCallback","makeDelayedRequest","delay","_this2","_this3","resource","method","errorCallback","stop","enable","restart","getExtensionScore","scorePath","fullPathScore","alpha","basePathScore","basePos","extAdjust","fileLength","lastIndexOf","substr","candidate","startPos","endPos","maxDepth","matched","DOWNSTREAM","MAIN","UPSTREAM","ONE_COL_WIDTH","STAGE_VIEW","LAYER_VIEW","SKIP_RETRY_MODAL_KEY","VIEW_TYPE_KEY","SINGLE_JOB","JOB_DROPDOWN","ACTION_FAILURE","IID_FAILURE","RETRY_ACTION_TITLE","POLL_INTERVAL","forwardDeploymentFailureModalId","BUTTON_TOOLTIP_DELETE","FILTER_TAG_IDENTIFIER","JOB_GRAPHQL_ERRORS","jobMutationErrorText","jobQueryErrorText","RETRY","SUCCESS","SUCCESS_STATUS","PASSED_STATUS","MANUAL_STATUS","RAW_TEXT_WARNING","tabs","search","failed","tests","listbox","PIPELINE_POLL_INTERVAL_BACKOFF","FOUR_MINUTES_IN_MS","NETWORK_STATUS_READY","iconSize","InternalEvents","jobStatusGroup","jobId","jobGid","isBuild","resourceId","TYPENAME_CI_BUILD","jobFailed","shouldDisplayButton","trackEvent","callDuo","sendDuoChatCommand","question","failureType","Sentry","tags","__vue_script__","prop","x","totalItems","limits","xs","sm","md","linkGen","prevPage","prevText","nextText","ellipsisText","labelNav","labelFirstPage","labelPrevPage","labelNextPage","labelLastPage","labelPage","left","breakpoint","minTotalPagesToCollapse","totalPages","isCompactPagination","paginationLimit","fill","center","right","isFillAlign","diff","maxAdjacentPages","firstPage","shouldCollapseLeftSide","min","lastPage","shouldCollapseRightSide","from","to","getPageItem","splice","getEllipsisItem","pageIsDisabled","prevPageIsDisabled","labelForPage","nextPageIsDisabled","isLinkBased","addEventListener","setBreakpoint","removeEventListener","commonAttrs","isActivePage","isDisabled","listeners","click","handleClick","slot","slotData","side","preventDefault","__vue_component__","render","_h","$createElement","wrapperClasses","prevPageAriaLabel","prevPageHref","handlePrevious","_g","nextPageAriaLabel","nextPageHref","handleNext","staticRenderFns","isMakingRequest","updateGraphDropdown","hasMadeRequest","shouldRenderPagination","beforeMount","poll","service","requestData","setIsMakingRequest","Visibility","hidden","fetchPipelines","eventHub","$on","updateTable","runMergeRequestPipeline","$off","destroyed","cancel_path","retry_path","updateInternalState","parameters","queryString","parameter","encodeURIComponent","join","historyPushState","buildUrlWithCurrentLocation","updateContent","cancel","CANCEL_REQUEST","_this4","setCommonData","store","_this5","_this6","isAsync","TOAST_MESSAGE","unauthorized","errorMessage","primaryButton","onChangePage","onChangeWithFilter","basenameMatch","computeMatch","mergeMatches","baseMatches","matches","matchIndex","matchPos","matchPositions","output","strPos","tagClass","tagClose","tagOpen","substring","b","ai","bj","out","offset","backtrack","move","trace","reverse","GlEmptyState","PipelinesTable","TablePagination","PipelinesMixin","canCreatePipelineInTargetProject","errorStateSvgPath","emptyStateSvgPath","isMergeRequestTable","sourceProjectFullPath","targetProjectFullPath","viewType","PipelineStore","getParameterByName","modalId","shouldRenderTable","shouldRenderErrorState","shouldRenderEmptyState","canRenderPipelineButton","latestPipelineDetachedFlag","isForkMergeRequest","isLatestPipelineCreatedInTargetProject","_latest$project","shouldShowSecurityWarning","merge_request_pipeline","resp","_resp$headers","updatePipelinesEvent","CustomEvent","detail","pipelineCount","parentElement","dispatchEvent","onClickRunPipeline","tryRunPipeline","modal","pipelineIdKey","actionPrimary","actionCancel","runPipelinePopoverTitle","runPipelinePopoverDescription","runPipelineText","emptyStateTitle","mrPipelinesDocsPath","anchor","userPermissionsDocsPath","runPipelinesInTheParentProjectHelpPath","confirmationText","customMessage","visible","confirmButton","cancelJob","playJob","unscheduleJob","JOB_ACTIONS","dataName","cancelJobMutation","play","playJobMutation","retryJobMutation","unscheduleJobMutation","JobActionModal","jobAction","actionType","hasConfirmationModal","_this$jobAction","onActionButtonClick","executeJobAction","JobActionButton","JobNameComponent","delayedJobMixin","hasJobAction","_this$status","_this$status2","_this$status3","statusTooltip","capitalizeFirstCharacter","createEventHub","BTableLite","tableClass","inheritAttrs","stickyHeader","stickyHeaderClass","localTableClass","$listeners","pluckCandidates","sortCandidates","bKey","maxInners","maxResults","scoreProvider","scoredCandidates","spotLeft"],"mappings":"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","file":"1186.22ffc47e.chunk.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{ref:\"userAvatar\"},[_c('gl-avatar',{staticClass:\"gl-bg-cover\",class:{\n lazy: _vm.lazy,\n [_vm.cssClasses]: true,\n },style:(_vm.pseudo ? { backgroundImage: `url('${_vm.sanitizedSource}')` } : null),attrs:{\"src\":_vm.pseudo ? undefined : _vm.resultantSrcAttribute,\"data-src\":_vm.sanitizedSource,\"size\":_vm.size,\"alt\":_vm.imgAlt,\"data-testid\":\"user-avatar-image\"}}),_vm._v(\" \"),(_vm.tooltipText || _vm.$scopedSlots.default)?_c('gl-tooltip',{attrs:{\"target\":() => _vm.$refs.userAvatar,\"placement\":_vm.tooltipPlacement,\"boundary\":\"window\"}},[_vm._t(\"default\",function(){return [_vm._v(_vm._s(_vm.tooltipText))]})],2):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./user_avatar_image.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./user_avatar_image.vue?vue&type=script&lang=js\"","<script>\n/* This is a re-usable vue component for rendering a user avatar that\n does not need to link to the user's profile. The image and an optional\n tooltip can be configured by props passed to this component.\n\n Sample configuration:\n\n <user-avatar\n lazy\n :img-src=\"userAvatarSrc\"\n :img-alt=\"tooltipText\"\n :tooltip-text=\"tooltipText\"\n tooltip-placement=\"top\"\n :size=\"24\"\n />\n\n */\n\nimport { GlTooltip, GlAvatar } from '@gitlab/ui';\nimport { isObject } from 'lodash';\nimport defaultAvatarUrl from 'images/no_avatar.png';\nimport { __ } from '~/locale';\nimport { placeholderImage } from '~/lazy_loader';\n\nexport default {\n name: 'UserAvatarImage',\n components: {\n GlTooltip,\n GlAvatar,\n },\n props: {\n lazy: {\n type: Boolean,\n required: false,\n default: false,\n },\n imgSrc: {\n type: String,\n required: false,\n default: defaultAvatarUrl,\n },\n cssClasses: {\n type: String,\n required: false,\n default: '',\n },\n imgAlt: {\n type: String,\n required: false,\n default: __('user avatar'),\n },\n size: {\n type: [Number, Object],\n required: true,\n },\n tooltipText: {\n type: String,\n required: false,\n default: '',\n },\n tooltipPlacement: {\n type: String,\n required: false,\n default: 'top',\n },\n // Render avatar using pseudo-elements so that they cannot be selected or copied\n pseudo: {\n type: Boolean,\n required: false,\n default: false,\n },\n },\n computed: {\n // API response sends null when gravatar is disabled and\n // we provide an empty string when we use it inside user avatar link.\n // In both cases we should render the defaultAvatarUrl\n sanitizedSource() {\n let baseSrc = this.imgSrc === '' || this.imgSrc === null ? defaultAvatarUrl : this.imgSrc;\n // Only adds the width to the URL if its not a base64 data image\n if (!(baseSrc.indexOf('data:') === 0) && !baseSrc.includes('?'))\n baseSrc += `?width=${this.maximumSize}`;\n return baseSrc;\n },\n maximumSize() {\n if (isObject(this.size)) {\n return Math.max(...Object.values(this.size)) * 2;\n }\n return this.size * 2;\n },\n resultantSrcAttribute() {\n return this.lazy ? placeholderImage : this.sanitizedSource;\n },\n },\n};\n</script>\n\n<template>\n <span ref=\"userAvatar\">\n <gl-avatar\n class=\"gl-bg-cover\"\n :class=\"{\n lazy: lazy,\n [cssClasses]: true,\n }\"\n :src=\"pseudo ? undefined : resultantSrcAttribute\"\n :style=\"pseudo ? { backgroundImage: `url('${sanitizedSource}')` } : null\"\n :data-src=\"sanitizedSource\"\n :size=\"size\"\n :alt=\"imgAlt\"\n data-testid=\"user-avatar-image\"\n />\n\n <gl-tooltip\n v-if=\"tooltipText || $scopedSlots.default\"\n :target=\"() => $refs.userAvatar\"\n :placement=\"tooltipPlacement\"\n boundary=\"window\"\n >\n <slot>{{ tooltipText }}</slot>\n </gl-tooltip>\n </span>\n</template>\n","import { render, staticRenderFns } from \"./user_avatar_image.vue?vue&type=template&id=0836472c\"\nimport script from \"./user_avatar_image.vue?vue&type=script&lang=js\"\nexport * from \"./user_avatar_image.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"ci-table\"},[_c('gl-table-lite',{attrs:{\"fields\":_vm.tableFields,\"items\":_vm.pipelinesWithDetails,\"tbody-tr-attr\":_vm.$options.TBODY_TR_ATTR,\"tbody-tr-class\":_vm.rowClass,\"details-td-class\":\"!gl-pt-2\",\"stacked\":\"lg\",\"fixed\":\"\"},scopedSlots:_vm._u([{key:\"head(actions)\",fn:function(){return [_vm._t(\"table-header-actions\",function(){return [_c('span',{staticClass:\"gl-block gl-text-right\"},[_vm._v(_vm._s(_vm.s__('Pipeline|Actions')))])]})]},proxy:true},{key:\"table-colgroup\",fn:function({ fields }){return _vm._l((fields),function(field){return _c('col',{key:field.key,class:field.columnClass})})}},{key:\"cell(status)\",fn:function({ item }){return [(item.isLoading)?_c('div',{ref:\"status\"},[_c('gl-skeleton-loader',{attrs:{\"height\":_vm.$options.cellHeight,\"width\":_vm.cellWidth('status')}},[_c('rect',{attrs:{\"height\":\"30\",\"rx\":\"4\",\"ry\":\"4\",\"width\":_vm.cellWidth('status')}})])],1):_c('pipeline-status-badge',{attrs:{\"pipeline\":item}})]}},{key:\"cell(pipeline)\",fn:function({ item }){return [(item.isLoading)?_c('div',{ref:\"pipeline\"},[_c('gl-skeleton-loader',{attrs:{\"height\":_vm.$options.cellHeight,\"width\":_vm.cellWidth('pipeline')}},[_c('rect',{attrs:{\"height\":\"14\",\"rx\":\"4\",\"ry\":\"4\",\"width\":_vm.cellWidth('pipeline')}}),_vm._v(\" \"),_c('rect',{attrs:{\"height\":\"10\",\"rx\":\"4\",\"ry\":\"4\",\"width\":_vm.cellWidth('pipeline') / 2,\"x\":_vm.setLoaderPosition('pipeline'),\"y\":\"20\"}})])],1):_c('pipeline-url',{attrs:{\"pipeline\":item,\"pipeline-id-type\":_vm.pipelineIdType,\"ref-color\":\"gl-text-default\"}})]}},{key:\"cell(triggerer)\",fn:function({ item }){return [(item.isLoading)?_c('div',{ref:\"triggerer\",staticClass:\"gl-ml-3\"},[_c('gl-skeleton-loader',{attrs:{\"height\":_vm.$options.cellHeight,\"width\":_vm.cellWidth('triggerer')}},[_c('rect',{attrs:{\"height\":34,\"rx\":\"50\",\"ry\":\"50\",\"width\":34}})])],1):_c('pipeline-triggerer',{attrs:{\"pipeline\":item}})]}},{key:\"cell(stages)\",fn:function({ item }){return [(item.isLoading)?_c('div',{ref:\"stages\"},[_c('gl-skeleton-loader',{attrs:{\"height\":_vm.$options.cellHeight,\"width\":_vm.cellWidth('stages')}},[_c('rect',{attrs:{\"height\":\"20\",\"rx\":\"10\",\"ry\":\"10\",\"width\":_vm.cellWidth('stages')}})])],1):_c('pipeline-mini-graph',{attrs:{\"downstream-pipelines\":_vm.getDownstreamPipelines(item),\"pipeline-path\":item.path,\"pipeline-stages\":_vm.getStages(item),\"upstream-pipeline\":item.triggered_by},on:{\"miniGraphStageClick\":_vm.trackPipelineMiniGraph}})]}},{key:\"cell(actions)\",fn:function({ item }){return [(item.isLoading)?_c('div',{ref:\"actions\"},[_c('gl-skeleton-loader',{attrs:{\"height\":_vm.$options.cellHeight,\"width\":_vm.cellWidth('actions')}},[_c('rect',{attrs:{\"height\":\"20\",\"rx\":\"4\",\"ry\":\"4\",\"width\":_vm.cellWidth('actions')}})])],1):_c('pipeline-operations',{attrs:{\"pipeline\":item},on:{\"cancel-pipeline\":_vm.onCancelPipeline,\"refresh-pipelines-table\":_vm.onRefreshPipelinesTable,\"retry-pipeline\":_vm.onRetryPipeline}})]}},{key:\"row-details\",fn:function({ item }){return [(_vm.displayFailedJobsWidget(item))?_c('pipeline-failed-jobs-widget',{staticClass:\"-gl-my-3 -gl-ml-4\",attrs:{\"pipeline-iid\":item.iid,\"pipeline-path\":item.path,\"project-path\":_vm.getProjectPath(item)}}):_vm._e()]}}],null,true)})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container-fluid gl-my-1 gl-grid-rows-auto\"},[_c('div',{staticClass:\"row gl-my-3 gl-flex gl-flex-wrap gl-items-center gl-gap-y-4\",attrs:{\"data-testid\":\"widget-row\"}},[_c('div',{staticClass:\"align-items-center col-4 gl-flex gl-text-default\"},[_c('ci-icon',{attrs:{\"status\":_vm.job.detailedStatus}}),_vm._v(\" \"),_c('gl-link',{staticClass:\"gl-ml-2 !gl-text-default !gl-no-underline\",attrs:{\"href\":_vm.detailsPath,\"data-testid\":\"job-name-link\"}},[_vm._v(_vm._s(_vm.job.name))])],1),_vm._v(\" \"),_c('div',{staticClass:\"col-2 gl-flex gl-items-center\",attrs:{\"data-testid\":\"job-stage-name\"}},[_vm._v(\"\\n \"+_vm._s(_vm.job.stage.name)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"col-2 gl-flex gl-items-center\"},[_c('gl-link',{attrs:{\"href\":_vm.detailsPath,\"data-testid\":\"job-id-link\"}},[_vm._v(\"#\"+_vm._s(_vm.parsedJobId))])],1),_vm._v(\" \"),(!_vm.canRetryJob)?_c('gl-tooltip',{attrs:{\"target\":() => _vm.$refs.retryBtn,\"placement\":\"top\"}},[_vm._v(\"\\n \"+_vm._s(_vm.tooltipErrorText)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"col-4 gl-flex gl-max-w-full gl-flex-grow gl-justify-end gl-gap-3\"},[_c('root-cause-analysis-button',{attrs:{\"job-gid\":_vm.job.id,\"job-status-group\":_vm.statusGroup,\"can-troubleshoot-job\":_vm.canTroubleshootJob,\"is-build\":_vm.isBuildJob}}),_vm._v(\" \"),_c('span',{ref:\"retryBtn\"},[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"disabled\":!_vm.canRetryJob,\"icon\":\"retry\",\"category\":\"secondary\",\"loading\":_vm.isLoadingAction,\"title\":_vm.$options.i18n.retry,\"aria-label\":_vm.$options.i18n.retry,\"data-testid\":\"retry-button\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.retryJob.apply(null, arguments)}}})],1)],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./failed_job_details.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./failed_job_details.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlLink, GlTooltip, GlTooltipDirective } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { __, s__, sprintf } from '~/locale';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { BRIDGE_KIND, BUILD_KIND } from '~/ci/pipeline_details/graph/constants';\nimport RetryMrFailedJobMutation from '~/ci/merge_requests/graphql/mutations/retry_mr_failed_job.mutation.graphql';\nimport RootCauseAnalysisButton from 'ee_else_ce/ci/job_details/components/root_cause_analysis_button.vue';\n\nexport default {\n components: {\n CiIcon,\n GlButton,\n GlLink,\n GlTooltip,\n RootCauseAnalysisButton,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n SafeHtml,\n },\n props: {\n job: {\n type: Object,\n required: true,\n },\n canTroubleshootJob: {\n type: Boolean,\n required: true,\n },\n },\n data() {\n return {\n isLoadingAction: false,\n };\n },\n computed: {\n canRetryJob() {\n return this.job.retryable && this.job.userPermissions.updateBuild && !this.isBridgeJob;\n },\n detailedStatus() {\n return this.job?.detailedStatus;\n },\n detailsPath() {\n return this.detailedStatus?.detailsPath;\n },\n statusGroup() {\n return this.detailedStatus?.group;\n },\n isBridgeJob() {\n return this.job.kind === BRIDGE_KIND;\n },\n parsedJobId() {\n return getIdFromGraphQLId(this.job.id);\n },\n tooltipErrorText() {\n return this.isBridgeJob\n ? this.$options.i18n.cannotRetryTrigger\n : this.$options.i18n.cannotRetry;\n },\n tooltipText() {\n return sprintf(this.$options.i18n.jobActionTooltipText, { jobName: this.job.name });\n },\n isBuildJob() {\n return this.job.kind === BUILD_KIND;\n },\n },\n methods: {\n async retryJob() {\n try {\n this.isLoadingAction = true;\n\n const {\n data: {\n jobRetry: { errors },\n },\n } = await this.$apollo.mutate({\n mutation: RetryMrFailedJobMutation,\n variables: { id: this.job.id },\n });\n\n if (errors.length > 0) {\n throw new Error(errors[0]);\n }\n\n this.$emit('job-retried', this.job.name);\n } catch (error) {\n createAlert({ message: error?.message || this.$options.i18n.retryError });\n } finally {\n this.isLoadingAction = false;\n }\n },\n },\n i18n: {\n cannotReadBuild: s__(\"Job|You do not have permission to read this job's log.\"),\n cannotRetry: s__('Job|You do not have permission to run this job again.'),\n cannotRetryTrigger: s__('Job|You cannot rerun trigger jobs from this list.'),\n jobActionTooltipText: s__('Pipelines|Retry %{jobName} Job'),\n retry: __('Run again'),\n retryError: __('There was an error while running this job again'),\n },\n};\n</script>\n<template>\n <div class=\"container-fluid gl-my-1 gl-grid-rows-auto\">\n <div\n class=\"row gl-my-3 gl-flex gl-flex-wrap gl-items-center gl-gap-y-4\"\n data-testid=\"widget-row\"\n >\n <div class=\"align-items-center col-4 gl-flex gl-text-default\">\n <ci-icon :status=\"job.detailedStatus\" />\n <gl-link\n class=\"gl-ml-2 !gl-text-default !gl-no-underline\"\n :href=\"detailsPath\"\n data-testid=\"job-name-link\"\n >{{ job.name }}</gl-link\n >\n </div>\n <div class=\"col-2 gl-flex gl-items-center\" data-testid=\"job-stage-name\">\n {{ job.stage.name }}\n </div>\n <div class=\"col-2 gl-flex gl-items-center\">\n <gl-link :href=\"detailsPath\" data-testid=\"job-id-link\">#{{ parsedJobId }}</gl-link>\n </div>\n <gl-tooltip v-if=\"!canRetryJob\" :target=\"() => $refs.retryBtn\" placement=\"top\">\n {{ tooltipErrorText }}\n </gl-tooltip>\n <div class=\"col-4 gl-flex gl-max-w-full gl-flex-grow gl-justify-end gl-gap-3\">\n <root-cause-analysis-button\n :job-gid=\"job.id\"\n :job-status-group=\"statusGroup\"\n :can-troubleshoot-job=\"canTroubleshootJob\"\n :is-build=\"isBuildJob\"\n />\n\n <span ref=\"retryBtn\">\n <gl-button\n v-gl-tooltip\n :disabled=\"!canRetryJob\"\n icon=\"retry\"\n category=\"secondary\"\n :loading=\"isLoadingAction\"\n :title=\"$options.i18n.retry\"\n :aria-label=\"$options.i18n.retry\"\n data-testid=\"retry-button\"\n @click.stop=\"retryJob\"\n />\n </span>\n </div>\n </div>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./failed_job_details.vue?vue&type=template&id=46f26962\"\nimport script from \"./failed_job_details.vue?vue&type=script&lang=js\"\nexport * from \"./failed_job_details.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export const POLL_INTERVAL = 10000;\n","<script>\nimport { GlAlert, GlLink, GlLoadingIcon, GlSprintf } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { __, s__, sprintf } from '~/locale';\nimport { getQueryHeaders } from '~/ci/pipeline_details/graph/utils';\nimport { graphqlEtagPipelinePath } from '~/ci/pipeline_details/utils';\nimport { toggleQueryPollingByVisibility } from '~/graphql_shared/utils';\nimport getPipelineFailedJobs from '~/ci/pipelines_page/graphql/queries/get_pipeline_failed_jobs.query.graphql';\nimport { sortJobsByStatus } from './utils';\nimport FailedJobDetails from './failed_job_details.vue';\nimport { POLL_INTERVAL } from './constants';\n\nconst JOB_ID_HEADER = __('ID');\nconst JOB_NAME_HEADER = __('Name');\nconst STAGE_HEADER = __('Stage');\n\nexport default {\n components: {\n GlAlert,\n GlLink,\n GlLoadingIcon,\n GlSprintf,\n FailedJobDetails,\n },\n inject: ['graphqlPath'],\n props: {\n isMaximumJobLimitReached: {\n required: true,\n type: Boolean,\n },\n pipelineIid: {\n type: Number,\n required: true,\n },\n pipelinePath: {\n required: true,\n type: String,\n },\n projectPath: {\n type: String,\n required: true,\n },\n },\n data() {\n return {\n failedJobs: [],\n isLoadingMore: false,\n canTroubleshootJob: false,\n };\n },\n apollo: {\n failedJobs: {\n context() {\n return getQueryHeaders(this.graphqlResourceEtag);\n },\n query: getPipelineFailedJobs,\n pollInterval: POLL_INTERVAL,\n variables() {\n return {\n fullPath: this.projectPath,\n pipelineIid: this.pipelineIid,\n };\n },\n update(data) {\n const jobs = data?.project?.pipeline?.jobs?.nodes || [];\n return sortJobsByStatus(jobs);\n },\n result({ data }) {\n const pipeline = data?.project?.pipeline;\n this.canTroubleshootJob = pipeline?.troubleshootJobWithAi || false;\n },\n error(e) {\n createAlert({ message: e?.message || this.$options.i18n.fetchError, variant: 'danger' });\n },\n },\n },\n computed: {\n graphqlResourceEtag() {\n return graphqlEtagPipelinePath(this.graphqlPath, this.pipelineIid);\n },\n isInitialLoading() {\n return this.isLoading && !this.isLoadingMore;\n },\n isLoading() {\n return this.$apollo.queries.failedJobs.loading;\n },\n },\n mounted() {\n toggleQueryPollingByVisibility(this.$apollo.queries.failedJobs, POLL_INTERVAL);\n },\n methods: {\n async retryJob(jobName) {\n await this.refetchJobs();\n\n this.$emit('job-retried');\n\n this.$toast.show(sprintf(this.$options.i18n.retriedJobsSuccess, { jobName }));\n },\n async refetchJobs() {\n this.isLoadingMore = true;\n\n try {\n await this.$apollo.queries.failedJobs.refetch();\n } catch {\n createAlert({ message: this.$options.i18n.fetchError });\n } finally {\n this.isLoadingMore = false;\n }\n },\n },\n columns: [\n { text: JOB_NAME_HEADER, class: 'col-4' },\n { text: STAGE_HEADER, class: 'col-2' },\n { text: JOB_ID_HEADER, class: 'col-2' },\n ],\n i18n: {\n maximumJobLimitAlert: {\n title: s__('Pipelines|Maximum list size reached'),\n message: s__(\n `Pipelines| The list can only display 100 jobs. To view all jobs, %{linkStart}go to this pipeline's details page.%{linkEnd}`,\n ),\n },\n fetchError: __('There was a problem fetching failed jobs'),\n retriedJobsSuccess: __('%{jobName} job is being retried'),\n },\n};\n</script>\n\n<template>\n <div class=\"gl-mb-4\">\n <gl-loading-icon v-if=\"isInitialLoading\" class=\"gl-p-4\" />\n <div v-else class=\"container-fluid gl-grid-rows-auto\">\n <gl-alert\n v-if=\"isMaximumJobLimitReached\"\n :title=\"$options.i18n.maximumJobLimitAlert.title\"\n variant=\"warning\"\n class=\"gl-mt-4\"\n >\n <gl-sprintf :message=\"$options.i18n.maximumJobLimitAlert.message\">\n <template #link=\"{ content }\">\n <gl-link class=\"!gl-no-underline\" :href=\"pipelinePath\" target=\"_blank\">\n {{ content }}\n </gl-link>\n </template>\n </gl-sprintf>\n </gl-alert>\n <div class=\"row gl-my-4 gl-text-default\">\n <div\n v-for=\"col in $options.columns\"\n :key=\"col.text\"\n class=\"gl-flex gl-font-bold\"\n :class=\"col.class\"\n data-testid=\"header\"\n >\n {{ col.text }}\n </div>\n </div>\n </div>\n <failed-job-details\n v-for=\"job in failedJobs\"\n :key=\"job.id\"\n :job=\"job\"\n :can-troubleshoot-job=\"canTroubleshootJob\"\n @job-retried=\"retryJob\"\n />\n </div>\n</template>\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./failed_jobs_list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./failed_jobs_list.vue?vue&type=script&lang=js\"","export const isFailedJob = (job = {}) => {\n return job?.detailedStatus?.group === 'failed' || false;\n};\n\nexport const sortJobsByStatus = (jobs = []) => {\n const newJobs = [...jobs];\n\n return newJobs.sort((a) => {\n if (isFailedJob(a)) {\n return -1;\n }\n\n return 1;\n });\n};\n","import { render, staticRenderFns } from \"./failed_jobs_list.vue?vue&type=template&id=2b892e9f\"\nimport script from \"./failed_jobs_list.vue?vue&type=script&lang=js\"\nexport * from \"./failed_jobs_list.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-mb-4\"},[(_vm.isInitialLoading)?_c('gl-loading-icon',{staticClass:\"gl-p-4\"}):_c('div',{staticClass:\"container-fluid gl-grid-rows-auto\"},[(_vm.isMaximumJobLimitReached)?_c('gl-alert',{staticClass:\"gl-mt-4\",attrs:{\"title\":_vm.$options.i18n.maximumJobLimitAlert.title,\"variant\":\"warning\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.maximumJobLimitAlert.message},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{staticClass:\"!gl-no-underline\",attrs:{\"href\":_vm.pipelinePath,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(content)+\"\\n \")])]}}],null,false,616764878)})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"row gl-my-4 gl-text-default\"},_vm._l((_vm.$options.columns),function(col){return _c('div',{key:col.text,staticClass:\"gl-flex gl-font-bold\",class:col.class,attrs:{\"data-testid\":\"header\"}},[_vm._v(\"\\n \"+_vm._s(col.text)+\"\\n \")])}),0)],1),_vm._v(\" \"),_vm._l((_vm.failedJobs),function(job){return _c('failed-job-details',{key:job.id,attrs:{\"job\":job,\"can-troubleshoot-job\":_vm.canTroubleshootJob},on:{\"job-retried\":_vm.retryJob}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_failed_jobs_widget.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_failed_jobs_widget.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlButton, GlIcon } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport CrudComponent from '~/vue_shared/components/crud_component.vue';\nimport { __ } from '~/locale';\nimport { getQueryHeaders } from '~/ci/pipeline_details/graph/utils';\nimport { graphqlEtagPipelinePath } from '~/ci/pipeline_details/utils';\nimport { toggleQueryPollingByVisibility } from '~/graphql_shared/utils';\nimport getPipelineFailedJobsCount from '../../graphql/queries/get_pipeline_failed_jobs_count.query.graphql';\nimport FailedJobsList from './failed_jobs_list.vue';\nimport { POLL_INTERVAL } from './constants';\n\nexport default {\n fetchError: __('An error occured fetching failed jobs count'),\n components: {\n GlBadge,\n GlButton,\n GlIcon,\n FailedJobsList,\n CrudComponent,\n },\n inject: ['fullPath', 'graphqlPath'],\n props: {\n pipelineIid: {\n required: true,\n type: Number,\n },\n pipelinePath: {\n required: true,\n type: String,\n },\n projectPath: {\n required: true,\n type: String,\n },\n },\n apollo: {\n failedJobsCount: {\n context() {\n return getQueryHeaders(this.graphqlResourceEtag);\n },\n query: getPipelineFailedJobsCount,\n variables() {\n return {\n fullPath: this.projectPath,\n pipelineIid: this.pipelineIid,\n };\n },\n update({ project }) {\n this.isPipelineActive = project?.pipeline?.active || false;\n\n return project?.pipeline?.jobs?.count || 0;\n },\n error() {\n createAlert({ message: this.$options.fetchError });\n },\n },\n },\n data() {\n return {\n failedJobsCount: 0,\n isExpanded: false,\n // explicity set to null so watcher can detect\n // reactivity changes for polling\n isPipelineActive: null,\n };\n },\n computed: {\n graphqlResourceEtag() {\n return graphqlEtagPipelinePath(this.graphqlPath, this.pipelineIid);\n },\n bodyClasses() {\n return this.isExpanded ? '' : 'gl-hidden';\n },\n failedJobsCountBadge() {\n return `${this.isMaximumJobLimitReached ? '100+' : this.failedJobsCount}`;\n },\n iconName() {\n return this.isExpanded ? 'chevron-down' : 'chevron-right';\n },\n isMaximumJobLimitReached() {\n return this.failedJobsCount > 100;\n },\n },\n watch: {\n isPipelineActive(active) {\n if (!active) {\n this.$apollo.queries.failedJobsCount.stopPolling();\n } else {\n this.$apollo.queries.failedJobsCount.startPolling(POLL_INTERVAL);\n // ensure we only toggle polling back on tab switch\n // if the pipeline is active\n toggleQueryPollingByVisibility(this.$apollo.queries.failedJobsCount, POLL_INTERVAL);\n }\n },\n },\n beforeDestroy() {\n this.$apollo.queries.failedJobsCount.stopPolling();\n },\n methods: {\n toggleWidget() {\n this.isExpanded = !this.isExpanded;\n },\n async refetchCount() {\n try {\n // \"pause\" polling during manual refetch of count\n // to avoid redundant calls\n this.$apollo.queries.failedJobsCount.stopPolling();\n await this.$apollo.queries.failedJobsCount.refetch();\n } catch {\n createAlert({ message: this.$options.fetchError });\n } finally {\n if (this.isPipelineActive) {\n this.$apollo.queries.failedJobsCount.startPolling(POLL_INTERVAL);\n }\n }\n },\n },\n ariaControlsId: 'pipeline-failed-jobs-widget',\n};\n</script>\n<template>\n <crud-component\n :id=\"$options.ariaControlsId\"\n class=\"expandable-card\"\n :class=\"{ 'is-collapsed gl-border-transparent hover:gl-border-default': !isExpanded }\"\n data-testid=\"failed-jobs-card\"\n @click=\"toggleWidget\"\n >\n <template #title>\n <gl-button\n variant=\"link\"\n class=\"!gl-text-subtle\"\n :aria-expanded=\"isExpanded.toString()\"\n :aria-controls=\"$options.ariaControlsId\"\n data-testid=\"toggle-button\"\n @click=\"toggleWidget\"\n >\n <gl-icon :name=\"iconName\" class=\"gl-mr-2\" />\n <span class=\"gl-font-bold gl-text-subtle\">\n {{ __('Failed jobs') }}\n </span>\n </gl-button>\n </template>\n <template #count>\n <gl-badge>\n {{ failedJobsCountBadge }}\n </gl-badge>\n </template>\n <template #actions>\n <gl-button\n v-if=\"isExpanded\"\n href=\"https://gitlab.com/gitlab-org/gitlab/-/issues/502436\"\n data-testid=\"feedback-button\"\n size=\"small\"\n >\n {{ __('Leave feedback') }}\n </gl-button>\n </template>\n <failed-jobs-list\n v-if=\"isExpanded\"\n :is-maximum-job-limit-reached=\"isMaximumJobLimitReached\"\n :pipeline-iid=\"pipelineIid\"\n :pipeline-path=\"pipelinePath\"\n :project-path=\"projectPath\"\n @job-retried=\"refetchCount\"\n />\n </crud-component>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_failed_jobs_widget.vue?vue&type=template&id=4fb45960\"\nimport script from \"./pipeline_failed_jobs_widget.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_failed_jobs_widget.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('crud-component',{staticClass:\"expandable-card\",class:{ 'is-collapsed gl-border-transparent hover:gl-border-default': !_vm.isExpanded },attrs:{\"id\":_vm.$options.ariaControlsId,\"data-testid\":\"failed-jobs-card\"},on:{\"click\":_vm.toggleWidget},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('gl-button',{staticClass:\"!gl-text-subtle\",attrs:{\"variant\":\"link\",\"aria-expanded\":_vm.isExpanded.toString(),\"aria-controls\":_vm.$options.ariaControlsId,\"data-testid\":\"toggle-button\"},on:{\"click\":_vm.toggleWidget}},[_c('gl-icon',{staticClass:\"gl-mr-2\",attrs:{\"name\":_vm.iconName}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-font-bold gl-text-subtle\"},[_vm._v(\"\\n \"+_vm._s(_vm.__('Failed jobs'))+\"\\n \")])],1)]},proxy:true},{key:\"count\",fn:function(){return [_c('gl-badge',[_vm._v(\"\\n \"+_vm._s(_vm.failedJobsCountBadge)+\"\\n \")])]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.isExpanded)?_c('gl-button',{attrs:{\"href\":\"https://gitlab.com/gitlab-org/gitlab/-/issues/502436\",\"data-testid\":\"feedback-button\",\"size\":\"small\"}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Leave feedback'))+\"\\n \")]):_vm._e()]},proxy:true}])},[_vm._v(\" \"),_vm._v(\" \"),_vm._v(\" \"),(_vm.isExpanded)?_c('failed-jobs-list',{attrs:{\"is-maximum-job-limit-reached\":_vm.isMaximumJobLimitReached,\"pipeline-iid\":_vm.pipelineIid,\"pipeline-path\":_vm.pipelinePath,\"project-path\":_vm.projectPath},on:{\"job-retried\":_vm.refetchCount}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport {\n GlAlert,\n GlDisclosureDropdown,\n GlSearchBoxByType,\n GlLoadingIcon,\n GlTooltipDirective,\n} from '@gitlab/ui';\nimport fuzzaldrinPlus from 'fuzzaldrin-plus';\nimport axios from '~/lib/utils/axios_utils';\nimport { __, s__ } from '~/locale';\nimport Tracking from '~/tracking';\nimport { TRACKING_CATEGORIES } from '../../constants';\n\nexport const i18n = {\n searchPlaceholder: __('Search artifacts'),\n downloadArtifacts: __('Download artifacts'),\n artifactsFetchErrorMessage: s__('Pipelines|Could not load artifacts.'),\n artifactsFetchWarningMessage: s__(\n 'Pipelines|Failed to update. Please reload page to update the list of artifacts.',\n ),\n emptyArtifactsMessage: __('No artifacts found'),\n};\n\nexport default {\n i18n,\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n components: {\n GlAlert,\n GlDisclosureDropdown,\n GlSearchBoxByType,\n GlLoadingIcon,\n },\n mixins: [Tracking.mixin()],\n inject: {\n artifactsEndpoint: {\n default: '',\n },\n artifactsEndpointPlaceholder: {\n default: '',\n },\n },\n props: {\n pipelineId: {\n type: Number,\n required: true,\n },\n },\n data() {\n return {\n artifacts: [],\n hasError: false,\n isLoading: false,\n searchQuery: '',\n isNewPipeline: false,\n };\n },\n computed: {\n hasArtifacts() {\n return this.artifacts.length > 0;\n },\n filteredArtifacts() {\n return this.searchQuery.length > 0\n ? fuzzaldrinPlus.filter(this.artifacts, this.searchQuery, { key: 'name' })\n : this.artifacts;\n },\n items() {\n return this.filteredArtifacts.map(({ name, path }) => ({\n text: name,\n href: path,\n extraAttrs: {\n download: '',\n rel: 'nofollow',\n 'data-testid': 'artifact-item',\n },\n }));\n },\n },\n watch: {\n pipelineId() {\n this.isNewPipeline = true;\n },\n },\n methods: {\n fetchArtifacts() {\n // refactor tracking based on action once this dropdown supports\n // actions other than artifacts\n this.track('click_artifacts_dropdown', { label: TRACKING_CATEGORIES.table });\n\n // Preserve the last good list and present it if a request fails\n const oldArtifacts = [...this.artifacts];\n this.artifacts = [];\n\n this.hasError = false;\n this.isLoading = true;\n\n // Replace the placeholder with the ID of the pipeline we are viewing\n const endpoint = this.artifactsEndpoint.replace(\n this.artifactsEndpointPlaceholder,\n this.pipelineId,\n );\n return axios\n .get(endpoint)\n .then(({ data }) => {\n this.artifacts = data.artifacts;\n this.isNewPipeline = false;\n })\n .catch(() => {\n this.hasError = true;\n if (!this.isNewPipeline) {\n this.artifacts = oldArtifacts;\n }\n })\n .finally(() => {\n this.isLoading = false;\n });\n },\n onDisclosureDropdownShown() {\n this.fetchArtifacts();\n },\n onDisclosureDropdownHidden() {\n this.searchQuery = '';\n },\n },\n};\n</script>\n<template>\n <gl-disclosure-dropdown\n v-gl-tooltip\n class=\"gl-text-left\"\n :title=\"$options.i18n.downloadArtifacts\"\n :toggle-text=\"$options.i18n.downloadArtifacts\"\n :aria-label=\"$options.i18n.downloadArtifacts\"\n :items=\"items\"\n icon=\"download\"\n placement=\"bottom-end\"\n text-sr-only\n data-testid=\"pipeline-multi-actions-dropdown\"\n @shown=\"onDisclosureDropdownShown\"\n @hidden=\"onDisclosureDropdownHidden\"\n >\n <template #header>\n <div\n aria-hidden=\"true\"\n class=\"gl-flex gl-min-h-8 gl-items-center gl-border-b-1 gl-border-b-dropdown !gl-p-4 gl-text-sm gl-font-bold gl-text-strong gl-border-b-solid\"\n >\n {{ $options.i18n.downloadArtifacts }}\n </div>\n <div v-if=\"hasArtifacts\" class=\"gl-border-b-1 gl-border-b-dropdown gl-border-b-solid\">\n <gl-search-box-by-type\n ref=\"searchInput\"\n v-model.trim=\"searchQuery\"\n :placeholder=\"$options.i18n.searchPlaceholder\"\n borderless\n autofocus\n />\n </div>\n <gl-alert\n v-if=\"hasError && !hasArtifacts\"\n variant=\"danger\"\n :dismissible=\"false\"\n data-testid=\"artifacts-fetch-error\"\n >\n {{ $options.i18n.artifactsFetchErrorMessage }}\n </gl-alert>\n </template>\n\n <gl-loading-icon v-if=\"isLoading\" class=\"gl-m-3\" size=\"sm\" />\n <p\n v-else-if=\"filteredArtifacts.length === 0\"\n class=\"gl-m-0 gl-px-4 gl-py-3 gl-text-subtle\"\n data-testid=\"artifacts-empty-message\"\n >\n {{ $options.i18n.emptyArtifactsMessage }}\n </p>\n\n <template #footer>\n <p\n v-if=\"hasError && hasArtifacts\"\n class=\"gl-border-t gl-mb-0 gl-px-5 gl-py-4 gl-text-sm gl-text-subtle\"\n data-testid=\"artifacts-fetch-warning\"\n >\n {{ $options.i18n.artifactsFetchWarningMessage }}\n </p>\n </template>\n </gl-disclosure-dropdown>\n</template>\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_multi_actions.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_multi_actions.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./pipeline_multi_actions.vue?vue&type=template&id=2399e4b9\"\nimport script from \"./pipeline_multi_actions.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_multi_actions.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-disclosure-dropdown',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-text-left\",attrs:{\"title\":_vm.$options.i18n.downloadArtifacts,\"toggle-text\":_vm.$options.i18n.downloadArtifacts,\"aria-label\":_vm.$options.i18n.downloadArtifacts,\"items\":_vm.items,\"icon\":\"download\",\"placement\":\"bottom-end\",\"text-sr-only\":\"\",\"data-testid\":\"pipeline-multi-actions-dropdown\"},on:{\"shown\":_vm.onDisclosureDropdownShown,\"hidden\":_vm.onDisclosureDropdownHidden},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('div',{staticClass:\"gl-flex gl-min-h-8 gl-items-center gl-border-b-1 gl-border-b-dropdown !gl-p-4 gl-text-sm gl-font-bold gl-text-strong gl-border-b-solid\",attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.downloadArtifacts)+\"\\n \")]),_vm._v(\" \"),(_vm.hasArtifacts)?_c('div',{staticClass:\"gl-border-b-1 gl-border-b-dropdown gl-border-b-solid\"},[_c('gl-search-box-by-type',{ref:\"searchInput\",attrs:{\"placeholder\":_vm.$options.i18n.searchPlaceholder,\"borderless\":\"\",\"autofocus\":\"\"},model:{value:(_vm.searchQuery),callback:function ($$v) {_vm.searchQuery=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"searchQuery\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.hasError && !_vm.hasArtifacts)?_c('gl-alert',{attrs:{\"variant\":\"danger\",\"dismissible\":false,\"data-testid\":\"artifacts-fetch-error\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.artifactsFetchErrorMessage)+\"\\n \")]):_vm._e()]},proxy:true},{key:\"footer\",fn:function(){return [(_vm.hasError && _vm.hasArtifacts)?_c('p',{staticClass:\"gl-border-t gl-mb-0 gl-px-5 gl-py-4 gl-text-sm gl-text-subtle\",attrs:{\"data-testid\":\"artifacts-fetch-warning\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.artifactsFetchWarningMessage)+\"\\n \")]):_vm._e()]},proxy:true}])},[_vm._v(\" \"),(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"gl-m-3\",attrs:{\"size\":\"sm\"}}):(_vm.filteredArtifacts.length === 0)?_c('p',{staticClass:\"gl-m-0 gl-px-4 gl-py-3 gl-text-subtle\",attrs:{\"data-testid\":\"artifacts-empty-message\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.emptyArtifactsMessage)+\"\\n \")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipelines_manual_actions.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipelines_manual_actions.vue?vue&type=script&lang=js\"","<script>\nimport {\n GlDisclosureDropdown,\n GlDisclosureDropdownItem,\n GlIcon,\n GlLoadingIcon,\n GlTooltipDirective,\n} from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { confirmAction } from '~/lib/utils/confirm_via_gl_modal/confirm_via_gl_modal';\nimport { s__, __, sprintf } from '~/locale';\nimport Tracking from '~/tracking';\nimport GlCountdown from '~/vue_shared/components/gl_countdown.vue';\nimport { confirmJobConfirmationMessage } from '~/ci/pipeline_details/graph/utils';\nimport { TRACKING_CATEGORIES } from '../../constants';\nimport getPipelineActionsQuery from '../graphql/queries/get_pipeline_actions.query.graphql';\nimport jobPlayMutation from '../../jobs_page/graphql/mutations/job_play.mutation.graphql';\n\nexport default {\n name: 'PipelinesManualActions',\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n components: {\n GlCountdown,\n GlDisclosureDropdown,\n GlDisclosureDropdownItem,\n GlIcon,\n GlLoadingIcon,\n },\n mixins: [Tracking.mixin()],\n inject: ['fullPath', 'manualActionsLimit'],\n props: {\n iid: {\n type: Number,\n required: true,\n },\n },\n apollo: {\n actions: {\n query: getPipelineActionsQuery,\n variables() {\n return {\n fullPath: this.fullPath,\n iid: this.iid,\n limit: this.manualActionsLimit,\n };\n },\n skip() {\n return !this.hasDropdownBeenShown;\n },\n update({ project }) {\n return project?.pipeline?.jobs?.nodes || [];\n },\n },\n },\n data() {\n return {\n isLoading: false,\n actions: [],\n hasDropdownBeenShown: false,\n isDropdownVisible: false,\n };\n },\n computed: {\n isActionsLoading() {\n return this.$apollo.queries.actions.loading;\n },\n isDropdownLimitReached() {\n return this.actions.length === this.manualActionsLimit;\n },\n },\n methods: {\n async onClickAction(action) {\n if (action.scheduledAt) {\n const confirmationMessage = sprintf(\n s__(\n 'DelayedJobs|Are you sure you want to run %{jobName} immediately? Otherwise this job will run automatically after its timer finishes.',\n ),\n { jobName: action.name },\n );\n\n const confirmed = await confirmAction(confirmationMessage);\n\n if (!confirmed) {\n return;\n }\n } else if (action.detailedStatus.action.confirmationMessage) {\n const confirmed = await confirmJobConfirmationMessage(\n action.name,\n action.detailedStatus.action.confirmationMessage,\n );\n\n if (!confirmed) {\n return;\n }\n }\n this.isLoading = true;\n this.$apollo\n .mutate({\n mutation: jobPlayMutation,\n variables: {\n id: action.id,\n },\n })\n .then(() => {\n this.isLoading = false;\n this.$emit('refresh-pipeline-table');\n })\n .catch(() => {\n this.isLoading = false;\n createAlert({ message: __('An error occurred while making the request.') });\n });\n },\n fetchActions() {\n this.isDropdownVisible = true;\n this.hasDropdownBeenShown = true;\n\n this.$apollo.queries.actions.refetch();\n\n this.trackClick();\n },\n hideAction() {\n this.isDropdownVisible = false;\n },\n trackClick() {\n this.track('click_manual_actions', { label: TRACKING_CATEGORIES.table });\n },\n jobItem(job) {\n return {\n text: job.name,\n extraAttrs: {\n disabled: !job.canPlayJob,\n },\n };\n },\n },\n};\n</script>\n<template>\n <gl-disclosure-dropdown\n v-gl-tooltip.left=\"isDropdownVisible ? '' : __('Run manual or delayed jobs')\"\n :loading=\"isLoading\"\n data-testid=\"pipelines-manual-actions-dropdown\"\n right\n lazy\n icon=\"play\"\n @shown=\"fetchActions\"\n @hidden=\"hideAction\"\n >\n <gl-disclosure-dropdown-item v-if=\"isActionsLoading\">\n <template #list-item>\n <div class=\"gl-flex\">\n <gl-loading-icon class=\"mr-2\" />\n <span>{{ __('Loading...') }}</span>\n </div>\n </template>\n </gl-disclosure-dropdown-item>\n\n <gl-disclosure-dropdown-item\n v-for=\"action in actions\"\n v-else\n :key=\"action.id\"\n :item=\"jobItem(action)\"\n @action=\"onClickAction(action)\"\n >\n <template #list-item>\n <div class=\"gl-flex gl-flex-wrap gl-justify-between\">\n {{ action.name }}\n <span v-if=\"action.scheduledAt\">\n <gl-icon name=\"clock\" />\n <gl-countdown :end-date-string=\"action.scheduledAt\" />\n </span>\n </div>\n </template>\n </gl-disclosure-dropdown-item>\n\n <template #footer>\n <gl-disclosure-dropdown-item v-if=\"isDropdownLimitReached\">\n <template #list-item>\n <span class=\"gl-text-sm !gl-text-gray-300\" data-testid=\"limit-reached-msg\">\n {{ __('Showing first 50 actions.') }}\n </span>\n </template>\n </gl-disclosure-dropdown-item>\n </template>\n </gl-disclosure-dropdown>\n</template>\n","import { render, staticRenderFns } from \"./pipelines_manual_actions.vue?vue&type=template&id=41962a3e\"\nimport script from \"./pipelines_manual_actions.vue?vue&type=script&lang=js\"\nexport * from \"./pipelines_manual_actions.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-disclosure-dropdown',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left\",value:(_vm.isDropdownVisible ? '' : _vm.__('Run manual or delayed jobs')),expression:\"isDropdownVisible ? '' : __('Run manual or delayed jobs')\",modifiers:{\"left\":true}}],attrs:{\"loading\":_vm.isLoading,\"data-testid\":\"pipelines-manual-actions-dropdown\",\"right\":\"\",\"lazy\":\"\",\"icon\":\"play\"},on:{\"shown\":_vm.fetchActions,\"hidden\":_vm.hideAction},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [(_vm.isDropdownLimitReached)?_c('gl-disclosure-dropdown-item',{scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('span',{staticClass:\"gl-text-sm !gl-text-gray-300\",attrs:{\"data-testid\":\"limit-reached-msg\"}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Showing first 50 actions.'))+\"\\n \")])]},proxy:true}],null,false,340575193)}):_vm._e()]},proxy:true}])},[(_vm.isActionsLoading)?_c('gl-disclosure-dropdown-item',{scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('div',{staticClass:\"gl-flex\"},[_c('gl-loading-icon',{staticClass:\"mr-2\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.__('Loading...')))])],1)]},proxy:true}],null,false,800703371)}):_vm._l((_vm.actions),function(action){return _c('gl-disclosure-dropdown-item',{key:action.id,attrs:{\"item\":_vm.jobItem(action)},on:{\"action\":function($event){return _vm.onClickAction(action)}},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('div',{staticClass:\"gl-flex gl-flex-wrap gl-justify-between\"},[_vm._v(\"\\n \"+_vm._s(action.name)+\"\\n \"),(action.scheduledAt)?_c('span',[_c('gl-icon',{attrs:{\"name\":\"clock\"}}),_vm._v(\" \"),_c('gl-countdown',{attrs:{\"end-date-string\":action.scheduledAt}})],1):_vm._e()])]},proxy:true}],null,true)})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_stop_modal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_stop_modal.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink, GlModal, GlSprintf } from '@gitlab/ui';\nimport { isEmpty } from 'lodash';\nimport { __, s__, sprintf } from '~/locale';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\n\n/**\n * Pipeline Stop Modal.\n *\n * Renders the modal used to confirm cancelling a pipeline.\n */\nexport default {\n components: {\n GlModal,\n GlLink,\n GlSprintf,\n CiIcon,\n },\n props: {\n pipeline: {\n type: Object,\n required: true,\n deep: true,\n },\n showConfirmationModal: {\n type: Boolean,\n required: true,\n },\n },\n computed: {\n hasRef() {\n return !isEmpty(this.pipeline.ref);\n },\n modalTitle() {\n return sprintf(\n s__('Pipeline|Stop pipeline #%{pipelineId}?'),\n {\n pipelineId: `${this.pipeline.id}`,\n },\n false,\n );\n },\n modalText() {\n return s__(`Pipeline|You're about to stop pipeline #%{pipelineId}.`);\n },\n primaryProps() {\n return {\n text: s__('Pipeline|Stop pipeline'),\n attributes: { variant: 'danger' },\n };\n },\n showModal: {\n get() {\n return this.showConfirmationModal;\n },\n set() {\n this.$emit('close-modal');\n },\n },\n },\n methods: {\n emitSubmit(event) {\n this.$emit('submit', event);\n },\n },\n cancelProps: { text: __('Cancel') },\n};\n</script>\n<template>\n <gl-modal\n v-model=\"showModal\"\n modal-id=\"confirmation-modal\"\n :title=\"modalTitle\"\n :action-primary=\"primaryProps\"\n :action-cancel=\"$options.cancelProps\"\n data-testid=\"pipeline-stop-modal\"\n @primary=\"emitSubmit($event)\"\n >\n <p>\n <gl-sprintf :message=\"modalText\">\n <template #pipelineId>\n <strong>{{ pipeline.id }}</strong>\n </template>\n </gl-sprintf>\n </p>\n\n <p>\n <ci-icon\n v-if=\"pipeline.details\"\n :status=\"pipeline.details.status\"\n class=\"vertical-align-middle\"\n />\n\n <span class=\"font-weight-bold\">{{ __('Pipeline') }}</span>\n\n <a :href=\"pipeline.path\" class=\"js-pipeline-path link-commit\">#{{ pipeline.id }}</a>\n <template v-if=\"hasRef\">\n {{ __('from') }}\n <a :href=\"pipeline.ref.path\" class=\"link-commit ref-name\">{{ pipeline.ref.name }}</a>\n </template>\n </p>\n\n <template v-if=\"pipeline.commit\">\n <p>\n <span class=\"font-weight-bold\">{{ __('Commit') }}</span>\n\n <gl-link :href=\"pipeline.commit.commit_path\" class=\"js-commit-sha commit-sha link-commit\">\n {{ pipeline.commit.short_id }}\n </gl-link>\n </p>\n <p>{{ pipeline.commit.title }}</p>\n </template>\n </gl-modal>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_stop_modal.vue?vue&type=template&id=2d48a191\"\nimport script from \"./pipeline_stop_modal.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_stop_modal.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-modal',{attrs:{\"modal-id\":\"confirmation-modal\",\"title\":_vm.modalTitle,\"action-primary\":_vm.primaryProps,\"action-cancel\":_vm.$options.cancelProps,\"data-testid\":\"pipeline-stop-modal\"},on:{\"primary\":function($event){return _vm.emitSubmit($event)}},model:{value:(_vm.showModal),callback:function ($$v) {_vm.showModal=$$v},expression:\"showModal\"}},[_c('p',[_c('gl-sprintf',{attrs:{\"message\":_vm.modalText},scopedSlots:_vm._u([{key:\"pipelineId\",fn:function(){return [_c('strong',[_vm._v(_vm._s(_vm.pipeline.id))])]},proxy:true}])})],1),_vm._v(\" \"),_c('p',[(_vm.pipeline.details)?_c('ci-icon',{staticClass:\"vertical-align-middle\",attrs:{\"status\":_vm.pipeline.details.status}}):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.__('Pipeline')))]),_vm._v(\" \"),_c('a',{staticClass:\"js-pipeline-path link-commit\",attrs:{\"href\":_vm.pipeline.path}},[_vm._v(\"#\"+_vm._s(_vm.pipeline.id))]),_vm._v(\" \"),(_vm.hasRef)?[_vm._v(\"\\n \"+_vm._s(_vm.__('from'))+\"\\n \"),_c('a',{staticClass:\"link-commit ref-name\",attrs:{\"href\":_vm.pipeline.ref.path}},[_vm._v(_vm._s(_vm.pipeline.ref.name))])]:_vm._e()],2),_vm._v(\" \"),(_vm.pipeline.commit)?[_c('p',[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.__('Commit')))]),_vm._v(\" \"),_c('gl-link',{staticClass:\"js-commit-sha commit-sha link-commit\",attrs:{\"href\":_vm.pipeline.commit.commit_path}},[_vm._v(\"\\n \"+_vm._s(_vm.pipeline.commit.short_id)+\"\\n \")])],1),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.pipeline.commit.title))])]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_operations.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_operations.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlTooltipDirective } from '@gitlab/ui';\nimport Tracking from '~/tracking';\nimport { BUTTON_TOOLTIP_RETRY, BUTTON_TOOLTIP_CANCEL, TRACKING_CATEGORIES } from '~/ci/constants';\nimport PipelineMultiActions from './pipeline_multi_actions.vue';\nimport PipelinesManualActions from './pipelines_manual_actions.vue';\nimport PipelineStopModal from './pipeline_stop_modal.vue';\n\nexport default {\n BUTTON_TOOLTIP_RETRY,\n BUTTON_TOOLTIP_CANCEL,\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n components: {\n GlButton,\n PipelineMultiActions,\n PipelinesManualActions,\n PipelineStopModal,\n },\n mixins: [Tracking.mixin()],\n props: {\n pipeline: {\n type: Object,\n required: true,\n },\n },\n data() {\n return {\n isCanceling: false,\n isRetrying: false,\n showConfirmationModal: false,\n pipelineToCancel: this.pipeline,\n };\n },\n computed: {\n hasActions() {\n return (\n this.pipeline?.details?.has_manual_actions || this.pipeline?.details?.has_scheduled_actions\n );\n },\n },\n watch: {\n pipeline() {\n if (this.isCanceling || this.isRetrying) {\n this.isCanceling = false;\n this.isRetrying = false;\n }\n },\n },\n methods: {\n onCloseModal() {\n this.showConfirmationModal = false;\n },\n onConfirmCancelPipeline() {\n this.isCanceling = true;\n this.showConfirmationModal = false;\n\n this.$emit('cancel-pipeline', this.pipelineToCancel);\n },\n handleCancelClick() {\n this.showConfirmationModal = true;\n this.pipelineToCancel = this.pipeline;\n\n this.trackClick('click_cancel_button');\n },\n handleRetryClick() {\n this.isRetrying = true;\n\n this.trackClick('click_retry_button');\n\n this.$emit('retry-pipeline', this.pipeline);\n },\n trackClick(action) {\n this.track(action, { label: TRACKING_CATEGORIES.table });\n },\n },\n};\n</script>\n\n<template>\n <div class=\"gl-text-right\">\n <pipeline-stop-modal\n :pipeline=\"pipelineToCancel\"\n :show-confirmation-modal=\"showConfirmationModal\"\n @submit=\"onConfirmCancelPipeline\"\n @close-modal=\"onCloseModal\"\n />\n\n <div class=\"btn-group\">\n <pipelines-manual-actions\n v-if=\"hasActions\"\n :iid=\"pipeline.iid\"\n @refresh-pipeline-table=\"$emit('refresh-pipelines-table')\"\n />\n\n <gl-button\n v-if=\"pipeline.flags.retryable\"\n v-gl-tooltip.hover\n :aria-label=\"$options.BUTTON_TOOLTIP_RETRY\"\n :title=\"$options.BUTTON_TOOLTIP_RETRY\"\n :disabled=\"isRetrying\"\n :loading=\"isRetrying\"\n class=\"js-pipelines-retry-button\"\n data-testid=\"pipelines-retry-button\"\n icon=\"retry\"\n variant=\"default\"\n category=\"secondary\"\n @click=\"handleRetryClick\"\n />\n\n <gl-button\n v-if=\"pipeline.flags.cancelable\"\n v-gl-tooltip.hover\n :aria-label=\"$options.BUTTON_TOOLTIP_CANCEL\"\n :title=\"$options.BUTTON_TOOLTIP_CANCEL\"\n :loading=\"isCanceling\"\n :disabled=\"isCanceling\"\n icon=\"cancel\"\n variant=\"danger\"\n category=\"primary\"\n class=\"js-pipelines-cancel-button gl-ml-1\"\n data-testid=\"pipelines-cancel-button\"\n @click=\"handleCancelClick\"\n />\n\n <pipeline-multi-actions :pipeline-id=\"pipeline.id\" />\n </div>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_operations.vue?vue&type=template&id=8b2494d4\"\nimport script from \"./pipeline_operations.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_operations.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-text-right\"},[_c('pipeline-stop-modal',{attrs:{\"pipeline\":_vm.pipelineToCancel,\"show-confirmation-modal\":_vm.showConfirmationModal},on:{\"submit\":_vm.onConfirmCancelPipeline,\"close-modal\":_vm.onCloseModal}}),_vm._v(\" \"),_c('div',{staticClass:\"btn-group\"},[(_vm.hasActions)?_c('pipelines-manual-actions',{attrs:{\"iid\":_vm.pipeline.iid},on:{\"refresh-pipeline-table\":function($event){return _vm.$emit('refresh-pipelines-table')}}}):_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.retryable)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"js-pipelines-retry-button\",attrs:{\"aria-label\":_vm.$options.BUTTON_TOOLTIP_RETRY,\"title\":_vm.$options.BUTTON_TOOLTIP_RETRY,\"disabled\":_vm.isRetrying,\"loading\":_vm.isRetrying,\"data-testid\":\"pipelines-retry-button\",\"icon\":\"retry\",\"variant\":\"default\",\"category\":\"secondary\"},on:{\"click\":_vm.handleRetryClick}}):_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.cancelable)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"js-pipelines-cancel-button gl-ml-1\",attrs:{\"aria-label\":_vm.$options.BUTTON_TOOLTIP_CANCEL,\"title\":_vm.$options.BUTTON_TOOLTIP_CANCEL,\"loading\":_vm.isCanceling,\"disabled\":_vm.isCanceling,\"icon\":\"cancel\",\"variant\":\"danger\",\"category\":\"primary\",\"data-testid\":\"pipelines-cancel-button\"},on:{\"click\":_vm.handleCancelClick}}):_vm._e(),_vm._v(\" \"),_c('pipeline-multi-actions',{attrs:{\"pipeline-id\":_vm.pipeline.id}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_triggerer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_triggerer.vue?vue&type=script&lang=js\"","<script>\nimport { GlAvatarLink, GlAvatar, GlTooltipDirective } from '@gitlab/ui';\n\nexport default {\n components: {\n GlAvatarLink,\n GlAvatar,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n pipeline: {\n type: Object,\n required: true,\n },\n },\n computed: {\n user() {\n return this.pipeline.user;\n },\n },\n};\n</script>\n<template>\n <div class=\"pipeline-triggerer\" data-testid=\"pipeline-triggerer\">\n <gl-avatar-link v-if=\"user\" v-gl-tooltip :href=\"user.path\" :title=\"user.name\" class=\"gl-ml-3\">\n <gl-avatar :size=\"32\" :src=\"user.avatar_url\" />\n </gl-avatar-link>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_triggerer.vue?vue&type=template&id=469f9310\"\nimport script from \"./pipeline_triggerer.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_triggerer.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"pipeline-triggerer\",attrs:{\"data-testid\":\"pipeline-triggerer\"}},[(_vm.user)?_c('gl-avatar-link',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-ml-3\",attrs:{\"href\":_vm.user.path,\"title\":_vm.user.name}},[_c('gl-avatar',{attrs:{\"size\":32,\"src\":_vm.user.avatar_url}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_labels.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_labels.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink, GlPopover, GlSprintf, GlTooltipDirective, GlBadge } from '@gitlab/ui';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { SCHEDULE_ORIGIN, API_ORIGIN, TRIGGER_ORIGIN } from '../constants';\n\nexport default {\n components: {\n GlBadge,\n GlLink,\n GlPopover,\n GlSprintf,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n inject: {\n pipelineSchedulesPath: {\n default: '',\n },\n },\n props: {\n pipeline: {\n type: Object,\n required: true,\n },\n },\n computed: {\n isScheduled() {\n return this.pipeline.source === SCHEDULE_ORIGIN;\n },\n isTriggered() {\n return this.pipeline.source === TRIGGER_ORIGIN;\n },\n isForked() {\n return this.pipeline?.project?.forked;\n },\n showMergedResultsBadge() {\n // A merge train pipeline is technically also a merged results pipeline,\n // but we want the badges to be mutually exclusive.\n return (\n this.pipeline.flags.merged_result_pipeline && !this.pipeline.flags.merge_train_pipeline\n );\n },\n autoDevopsTagId() {\n return `pipeline-url-autodevops-${this.pipeline.id}`;\n },\n autoDevopsHelpPath() {\n return helpPagePath('topics/autodevops/index.md');\n },\n isApi() {\n return this.pipeline.source === API_ORIGIN;\n },\n },\n};\n</script>\n<template>\n <div class=\"label-container gl-mt-1 gl-flex gl-flex-wrap gl-gap-2\">\n <gl-badge\n v-if=\"isScheduled\"\n v-gl-tooltip\n :href=\"pipelineSchedulesPath\"\n target=\"__blank\"\n :title=\"__('This pipeline was created by a schedule.')\"\n variant=\"info\"\n data-testid=\"pipeline-url-scheduled\"\n >{{ __('scheduled') }}</gl-badge\n >\n <gl-badge\n v-if=\"isTriggered\"\n v-gl-tooltip\n :title=\"__('This pipeline was created by an API call authenticated with a trigger token')\"\n variant=\"info\"\n data-testid=\"pipeline-url-triggered\"\n >{{ __('trigger token') }}</gl-badge\n >\n <gl-badge\n v-if=\"pipeline.flags.latest\"\n v-gl-tooltip\n :title=\"__('Latest pipeline for the most recent commit on this branch')\"\n variant=\"success\"\n data-testid=\"pipeline-url-latest\"\n >{{ __('latest') }}</gl-badge\n >\n <gl-badge\n v-if=\"pipeline.flags.merge_train_pipeline\"\n v-gl-tooltip\n :title=\"\n s__(\n 'Pipeline|This pipeline ran on the contents of the merge request combined with the contents of all other merge requests queued for merging into the target branch.',\n )\n \"\n variant=\"info\"\n data-testid=\"pipeline-url-train\"\n >{{ s__('Pipeline|merge train') }}</gl-badge\n >\n <gl-badge\n v-if=\"pipeline.flags.yaml_errors\"\n v-gl-tooltip\n :title=\"pipeline.yaml_errors\"\n variant=\"danger\"\n data-testid=\"pipeline-url-yaml\"\n >{{ __('yaml invalid') }}</gl-badge\n >\n <gl-badge\n v-if=\"pipeline.flags.failure_reason\"\n v-gl-tooltip\n :title=\"pipeline.failure_reason\"\n variant=\"danger\"\n data-testid=\"pipeline-url-failure\"\n >{{ __('error') }}</gl-badge\n >\n <template v-if=\"pipeline.flags.auto_devops\">\n <gl-link\n :id=\"autoDevopsTagId\"\n tabindex=\"0\"\n data-testid=\"pipeline-url-autodevops\"\n role=\"button\"\n >\n <gl-badge variant=\"info\">\n {{ __('Auto DevOps') }}\n </gl-badge>\n </gl-link>\n <gl-popover :target=\"autoDevopsTagId\" triggers=\"focus\" placement=\"top\">\n <template #title>\n <div class=\"gl-font-normal gl-leading-normal\">\n <gl-sprintf\n :message=\"\n __(\n 'This pipeline makes use of a predefined CI/CD configuration enabled by %{strongStart}Auto DevOps.%{strongEnd}',\n )\n \"\n >\n <template #strong=\"{ content }\">\n <b>{{ content }}</b>\n </template>\n </gl-sprintf>\n </div>\n </template>\n <gl-link\n :href=\"autoDevopsHelpPath\"\n data-testid=\"pipeline-url-autodevops-link\"\n target=\"_blank\"\n >\n {{ __('Learn more about Auto DevOps') }}\n </gl-link>\n </gl-popover>\n </template>\n\n <gl-badge v-if=\"pipeline.flags.stuck\" variant=\"warning\" data-testid=\"pipeline-url-stuck\">{{\n __('stuck')\n }}</gl-badge>\n <gl-badge\n v-if=\"pipeline.flags.detached_merge_request_pipeline\"\n v-gl-tooltip\n :title=\"\n s__(\n `Pipeline|This pipeline ran on the contents of the merge request's source branch, not the target branch.`,\n )\n \"\n variant=\"info\"\n data-testid=\"pipeline-url-detached\"\n >{{ s__('Pipeline|merge request') }}</gl-badge\n >\n <gl-badge\n v-if=\"showMergedResultsBadge\"\n v-gl-tooltip\n :title=\"\n s__(\n `Pipeline|This pipeline ran on the contents of the merge request combined with the contents of the target branch.`,\n )\n \"\n variant=\"info\"\n data-testid=\"pipeline-url-merged-results\"\n >{{ s__('Pipeline|merged results') }}</gl-badge\n >\n <gl-badge\n v-if=\"isForked\"\n v-gl-tooltip\n :title=\"__('Pipeline ran in fork of project')\"\n variant=\"info\"\n data-testid=\"pipeline-url-fork\"\n >{{ __('fork') }}</gl-badge\n >\n <gl-badge\n v-if=\"isApi\"\n v-gl-tooltip\n :title=\"__('This pipeline was triggered using the api')\"\n variant=\"info\"\n data-testid=\"pipeline-api-badge\"\n >{{ s__('Pipeline|api') }}</gl-badge\n >\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_labels.vue?vue&type=template&id=20bafd32\"\nimport script from \"./pipeline_labels.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_labels.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"label-container gl-mt-1 gl-flex gl-flex-wrap gl-gap-2\"},[(_vm.isScheduled)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"href\":_vm.pipelineSchedulesPath,\"target\":\"__blank\",\"title\":_vm.__('This pipeline was created by a schedule.'),\"variant\":\"info\",\"data-testid\":\"pipeline-url-scheduled\"}},[_vm._v(_vm._s(_vm.__('scheduled')))]):_vm._e(),_vm._v(\" \"),(_vm.isTriggered)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.__('This pipeline was created by an API call authenticated with a trigger token'),\"variant\":\"info\",\"data-testid\":\"pipeline-url-triggered\"}},[_vm._v(_vm._s(_vm.__('trigger token')))]):_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.latest)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.__('Latest pipeline for the most recent commit on this branch'),\"variant\":\"success\",\"data-testid\":\"pipeline-url-latest\"}},[_vm._v(_vm._s(_vm.__('latest')))]):_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.merge_train_pipeline)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.s__(\n 'Pipeline|This pipeline ran on the contents of the merge request combined with the contents of all other merge requests queued for merging into the target branch.',\n ),\"variant\":\"info\",\"data-testid\":\"pipeline-url-train\"}},[_vm._v(_vm._s(_vm.s__('Pipeline|merge train')))]):_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.yaml_errors)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.pipeline.yaml_errors,\"variant\":\"danger\",\"data-testid\":\"pipeline-url-yaml\"}},[_vm._v(_vm._s(_vm.__('yaml invalid')))]):_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.failure_reason)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.pipeline.failure_reason,\"variant\":\"danger\",\"data-testid\":\"pipeline-url-failure\"}},[_vm._v(_vm._s(_vm.__('error')))]):_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.auto_devops)?[_c('gl-link',{attrs:{\"id\":_vm.autoDevopsTagId,\"tabindex\":\"0\",\"data-testid\":\"pipeline-url-autodevops\",\"role\":\"button\"}},[_c('gl-badge',{attrs:{\"variant\":\"info\"}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Auto DevOps'))+\"\\n \")])],1),_vm._v(\" \"),_c('gl-popover',{attrs:{\"target\":_vm.autoDevopsTagId,\"triggers\":\"focus\",\"placement\":\"top\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('div',{staticClass:\"gl-font-normal gl-leading-normal\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.__(\n 'This pipeline makes use of a predefined CI/CD configuration enabled by %{strongStart}Auto DevOps.%{strongEnd}',\n )},scopedSlots:_vm._u([{key:\"strong\",fn:function({ content }){return [_c('b',[_vm._v(_vm._s(content))])]}}],null,false,1478500124)})],1)]},proxy:true}],null,false,2946223184)},[_vm._v(\" \"),_c('gl-link',{attrs:{\"href\":_vm.autoDevopsHelpPath,\"data-testid\":\"pipeline-url-autodevops-link\",\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Learn more about Auto DevOps'))+\"\\n \")])],1)]:_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.stuck)?_c('gl-badge',{attrs:{\"variant\":\"warning\",\"data-testid\":\"pipeline-url-stuck\"}},[_vm._v(_vm._s(_vm.__('stuck')))]):_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.detached_merge_request_pipeline)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.s__(\n `Pipeline|This pipeline ran on the contents of the merge request's source branch, not the target branch.`,\n ),\"variant\":\"info\",\"data-testid\":\"pipeline-url-detached\"}},[_vm._v(_vm._s(_vm.s__('Pipeline|merge request')))]):_vm._e(),_vm._v(\" \"),(_vm.showMergedResultsBadge)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.s__(\n `Pipeline|This pipeline ran on the contents of the merge request combined with the contents of the target branch.`,\n ),\"variant\":\"info\",\"data-testid\":\"pipeline-url-merged-results\"}},[_vm._v(_vm._s(_vm.s__('Pipeline|merged results')))]):_vm._e(),_vm._v(\" \"),(_vm.isForked)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.__('Pipeline ran in fork of project'),\"variant\":\"info\",\"data-testid\":\"pipeline-url-fork\"}},[_vm._v(_vm._s(_vm.__('fork')))]):_vm._e(),_vm._v(\" \"),(_vm.isApi)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.__('This pipeline was triggered using the api'),\"variant\":\"info\",\"data-testid\":\"pipeline-api-badge\"}},[_vm._v(_vm._s(_vm.s__('Pipeline|api')))]):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_url.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_url.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlLink, GlTooltipDirective } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport Tracking from '~/tracking';\nimport TooltipOnTruncate from '~/vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue';\nimport UserAvatarLink from '~/vue_shared/components/user_avatar/user_avatar_link.vue';\nimport { ICONS, PIPELINE_ID_KEY, PIPELINE_IID_KEY, TRACKING_CATEGORIES } from '~/ci/constants';\nimport PipelineLabels from './pipeline_labels.vue';\n\nexport default {\n components: {\n GlIcon,\n GlLink,\n PipelineLabels,\n TooltipOnTruncate,\n UserAvatarLink,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n mixins: [Tracking.mixin()],\n props: {\n pipeline: {\n type: Object,\n required: true,\n },\n pipelineIdType: {\n type: String,\n required: false,\n default: PIPELINE_ID_KEY,\n validator(value) {\n return value === PIPELINE_IID_KEY || value === PIPELINE_ID_KEY;\n },\n },\n refClass: {\n type: String,\n required: false,\n default: '',\n },\n },\n computed: {\n mergeRequestRef() {\n return this.pipeline?.merge_request;\n },\n commitRef() {\n return this.pipeline?.ref;\n },\n commitTag() {\n return this.commitRef?.tag;\n },\n commitUrl() {\n return this.pipeline?.commit?.commit_path;\n },\n commitShortSha() {\n return this.pipeline?.commit?.short_id;\n },\n refUrl() {\n return this.commitRef?.ref_url || this.commitRef?.path;\n },\n tooltipTitle() {\n return this.mergeRequestRef?.title || this.commitRef?.name;\n },\n commitAuthor() {\n let commitAuthorInformation;\n const pipelineCommit = this.pipeline?.commit;\n const pipelineCommitAuthor = pipelineCommit?.author;\n\n if (!pipelineCommit) {\n return null;\n }\n\n // 1. person who is an author of a commit might be a GitLab user\n if (pipelineCommitAuthor) {\n // 2. if person who is an author of a commit is a GitLab user\n // they can have a GitLab avatar\n if (pipelineCommitAuthor?.avatar_url) {\n commitAuthorInformation = pipelineCommitAuthor;\n\n // 3. If GitLab user does not have avatar, they might have a Gravatar\n } else if (pipelineCommit?.author_gravatar_url) {\n commitAuthorInformation = {\n ...pipelineCommitAuthor,\n avatar_url: pipelineCommit.author_gravatar_url,\n };\n }\n // 4. If committer is not a GitLab User, they can have a Gravatar\n } else {\n commitAuthorInformation = {\n avatar_url: pipelineCommit?.author_gravatar_url,\n path: `mailto:${pipelineCommit?.author_email}`,\n username: pipelineCommit.author_name,\n };\n }\n\n return commitAuthorInformation;\n },\n commitIcon() {\n let name = '';\n\n if (this.commitTag) {\n name = ICONS.TAG;\n } else if (this.mergeRequestRef) {\n name = ICONS.MR;\n } else {\n name = ICONS.BRANCH;\n }\n\n return name;\n },\n commitIconTooltipTitle() {\n switch (this.commitIcon) {\n case ICONS.TAG:\n return __('Tag');\n case ICONS.MR:\n return __('Merge Request');\n default:\n return __('Branch');\n }\n },\n commitTitle() {\n return this.pipeline?.commit?.title;\n },\n pipelineIdentifier() {\n const { name, path, pipeline_schedule: pipelineSchedule } = this.pipeline || {};\n\n // pipeline name should take priority over\n // pipeline schedule description\n if (name) {\n return {\n text: name,\n link: path,\n };\n }\n\n if (pipelineSchedule) {\n return {\n text: pipelineSchedule.description,\n link: pipelineSchedule.path,\n };\n }\n\n return false;\n },\n },\n methods: {\n trackClick(action) {\n this.track(action, { label: TRACKING_CATEGORIES.table });\n },\n },\n};\n</script>\n<template>\n <div class=\"pipeline-tags\" data-testid=\"pipeline-url-table-cell\">\n <div v-if=\"pipelineIdentifier\" class=\"gl-mb-2\" data-testid=\"pipeline-identifier-container\">\n <span class=\"gl-flex\">\n <tooltip-on-truncate\n :title=\"pipelineIdentifier.text\"\n class=\"gl-grow gl-truncate gl-text-default\"\n >\n <gl-link :href=\"pipelineIdentifier.link\" data-testid=\"pipeline-identifier-link\">{{\n pipelineIdentifier.text\n }}</gl-link>\n </tooltip-on-truncate>\n </span>\n </div>\n\n <div\n v-if=\"!pipelineIdentifier\"\n class=\"commit-title gl-mb-2\"\n data-testid=\"commit-title-container\"\n >\n <span v-if=\"commitTitle\" class=\"gl-flex\">\n <tooltip-on-truncate\n :title=\"commitTitle\"\n class=\"-gl-mb-3 -gl-ml-3 -gl-mr-3 -gl-mt-3 gl-grow gl-truncate gl-p-3\"\n >\n <gl-link\n :href=\"commitUrl\"\n class=\"commit-row-message\"\n data-testid=\"commit-title\"\n @click=\"trackClick('click_commit_title')\"\n >{{ commitTitle }}</gl-link\n >\n </tooltip-on-truncate>\n </span>\n <span v-else class=\"gl-text-subtle\">{{ __(\"Can't find HEAD commit for this branch\") }}</span>\n </div>\n\n <div class=\"gl-mb-2\">\n <gl-link\n :href=\"pipeline.path\"\n class=\"gl-mr-1\"\n data-testid=\"pipeline-url-link\"\n @click=\"trackClick('click_pipeline_id')\"\n >#{{ pipeline[pipelineIdType] }}</gl-link\n >\n <!--Commit row-->\n <div class=\"gl-inline-flex gl-rounded-base gl-bg-gray-50 gl-px-2 gl-text-subtle\">\n <tooltip-on-truncate :title=\"tooltipTitle\" truncate-target=\"child\" placement=\"top\">\n <gl-icon\n v-gl-tooltip\n :name=\"commitIcon\"\n :title=\"commitIconTooltipTitle\"\n :size=\"12\"\n data-testid=\"commit-icon-type\"\n variant=\"subtle\"\n />\n <gl-link\n v-if=\"mergeRequestRef\"\n :href=\"mergeRequestRef.path\"\n class=\"gl-text-sm !gl-text-subtle gl-font-monospace\"\n :class=\"refClass\"\n data-testid=\"merge-request-ref\"\n @click=\"trackClick('click_mr_ref')\"\n >{{ mergeRequestRef.iid }}</gl-link\n >\n <gl-link\n v-else\n :href=\"refUrl\"\n class=\"gl-text-sm !gl-text-subtle gl-font-monospace\"\n :class=\"refClass\"\n data-testid=\"commit-ref-name\"\n @click=\"trackClick('click_commit_name')\"\n >{{ commitRef.name }}</gl-link\n >\n </tooltip-on-truncate>\n </div>\n\n <div class=\"gl-inline-block gl-rounded-base gl-bg-gray-50 gl-px-2 gl-text-sm gl-text-default\">\n <gl-icon\n v-gl-tooltip\n name=\"commit\"\n class=\"commit-icon gl-mr-1\"\n :title=\"__('Commit')\"\n :size=\"12\"\n data-testid=\"commit-icon\"\n />\n <gl-link\n :href=\"commitUrl\"\n class=\"gl-mr-0 gl-text-sm !gl-text-subtle gl-font-monospace\"\n data-testid=\"commit-short-sha\"\n @click=\"trackClick('click_commit_sha')\"\n >{{ commitShortSha }}</gl-link\n >\n </div>\n\n <user-avatar-link\n v-if=\"commitAuthor\"\n :link-href=\"commitAuthor.path\"\n :img-src=\"commitAuthor.avatar_url\"\n :img-size=\"16\"\n :img-alt=\"commitAuthor.name\"\n :tooltip-text=\"commitAuthor.name\"\n class=\"gl-ml-1\"\n />\n <!--End of commit row-->\n </div>\n <pipeline-labels :pipeline=\"pipeline\" />\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_url.vue?vue&type=template&id=5545556a\"\nimport script from \"./pipeline_url.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_url.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"pipeline-tags\",attrs:{\"data-testid\":\"pipeline-url-table-cell\"}},[(_vm.pipelineIdentifier)?_c('div',{staticClass:\"gl-mb-2\",attrs:{\"data-testid\":\"pipeline-identifier-container\"}},[_c('span',{staticClass:\"gl-flex\"},[_c('tooltip-on-truncate',{staticClass:\"gl-grow gl-truncate gl-text-default\",attrs:{\"title\":_vm.pipelineIdentifier.text}},[_c('gl-link',{attrs:{\"href\":_vm.pipelineIdentifier.link,\"data-testid\":\"pipeline-identifier-link\"}},[_vm._v(_vm._s(_vm.pipelineIdentifier.text))])],1)],1)]):_vm._e(),_vm._v(\" \"),(!_vm.pipelineIdentifier)?_c('div',{staticClass:\"commit-title gl-mb-2\",attrs:{\"data-testid\":\"commit-title-container\"}},[(_vm.commitTitle)?_c('span',{staticClass:\"gl-flex\"},[_c('tooltip-on-truncate',{staticClass:\"-gl-mb-3 -gl-ml-3 -gl-mr-3 -gl-mt-3 gl-grow gl-truncate gl-p-3\",attrs:{\"title\":_vm.commitTitle}},[_c('gl-link',{staticClass:\"commit-row-message\",attrs:{\"href\":_vm.commitUrl,\"data-testid\":\"commit-title\"},on:{\"click\":function($event){return _vm.trackClick('click_commit_title')}}},[_vm._v(_vm._s(_vm.commitTitle))])],1)],1):_c('span',{staticClass:\"gl-text-subtle\"},[_vm._v(_vm._s(_vm.__(\"Can't find HEAD commit for this branch\")))])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"gl-mb-2\"},[_c('gl-link',{staticClass:\"gl-mr-1\",attrs:{\"href\":_vm.pipeline.path,\"data-testid\":\"pipeline-url-link\"},on:{\"click\":function($event){return _vm.trackClick('click_pipeline_id')}}},[_vm._v(\"#\"+_vm._s(_vm.pipeline[_vm.pipelineIdType]))]),_vm._v(\" \"),_c('div',{staticClass:\"gl-inline-flex gl-rounded-base gl-bg-gray-50 gl-px-2 gl-text-subtle\"},[_c('tooltip-on-truncate',{attrs:{\"title\":_vm.tooltipTitle,\"truncate-target\":\"child\",\"placement\":\"top\"}},[_c('gl-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"name\":_vm.commitIcon,\"title\":_vm.commitIconTooltipTitle,\"size\":12,\"data-testid\":\"commit-icon-type\",\"variant\":\"subtle\"}}),_vm._v(\" \"),(_vm.mergeRequestRef)?_c('gl-link',{staticClass:\"gl-text-sm !gl-text-subtle gl-font-monospace\",class:_vm.refClass,attrs:{\"href\":_vm.mergeRequestRef.path,\"data-testid\":\"merge-request-ref\"},on:{\"click\":function($event){return _vm.trackClick('click_mr_ref')}}},[_vm._v(_vm._s(_vm.mergeRequestRef.iid))]):_c('gl-link',{staticClass:\"gl-text-sm !gl-text-subtle gl-font-monospace\",class:_vm.refClass,attrs:{\"href\":_vm.refUrl,\"data-testid\":\"commit-ref-name\"},on:{\"click\":function($event){return _vm.trackClick('click_commit_name')}}},[_vm._v(_vm._s(_vm.commitRef.name))])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-inline-block gl-rounded-base gl-bg-gray-50 gl-px-2 gl-text-sm gl-text-default\"},[_c('gl-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"commit-icon gl-mr-1\",attrs:{\"name\":\"commit\",\"title\":_vm.__('Commit'),\"size\":12,\"data-testid\":\"commit-icon\"}}),_vm._v(\" \"),_c('gl-link',{staticClass:\"gl-mr-0 gl-text-sm !gl-text-subtle gl-font-monospace\",attrs:{\"href\":_vm.commitUrl,\"data-testid\":\"commit-short-sha\"},on:{\"click\":function($event){return _vm.trackClick('click_commit_sha')}}},[_vm._v(_vm._s(_vm.commitShortSha))])],1),_vm._v(\" \"),(_vm.commitAuthor)?_c('user-avatar-link',{staticClass:\"gl-ml-1\",attrs:{\"link-href\":_vm.commitAuthor.path,\"img-src\":_vm.commitAuthor.avatar_url,\"img-size\":16,\"img-alt\":_vm.commitAuthor.name,\"tooltip-text\":_vm.commitAuthor.name}}):_vm._e()],1),_vm._v(\" \"),_c('pipeline-labels',{attrs:{\"pipeline\":_vm.pipeline}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./time_ago.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./time_ago.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { formatTime } from '~/lib/utils/datetime_utility';\nimport timeagoMixin from '~/vue_shared/mixins/timeago';\n\nexport default {\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n components: { GlIcon },\n mixins: [timeagoMixin],\n props: {\n pipeline: {\n type: Object,\n required: true,\n },\n fontSize: {\n type: String,\n required: false,\n default: 'gl-text-sm',\n validator: (fontSize) => ['gl-text-sm', 'gl-font-md'].includes(fontSize),\n },\n },\n computed: {\n duration() {\n return this.pipeline?.details?.duration;\n },\n durationFormatted() {\n return formatTime(this.duration * 1000);\n },\n finishedTime() {\n return this.pipeline?.details?.finished_at || this.pipeline?.finishedAt;\n },\n },\n};\n</script>\n<template>\n <div class=\"gl-flex gl-flex-col gl-items-end lg:gl-items-start\" :class=\"fontSize\">\n <p\n v-if=\"duration\"\n class=\"gl-m-0 gl-inline-flex gl-items-center gl-whitespace-nowrap gl-text-subtle\"\n data-testid=\"duration\"\n >\n <gl-icon name=\"timer\" class=\"gl-mr-2\" :size=\"12\" />\n {{ durationFormatted }}\n </p>\n\n <p\n v-if=\"finishedTime\"\n class=\"gl-m-0 gl-inline-flex gl-items-center gl-whitespace-nowrap gl-text-subtle\"\n data-testid=\"finished-at\"\n >\n <gl-icon name=\"calendar\" class=\"gl-mr-2\" :size=\"12\" data-testid=\"calendar-icon\" />\n\n <time\n v-gl-tooltip\n :title=\"tooltipTitle(finishedTime)\"\n :datetime=\"finishedTime\"\n data-placement=\"top\"\n data-container=\"body\"\n >\n {{ timeFormatted(finishedTime) }}\n </time>\n </p>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./time_ago.vue?vue&type=template&id=11c81d51\"\nimport script from \"./time_ago.vue?vue&type=script&lang=js\"\nexport * from \"./time_ago.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-flex gl-flex-col gl-items-end lg:gl-items-start\",class:_vm.fontSize},[(_vm.duration)?_c('p',{staticClass:\"gl-m-0 gl-inline-flex gl-items-center gl-whitespace-nowrap gl-text-subtle\",attrs:{\"data-testid\":\"duration\"}},[_c('gl-icon',{staticClass:\"gl-mr-2\",attrs:{\"name\":\"timer\",\"size\":12}}),_vm._v(\"\\n \"+_vm._s(_vm.durationFormatted)+\"\\n \")],1):_vm._e(),_vm._v(\" \"),(_vm.finishedTime)?_c('p',{staticClass:\"gl-m-0 gl-inline-flex gl-items-center gl-whitespace-nowrap gl-text-subtle\",attrs:{\"data-testid\":\"finished-at\"}},[_c('gl-icon',{staticClass:\"gl-mr-2\",attrs:{\"name\":\"calendar\",\"size\":12,\"data-testid\":\"calendar-icon\"}}),_vm._v(\" \"),_c('time',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.tooltipTitle(_vm.finishedTime),\"datetime\":_vm.finishedTime,\"data-placement\":\"top\",\"data-container\":\"body\"}},[_vm._v(\"\\n \"+_vm._s(_vm.timeFormatted(_vm.finishedTime))+\"\\n \")])],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_status_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_status_badge.vue?vue&type=script&lang=js\"","<script>\nimport { TRACKING_CATEGORIES } from '~/ci/constants';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport Tracking from '~/tracking';\nimport PipelinesTimeago from './time_ago.vue';\n\nexport default {\n components: {\n CiIcon,\n PipelinesTimeago,\n },\n mixins: [Tracking.mixin()],\n props: {\n pipeline: {\n type: Object,\n required: true,\n },\n },\n computed: {\n pipelineStatus() {\n return this.pipeline?.details?.status ?? {};\n },\n },\n methods: {\n trackClick() {\n this.track('click_ci_status_badge', { label: TRACKING_CATEGORIES.table });\n },\n },\n};\n</script>\n\n<template>\n <div>\n <ci-icon\n class=\"gl-mb-2\"\n :status=\"pipelineStatus\"\n show-status-text\n @ciStatusBadgeClick=\"trackClick\"\n />\n <pipelines-timeago :pipeline=\"pipeline\" />\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_status_badge.vue?vue&type=template&id=31de1773\"\nimport script from \"./pipeline_status_badge.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_status_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('ci-icon',{staticClass:\"gl-mb-2\",attrs:{\"status\":_vm.pipelineStatus,\"show-status-text\":\"\"},on:{\"ciStatusBadgeClick\":_vm.trackClick}}),_vm._v(\" \"),_c('pipelines-timeago',{attrs:{\"pipeline\":_vm.pipeline}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlSkeletonLoader, GlTableLite, GlTooltipDirective } from '@gitlab/ui';\nimport { GlBreakpointInstance } from '@gitlab/ui/dist/utils';\nimport { cleanLeadingSeparator } from '~/lib/utils/url_utility';\nimport { s__, __ } from '~/locale';\nimport Tracking from '~/tracking';\nimport { PIPELINE_ID_KEY, PIPELINE_IID_KEY, TRACKING_CATEGORIES } from '~/ci/constants';\nimport { keepLatestDownstreamPipelines } from '~/ci/pipeline_details/utils/parsing_utils';\nimport PipelineFailedJobsWidget from '~/ci/pipelines_page/components/failure_widget/pipeline_failed_jobs_widget.vue';\nimport PipelineMiniGraph from '~/ci/pipeline_mini_graph/pipeline_mini_graph.vue';\nimport PipelineOperations from '../pipelines_page/components/pipeline_operations.vue';\nimport PipelineTriggerer from '../pipelines_page/components/pipeline_triggerer.vue';\nimport PipelineUrl from '../pipelines_page/components/pipeline_url.vue';\nimport PipelineStatusBadge from '../pipelines_page/components/pipeline_status_badge.vue';\n\nconst HIDE_TD_ON_MOBILE = '!gl-hidden lg:!gl-table-cell';\n\n/**\n * Pipelines Table\n *\n * Presentational component of a table of pipelines. This component does not\n * fetch the list of pipelines and instead expects it as a prop.\n * GraphQL actions for pipelines, such as retrying, canceling, etc.\n * are handled within this component.\n *\n * Use this `legacy_pipelines_table_wrapper` if you need a fully functional REST component.\n *\n * IMPORTANT: When using this component, make sure to handle the following events:\n * 1- @refresh-pipeline-table\n * 2- @cancel-pipeline\n * 3- @retry-pipeline\n *\n */\n\nexport default {\n name: 'PipelinesTable',\n cellHeight: 50,\n components: {\n GlSkeletonLoader,\n GlTableLite,\n PipelineFailedJobsWidget,\n PipelineMiniGraph,\n PipelineOperations,\n PipelineStatusBadge,\n PipelineTriggerer,\n PipelineUrl,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n mixins: [Tracking.mixin()],\n inject: {\n useFailedJobsWidget: {\n default: false,\n },\n },\n props: {\n isCreatingPipeline: {\n type: Boolean,\n required: false,\n default: false,\n },\n pipelines: {\n type: Array,\n required: true,\n },\n pipelineIdType: {\n type: String,\n required: false,\n default: PIPELINE_ID_KEY,\n validator(value) {\n return value === PIPELINE_IID_KEY || value === PIPELINE_ID_KEY;\n },\n },\n },\n computed: {\n isMobile() {\n return ['md', 'sm', 'xs'].includes(GlBreakpointInstance.getBreakpointSize());\n },\n tableFields() {\n return [\n {\n key: 'status',\n label: s__('Pipeline|Status'),\n columnClass: 'gl-w-3/20',\n tdClass: this.tdClasses,\n thAttr: { 'data-testid': 'status-th' },\n },\n {\n key: 'pipeline',\n label: __('Pipeline'),\n tdClass: `${this.tdClasses}`,\n columnClass: 'gl-w-6/20',\n thAttr: { 'data-testid': 'pipeline-th' },\n },\n {\n key: 'triggerer',\n label: s__('Pipeline|Created by'),\n tdClass: `${this.tdClasses} ${HIDE_TD_ON_MOBILE}`,\n columnClass: 'gl-w-3/20',\n thAttr: { 'data-testid': 'triggerer-th' },\n },\n {\n key: 'stages',\n label: s__('Pipeline|Stages'),\n tdClass: this.tdClasses,\n columnClass: 'gl-w-5/20',\n thAttr: { 'data-testid': 'stages-th' },\n },\n {\n key: 'actions',\n tdClass: this.tdClasses,\n columnClass: 'gl-w-4/20',\n thAttr: { 'data-testid': 'actions-th' },\n },\n ];\n },\n tdClasses() {\n return '!gl-border-none';\n },\n pipelinesWithDetails() {\n let { pipelines } = this;\n\n if (this.isCreatingPipeline) {\n pipelines = [{ isLoading: true }, ...this.pipelines];\n }\n\n if (this.useFailedJobsWidget) {\n pipelines = pipelines.map((p) => {\n return p.failed_builds_count > 0 ? { ...p, _showDetails: true } : p;\n });\n }\n\n return pipelines;\n },\n },\n methods: {\n cellWidth(ref) {\n return this.$refs[ref]?.offsetWidth;\n },\n displayFailedJobsWidget(item) {\n return !item.isLoading && this.useFailedJobsWidget;\n },\n failedJobsCount(pipeline) {\n return pipeline?.failed_builds_count || 0;\n },\n getDownstreamPipelines(pipeline) {\n const downstream = pipeline.triggered;\n return keepLatestDownstreamPipelines(downstream);\n },\n getProjectPath(item) {\n return cleanLeadingSeparator(item.project.full_path);\n },\n getStages(item) {\n return item?.details?.stages || [];\n },\n onCancelPipeline(pipeline) {\n this.$emit('cancel-pipeline', pipeline);\n },\n onRefreshPipelinesTable() {\n this.$emit('refresh-pipelines-table');\n },\n onRetryPipeline(pipeline) {\n this.$emit('retry-pipeline', pipeline);\n },\n rowClass(item) {\n return this.displayFailedJobsWidget(item) && this.failedJobsCount(item) > 0\n ? ''\n : '!gl-border-b';\n },\n setLoaderPosition(ref) {\n if (this.isMobile) {\n return this.cellWidth(ref) / 2;\n }\n\n return 0;\n },\n trackPipelineMiniGraph() {\n this.track('click_minigraph', { label: TRACKING_CATEGORIES.table });\n },\n },\n TBODY_TR_ATTR: {\n 'data-testid': 'pipeline-table-row',\n },\n};\n</script>\n<template>\n <div class=\"ci-table\">\n <gl-table-lite\n :fields=\"tableFields\"\n :items=\"pipelinesWithDetails\"\n :tbody-tr-attr=\"$options.TBODY_TR_ATTR\"\n :tbody-tr-class=\"rowClass\"\n details-td-class=\"!gl-pt-2\"\n stacked=\"lg\"\n fixed\n >\n <template #head(actions)>\n <slot name=\"table-header-actions\">\n <span class=\"gl-block gl-text-right\">{{ s__('Pipeline|Actions') }}</span>\n </slot>\n </template>\n\n <template #table-colgroup=\"{ fields }\">\n <col v-for=\"field in fields\" :key=\"field.key\" :class=\"field.columnClass\" />\n </template>\n\n <template #cell(status)=\"{ item }\">\n <div v-if=\"item.isLoading\" ref=\"status\">\n <gl-skeleton-loader :height=\"$options.cellHeight\" :width=\"cellWidth('status')\">\n <rect height=\"30\" rx=\"4\" ry=\"4\" :width=\"cellWidth('status')\" />\n </gl-skeleton-loader>\n </div>\n <pipeline-status-badge v-else :pipeline=\"item\" />\n </template>\n\n <template #cell(pipeline)=\"{ item }\">\n <div v-if=\"item.isLoading\" ref=\"pipeline\">\n <gl-skeleton-loader :height=\"$options.cellHeight\" :width=\"cellWidth('pipeline')\">\n <rect height=\"14\" rx=\"4\" ry=\"4\" :width=\"cellWidth('pipeline')\" />\n <rect\n height=\"10\"\n rx=\"4\"\n ry=\"4\"\n :width=\"cellWidth('pipeline') / 2\"\n :x=\"setLoaderPosition('pipeline')\"\n y=\"20\"\n />\n </gl-skeleton-loader>\n </div>\n <pipeline-url\n v-else\n :pipeline=\"item\"\n :pipeline-id-type=\"pipelineIdType\"\n ref-color=\"gl-text-default\"\n />\n </template>\n\n <template #cell(triggerer)=\"{ item }\">\n <div v-if=\"item.isLoading\" ref=\"triggerer\" class=\"gl-ml-3\">\n <gl-skeleton-loader :height=\"$options.cellHeight\" :width=\"cellWidth('triggerer')\">\n <rect :height=\"34\" rx=\"50\" ry=\"50\" :width=\"34\" />\n </gl-skeleton-loader>\n </div>\n <pipeline-triggerer v-else :pipeline=\"item\" />\n </template>\n\n <template #cell(stages)=\"{ item }\">\n <div v-if=\"item.isLoading\" ref=\"stages\">\n <gl-skeleton-loader :height=\"$options.cellHeight\" :width=\"cellWidth('stages')\">\n <rect height=\"20\" rx=\"10\" ry=\"10\" :width=\"cellWidth('stages')\" />\n </gl-skeleton-loader>\n </div>\n <pipeline-mini-graph\n v-else\n :downstream-pipelines=\"getDownstreamPipelines(item)\"\n :pipeline-path=\"item.path\"\n :pipeline-stages=\"getStages(item)\"\n :upstream-pipeline=\"item.triggered_by\"\n @miniGraphStageClick=\"trackPipelineMiniGraph\"\n />\n </template>\n\n <template #cell(actions)=\"{ item }\">\n <div v-if=\"item.isLoading\" ref=\"actions\">\n <gl-skeleton-loader :height=\"$options.cellHeight\" :width=\"cellWidth('actions')\">\n <rect height=\"20\" rx=\"4\" ry=\"4\" :width=\"cellWidth('actions')\" />\n </gl-skeleton-loader>\n </div>\n <pipeline-operations\n v-else\n :pipeline=\"item\"\n @cancel-pipeline=\"onCancelPipeline\"\n @refresh-pipelines-table=\"onRefreshPipelinesTable\"\n @retry-pipeline=\"onRetryPipeline\"\n />\n </template>\n\n <template #row-details=\"{ item }\">\n <pipeline-failed-jobs-widget\n v-if=\"displayFailedJobsWidget(item)\"\n :pipeline-iid=\"item.iid\"\n :pipeline-path=\"item.path\"\n :project-path=\"getProjectPath(item)\"\n class=\"-gl-my-3 -gl-ml-4\"\n />\n </template>\n </gl-table-lite>\n </div>\n</template>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipelines_table.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipelines_table.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./pipelines_table.vue?vue&type=template&id=5538a9f6\"\nimport script from \"./pipelines_table.vue?vue&type=script&lang=js\"\nexport * from \"./pipelines_table.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiJob\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailsPath\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":77}};\n doc.loc.source = {\"body\":\"fragment Job on CiJob {\\n id\\n detailedStatus {\\n id\\n detailsPath\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"Job\"] = oneQuery(doc, \"Job\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"playPipelineMiniGraphJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiProcessableID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobPlay\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":182}};\n doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation playPipelineMiniGraphJob($id: CiProcessableID!) {\\n jobPlay(input: { id: $id }) {\\n job {\\n ...Job\\n }\\n errors\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"playPipelineMiniGraphJob\"] = oneQuery(doc, \"playPipelineMiniGraphJob\");\n \n","(function() {\n var AcronymResult, computeScore, emptyAcronymResult, isAcronymFullWord, isMatch, isSeparator, isWordEnd, isWordStart, miss_coeff, pos_bonus, scoreAcronyms, scoreCharacter, scoreConsecutives, scoreExact, scoreExactMatch, scorePattern, scorePosition, scoreSize, tau_size, wm;\n\n wm = 150;\n\n pos_bonus = 20;\n\n tau_size = 150;\n\n miss_coeff = 0.75;\n\n exports.score = function(string, query, options) {\n var allowErrors, preparedQuery, score, string_lw;\n preparedQuery = options.preparedQuery, allowErrors = options.allowErrors;\n if (!(allowErrors || isMatch(string, preparedQuery.core_lw, preparedQuery.core_up))) {\n return 0;\n }\n string_lw = string.toLowerCase();\n score = computeScore(string, string_lw, preparedQuery);\n return Math.ceil(score);\n };\n\n exports.isMatch = isMatch = function(subject, query_lw, query_up) {\n var i, j, m, n, qj_lw, qj_up, si;\n m = subject.length;\n n = query_lw.length;\n if (!m || n > m) {\n return false;\n }\n i = -1;\n j = -1;\n while (++j < n) {\n qj_lw = query_lw.charCodeAt(j);\n qj_up = query_up.charCodeAt(j);\n while (++i < m) {\n si = subject.charCodeAt(i);\n if (si === qj_lw || si === qj_up) {\n break;\n }\n }\n if (i === m) {\n return false;\n }\n }\n return true;\n };\n\n exports.computeScore = computeScore = function(subject, subject_lw, preparedQuery) {\n var acro, acro_score, align, csc_diag, csc_row, csc_score, csc_should_rebuild, i, j, m, miss_budget, miss_left, n, pos, query, query_lw, record_miss, score, score_diag, score_row, score_up, si_lw, start, sz;\n query = preparedQuery.query;\n query_lw = preparedQuery.query_lw;\n m = subject.length;\n n = query.length;\n acro = scoreAcronyms(subject, subject_lw, query, query_lw);\n acro_score = acro.score;\n if (acro.count === n) {\n return scoreExact(n, m, acro_score, acro.pos);\n }\n pos = subject_lw.indexOf(query_lw);\n if (pos > -1) {\n return scoreExactMatch(subject, subject_lw, query, query_lw, pos, n, m);\n }\n score_row = new Array(n);\n csc_row = new Array(n);\n sz = scoreSize(n, m);\n miss_budget = Math.ceil(miss_coeff * n) + 5;\n miss_left = miss_budget;\n csc_should_rebuild = true;\n j = -1;\n while (++j < n) {\n score_row[j] = 0;\n csc_row[j] = 0;\n }\n i = -1;\n while (++i < m) {\n si_lw = subject_lw[i];\n if (!si_lw.charCodeAt(0) in preparedQuery.charCodes) {\n if (csc_should_rebuild) {\n j = -1;\n while (++j < n) {\n csc_row[j] = 0;\n }\n csc_should_rebuild = false;\n }\n continue;\n }\n score = 0;\n score_diag = 0;\n csc_diag = 0;\n record_miss = true;\n csc_should_rebuild = true;\n j = -1;\n while (++j < n) {\n score_up = score_row[j];\n if (score_up > score) {\n score = score_up;\n }\n csc_score = 0;\n if (query_lw[j] === si_lw) {\n start = isWordStart(i, subject, subject_lw);\n csc_score = csc_diag > 0 ? csc_diag : scoreConsecutives(subject, subject_lw, query, query_lw, i, j, start);\n align = score_diag + scoreCharacter(i, j, start, acro_score, csc_score);\n if (align > score) {\n score = align;\n miss_left = miss_budget;\n } else {\n if (record_miss && --miss_left <= 0) {\n return Math.max(score, score_row[n - 1]) * sz;\n }\n record_miss = false;\n }\n }\n score_diag = score_up;\n csc_diag = csc_row[j];\n csc_row[j] = csc_score;\n score_row[j] = score;\n }\n }\n score = score_row[n - 1];\n return score * sz;\n };\n\n exports.isWordStart = isWordStart = function(pos, subject, subject_lw) {\n var curr_s, prev_s;\n if (pos === 0) {\n return true;\n }\n curr_s = subject[pos];\n prev_s = subject[pos - 1];\n return isSeparator(prev_s) || (curr_s !== subject_lw[pos] && prev_s === subject_lw[pos - 1]);\n };\n\n exports.isWordEnd = isWordEnd = function(pos, subject, subject_lw, len) {\n var curr_s, next_s;\n if (pos === len - 1) {\n return true;\n }\n curr_s = subject[pos];\n next_s = subject[pos + 1];\n return isSeparator(next_s) || (curr_s === subject_lw[pos] && next_s !== subject_lw[pos + 1]);\n };\n\n isSeparator = function(c) {\n return c === ' ' || c === '.' || c === '-' || c === '_' || c === '/' || c === '\\\\';\n };\n\n scorePosition = function(pos) {\n var sc;\n if (pos < pos_bonus) {\n sc = pos_bonus - pos;\n return 100 + sc * sc;\n } else {\n return Math.max(100 + pos_bonus - pos, 0);\n }\n };\n\n exports.scoreSize = scoreSize = function(n, m) {\n return tau_size / (tau_size + Math.abs(m - n));\n };\n\n scoreExact = function(n, m, quality, pos) {\n return 2 * n * (wm * quality + scorePosition(pos)) * scoreSize(n, m);\n };\n\n exports.scorePattern = scorePattern = function(count, len, sameCase, start, end) {\n var bonus, sz;\n sz = count;\n bonus = 6;\n if (sameCase === count) {\n bonus += 2;\n }\n if (start) {\n bonus += 3;\n }\n if (end) {\n bonus += 1;\n }\n if (count === len) {\n if (start) {\n if (sameCase === len) {\n sz += 2;\n } else {\n sz += 1;\n }\n }\n if (end) {\n bonus += 1;\n }\n }\n return sameCase + sz * (sz + bonus);\n };\n\n exports.scoreCharacter = scoreCharacter = function(i, j, start, acro_score, csc_score) {\n var posBonus;\n posBonus = scorePosition(i);\n if (start) {\n return posBonus + wm * ((acro_score > csc_score ? acro_score : csc_score) + 10);\n }\n return posBonus + wm * csc_score;\n };\n\n exports.scoreConsecutives = scoreConsecutives = function(subject, subject_lw, query, query_lw, i, j, startOfWord) {\n var k, m, mi, n, nj, sameCase, sz;\n m = subject.length;\n n = query.length;\n mi = m - i;\n nj = n - j;\n k = mi < nj ? mi : nj;\n sameCase = 0;\n sz = 0;\n if (query[j] === subject[i]) {\n sameCase++;\n }\n while (++sz < k && query_lw[++j] === subject_lw[++i]) {\n if (query[j] === subject[i]) {\n sameCase++;\n }\n }\n if (sz < k) {\n i--;\n }\n if (sz === 1) {\n return 1 + 2 * sameCase;\n }\n return scorePattern(sz, n, sameCase, startOfWord, isWordEnd(i, subject, subject_lw, m));\n };\n\n exports.scoreExactMatch = scoreExactMatch = function(subject, subject_lw, query, query_lw, pos, n, m) {\n var end, i, pos2, sameCase, start;\n start = isWordStart(pos, subject, subject_lw);\n if (!start) {\n pos2 = subject_lw.indexOf(query_lw, pos + 1);\n if (pos2 > -1) {\n start = isWordStart(pos2, subject, subject_lw);\n if (start) {\n pos = pos2;\n }\n }\n }\n i = -1;\n sameCase = 0;\n while (++i < n) {\n if (query[pos + i] === subject[i]) {\n sameCase++;\n }\n }\n end = isWordEnd(pos + n - 1, subject, subject_lw, m);\n return scoreExact(n, m, scorePattern(n, n, sameCase, start, end), pos);\n };\n\n AcronymResult = (function() {\n function AcronymResult(score, pos, count) {\n this.score = score;\n this.pos = pos;\n this.count = count;\n }\n\n return AcronymResult;\n\n })();\n\n emptyAcronymResult = new AcronymResult(0, 0.1, 0);\n\n exports.scoreAcronyms = scoreAcronyms = function(subject, subject_lw, query, query_lw) {\n var count, fullWord, i, j, m, n, qj_lw, sameCase, score, sepCount, sumPos;\n m = subject.length;\n n = query.length;\n if (!(m > 1 && n > 1)) {\n return emptyAcronymResult;\n }\n count = 0;\n sepCount = 0;\n sumPos = 0;\n sameCase = 0;\n i = -1;\n j = -1;\n while (++j < n) {\n qj_lw = query_lw[j];\n if (isSeparator(qj_lw)) {\n i = subject_lw.indexOf(qj_lw, i + 1);\n if (i > -1) {\n sepCount++;\n continue;\n } else {\n break;\n }\n }\n while (++i < m) {\n if (qj_lw === subject_lw[i] && isWordStart(i, subject, subject_lw)) {\n if (query[j] === subject[i]) {\n sameCase++;\n }\n sumPos += i;\n count++;\n break;\n }\n }\n if (i === m) {\n break;\n }\n }\n if (count < 2) {\n return emptyAcronymResult;\n }\n fullWord = count === n ? isAcronymFullWord(subject, subject_lw, query, count) : false;\n score = scorePattern(count, n, sameCase, true, fullWord);\n return new AcronymResult(score, sumPos / count, count + sepCount);\n };\n\n isAcronymFullWord = function(subject, subject_lw, query, nbAcronymInQuery) {\n var count, i, m, n;\n m = subject.length;\n n = query.length;\n count = 0;\n if (m > 12 * n) {\n return false;\n }\n i = -1;\n while (++i < m) {\n if (isWordStart(i, subject, subject_lw) && ++count > nbAcronymInQuery) {\n return false;\n }\n }\n return true;\n };\n\n}).call(this);\n","import { parseIntPagination, normalizeHeaders } from '~/lib/utils/common_utils';\n\nexport default class PipelinesStore {\n constructor() {\n this.state = {};\n\n this.state.pipelines = [];\n this.state.count = {};\n this.state.pageInfo = {};\n\n // Used in MR Pipelines tab\n this.state.isRunningMergeRequestPipeline = false;\n }\n\n storePipelines(pipelines = [], isUsingAsyncPipelineCreation) {\n if (isUsingAsyncPipelineCreation && pipelines.length) {\n const firstPipelineFromTable = this.state.pipelines[0];\n const firstPipelineFromRequest = pipelines[0];\n\n if (firstPipelineFromTable?.created_at !== firstPipelineFromRequest?.created_at) {\n this.toggleIsRunningPipeline(false);\n }\n }\n\n this.state.pipelines = pipelines;\n }\n\n storeCount(count = {}) {\n this.state.count = count;\n }\n\n storePagination(pagination = {}) {\n let paginationInfo;\n\n if (Object.keys(pagination).length) {\n const normalizedHeaders = normalizeHeaders(pagination);\n paginationInfo = parseIntPagination(normalizedHeaders);\n } else {\n paginationInfo = pagination;\n }\n\n this.state.pageInfo = paginationInfo;\n }\n\n /**\n * Toggles the isRunningPipeline flag\n *\n * @param {Boolean} value\n */\n toggleIsRunningPipeline(value = false) {\n this.state.isRunningMergeRequestPipeline = value;\n }\n}\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"unschedulePipelineMiniGraphJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiBuildID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobUnschedule\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":188}};\n doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation unschedulePipelineMiniGraphJob($id: CiBuildID!) {\\n jobUnschedule(input: { id: $id }) {\\n job {\\n ...Job\\n }\\n errors\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"unschedulePipelineMiniGraphJob\"] = oneQuery(doc, \"unschedulePipelineMiniGraphJob\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getPipelineActions\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"limit\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipeline\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobs\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"limit\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"whenExecuted\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"StringValue\",\"value\":\"manual\",\"block\":false},{\"kind\":\"StringValue\",\"value\":\"delayed\",\"block\":false}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"retried\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":false}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"statuses\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"MANUAL\"},{\"kind\":\"EnumValue\",\"value\":\"SCHEDULED\"},{\"kind\":\"EnumValue\",\"value\":\"SUCCESS\"},{\"kind\":\"EnumValue\",\"value\":\"FAILED\"},{\"kind\":\"EnumValue\",\"value\":\"SKIPPED\"},{\"kind\":\"EnumValue\",\"value\":\"CANCELED\"}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canPlayJob\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"manualJob\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scheduledAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scheduled\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"action\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"confirmationMessage\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":643}};\n doc.loc.source = {\"body\":\"query getPipelineActions($fullPath: ID!, $iid: ID!, $limit: Int) {\\n project(fullPath: $fullPath) {\\n id\\n pipeline(iid: $iid) {\\n id\\n jobs(\\n first: $limit\\n whenExecuted: [\\\"manual\\\", \\\"delayed\\\"]\\n retried: false\\n statuses: [MANUAL, SCHEDULED, SUCCESS, FAILED, SKIPPED, CANCELED]\\n ) {\\n nodes {\\n id\\n name\\n canPlayJob\\n manualJob\\n scheduledAt\\n scheduled\\n playPath\\n detailedStatus {\\n id\\n action {\\n id\\n confirmationMessage\\n }\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"getPipelineActions\"] = oneQuery(doc, \"getPipelineActions\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getPipelineStageJobs\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiStageID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ciPipelineStage\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobs\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"action\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"confirmationMessage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailsPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasDetails\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tooltip\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scheduled\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scheduledAt\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":459}};\n doc.loc.source = {\"body\":\"query getPipelineStageJobs($id: CiStageID!) {\\n ciPipelineStage(id: $id) {\\n id\\n jobs {\\n nodes {\\n id\\n detailedStatus {\\n id\\n action {\\n id\\n confirmationMessage\\n icon\\n path\\n title\\n }\\n detailsPath\\n group\\n hasDetails\\n icon\\n tooltip\\n }\\n name\\n scheduled\\n scheduledAt\\n }\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"getPipelineStageJobs\"] = oneQuery(doc, \"getPipelineStageJobs\");\n \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"data-testid\":\"pipeline-mini-graph\"}},[(_vm.hasUpstreamPipeline)?_c('ci-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"gl-align-middle\",attrs:{\"title\":_vm.upstreamTooltipText,\"aria-label\":_vm.upstreamTooltipText,\"status\":_vm.upstreamPipelineStatus,\"show-tooltip\":false,\"data-testid\":\"pipeline-mini-graph-upstream\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasUpstreamPipeline)?_c('gl-icon',{class:_vm.$options.arrowStyles,attrs:{\"name\":\"arrow-right\",\"data-testid\":\"upstream-arrow-icon\",\"variant\":\"subtle\"}}):_vm._e(),_vm._v(\" \"),_c('pipeline-stages',{attrs:{\"is-merge-train\":_vm.isMergeTrain,\"stages\":_vm.formattedStages},on:{\"jobActionExecuted\":function($event){return _vm.$emit('jobActionExecuted')},\"miniGraphStageClick\":function($event){return _vm.$emit('miniGraphStageClick')}}}),_vm._v(\" \"),(_vm.hasDownstreamPipelines)?_c('gl-icon',{class:_vm.$options.arrowStyles,attrs:{\"name\":\"arrow-right\",\"data-testid\":\"downstream-arrow-icon\",\"variant\":\"subtle\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasDownstreamPipelines)?_c('downstream-pipelines',{attrs:{\"pipelines\":_vm.latestDownstreamPipelines,\"pipeline-path\":_vm.pipelinePath,\"data-testid\":\"pipeline-mini-graph-downstream\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { convertToGraphQLId } from '~/graphql_shared/utils';\nimport { TYPENAME_CI_PIPELINE, TYPENAME_CI_STAGE } from '~/graphql_shared/constants';\n\nconst hasDetailedStatus = (item) => {\n return Boolean(item.detailedStatus);\n};\n\n/**\n * Converts REST shaped downstreams to GraphQL shape\n *\n * @param {Array} pipelines - The downstream pipelines passed into legacy pipeline mini graph\n * @returns {Array} - GraphQL shaped downstream pipelines\n */\nexport const normalizeDownstreamPipelines = (pipelines) => {\n return pipelines.map((p) => {\n if (hasDetailedStatus(p)) {\n return p;\n }\n\n const { id, details, path, project } = p;\n return {\n id: convertToGraphQLId(TYPENAME_CI_PIPELINE, id),\n detailedStatus: details?.status,\n path,\n project: {\n name: project.name,\n },\n };\n });\n};\n\n/**\n * Converts REST shaped pipeline stages to GraphQL shape\n *\n * @param {Array} stages - The pipeline stages passed into legacy pipeline mini graph\n * @returns {Array} - GraphQL shaped pipeline stages\n */\nexport const normalizeStages = (stages) => {\n return stages.map((s) => {\n if (hasDetailedStatus(s)) {\n return s;\n }\n\n const { id, name, status } = s;\n return {\n id: convertToGraphQLId(TYPENAME_CI_STAGE, id),\n detailedStatus: {\n icon: status.icon,\n label: status.label,\n tooltip: status.tooltip,\n },\n name,\n };\n });\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.pipelines)?_c('span',{staticClass:\"gl-inline-flex gl-gap-2 gl-align-middle\"},[_vm._l((_vm.pipelinesTrimmed),function(pipeline){return _c('ci-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],key:pipeline.id,attrs:{\"title\":_vm.pipelineTooltipText(pipeline),\"status\":pipeline.detailedStatus,\"show-tooltip\":false,\"data-testid\":\"downstream-pipelines\"}})}),_vm._v(\" \"),(_vm.shouldRenderCounter)?_c('a',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:({ title: _vm.counterTooltipText }),expression:\"{ title: counterTooltipText }\"}],staticClass:\"gl-inline-flex gl-h-6 gl-w-7 gl-items-center gl-justify-center gl-rounded-pill gl-bg-gray-50 gl-text-sm gl-text-subtle gl-no-underline\",attrs:{\"title\":_vm.counterTooltipText,\"href\":_vm.pipelinePath,\"data-testid\":\"downstream-pipeline-counter\"}},[_vm._v(\"\\n \"+_vm._s(_vm.counterLabel)+\"\\n \")]):_vm._e()],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./downstream_pipelines.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./downstream_pipelines.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective } from '@gitlab/ui';\nimport { sprintf, s__ } from '~/locale';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\n/**\n * Renders the downstream portion of the pipeline mini graph.\n */\nexport default {\n name: 'DownstreamPipelines',\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n components: {\n CiIcon,\n },\n props: {\n pipelines: {\n type: Array,\n required: false,\n default: () => [],\n },\n pipelinePath: {\n type: String,\n required: false,\n default: '',\n },\n },\n data() {\n return {\n maxRenderedPipelines: 3,\n };\n },\n computed: {\n totalPipelineCount() {\n return this.pipelines.length;\n },\n pipelinesTrimmed() {\n return this.totalPipelineCount > this.maxRenderedPipelines\n ? this.pipelines.slice(0, this.maxRenderedPipelines)\n : this.pipelines;\n },\n shouldRenderCounter() {\n return this.pipelines.length > this.maxRenderedPipelines;\n },\n counterLabel() {\n return `+${this.pipelines.length - this.maxRenderedPipelines}`;\n },\n counterTooltipText() {\n return sprintf(s__('Pipelines|%{counterLabel} more downstream pipelines'), {\n counterLabel: this.counterLabel,\n });\n },\n },\n methods: {\n pipelineTooltipText(pipeline) {\n return `${pipeline?.project?.name} - ${pipeline?.detailedStatus?.label}`;\n },\n },\n};\n</script>\n\n<template>\n <span v-if=\"pipelines\" class=\"gl-inline-flex gl-gap-2 gl-align-middle\">\n <ci-icon\n v-for=\"pipeline in pipelinesTrimmed\"\n :key=\"pipeline.id\"\n v-gl-tooltip.hover\n :title=\"pipelineTooltipText(pipeline)\"\n :status=\"pipeline.detailedStatus\"\n :show-tooltip=\"false\"\n data-testid=\"downstream-pipelines\"\n />\n\n <a\n v-if=\"shouldRenderCounter\"\n v-gl-tooltip=\"{ title: counterTooltipText }\"\n :title=\"counterTooltipText\"\n :href=\"pipelinePath\"\n class=\"gl-inline-flex gl-h-6 gl-w-7 gl-items-center gl-justify-center gl-rounded-pill gl-bg-gray-50 gl-text-sm gl-text-subtle gl-no-underline\"\n data-testid=\"downstream-pipeline-counter\"\n >\n {{ counterLabel }}\n </a>\n </span>\n</template>\n","import { render, staticRenderFns } from \"./downstream_pipelines.vue?vue&type=template&id=f55fafbe\"\nimport script from \"./downstream_pipelines.vue?vue&type=script&lang=js\"\nexport * from \"./downstream_pipelines.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_stage_dropdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_stage_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlDisclosureDropdown, GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { s__, __, sprintf } from '~/locale';\nimport { reportToSentry } from '~/ci/utils';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport { getQueryHeaders, toggleQueryPollingByVisibility } from '~/ci/pipeline_details/graph/utils';\nimport { graphqlEtagStagePath } from '~/ci/pipeline_details/utils';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { PIPELINE_POLL_INTERVAL_DEFAULT } from '~/ci/constants';\nimport JobDropdownItem from '~/ci/common/private/job_dropdown_item.vue';\nimport getPipelineStageJobsQuery from './graphql/queries/get_pipeline_stage_jobs.query.graphql';\n\nexport default {\n name: 'PipelineStageDropdown',\n i18n: {\n loadingText: __('Loading...'),\n mergeTrainMessage: s__('Pipeline|Merge train pipeline jobs can not be retried'),\n stage: __('Stage'),\n stageJobsFetchError: __('There was a problem fetching the pipeline stage jobs.'),\n viewStageLabel: __('View Stage: %{title}'),\n },\n components: {\n CiIcon,\n GlButton,\n GlDisclosureDropdown,\n GlLoadingIcon,\n JobDropdownItem,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n isMergeTrain: {\n type: Boolean,\n required: false,\n default: false,\n },\n stage: {\n type: Object,\n required: true,\n },\n },\n emits: ['jobActionExecuted', 'miniGraphStageClick'],\n data() {\n return {\n isDropdownOpen: false,\n stageJobs: [],\n };\n },\n apollo: {\n stageJobs: {\n context() {\n return getQueryHeaders(this.graphqlEtag);\n },\n query: getPipelineStageJobsQuery,\n variables() {\n return {\n id: this.stage.id,\n };\n },\n skip() {\n return !this.isDropdownOpen;\n },\n pollInterval: PIPELINE_POLL_INTERVAL_DEFAULT,\n update(data) {\n return data?.ciPipelineStage?.jobs?.nodes || [];\n },\n error(error) {\n createAlert({ message: this.$options.i18n.stageJobsFetchError });\n reportToSentry(this.$options.name, error);\n },\n },\n },\n computed: {\n dropdownHeaderText() {\n return `${this.$options.i18n.stage}: ${this.stage.name}`;\n },\n dropdownTooltipTitle() {\n return this.isDropdownOpen ? '' : `${this.stage.name}: ${this.stage.detailedStatus.tooltip}`;\n },\n graphqlEtag() {\n return graphqlEtagStagePath('/api/graphql', getIdFromGraphQLId(this.stage.id));\n },\n isLoading() {\n return this.$apollo.queries.stageJobs.loading;\n },\n },\n mounted() {\n toggleQueryPollingByVisibility(this.$apollo.queries.stageJobs);\n },\n methods: {\n onHideDropdown() {\n this.isDropdownOpen = false;\n this.$apollo.queries.stageJobs.stopPolling();\n },\n onShowDropdown() {\n this.isDropdownOpen = true;\n this.$apollo.queries.stageJobs.startPolling(PIPELINE_POLL_INTERVAL_DEFAULT);\n\n // used for tracking in the pipeline table\n this.$emit('miniGraphStageClick');\n },\n stageAriaLabel(title) {\n return sprintf(this.$options.i18n.viewStageLabel, { title });\n },\n },\n};\n</script>\n\n<template>\n <gl-disclosure-dropdown\n data-testid=\"pipeline-mini-graph-dropdown\"\n :aria-label=\"stageAriaLabel(stage.name)\"\n fluid-width\n @hidden=\"onHideDropdown\"\n @shown=\"onShowDropdown\"\n >\n <template #toggle>\n <gl-button\n v-gl-tooltip.hover=\"dropdownTooltipTitle\"\n data-testid=\"pipeline-mini-graph-dropdown-toggle\"\n :title=\"dropdownTooltipTitle\"\n class=\"!gl-rounded-full\"\n variant=\"link\"\n >\n <ci-icon :status=\"stage.detailedStatus\" :show-tooltip=\"false\" :use-link=\"false\" />\n </gl-button>\n </template>\n\n <template #header>\n <div\n data-testid=\"pipeline-stage-dropdown-menu-title\"\n class=\"gl-flex gl-min-h-8 gl-items-center gl-border-b-1 gl-border-b-dropdown !gl-p-4 gl-text-sm gl-font-bold gl-leading-1 gl-border-b-solid\"\n >\n <span>{{ dropdownHeaderText }}</span>\n </div>\n </template>\n\n <div v-if=\"isLoading\" class=\"gl-flex gl-gap-3 gl-px-4 gl-py-3\">\n <gl-loading-icon size=\"sm\" />\n <span class=\"gl-leading-normal\">{{ $options.i18n.loadingText }}</span>\n </div>\n <ul\n v-else\n class=\"gl-m-0 gl-w-34 gl-overflow-y-auto gl-p-0\"\n data-testid=\"pipeline-mini-graph-dropdown-menu-list\"\n @click.stop\n >\n <job-dropdown-item\n v-for=\"job in stageJobs\"\n :key=\"job.id\"\n :dropdown-length=\"stageJobs.length\"\n :job=\"job\"\n @jobActionExecuted=\"$emit('jobActionExecuted')\"\n />\n </ul>\n\n <template #footer>\n <div\n v-if=\"!isLoading && isMergeTrain\"\n class=\"gl-border-t gl-px-4 gl-py-3 gl-text-sm gl-text-subtle\"\n data-testid=\"merge-train-message\"\n >\n {{ $options.i18n.mergeTrainMessage }}\n </div>\n </template>\n </gl-disclosure-dropdown>\n</template>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_stages.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_stages.vue?vue&type=script&lang=js\"","<script>\nimport PipelineStageDropdown from './pipeline_stage_dropdown.vue';\n/**\n * Renders the pipeline stages portion of the pipeline mini graph.\n */\nexport default {\n name: 'PipelineStages',\n components: {\n PipelineStageDropdown,\n },\n props: {\n isMergeTrain: {\n type: Boolean,\n required: false,\n default: false,\n },\n stages: {\n type: Array,\n required: true,\n },\n },\n emits: ['jobActionExecuted', 'miniGraphStageClick'],\n};\n</script>\n<template>\n <div class=\"gl-inline gl-align-middle\">\n <div\n v-for=\"stage in stages\"\n :key=\"stage.id\"\n class=\"pipeline-mini-graph-stage-container dropdown gl-my-1 gl-mr-2 gl-inline-flex gl-align-middle\"\n >\n <pipeline-stage-dropdown\n :stage=\"stage\"\n :is-merge-train=\"isMergeTrain\"\n @jobActionExecuted=\"$emit('jobActionExecuted')\"\n @miniGraphStageClick=\"$emit('miniGraphStageClick')\"\n />\n </div>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_stage_dropdown.vue?vue&type=template&id=438e18a5\"\nimport script from \"./pipeline_stage_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_stage_dropdown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-disclosure-dropdown',{attrs:{\"data-testid\":\"pipeline-mini-graph-dropdown\",\"aria-label\":_vm.stageAriaLabel(_vm.stage.name),\"fluid-width\":\"\"},on:{\"hidden\":_vm.onHideDropdown,\"shown\":_vm.onShowDropdown},scopedSlots:_vm._u([{key:\"toggle\",fn:function(){return [_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",value:(_vm.dropdownTooltipTitle),expression:\"dropdownTooltipTitle\",modifiers:{\"hover\":true}}],staticClass:\"!gl-rounded-full\",attrs:{\"data-testid\":\"pipeline-mini-graph-dropdown-toggle\",\"title\":_vm.dropdownTooltipTitle,\"variant\":\"link\"}},[_c('ci-icon',{attrs:{\"status\":_vm.stage.detailedStatus,\"show-tooltip\":false,\"use-link\":false}})],1)]},proxy:true},{key:\"header\",fn:function(){return [_c('div',{staticClass:\"gl-flex gl-min-h-8 gl-items-center gl-border-b-1 gl-border-b-dropdown !gl-p-4 gl-text-sm gl-font-bold gl-leading-1 gl-border-b-solid\",attrs:{\"data-testid\":\"pipeline-stage-dropdown-menu-title\"}},[_c('span',[_vm._v(_vm._s(_vm.dropdownHeaderText))])])]},proxy:true},{key:\"footer\",fn:function(){return [(!_vm.isLoading && _vm.isMergeTrain)?_c('div',{staticClass:\"gl-border-t gl-px-4 gl-py-3 gl-text-sm gl-text-subtle\",attrs:{\"data-testid\":\"merge-train-message\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.mergeTrainMessage)+\"\\n \")]):_vm._e()]},proxy:true}])},[_vm._v(\" \"),_vm._v(\" \"),(_vm.isLoading)?_c('div',{staticClass:\"gl-flex gl-gap-3 gl-px-4 gl-py-3\"},[_c('gl-loading-icon',{attrs:{\"size\":\"sm\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-leading-normal\"},[_vm._v(_vm._s(_vm.$options.i18n.loadingText))])],1):_c('ul',{staticClass:\"gl-m-0 gl-w-34 gl-overflow-y-auto gl-p-0\",attrs:{\"data-testid\":\"pipeline-mini-graph-dropdown-menu-list\"},on:{\"click\":function($event){$event.stopPropagation();}}},_vm._l((_vm.stageJobs),function(job){return _c('job-dropdown-item',{key:job.id,attrs:{\"dropdown-length\":_vm.stageJobs.length,\"job\":job},on:{\"jobActionExecuted\":function($event){return _vm.$emit('jobActionExecuted')}}})}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./pipeline_stages.vue?vue&type=template&id=6672dfcb\"\nimport script from \"./pipeline_stages.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_stages.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-inline gl-align-middle\"},_vm._l((_vm.stages),function(stage){return _c('div',{key:stage.id,staticClass:\"pipeline-mini-graph-stage-container dropdown gl-my-1 gl-mr-2 gl-inline-flex gl-align-middle\"},[_c('pipeline-stage-dropdown',{attrs:{\"stage\":stage,\"is-merge-train\":_vm.isMergeTrain},on:{\"jobActionExecuted\":function($event){return _vm.$emit('jobActionExecuted')},\"miniGraphStageClick\":function($event){return _vm.$emit('miniGraphStageClick')}}})],1)}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_mini_graph.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_mini_graph.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { keepLatestDownstreamPipelines } from '~/ci/pipeline_details/utils/parsing_utils';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport { normalizeDownstreamPipelines, normalizeStages } from './utils/data_utils';\nimport DownstreamPipelines from './downstream_pipelines.vue';\nimport PipelineStages from './pipeline_stages.vue';\n/**\n * Renders the pipeline mini graph.\n * All REST data passed in is formatted to GraphQL.\n */\nexport default {\n name: 'PipelineMiniGraph',\n arrowStyles: ['arrow-icon gl-inline-block gl-mx-1 gl-text-subtle !gl-align-middle'],\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n components: {\n CiIcon,\n DownstreamPipelines,\n GlIcon,\n PipelineStages,\n },\n props: {\n downstreamPipelines: {\n type: Array,\n required: false,\n default: () => [],\n },\n isMergeTrain: {\n type: Boolean,\n required: false,\n default: false,\n },\n pipelinePath: {\n type: String,\n required: false,\n default: '',\n },\n pipelineStages: {\n type: Array,\n required: true,\n },\n upstreamPipeline: {\n type: Object,\n required: false,\n default: () => {},\n },\n },\n emits: ['jobActionExecuted', 'miniGraphStageClick'],\n computed: {\n formattedDownstreamPipelines() {\n return normalizeDownstreamPipelines(this.downstreamPipelines);\n },\n formattedStages() {\n return normalizeStages(this.pipelineStages);\n },\n hasDownstreamPipelines() {\n return Boolean(this.latestDownstreamPipelines.length);\n },\n hasUpstreamPipeline() {\n return this.upstreamPipeline?.id;\n },\n latestDownstreamPipelines() {\n return keepLatestDownstreamPipelines(this.formattedDownstreamPipelines);\n },\n upstreamPipelineStatus() {\n return this.upstreamPipeline?.detailedStatus || this.upstreamPipeline?.details?.status;\n },\n upstreamTooltipText() {\n return `${this.upstreamPipeline?.project?.name} - ${this.upstreamPipelineStatus?.label}`;\n },\n },\n};\n</script>\n\n<template>\n <div data-testid=\"pipeline-mini-graph\">\n <ci-icon\n v-if=\"hasUpstreamPipeline\"\n v-gl-tooltip.hover\n :title=\"upstreamTooltipText\"\n :aria-label=\"upstreamTooltipText\"\n :status=\"upstreamPipelineStatus\"\n :show-tooltip=\"false\"\n class=\"gl-align-middle\"\n data-testid=\"pipeline-mini-graph-upstream\"\n />\n <gl-icon\n v-if=\"hasUpstreamPipeline\"\n :class=\"$options.arrowStyles\"\n name=\"arrow-right\"\n data-testid=\"upstream-arrow-icon\"\n variant=\"subtle\"\n />\n <pipeline-stages\n :is-merge-train=\"isMergeTrain\"\n :stages=\"formattedStages\"\n @jobActionExecuted=\"$emit('jobActionExecuted')\"\n @miniGraphStageClick=\"$emit('miniGraphStageClick')\"\n />\n <gl-icon\n v-if=\"hasDownstreamPipelines\"\n :class=\"$options.arrowStyles\"\n name=\"arrow-right\"\n data-testid=\"downstream-arrow-icon\"\n variant=\"subtle\"\n />\n <downstream-pipelines\n v-if=\"hasDownstreamPipelines\"\n :pipelines=\"latestDownstreamPipelines\"\n :pipeline-path=\"pipelinePath\"\n data-testid=\"pipeline-mini-graph-downstream\"\n />\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_mini_graph.vue?vue&type=template&id=e9abb0ce\"\nimport script from \"./pipeline_mini_graph.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_mini_graph.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAAAAAAdJSU2AAACNElEQVR4AdXYBa7jMBCA4b3/JZahzIkjp2qt+BWUWnG5ln2XxaJJb2b5F2ukL4wvzK/rP7bUcbf92u6oftLSe1ldk8efsfaVeEjusZZeC6e1RllaCk/yG6ag1lZ4WwPX69uyD6tAe/g2ipAlNMRS37awDLaFrpcMWxXQOi0jnWCWjFkSZomYJWDWKmatYNZyEWkJsvQimoZYah5NgdaLxagCtF6GRy0DshZPkeYwS/KIJWGWYjwYUzDLxCwDtJ54OKglimBLqHWahii2g1pmHLLGBmwVoRjcKlmgOdw65H5qKuGWCVi5Qlhs6m1sENZi4q3AWNvca5UYy2RjT/SAsiZey6CsIvc0wVlV5lJ0ibPMyLUGCmlxQq0IM0hLdWyro7CWEc3sXsqaK4O2zLxOsmtpfW5Q1u68ZrVmepaaNXEewawtI9X5Xl3U3n1qND6+rfPzvqoIWz/fklNCSLY153YV53J/XUxGCJnKZ1lajsn3/Ffegf6Y5pV2LUsSNL2UHzxUfh3TlYpZqqTpXZm0KZk9zJcqaEmaWPHDw0pxe05K7bWOLHFLWXVetqpYmrjle4+1y0aBaF4UOQ1NU+lYezJClkjLUnSEjqhH6zjAW4OjtY39Ibq+sawUb6W2RQfoqG0VeKuwrRJvlba17faRdbe2pTtYq6Nty/S7yAbGsQjWIq41wVoT1+IdZNy1djUcVdu5lklQWC0xHkt1X31qNEE1Pr3qKv/9XiSNj6Aaifj3/69+AYujsR/MvkpZAAAAAElFTkSuQmCC\"","import Api from '~/api';\nimport axios from '~/lib/utils/axios_utils';\nimport { validateParams } from '../../pipeline_details/utils';\n\nexport default class PipelinesService {\n /**\n * Commits and merge request endpoints need to be requested with `.json`.\n *\n * The url provided to request the pipelines in the new merge request\n * page already has `.json`.\n *\n * @param {String} root\n */\n constructor(root) {\n if (root.indexOf('.json') === -1) {\n this.endpoint = `${root}.json`;\n } else {\n this.endpoint = root;\n }\n }\n\n getPipelines(data = {}) {\n const { scope, page } = data;\n const { CancelToken } = axios;\n\n const queryParams = { scope, page, ...validateParams(data) };\n\n this.cancelationSource = CancelToken.source();\n\n return axios.get(this.endpoint, {\n params: queryParams,\n cancelToken: this.cancelationSource.token,\n });\n }\n\n /**\n * Post request for all pipelines actions.\n *\n * @param {String} endpoint\n * @return {Promise}\n */\n // eslint-disable-next-line class-methods-use-this\n postAction(endpoint) {\n return axios.post(`${endpoint}.json`);\n }\n\n // eslint-disable-next-line class-methods-use-this\n runMRPipeline({ projectId, mergeRequestId }) {\n return Api.postMergeRequestPipeline(projectId, { mergeRequestId });\n }\n}\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getPipelineFailedJobs\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineIid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipeline\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineIid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"active\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"troubleshootJobWithAi\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobs\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"statuses\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"FAILED\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"retried\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":false}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"allowFailure\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailsPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"action\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"kind\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"retried\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"retryable\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stage\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"readBuild\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updateBuild\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":753}};\n doc.loc.source = {\"body\":\"query getPipelineFailedJobs($fullPath: ID!, $pipelineIid: ID!) {\\n project(fullPath: $fullPath) {\\n id\\n pipeline(iid: $pipelineIid) {\\n id\\n active\\n troubleshootJobWithAi\\n jobs(statuses: [FAILED], retried: false) {\\n count\\n nodes {\\n id\\n allowFailure\\n detailedStatus {\\n id\\n detailsPath\\n group\\n icon\\n action {\\n id\\n path\\n icon\\n }\\n }\\n kind\\n name\\n retried\\n retryable\\n stage {\\n id\\n name\\n }\\n userPermissions {\\n readBuild\\n updateBuild\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"getPipelineFailedJobs\"] = oneQuery(doc, \"getPipelineFailedJobs\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"cancelPipelineMiniGraphJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiBuildID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobCancel\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":180}};\n doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation cancelPipelineMiniGraphJob($id: CiBuildID!) {\\n jobCancel(input: { id: $id }) {\\n job {\\n ...Job\\n }\\n errors\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"cancelPipelineMiniGraphJob\"] = oneQuery(doc, \"cancelPipelineMiniGraphJob\");\n \n","(function() {\n var Query, defaultPathSeparator, filter, matcher, parseOptions, pathScorer, preparedQueryCache, scorer;\n\n filter = require('./filter');\n\n matcher = require('./matcher');\n\n scorer = require('./scorer');\n\n pathScorer = require('./pathScorer');\n\n Query = require('./query');\n\n preparedQueryCache = null;\n\n defaultPathSeparator = (typeof process !== \"undefined\" && process !== null ? process.platform : void 0) === \"win32\" ? '\\\\' : '/';\n\n module.exports = {\n filter: function(candidates, query, options) {\n if (options == null) {\n options = {};\n }\n if (!((query != null ? query.length : void 0) && (candidates != null ? candidates.length : void 0))) {\n return [];\n }\n options = parseOptions(options, query);\n return filter(candidates, query, options);\n },\n score: function(string, query, options) {\n if (options == null) {\n options = {};\n }\n if (!((string != null ? string.length : void 0) && (query != null ? query.length : void 0))) {\n return 0;\n }\n options = parseOptions(options, query);\n if (options.usePathScoring) {\n return pathScorer.score(string, query, options);\n } else {\n return scorer.score(string, query, options);\n }\n },\n match: function(string, query, options) {\n var _i, _ref, _results;\n if (options == null) {\n options = {};\n }\n if (!string) {\n return [];\n }\n if (!query) {\n return [];\n }\n if (string === query) {\n return (function() {\n _results = [];\n for (var _i = 0, _ref = string.length; 0 <= _ref ? _i < _ref : _i > _ref; 0 <= _ref ? _i++ : _i--){ _results.push(_i); }\n return _results;\n }).apply(this);\n }\n options = parseOptions(options, query);\n return matcher.match(string, query, options);\n },\n wrap: function(string, query, options) {\n if (options == null) {\n options = {};\n }\n if (!string) {\n return [];\n }\n if (!query) {\n return [];\n }\n options = parseOptions(options, query);\n return matcher.wrap(string, query, options);\n },\n prepareQuery: function(query, options) {\n if (options == null) {\n options = {};\n }\n options = parseOptions(options, query);\n return options.preparedQuery;\n }\n };\n\n parseOptions = function(options, query) {\n if (options.allowErrors == null) {\n options.allowErrors = false;\n }\n if (options.usePathScoring == null) {\n options.usePathScoring = true;\n }\n if (options.useExtensionBonus == null) {\n options.useExtensionBonus = false;\n }\n if (options.pathSeparator == null) {\n options.pathSeparator = defaultPathSeparator;\n }\n if (options.optCharRegEx == null) {\n options.optCharRegEx = null;\n }\n if (options.wrap == null) {\n options.wrap = null;\n }\n if (options.preparedQuery == null) {\n options.preparedQuery = preparedQueryCache && preparedQueryCache.query === query ? preparedQueryCache : (preparedQueryCache = new Query(query, options));\n }\n return options;\n };\n\n}).call(this);\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiJob\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"action\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"confirmationMessage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":149}};\n doc.loc.source = {\"body\":\"fragment Job on CiJob {\\n id\\n detailedStatus {\\n id\\n action {\\n id\\n confirmationMessage\\n icon\\n path\\n title\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"Job\"] = oneQuery(doc, \"Job\");\n \n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.showPagination)?_c('gl-pagination',_vm._b({staticClass:\"gl-mt-5\",attrs:{\"align\":\"center\",\"value\":_vm.pageInfo.page,\"per-page\":_vm.pageInfo.perPage,\"total-items\":_vm.pageInfo.total,\"prev-page\":_vm.pageInfo.previousPage,\"next-page\":_vm.pageInfo.nextPage},on:{\"input\":_vm.change}},'gl-pagination',_vm.$attrs,false)):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./table_pagination.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./table_pagination.vue?vue&type=script&lang=js\"","<script>\nimport { GlPagination } from '@gitlab/ui';\n\nexport default {\n components: {\n GlPagination,\n },\n props: {\n /**\n This function will take the information given by the pagination component\n\n Here is an example `change` method:\n\n change(pagenum) {\n visitUrl(`?page=${pagenum}`);\n },\n */\n change: {\n type: Function,\n required: true,\n },\n\n /**\n pageInfo will come from the headers of the API call\n there should be a function that constructs the pageInfo for this component\n\n This is an example:\n\n const pageInfo = headers => ({\n perPage: +headers['X-Per-Page'],\n page: +headers['X-Page'],\n total: +headers['X-Total'],\n totalPages: +headers['X-Total-Pages'],\n nextPage: +headers['X-Next-Page'],\n previousPage: +headers['X-Prev-Page'],\n });\n */\n pageInfo: {\n type: Object,\n required: true,\n },\n },\n computed: {\n showPagination() {\n return this.pageInfo.nextPage || this.pageInfo.previousPage;\n },\n },\n};\n</script>\n<template>\n <gl-pagination\n v-if=\"showPagination\"\n class=\"gl-mt-5\"\n v-bind=\"$attrs\"\n align=\"center\"\n :value=\"pageInfo.page\"\n :per-page=\"pageInfo.perPage\"\n :total-items=\"pageInfo.total\"\n :prev-page=\"pageInfo.previousPage\"\n :next-page=\"pageInfo.nextPage\"\n @input=\"change\"\n />\n</template>\n","import { render, staticRenderFns } from \"./table_pagination.vue?vue&type=template&id=13e7ff42\"\nimport script from \"./table_pagination.vue?vue&type=script&lang=js\"\nexport * from \"./table_pagination.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export const HTTP_STATUS_ABORTED = 0;\nexport const HTTP_STATUS_OK = 200;\nexport const HTTP_STATUS_CREATED = 201;\nexport const HTTP_STATUS_ACCEPTED = 202;\nexport const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION = 203;\nexport const HTTP_STATUS_NO_CONTENT = 204;\nexport const HTTP_STATUS_RESET_CONTENT = 205;\nexport const HTTP_STATUS_PARTIAL_CONTENT = 206;\nexport const HTTP_STATUS_MULTI_STATUS = 207;\nexport const HTTP_STATUS_ALREADY_REPORTED = 208;\nexport const HTTP_STATUS_IM_USED = 226;\nexport const HTTP_STATUS_BAD_REQUEST = 400;\nexport const HTTP_STATUS_UNAUTHORIZED = 401;\nexport const HTTP_STATUS_FORBIDDEN = 403;\nexport const HTTP_STATUS_NOT_FOUND = 404;\nexport const HTTP_STATUS_METHOD_NOT_ALLOWED = 405;\nexport const HTTP_STATUS_CONFLICT = 409;\nexport const HTTP_STATUS_GONE = 410;\nexport const HTTP_STATUS_PAYLOAD_TOO_LARGE = 413;\nexport const HTTP_STATUS_IM_A_TEAPOT = 418;\nexport const HTTP_STATUS_UNPROCESSABLE_ENTITY = 422;\nexport const HTTP_STATUS_TOO_MANY_REQUESTS = 429;\nexport const HTTP_STATUS_INTERNAL_SERVER_ERROR = 500;\nexport const HTTP_STATUS_SERVICE_UNAVAILABLE = 503;\n\nexport const successCodes = [\n HTTP_STATUS_OK,\n HTTP_STATUS_CREATED,\n HTTP_STATUS_ACCEPTED,\n HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION,\n HTTP_STATUS_NO_CONTENT,\n HTTP_STATUS_RESET_CONTENT,\n HTTP_STATUS_PARTIAL_CONTENT,\n HTTP_STATUS_MULTI_STATUS,\n HTTP_STATUS_ALREADY_REPORTED,\n HTTP_STATUS_IM_USED,\n];\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('time',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"datetime\":_vm.endDateString,\"title\":_vm.endDateString}},[_vm._v(\" \"+_vm._s(_vm.remainingTime)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gl_countdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gl_countdown.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective } from '@gitlab/ui';\nimport { calculateRemainingMilliseconds, formatTime } from '~/lib/utils/datetime_utility';\n\n/**\n * Counts down to a given end date.\n */\nexport default {\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n\n props: {\n endDateString: {\n type: String,\n required: true,\n validator(value) {\n return !Number.isNaN(new Date(value).getTime());\n },\n },\n },\n\n data() {\n return {\n remainingTime: formatTime(0),\n countdownUpdateIntervalId: null,\n };\n },\n\n mounted() {\n const updateRemainingTime = () => {\n const remainingMilliseconds = calculateRemainingMilliseconds(this.endDateString);\n\n if (remainingMilliseconds < 1) {\n this.$emit('timer-expired');\n }\n\n this.remainingTime = formatTime(remainingMilliseconds);\n };\n\n updateRemainingTime();\n this.countdownUpdateIntervalId = window.setInterval(updateRemainingTime, 1000);\n },\n\n beforeDestroy() {\n window.clearInterval(this.countdownUpdateIntervalId);\n },\n};\n</script>\n\n<template>\n <time v-gl-tooltip :datetime=\"endDateString\" :title=\"endDateString\"> {{ remainingTime }} </time>\n</template>\n","import { render, staticRenderFns } from \"./gl_countdown.vue?vue&type=template&id=59b0e135\"\nimport script from \"./gl_countdown.vue?vue&type=script&lang=js\"\nexport * from \"./gl_countdown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { calculateRemainingMilliseconds, formatTime } from '~/lib/utils/datetime_utility';\n\nexport default {\n data() {\n return {\n remainingTime: formatTime(0),\n remainingTimeIntervalId: null,\n };\n },\n\n mounted() {\n this.startRemainingTimeInterval();\n },\n\n beforeDestroy() {\n if (this.remainingTimeIntervalId) {\n clearInterval(this.remainingTimeIntervalId);\n }\n },\n\n computed: {\n isDelayedJob() {\n return this.job?.scheduled || this.job?.scheduledAt;\n },\n scheduledTime() {\n return this.job.scheduled_at || this.job.scheduledAt;\n },\n },\n\n watch: {\n isDelayedJob() {\n this.startRemainingTimeInterval();\n },\n },\n\n methods: {\n startRemainingTimeInterval() {\n if (this.remainingTimeIntervalId) {\n clearInterval(this.remainingTimeIntervalId);\n }\n\n if (this.isDelayedJob) {\n this.updateRemainingTime();\n this.remainingTimeIntervalId = setInterval(() => this.updateRemainingTime(), 1000);\n }\n },\n\n updateRemainingTime() {\n const remainingMilliseconds = calculateRemainingMilliseconds(this.scheduledTime);\n this.remainingTime = formatTime(remainingMilliseconds);\n },\n },\n};\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"retryMrFailedJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiProcessableID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobRetry\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":101}};\n doc.loc.source = {\"body\":\"mutation retryMrFailedJob($id: CiProcessableID!) {\\n jobRetry(input: { id: $id }) {\\n errors\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"retryMrFailedJob\"] = oneQuery(doc, \"retryMrFailedJob\");\n \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-avatar-link',{staticClass:\"user-avatar-link js-user-link\",attrs:{\"href\":_vm.linkHref,\"data-user-id\":_vm.userId,\"data-username\":_vm.popoverUsername},on:{\"click\":function($event){$event.stopPropagation();}}},[_c('user-avatar-image',{class:_vm.imgCssWrapperClasses,attrs:{\"img-src\":_vm.imgSrc,\"img-alt\":_vm.imgAlt,\"css-classes\":_vm.imgCssClasses,\"size\":_vm.imgSize,\"tooltip-text\":_vm.avatarTooltipText,\"tooltip-placement\":_vm.tooltipPlacement,\"lazy\":_vm.lazy}},[_vm._t(\"default\")],2),_vm._v(\" \"),(_vm.shouldShowUsername)?_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-ml-1\",attrs:{\"title\":_vm.tooltipText,\"tooltip-placement\":_vm.tooltipPlacement,\"data-testid\":\"user-avatar-link-username\"}},[_vm._v(\"\\n \"+_vm._s(_vm.username)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_vm._t(\"avatar-badge\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./user_avatar_link.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./user_avatar_link.vue?vue&type=script&lang=js\"","<script>\n/* This is a re-usable vue component for rendering a user avatar wrapped in\n a clickable link (likely to the user's profile). The link, image, and\n tooltip can be configured by props passed to this component.\n\n Sample configuration:\n\n <user-avatar-link\n :link-href=\"userProfileUrl\"\n :img-src=\"userAvatarSrc\"\n :img-alt=\"tooltipText\"\n :img-size=\"32\"\n :tooltip-text=\"tooltipText\"\n :tooltip-placement=\"top\"\n :username=\"username\"\n />\n\n*/\n\nimport { GlAvatarLink, GlTooltipDirective } from '@gitlab/ui';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport UserAvatarImage from './user_avatar_image.vue';\n\nexport default {\n name: 'UserAvatarLinkNew',\n components: {\n UserAvatarImage,\n GlAvatarLink,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n lazy: {\n type: Boolean,\n required: false,\n default: false,\n },\n linkHref: {\n type: String,\n required: false,\n default: '',\n },\n imgSrc: {\n type: String,\n required: false,\n default: '',\n },\n imgAlt: {\n type: String,\n required: false,\n default: '',\n },\n imgCssClasses: {\n type: String,\n required: false,\n default: '',\n },\n imgCssWrapperClasses: {\n type: String,\n required: false,\n default: '',\n },\n imgSize: {\n type: [Number, Object],\n required: true,\n },\n tooltipText: {\n type: String,\n required: false,\n default: '',\n },\n tooltipPlacement: {\n type: String,\n required: false,\n default: 'top',\n },\n popoverUserId: {\n type: [String, Number],\n required: false,\n default: '',\n },\n popoverUsername: {\n type: String,\n required: false,\n default: '',\n },\n username: {\n type: String,\n required: false,\n default: '',\n },\n },\n computed: {\n userId() {\n return getIdFromGraphQLId(this.popoverUserId);\n },\n shouldShowUsername() {\n return this.username.length > 0;\n },\n avatarTooltipText() {\n // Prevent showing tooltip when popoverUserId is present\n if (this.popoverUserId) {\n return '';\n }\n return this.shouldShowUsername ? '' : this.tooltipText;\n },\n },\n};\n</script>\n\n<template>\n <gl-avatar-link\n :href=\"linkHref\"\n :data-user-id=\"userId\"\n :data-username=\"popoverUsername\"\n class=\"user-avatar-link js-user-link\"\n @click.stop\n >\n <user-avatar-image\n :class=\"imgCssWrapperClasses\"\n :img-src=\"imgSrc\"\n :img-alt=\"imgAlt\"\n :css-classes=\"imgCssClasses\"\n :size=\"imgSize\"\n :tooltip-text=\"avatarTooltipText\"\n :tooltip-placement=\"tooltipPlacement\"\n :lazy=\"lazy\"\n >\n <slot></slot>\n </user-avatar-image>\n\n <span\n v-if=\"shouldShowUsername\"\n v-gl-tooltip\n :title=\"tooltipText\"\n :tooltip-placement=\"tooltipPlacement\"\n class=\"gl-ml-1\"\n data-testid=\"user-avatar-link-username\"\n >\n {{ username }}\n </span>\n\n <slot name=\"avatar-badge\"></slot>\n </gl-avatar-link>\n</template>\n","import { render, staticRenderFns } from \"./user_avatar_link.vue?vue&type=template&id=0c9f1264\"\nimport script from \"./user_avatar_link.vue?vue&type=script&lang=js\"\nexport * from \"./user_avatar_link.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export const ANY_TRIGGER_AUTHOR = 'Any';\nexport const FILTER_PIPELINES_SEARCH_DELAY = 200;\nexport const SCHEDULE_ORIGIN = 'schedule';\nexport const API_ORIGIN = 'api';\nexport const TRIGGER_ORIGIN = 'trigger';\n\nexport const CATALOG_TRACKING_LABEL = 'ci_cd_catalog_prompt';\nexport const GITLAB_UNIVERSITY_TRACKING_LABEL = 'gitlab_university_prompt';\nexport const MIGRATE_FROM_JENKINS_TRACKING_LABEL = 'migrate_from_jenkins_prompt';\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getPipelineFailedJobsCount\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineIid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipeline\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineIid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"active\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobs\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"statuses\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"FAILED\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"retried\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":false}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"jobKind\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"BUILD\"}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":265}};\n doc.loc.source = {\"body\":\"query getPipelineFailedJobsCount($fullPath: ID!, $pipelineIid: ID!) {\\n project(fullPath: $fullPath) {\\n id\\n pipeline(iid: $pipelineIid) {\\n id\\n active\\n jobs(statuses: [FAILED], retried: false, jobKind: BUILD) {\\n count\\n }\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"getPipelineFailedJobsCount\"] = oneQuery(doc, \"getPipelineFailedJobsCount\");\n \n","(function() {\n var Query, coreChars, countDir, getCharCodes, getExtension, opt_char_re, truncatedUpperCase, _ref;\n\n _ref = require(\"./pathScorer\"), countDir = _ref.countDir, getExtension = _ref.getExtension;\n\n module.exports = Query = (function() {\n function Query(query, _arg) {\n var optCharRegEx, pathSeparator, _ref1;\n _ref1 = _arg != null ? _arg : {}, optCharRegEx = _ref1.optCharRegEx, pathSeparator = _ref1.pathSeparator;\n if (!(query && query.length)) {\n return null;\n }\n this.query = query;\n this.query_lw = query.toLowerCase();\n this.core = coreChars(query, optCharRegEx);\n this.core_lw = this.core.toLowerCase();\n this.core_up = truncatedUpperCase(this.core);\n this.depth = countDir(query, query.length, pathSeparator);\n this.ext = getExtension(this.query_lw);\n this.charCodes = getCharCodes(this.query_lw);\n }\n\n return Query;\n\n })();\n\n opt_char_re = /[ _\\-:\\/\\\\]/g;\n\n coreChars = function(query, optCharRegEx) {\n if (optCharRegEx == null) {\n optCharRegEx = opt_char_re;\n }\n return query.replace(optCharRegEx, '');\n };\n\n truncatedUpperCase = function(str) {\n var char, upper, _i, _len;\n upper = \"\";\n for (_i = 0, _len = str.length; _i < _len; _i++) {\n char = str[_i];\n upper += char.toUpperCase()[0];\n }\n return upper;\n };\n\n getCharCodes = function(str) {\n var charCodes, i, len;\n len = str.length;\n i = -1;\n charCodes = [];\n while (++i < len) {\n charCodes[str.charCodeAt(i)] = true;\n }\n return charCodes;\n };\n\n}).call(this);\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"},{name:\"gl-resize-observer\",rawName:\"v-gl-resize-observer\",value:(_vm.onResize),expression:\"onResize\"}],staticClass:\"gl-min-w-0\",class:_vm.classes},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlTooltipDirective, GlResizeObserverDirective } from '@gitlab/ui';\nimport { isFunction, debounce } from 'lodash';\nimport { hasHorizontalOverflow } from '~/lib/utils/dom_utils';\n\nconst UPDATE_TOOLTIP_DEBOUNCED_WAIT_MS = 300;\n\nexport default {\n directives: {\n GlTooltip: GlTooltipDirective,\n GlResizeObserver: GlResizeObserverDirective,\n },\n props: {\n title: {\n type: String,\n required: false,\n default: '',\n },\n placement: {\n type: String,\n required: false,\n default: 'top',\n },\n boundary: {\n type: String,\n required: false,\n default: '',\n },\n truncateTarget: {\n type: [String, Function],\n required: false,\n default: '',\n },\n },\n data() {\n return {\n tooltipDisabled: true,\n };\n },\n computed: {\n classes() {\n if (this.tooltipDisabled) {\n return '';\n }\n return 'js-show-tooltip';\n },\n tooltip() {\n return {\n title: this.title,\n placement: this.placement,\n disabled: this.tooltipDisabled,\n // Only set the tooltip boundary if it's truthy\n ...(this.boundary && { boundary: this.boundary }),\n };\n },\n },\n watch: {\n title() {\n // Wait on $nextTick in case the slot width changes\n this.$nextTick(this.updateTooltip);\n },\n },\n created() {\n this.updateTooltipDebounced = debounce(this.updateTooltip, UPDATE_TOOLTIP_DEBOUNCED_WAIT_MS);\n },\n mounted() {\n this.updateTooltip();\n },\n methods: {\n selectTarget() {\n if (isFunction(this.truncateTarget)) {\n return this.truncateTarget(this.$el);\n }\n if (this.truncateTarget === 'child') {\n return this.$el.childNodes[0];\n }\n return this.$el;\n },\n updateTooltip() {\n this.tooltipDisabled = !hasHorizontalOverflow(this.selectTarget());\n },\n onResize() {\n this.updateTooltipDebounced();\n },\n },\n};\n</script>\n\n<template>\n <span v-gl-tooltip=\"tooltip\" v-gl-resize-observer=\"onResize\" :class=\"classes\" class=\"gl-min-w-0\">\n <slot></slot>\n </span>\n</template>\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tooltip_on_truncate.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tooltip_on_truncate.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./tooltip_on_truncate.vue?vue&type=template&id=50568281\"\nimport script from \"./tooltip_on_truncate.vue?vue&type=script&lang=js\"\nexport * from \"./tooltip_on_truncate.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{ref:\"crudComponent\",staticClass:\"crud gl-border gl-rounded-base gl-border-section gl-bg-subtle\",class:{ 'gl-mt-5': _vm.isCollapsible },attrs:{\"id\":_vm.anchorId}},[_c('header',{staticClass:\"crud-header gl-border-b gl-flex gl-flex-wrap gl-justify-between gl-gap-x-5 gl-gap-y-2 gl-rounded-t-base gl-border-section gl-bg-section gl-px-5 gl-py-4\",class:[\n _vm.headerClass,\n {\n 'gl-rounded-base gl-border-b-transparent': !_vm.isContentVisible,\n 'gl-relative gl-pr-10': _vm.isCollapsible,\n },\n ]},[_c('div',{staticClass:\"gl-flex gl-grow gl-flex-col gl-self-center\"},[_c('h2',{staticClass:\"gl-m-0 gl-inline-flex gl-items-center gl-gap-3 gl-text-base gl-font-bold gl-leading-normal\",class:_vm.titleClass,attrs:{\"data-testid\":\"crud-title\"}},[(_vm.anchorId)?_c('gl-link',{staticClass:\"anchor gl-absolute gl-no-underline\",attrs:{\"href\":`#${_vm.anchorId}`,\"aria-labelledby\":_vm.anchorId}}):_vm._e(),_vm._v(\" \"),(_vm.$scopedSlots.title)?_vm._t(\"title\"):[_vm._v(_vm._s(_vm.title))],_vm._v(\" \"),(_vm.displayedCount || _vm.$scopedSlots.count)?_c('span',{staticClass:\"crud-count gl-inline-flex gl-items-center gl-gap-2 gl-self-start gl-text-sm gl-text-subtle\",attrs:{\"data-testid\":\"crud-count\"}},[(_vm.displayedCount)?[(_vm.icon)?_c('gl-icon',{attrs:{\"name\":_vm.icon,\"variant\":\"subtle\",\"data-testid\":\"crud-icon\"}}):_vm._e(),_vm._v(\"\\n \"+_vm._s(_vm.displayedCount)+\"\\n \")]:_vm._e(),_vm._v(\" \"),(_vm.$scopedSlots.count)?_vm._t(\"count\"):_vm._e()],2):_vm._e()],2),_vm._v(\" \"),(_vm.description || _vm.$scopedSlots.description)?_c('p',{staticClass:\"gl-mb-0 gl-mt-2 gl-text-sm gl-leading-normal gl-text-subtle\",attrs:{\"data-testid\":\"crud-description\"}},[(_vm.$scopedSlots.description)?_vm._t(\"description\"):[_vm._v(_vm._s(_vm.description))]],2):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex gl-items-baseline gl-gap-3\",attrs:{\"data-testid\":\"crud-actions\"}},[_vm._t(\"actions\"),_vm._v(\" \"),(_vm.toggleText && !_vm.isFormUsedAndVisible)?_c('gl-button',{attrs:{\"size\":\"small\",\"aria-label\":_vm.toggleAriaLabel,\"data-testid\":\"crud-form-toggle\"},on:{\"click\":_vm.showForm}},[_vm._v(_vm._s(_vm.toggleText))]):_vm._e(),_vm._v(\" \"),(_vm.isCollapsible)?_c('div',{staticClass:\"gl-border-l gl-absolute gl-right-5 gl-top-4 gl-h-6 gl-border-l-section gl-pl-3\"},[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"-gl-mr-2 gl-self-start\",attrs:{\"title\":_vm.toggleLabel,\"icon\":_vm.toggleIcon,\"category\":\"tertiary\",\"size\":\"small\",\"aria-label\":_vm.toggleLabel,\"aria-expanded\":_vm.ariaExpandedAttr,\"aria-controls\":_vm.anchorId,\"data-testid\":\"crud-collapse-toggle\"},on:{\"click\":_vm.toggleCollapse}})],1):_vm._e()],2)]),_vm._v(\" \"),(_vm.isFormUsedAndVisible)?_c('div',{staticClass:\"gl-border-b gl-border-section gl-bg-section gl-p-5 gl-pt-4\",attrs:{\"data-testid\":\"crud-form\"}},[_vm._t(\"form\",null,{\"hideForm\":_vm.hideForm})],2):_vm._e(),_vm._v(\" \"),(_vm.isContentVisible)?_c('div',{staticClass:\"crud-body gl-mx-5 gl-my-4\",class:[_vm.bodyClass, { 'gl-rounded-b-base': !_vm.$scopedSlots.footer }],attrs:{\"data-testid\":\"crud-body\"}},[(_vm.isLoading)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\",\"data-testid\":\"crud-loading\"}}):(_vm.$scopedSlots.empty)?_c('span',{staticClass:\"gl-text-subtle\",attrs:{\"data-testid\":\"crud-empty\"}},[_vm._t(\"empty\")],2):_vm._t(\"default\",null,{\"showForm\":_vm.showForm}),_vm._v(\" \"),(_vm.$scopedSlots.pagination)?_c('div',{staticClass:\"crud-pagination gl-border-t gl-flex gl-justify-center gl-border-t-section gl-p-5\",attrs:{\"data-testid\":\"crud-pagination\"}},[_vm._t(\"pagination\")],2):_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.$scopedSlots.footer)?_c('footer',{staticClass:\"gl-border-t gl-rounded-b-base gl-border-section gl-bg-section gl-px-5 gl-py-4\",attrs:{\"data-testid\":\"crud-footer\"}},[_vm._t(\"footer\")],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./crud_component.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./crud_component.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlIcon, GlLoadingIcon, GlLink, GlTooltipDirective } from '@gitlab/ui';\nimport { __ } from '~/locale';\n\nexport default {\n components: {\n GlButton,\n GlIcon,\n GlLoadingIcon,\n GlLink,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n title: {\n type: String,\n required: false,\n default: '',\n },\n description: {\n type: String,\n required: false,\n default: null,\n },\n count: {\n type: [String, Number],\n required: false,\n default: '',\n },\n icon: {\n type: String,\n required: false,\n default: null,\n },\n toggleText: {\n type: String,\n required: false,\n default: null,\n },\n toggleAriaLabel: {\n type: String,\n required: false,\n default: null,\n },\n isCollapsible: {\n type: Boolean,\n required: false,\n default: false,\n },\n collapsed: {\n type: Boolean,\n required: false,\n default: false,\n },\n isLoading: {\n type: Boolean,\n required: false,\n default: false,\n },\n anchorId: {\n type: String,\n required: false,\n default: '',\n },\n headerClass: {\n type: [String, Object],\n required: false,\n default: null,\n },\n titleClass: {\n type: [String, Object],\n required: false,\n default: null,\n },\n bodyClass: {\n type: [String, Object],\n required: false,\n default: null,\n },\n persistCollapsedState: {\n type: Boolean,\n required: false,\n default: false,\n },\n },\n data() {\n return {\n isCollapsed:\n this.collapsed ||\n (this.persistCollapsedState &&\n localStorage.getItem(this.getLocalStorageKeyName()) === 'true'),\n isFormVisible: false,\n };\n },\n computed: {\n isContentVisible() {\n const hasContent =\n this.$scopedSlots.default || this.$scopedSlots.empty || this.$scopedSlots.pagination;\n return !(hasContent && this.isCollapsible && this.isCollapsed);\n },\n toggleIcon() {\n return this.isCollapsed ? 'chevron-lg-down' : 'chevron-lg-up';\n },\n toggleLabel() {\n return this.isCollapsed ? __('Expand') : __('Collapse');\n },\n ariaExpandedAttr() {\n return this.isCollapsed ? 'false' : 'true';\n },\n displayedCount() {\n if (this.isLoading) {\n return '...';\n }\n\n return this.icon && !this.count ? '0' : this.count;\n },\n isFormUsedAndVisible() {\n return this.$scopedSlots.form && this.isFormVisible && !this.isCollapsed;\n },\n },\n watch: {\n collapsed: {\n handler(newVal) {\n this.isCollapsed = newVal > 0;\n },\n },\n },\n methods: {\n toggleCollapse() {\n this.isCollapsed = !this.isCollapsed;\n\n if (this.isCollapsed) {\n this.$emit('collapsed');\n } else {\n this.$emit('expanded');\n }\n\n if (this.persistCollapsedState) {\n localStorage.setItem(this.getLocalStorageKeyName(), this.isCollapsed);\n }\n },\n showForm() {\n this.isFormVisible = true;\n this.isCollapsed = false;\n this.$emit('showForm');\n },\n hideForm() {\n this.isFormVisible = false;\n this.$emit('hideForm');\n },\n toggleForm() {\n if (this.isFormVisible) {\n this.hideForm();\n } else {\n this.showForm();\n }\n },\n getLocalStorageKeyName() {\n return `crud-collapse-${this.anchorId}`;\n },\n },\n};\n</script>\n\n<template>\n <section\n :id=\"anchorId\"\n ref=\"crudComponent\"\n class=\"crud gl-border gl-rounded-base gl-border-section gl-bg-subtle\"\n :class=\"{ 'gl-mt-5': isCollapsible }\"\n >\n <header\n class=\"crud-header gl-border-b gl-flex gl-flex-wrap gl-justify-between gl-gap-x-5 gl-gap-y-2 gl-rounded-t-base gl-border-section gl-bg-section gl-px-5 gl-py-4\"\n :class=\"[\n headerClass,\n {\n 'gl-rounded-base gl-border-b-transparent': !isContentVisible,\n 'gl-relative gl-pr-10': isCollapsible,\n },\n ]\"\n >\n <div class=\"gl-flex gl-grow gl-flex-col gl-self-center\">\n <h2\n class=\"gl-m-0 gl-inline-flex gl-items-center gl-gap-3 gl-text-base gl-font-bold gl-leading-normal\"\n :class=\"titleClass\"\n data-testid=\"crud-title\"\n >\n <gl-link\n v-if=\"anchorId\"\n class=\"anchor gl-absolute gl-no-underline\"\n :href=\"`#${anchorId}`\"\n :aria-labelledby=\"anchorId\"\n />\n <slot v-if=\"$scopedSlots.title\" name=\"title\"></slot>\n <template v-else>{{ title }}</template>\n\n <span\n v-if=\"displayedCount || $scopedSlots.count\"\n class=\"crud-count gl-inline-flex gl-items-center gl-gap-2 gl-self-start gl-text-sm gl-text-subtle\"\n data-testid=\"crud-count\"\n >\n <template v-if=\"displayedCount\">\n <gl-icon v-if=\"icon\" :name=\"icon\" variant=\"subtle\" data-testid=\"crud-icon\" />\n {{ displayedCount }}\n </template>\n <slot v-if=\"$scopedSlots.count\" name=\"count\"></slot>\n </span>\n </h2>\n <p\n v-if=\"description || $scopedSlots.description\"\n class=\"gl-mb-0 gl-mt-2 gl-text-sm gl-leading-normal gl-text-subtle\"\n data-testid=\"crud-description\"\n >\n <slot v-if=\"$scopedSlots.description\" name=\"description\"></slot>\n <template v-else>{{ description }}</template>\n </p>\n </div>\n <div class=\"gl-flex gl-items-baseline gl-gap-3\" data-testid=\"crud-actions\">\n <slot name=\"actions\"></slot>\n <gl-button\n v-if=\"toggleText && !isFormUsedAndVisible\"\n size=\"small\"\n :aria-label=\"toggleAriaLabel\"\n data-testid=\"crud-form-toggle\"\n @click=\"showForm\"\n >{{ toggleText }}</gl-button\n >\n <div\n v-if=\"isCollapsible\"\n class=\"gl-border-l gl-absolute gl-right-5 gl-top-4 gl-h-6 gl-border-l-section gl-pl-3\"\n >\n <gl-button\n v-gl-tooltip\n :title=\"toggleLabel\"\n :icon=\"toggleIcon\"\n category=\"tertiary\"\n size=\"small\"\n :aria-label=\"toggleLabel\"\n :aria-expanded=\"ariaExpandedAttr\"\n :aria-controls=\"anchorId\"\n class=\"-gl-mr-2 gl-self-start\"\n data-testid=\"crud-collapse-toggle\"\n @click=\"toggleCollapse\"\n />\n </div>\n </div>\n </header>\n\n <div\n v-if=\"isFormUsedAndVisible\"\n class=\"gl-border-b gl-border-section gl-bg-section gl-p-5 gl-pt-4\"\n data-testid=\"crud-form\"\n >\n <slot name=\"form\" :hide-form=\"hideForm\"></slot>\n </div>\n\n <div\n v-if=\"isContentVisible\"\n class=\"crud-body gl-mx-5 gl-my-4\"\n :class=\"[bodyClass, { 'gl-rounded-b-base': !$scopedSlots.footer }]\"\n data-testid=\"crud-body\"\n >\n <gl-loading-icon v-if=\"isLoading\" size=\"sm\" data-testid=\"crud-loading\" />\n <span v-else-if=\"$scopedSlots.empty\" class=\"gl-text-subtle\" data-testid=\"crud-empty\">\n <slot name=\"empty\"></slot>\n </span>\n <slot v-else :show-form=\"showForm\"></slot>\n\n <div\n v-if=\"$scopedSlots.pagination\"\n class=\"crud-pagination gl-border-t gl-flex gl-justify-center gl-border-t-section gl-p-5\"\n data-testid=\"crud-pagination\"\n >\n <slot name=\"pagination\"></slot>\n </div>\n </div>\n\n <footer\n v-if=\"$scopedSlots.footer\"\n class=\"gl-border-t gl-rounded-b-base gl-border-section gl-bg-section gl-px-5 gl-py-4\"\n data-testid=\"crud-footer\"\n >\n <slot name=\"footer\"></slot>\n </footer>\n </section>\n</template>\n","import { render, staticRenderFns } from \"./crud_component.vue?vue&type=template&id=3c3ad8dc\"\nimport script from \"./crud_component.vue?vue&type=script&lang=js\"\nexport * from \"./crud_component.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { normalizeHeaders } from './common_utils';\nimport { HTTP_STATUS_ABORTED, successCodes } from './http_status';\n\n/**\n * Polling utility for handling realtime updates.\n * Requirements: Promise based HTTP client\n *\n * Service for promise based http client and method need to be provided as props\n *\n * @example\n * new Poll({\n * resource: resource,\n * method: 'name',\n * data: {page: 1, scope: 'all'}, // optional\n * successCallback: () => {},\n * errorCallback: () => {},\n * notificationCallback: () => {}, // optional\n * }).makeRequest();\n *\n * Usage in pipelines table with visibility lib:\n *\n * const poll = new Poll({\n * resource: this.service,\n * method: 'getPipelines',\n * data: { page: pageNumber, scope },\n * successCallback: this.successCallback,\n * errorCallback: this.errorCallback,\n * notificationCallback: this.updateLoading,\n * });\n *\n * if (!Visibility.hidden()) {\n * poll.makeRequest();\n * }\n *\n * Visibility.change(() => {\n * if (!Visibility.hidden()) {\n * poll.restart();\n * } else {\n * poll.stop();\n * }\n * });\n *\n * 1. Checks for response and headers before start polling\n * 2. Interval is provided by `Poll-Interval` header.\n * 3. If `Poll-Interval` is -1, we stop polling\n * 4. If HTTP response is 200, we poll.\n * 5. If HTTP response is different from 200, we stop polling.\n *\n * @example\n * // With initial delay (for, for example, reducing unnecessary requests)\n *\n * const poll = new Poll({\n * resource: this.service,\n * method: 'fetchNotes',\n * successCallback: () => {},\n * errorCallback: () => {},\n * });\n *\n * // Performs the first request in 2.5s and then uses the `Poll-Interval` header.\n * poll.makeDelayedRequest(2500);\n *\n */\nexport default class Poll {\n constructor(options = {}) {\n this.options = options;\n this.options.data = options.data || {};\n this.options.notificationCallback =\n options.notificationCallback || function notificationCallback() {};\n\n this.intervalHeader = 'POLL-INTERVAL';\n this.timeoutID = null;\n this.canPoll = true;\n }\n\n checkConditions(response) {\n const headers = normalizeHeaders(response.headers);\n const pollInterval = parseInt(headers[this.intervalHeader], 10);\n if (pollInterval > 0 && successCodes.indexOf(response.status) !== -1 && this.canPoll) {\n if (this.timeoutID) {\n clearTimeout(this.timeoutID);\n }\n\n this.timeoutID = setTimeout(() => {\n this.makeRequest();\n }, pollInterval);\n }\n this.options.successCallback(response);\n }\n\n makeDelayedRequest(delay = 0) {\n // So we don't make our specs artificially slower\n this.timeoutID = setTimeout(\n () => this.makeRequest(),\n process.env.NODE_ENV !== 'test' ? delay : 1,\n );\n }\n\n makeRequest() {\n const { resource, method, data, errorCallback, notificationCallback } = this.options;\n\n // It's called everytime a new request is made. Useful to update the status.\n notificationCallback(true);\n\n return resource[method](data)\n .then((response) => {\n this.checkConditions(response);\n notificationCallback(false);\n })\n .catch((error) => {\n notificationCallback(false);\n if (error.status === HTTP_STATUS_ABORTED) {\n return;\n }\n errorCallback(error);\n });\n }\n\n /**\n * Stops the polling recursive chain\n * and guarantees if the timeout is already running it won't make another request by\n * cancelling the previously established timeout.\n */\n stop() {\n this.canPoll = false;\n clearTimeout(this.timeoutID);\n }\n\n /**\n * Enables polling after it has been stopped\n */\n enable(options) {\n if (options && options.data) {\n this.options.data = options.data;\n }\n\n this.canPoll = true;\n\n if (options && options.response) {\n this.checkConditions(options.response);\n }\n }\n\n /**\n * Restarts polling after it has been stopped and makes a request\n */\n restart(options) {\n this.enable(options);\n this.makeRequest();\n }\n}\n","(function() {\n var computeScore, countDir, file_coeff, getExtension, getExtensionScore, isMatch, scorePath, scoreSize, tau_depth, _ref;\n\n _ref = require('./scorer'), isMatch = _ref.isMatch, computeScore = _ref.computeScore, scoreSize = _ref.scoreSize;\n\n tau_depth = 20;\n\n file_coeff = 2.5;\n\n exports.score = function(string, query, options) {\n var allowErrors, preparedQuery, score, string_lw;\n preparedQuery = options.preparedQuery, allowErrors = options.allowErrors;\n if (!(allowErrors || isMatch(string, preparedQuery.core_lw, preparedQuery.core_up))) {\n return 0;\n }\n string_lw = string.toLowerCase();\n score = computeScore(string, string_lw, preparedQuery);\n score = scorePath(string, string_lw, score, options);\n return Math.ceil(score);\n };\n\n scorePath = function(subject, subject_lw, fullPathScore, options) {\n var alpha, basePathScore, basePos, depth, end, extAdjust, fileLength, pathSeparator, preparedQuery, useExtensionBonus;\n if (fullPathScore === 0) {\n return 0;\n }\n preparedQuery = options.preparedQuery, useExtensionBonus = options.useExtensionBonus, pathSeparator = options.pathSeparator;\n end = subject.length - 1;\n while (subject[end] === pathSeparator) {\n end--;\n }\n basePos = subject.lastIndexOf(pathSeparator, end);\n fileLength = end - basePos;\n extAdjust = 1.0;\n if (useExtensionBonus) {\n extAdjust += getExtensionScore(subject_lw, preparedQuery.ext, basePos, end, 2);\n fullPathScore *= extAdjust;\n }\n if (basePos === -1) {\n return fullPathScore;\n }\n depth = preparedQuery.depth;\n while (basePos > -1 && depth-- > 0) {\n basePos = subject.lastIndexOf(pathSeparator, basePos - 1);\n }\n basePathScore = basePos === -1 ? fullPathScore : extAdjust * computeScore(subject.slice(basePos + 1, end + 1), subject_lw.slice(basePos + 1, end + 1), preparedQuery);\n alpha = 0.5 * tau_depth / (tau_depth + countDir(subject, end + 1, pathSeparator));\n return alpha * basePathScore + (1 - alpha) * fullPathScore * scoreSize(0, file_coeff * fileLength);\n };\n\n exports.countDir = countDir = function(path, end, pathSeparator) {\n var count, i;\n if (end < 1) {\n return 0;\n }\n count = 0;\n i = -1;\n while (++i < end && path[i] === pathSeparator) {\n continue;\n }\n while (++i < end) {\n if (path[i] === pathSeparator) {\n count++;\n while (++i < end && path[i] === pathSeparator) {\n continue;\n }\n }\n }\n return count;\n };\n\n exports.getExtension = getExtension = function(str) {\n var pos;\n pos = str.lastIndexOf(\".\");\n if (pos < 0) {\n return \"\";\n } else {\n return str.substr(pos + 1);\n }\n };\n\n getExtensionScore = function(candidate, ext, startPos, endPos, maxDepth) {\n var m, matched, n, pos;\n if (!ext.length) {\n return 0;\n }\n pos = candidate.lastIndexOf(\".\", endPos);\n if (!(pos > startPos)) {\n return 0;\n }\n n = ext.length;\n m = endPos - pos;\n if (m < n) {\n n = m;\n m = ext.length;\n }\n pos++;\n matched = -1;\n while (++matched < n) {\n if (candidate[pos + matched] !== ext[matched]) {\n break;\n }\n }\n if (matched === 0 && maxDepth > 0) {\n return 0.9 * getExtensionScore(candidate, ext, startPos, pos - 2, maxDepth - 1);\n }\n return matched / m;\n };\n\n}).call(this);\n","export const DOWNSTREAM = 'downstream';\nexport const MAIN = 'main';\nexport const UPSTREAM = 'upstream';\n\n/*\n this value is based on the gl-pipeline-job-width class\n plus some extra for the margins\n*/\nexport const ONE_COL_WIDTH = 180;\n\nexport const STAGE_VIEW = 'stage';\nexport const LAYER_VIEW = 'layer';\n\nexport const SKIP_RETRY_MODAL_KEY = 'skip_retry_modal';\nexport const VIEW_TYPE_KEY = 'pipeline_graph_view_type';\n\nexport const SINGLE_JOB = 'single_job';\nexport const JOB_DROPDOWN = 'job_dropdown';\n\nexport const BUILD_KIND = 'BUILD';\nexport const BRIDGE_KIND = 'BRIDGE';\n\nexport const ACTION_FAILURE = 'action_failure';\nexport const IID_FAILURE = 'missing_iid';\n\nexport const RETRY_ACTION_TITLE = 'Retry';\nexport const MANUAL_ACTION_TITLE = 'Run';\n\n/*\n this poll interval is shared between the graph,\n pipeline header, jobs tab and failed jobs tab to\n keep all the data relatively in sync\n*/\nexport const POLL_INTERVAL = 10000;\n","import { __, s__ } from '~/locale';\n\nexport const forwardDeploymentFailureModalId = 'forward-deployment-failure';\n\nexport const BUTTON_TOOLTIP_RETRY = __('Retry all failed or cancelled jobs');\nexport const BUTTON_TOOLTIP_CANCEL = __('Cancel the running pipeline');\nexport const BUTTON_TOOLTIP_DELETE = __('Delete the pipeline');\n\nexport const FILTER_TAG_IDENTIFIER = 'tag';\n\nexport const JOB_GRAPHQL_ERRORS = {\n jobMutationErrorText: __('There was an error running the job. Please try again.'),\n jobQueryErrorText: __('There was an error fetching the job.'),\n};\n\nexport const ICONS = {\n TAG: 'tag',\n MR: 'merge-request',\n BRANCH: 'branch',\n RETRY: 'retry',\n SUCCESS: 'success',\n};\n\nexport const SUCCESS_STATUS = 'SUCCESS';\nexport const PASSED_STATUS = 'passed';\nexport const MANUAL_STATUS = 'manual';\n\nexport const PIPELINE_ID_KEY = 'id';\nexport const PIPELINE_IID_KEY = 'iid';\n\nexport const RAW_TEXT_WARNING = s__(\n 'Pipeline|Raw text search is not currently supported. Please use the available search tokens.',\n);\n\nexport const TRACKING_CATEGORIES = {\n table: 'pipelines_table_component',\n tabs: 'pipelines_filter_tabs',\n search: 'pipelines_filtered_search',\n failed: 'pipeline_failed_jobs_tab',\n tests: 'pipeline_tests_tab',\n listbox: 'pipeline_id_iid_listbox',\n};\n\n// For pipeline polling\nexport const PIPELINE_POLL_INTERVAL_DEFAULT = 1000 * 8;\nexport const PIPELINE_POLL_INTERVAL_BACKOFF = 1.2;\nexport const FOUR_MINUTES_IN_MS = 1000 * 60 * 4;\n\nexport const NETWORK_STATUS_READY = 7;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"gl-flex gl-items-center\"},[_c('ci-icon',{staticClass:\"gl-leading-0\",attrs:{\"size\":_vm.iconSize,\"status\":_vm.status,\"show-tooltip\":false,\"use-link\":false}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-line-clamp-2 gl-pl-3 gl-wrap-anywhere\",attrs:{\"title\":_vm.name}},[_vm._v(\"\\n \"+_vm._s(_vm.name)+\"\\n \")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_name_component.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_name_component.vue?vue&type=script&lang=js\"","<script>\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\n\n/**\n * Component that renders both the CI icon status and the job name.\n * Used in\n * - Badge component\n * - Dropdown badge components\n */\nexport default {\n components: {\n CiIcon,\n },\n props: {\n name: {\n type: String,\n required: true,\n },\n status: {\n type: Object,\n required: true,\n },\n iconSize: {\n type: Number,\n required: false,\n default: 16,\n },\n },\n};\n</script>\n<template>\n <span class=\"gl-flex gl-items-center\">\n <ci-icon\n :size=\"iconSize\"\n :status=\"status\"\n :show-tooltip=\"false\"\n :use-link=\"false\"\n class=\"gl-leading-0\"\n />\n <span class=\"gl-line-clamp-2 gl-pl-3 gl-wrap-anywhere\" :title=\"name\">\n {{ name }}\n </span>\n </span>\n</template>\n","import { render, staticRenderFns } from \"./job_name_component.vue?vue&type=template&id=10612be2\"\nimport script from \"./job_name_component.vue?vue&type=script&lang=js\"\nexport * from \"./job_name_component.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.shouldDisplayButton)?_c('gl-button',{attrs:{\"icon\":\"duo-chat\",\"variant\":\"confirm\",\"data-testid\":\"rca-duo-button\"},on:{\"click\":_vm.callDuo}},[_vm._v(\"\\n \"+_vm._s(_vm.s__('Jobs|Troubleshoot'))+\"\\n\")]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./root_cause_analysis_button.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./root_cause_analysis_button.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton } from '@gitlab/ui';\nimport { sendDuoChatCommand } from 'ee/ai/utils';\nimport { InternalEvents } from '~/tracking';\nimport { TYPENAME_CI_BUILD } from '~/graphql_shared/constants';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\n\nexport default {\n components: {\n GlButton,\n },\n mixins: [InternalEvents.mixin()],\n props: {\n canTroubleshootJob: {\n type: Boolean,\n required: true,\n },\n jobStatusGroup: {\n type: String,\n required: true,\n },\n jobId: {\n type: Number,\n required: false,\n default: null,\n },\n jobGid: {\n type: String,\n required: false,\n default: '',\n },\n isBuild: {\n type: Boolean,\n required: false,\n default: true,\n },\n },\n computed: {\n resourceId() {\n return this.jobGid || convertToGraphQLId(TYPENAME_CI_BUILD, this.jobId);\n },\n jobFailed() {\n const failedGroups = ['failed', 'failed-with-warnings'];\n\n return failedGroups.includes(this.jobStatusGroup);\n },\n shouldDisplayButton() {\n return this.jobFailed && this.canTroubleshootJob && this.isBuild;\n },\n },\n mounted() {\n this.trackEvent('render_root_cause_analysis');\n },\n methods: {\n callDuo() {\n this.trackEvent('click_root_cause_analysis');\n\n sendDuoChatCommand({\n question: '/troubleshoot',\n resourceId: this.resourceId,\n });\n },\n },\n};\n</script>\n<template>\n <gl-button\n v-if=\"shouldDisplayButton\"\n icon=\"duo-chat\"\n variant=\"confirm\"\n data-testid=\"rca-duo-button\"\n @click=\"callDuo\"\n >\n {{ s__('Jobs|Troubleshoot') }}\n </gl-button>\n</template>\n","import { render, staticRenderFns } from \"./root_cause_analysis_button.vue?vue&type=template&id=9a360570\"\nimport script from \"./root_cause_analysis_button.vue?vue&type=script&lang=js\"\nexport * from \"./root_cause_analysis_button.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import * as Sentry from '~/sentry/sentry_browser_wrapper';\n\nexport const reportToSentry = (component, failureType) => {\n Sentry.captureException(failureType, {\n tags: {\n component,\n },\n });\n};\n","import debounce from 'lodash/debounce';\nimport isFunction from 'lodash/isFunction';\nimport range from 'lodash/range';\nimport { breakpoints, GlBreakpointInstance } from '../../../utils/breakpoints';\nimport { alignOptions, resizeDebounceTime } from '../../../utils/constants';\nimport { translate, sprintf } from '../../../utils/i18n';\nimport GlIcon from '../icon/icon';\nimport GlLink from '../link/link';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst pageRange = (from, to) => range(from, to + 1, 1);\nvar script = {\n name: 'Pagination',\n components: {\n GlLink,\n GlIcon\n },\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n value: {\n type: Number,\n required: false,\n default: 1,\n validator: x => x > 0\n },\n /**\n * Number of items per page\n */\n perPage: {\n type: Number,\n required: false,\n default: 20,\n validator: x => x > 0\n },\n /**\n * Total number of items\n */\n totalItems: {\n type: Number,\n required: false,\n default: 0\n },\n /**\n * The object must contain the xs, sm, md and default keys\n */\n limits: {\n type: Object,\n required: false,\n default: () => ({\n xs: 0,\n sm: 3,\n md: 9,\n default: 9\n }),\n validator: value => {\n const missingSizes = Object.keys(breakpoints).filter(size => !value[size]).length;\n return missingSizes === 0 ? true : value.default;\n }\n },\n /**\n * A function that receives the page number and that returns a string representing the page URL\n */\n linkGen: {\n type: Function,\n required: false,\n default: null\n },\n /**\n * When using the compact pagination, use this prop to pass the previous page number\n */\n prevPage: {\n type: Number,\n required: false,\n default: null\n },\n /**\n * Text for the previous button (overridden by \"previous\" slot)\n */\n prevText: {\n type: String,\n required: false,\n default: translate('GlPagination.prevText', 'Previous')\n },\n /**\n * When using the compact pagination, use this prop to pass the next page number\n */\n nextPage: {\n type: Number,\n required: false,\n default: null\n },\n /**\n * Text for the next button (overridden by \"next\" slot)\n */\n nextText: {\n type: String,\n required: false,\n default: translate('GlPagination.nextText', 'Next')\n },\n /**\n * Text for the ellipsis (overridden by \"ellipsis-left\" and \"ellipsis-right\" slots)\n */\n ellipsisText: {\n type: String,\n required: false,\n default: '…'\n },\n /**\n * aria-label for the nav\n */\n labelNav: {\n type: String,\n required: false,\n default: translate('GlPagination.nav', 'Pagination')\n },\n /**\n * aria-label for the first page item\n */\n labelFirstPage: {\n type: String,\n required: false,\n default: translate('GlPagination.labelFirstPage', 'Go to first page')\n },\n /**\n * aria-label for the previous page item\n */\n labelPrevPage: {\n type: String,\n required: false,\n default: translate('GlPagination.labelPrevPage', 'Go to previous page')\n },\n /**\n * aria-label for the next page item\n */\n labelNextPage: {\n type: String,\n required: false,\n default: translate('GlPagination.labelNextPage', 'Go to next page')\n },\n /**\n * aria-label for the last page item\n */\n labelLastPage: {\n type: String,\n required: false,\n default: translate('GlPagination.labelLastPage', 'Go to last page')\n },\n /**\n * aria-label getter for numbered page items, defaults to \"Go to page <page_number>\"\n */\n labelPage: {\n // note: `Function` support is for legacy reasons\n type: [Function, String],\n required: false,\n default: translate('GlPagination.labelPage', 'Go to page %{page}')\n },\n /**\n * Controls the component\\'s horizontal alignment, value should be one of \"left\", \"center\", \"right\" or \"fill\"\n */\n align: {\n type: String,\n required: false,\n default: alignOptions.left,\n validator: value => Object.keys(alignOptions).includes(value)\n },\n disabled: {\n type: Boolean,\n required: false,\n default: false\n }\n },\n data() {\n return {\n breakpoint: GlBreakpointInstance.getBreakpointSize(),\n // If total pages count is below or equal to minTotalPagesToCollapse, collapsing is disabled\n minTotalPagesToCollapse: 4\n };\n },\n computed: {\n isVisible() {\n return this.totalPages > 1 || this.isCompactPagination;\n },\n isLinkBased() {\n return isFunction(this.linkGen);\n },\n paginationLimit() {\n return typeof this.limits[this.breakpoint] !== 'undefined' ? this.limits[this.breakpoint] : this.limits.default;\n },\n maxAdjacentPages() {\n return Math.max(Math.ceil((this.paginationLimit - 1) / 2), 0);\n },\n totalPages() {\n return Math.ceil(this.totalItems / this.perPage);\n },\n isFillAlign() {\n return this.align === alignOptions.fill;\n },\n wrapperClasses() {\n const classes = [];\n if (this.align === alignOptions.center) {\n classes.push('gl-justify-center');\n }\n if (this.align === alignOptions.right) {\n classes.push('gl-justify-end');\n }\n if (this.isFillAlign) {\n classes.push('gl-text-center');\n }\n return classes;\n },\n shouldCollapseLeftSide() {\n const diff = this.value - this.maxAdjacentPages;\n\n // Magic 3: prevents collapsing a single page on the left side\n return diff >= this.maxAdjacentPages && diff > 3 && this.totalPages > this.minTotalPagesToCollapse;\n },\n shouldCollapseRightSide() {\n // Magic 2: prevents collapsing a single page on the right side\n const diff = this.totalPages - 2 - this.value;\n return diff > this.maxAdjacentPages && this.totalPages > this.minTotalPagesToCollapse;\n },\n visibleItems() {\n let items = [];\n if (!this.isCompactPagination) {\n let firstPage = this.shouldCollapseLeftSide ? this.value - this.maxAdjacentPages : 1;\n // If we're on last page, show at least one page to the left\n firstPage = Math.min(firstPage, this.totalPages - 1);\n let lastPage = this.shouldCollapseRightSide ? this.value + this.maxAdjacentPages : this.totalPages;\n // If we're on first page, show at least one page to the right\n lastPage = Math.max(lastPage, 2);\n\n // Default numbered items\n items = pageRange(firstPage, lastPage).map(page => this.getPageItem(page));\n if (this.shouldCollapseLeftSide) {\n items.splice(0, 0, this.getPageItem(1, this.labelFirstPage), this.getEllipsisItem('left'));\n }\n if (this.shouldCollapseRightSide) {\n items.push(this.getEllipsisItem('right'), this.getPageItem(this.totalPages, this.labelLastPage));\n }\n }\n return items;\n },\n isCompactPagination() {\n return Boolean(!this.totalItems && (this.prevPage || this.nextPage));\n },\n prevPageIsDisabled() {\n return this.pageIsDisabled(this.value - 1);\n },\n nextPageIsDisabled() {\n return this.pageIsDisabled(this.value + 1);\n },\n prevPageAriaLabel() {\n return this.prevPageIsDisabled ? false : this.labelPrevPage || this.labelForPage(this.value - 1);\n },\n nextPageAriaLabel() {\n return this.nextPageIsDisabled ? false : this.labelNextPage || this.labelForPage(this.value + 1);\n },\n prevPageHref() {\n if (this.prevPageIsDisabled) return false;\n if (this.isLinkBased) return this.linkGen(this.value - 1);\n return '#';\n },\n nextPageHref() {\n if (this.nextPageIsDisabled) return false;\n if (this.isLinkBased) return this.linkGen(this.value + 1);\n return '#';\n }\n },\n created() {\n window.addEventListener('resize', debounce(this.setBreakpoint, resizeDebounceTime));\n },\n beforeDestroy() {\n window.removeEventListener('resize', debounce(this.setBreakpoint, resizeDebounceTime));\n },\n methods: {\n labelForPage(page) {\n if (isFunction(this.labelPage)) {\n return this.labelPage(page);\n }\n return sprintf(this.labelPage, {\n page\n });\n },\n setBreakpoint() {\n this.breakpoint = GlBreakpointInstance.getBreakpointSize();\n },\n pageIsDisabled(page) {\n return this.disabled || page < 1 || this.isCompactPagination && page > this.value && !this.nextPage || !this.isCompactPagination && page > this.totalPages;\n },\n getPageItem(page) {\n let label = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n const commonAttrs = {\n 'aria-label': label || this.labelForPage(page),\n href: '#',\n class: []\n };\n const isActivePage = page === this.value;\n const isDisabled = this.pageIsDisabled(page);\n const attrs = {\n ...commonAttrs\n };\n const listeners = {};\n if (isActivePage) {\n attrs.class.push('active');\n attrs['aria-current'] = 'page';\n }\n // Disable previous and/or next buttons if needed\n if (this.isLinkBased) {\n attrs.href = this.linkGen(page);\n }\n listeners.click = e => this.handleClick(e, page);\n return {\n content: page,\n component: isDisabled ? 'span' : GlLink,\n disabled: isDisabled,\n key: `page_${page}`,\n slot: 'page-number',\n slotData: {\n page,\n active: isActivePage,\n disabled: isDisabled\n },\n attrs,\n listeners\n };\n },\n getEllipsisItem(side) {\n return {\n content: this.ellipsisText,\n key: `ellipsis_${side}`,\n slot: `ellipsis-${side}`,\n component: 'span',\n disabled: true,\n slotData: {},\n listeners: {}\n };\n },\n handleClick(event, value) {\n if (!this.isLinkBased) {\n event.preventDefault();\n /**\n * Emitted when the page changes\n * @event input\n * @arg {number} value The page that just got loaded\n */\n this.$emit('input', value);\n }\n },\n handlePrevious(event, value) {\n this.handleClick(event, value);\n /**\n * Emitted when the \"previous\" button is clicked\n * @event previous\n */\n this.$emit('previous');\n },\n handleNext(event, value) {\n this.handleClick(event, value);\n /**\n * Emitted when the \"next\" button is clicked\n * @event next\n */\n this.$emit('next');\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isVisible)?_c('nav',{staticClass:\"gl-pagination\",attrs:{\"aria-label\":_vm.labelNav}},[_c('ul',{class:_vm.wrapperClasses},[_c('li',{class:{\n disabled: _vm.prevPageIsDisabled,\n 'gl-flex-auto': _vm.isFillAlign,\n },attrs:{\"aria-disabled\":_vm.prevPageIsDisabled,\"aria-hidden\":_vm.prevPageIsDisabled,\"data-testid\":\"gl-pagination-li\"}},[_c(_vm.prevPageIsDisabled ? 'span' : 'a',{tag:\"component\",staticClass:\"gl-pagination-item\",attrs:{\"data-testid\":\"gl-pagination-prev\",\"aria-label\":_vm.prevPageAriaLabel,\"href\":_vm.prevPageHref},on:{\"click\":function($event){!_vm.prevPageIsDisabled ? _vm.handlePrevious($event, _vm.value - 1) : null;}}},[_vm._t(\"previous\",function(){return [_c('gl-icon',{attrs:{\"name\":\"chevron-left\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-hidden sm:gl-block\"},[_vm._v(_vm._s(_vm.prevText))])]},null,{ page: _vm.value - 1, disabled: _vm.prevPageIsDisabled })],2)],1),_vm._v(\" \"),_vm._l((_vm.visibleItems),function(item){return _c('li',{key:item.key,class:{\n disabled: item.disabled,\n 'gl-flex-auto': _vm.isFillAlign,\n },attrs:{\"data-testid\":\"gl-pagination-li\"}},[_c(item.component,_vm._g(_vm._b({tag:\"component\",staticClass:\"gl-pagination-item\",attrs:{\"data-testid\":\"gl-pagination-item\",\"size\":\"md\",\"aria-disabled\":item.disabled}},'component',item.attrs,false),item.listeners),[_vm._t(item.slot,function(){return [_vm._v(_vm._s(item.content))]},null,item.slotData)],2)],1)}),_vm._v(\" \"),_c('li',{class:{\n disabled: _vm.nextPageIsDisabled,\n 'gl-flex-auto': _vm.isFillAlign,\n },attrs:{\"aria-disabled\":_vm.nextPageIsDisabled,\"aria-hidden\":_vm.nextPageIsDisabled,\"data-testid\":\"gl-pagination-li\"}},[_c(_vm.nextPageIsDisabled ? 'span' : 'a',{tag:\"component\",staticClass:\"gl-pagination-item\",attrs:{\"data-testid\":\"gl-pagination-next\",\"aria-label\":_vm.nextPageAriaLabel,\"href\":_vm.nextPageHref},on:{\"click\":function($event){!_vm.nextPageIsDisabled ? _vm.handleNext($event, _vm.value + 1) : null;}}},[_vm._t(\"next\",function(){return [_c('span',{staticClass:\"gl-hidden sm:gl-block\"},[_vm._v(_vm._s(_vm.nextText))]),_vm._v(\" \"),_c('gl-icon',{attrs:{\"name\":\"chevron-right\"}})]},null,{ page: _vm.value + 1, disabled: _vm.nextPageIsDisabled })],2)],1)],2)]):_vm._e()};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import Visibility from 'visibilityjs';\nimport { createAlert } from '~/alert';\nimport eventHub from '~/ci/event_hub';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { historyPushState, buildUrlWithCurrentLocation } from '~/lib/utils/common_utils';\nimport { reportToSentry } from '~/ci/utils';\nimport { HTTP_STATUS_UNAUTHORIZED } from '~/lib/utils/http_status';\nimport Poll from '~/lib/utils/poll';\nimport { __ } from '~/locale';\nimport { validateParams } from '~/ci/pipeline_details/utils';\nimport { CANCEL_REQUEST, TOAST_MESSAGE } from '../constants';\n\nexport default {\n data() {\n return {\n isLoading: false,\n hasError: false,\n isMakingRequest: false,\n updateGraphDropdown: false,\n hasMadeRequest: false,\n };\n },\n computed: {\n shouldRenderPagination() {\n return !this.isLoading;\n },\n },\n beforeMount() {\n this.poll = new Poll({\n resource: this.service,\n method: 'getPipelines',\n data: this.requestData ? this.requestData : undefined,\n successCallback: this.successCallback,\n errorCallback: this.errorCallback,\n notificationCallback: this.setIsMakingRequest,\n });\n\n if (!Visibility.hidden()) {\n this.isLoading = true;\n this.poll.makeRequest();\n } else {\n // If tab is not visible we need to make the first request so we don't show the empty\n // state without knowing if there are any pipelines\n this.fetchPipelines();\n }\n\n Visibility.change(() => {\n if (!Visibility.hidden()) {\n this.poll.restart();\n } else {\n this.poll.stop();\n }\n });\n\n eventHub.$on('postAction', this.postAction);\n eventHub.$on('updateTable', this.updateTable);\n eventHub.$on('runMergeRequestPipeline', this.runMergeRequestPipeline);\n },\n beforeDestroy() {\n eventHub.$off('postAction', this.postAction);\n eventHub.$off('updateTable', this.updateTable);\n eventHub.$off('runMergeRequestPipeline', this.runMergeRequestPipeline);\n },\n destroyed() {\n this.poll.stop();\n },\n methods: {\n onCancelPipeline(pipeline) {\n this.postAction(pipeline.cancel_path);\n },\n onRefreshPipelinesTable() {\n this.updateTable();\n },\n onRetryPipeline(pipeline) {\n this.postAction(pipeline.retry_path);\n },\n updateInternalState(parameters) {\n this.poll.stop();\n\n const queryString = Object.keys(parameters)\n .map((parameter) => {\n const value = parameters[parameter];\n // update internal state for UI\n this[parameter] = value;\n return `${parameter}=${encodeURIComponent(value)}`;\n })\n .join('&');\n\n // update polling parameters\n this.requestData = parameters;\n\n historyPushState(buildUrlWithCurrentLocation(`?${queryString}`));\n\n this.isLoading = true;\n },\n /**\n * Handles URL and query parameter changes.\n * When the user uses the pagination or the tabs,\n * - update URL\n * - Make API request to the server with new parameters\n * - Update the polling function\n * - Update the internal state\n */\n updateContent(parameters) {\n this.updateInternalState(parameters);\n\n // fetch new data\n return this.service\n .getPipelines(this.requestData)\n .then((response) => {\n this.isLoading = false;\n this.successCallback(response);\n\n this.poll.enable({ data: this.requestData, response });\n })\n .catch((error) => {\n this.isLoading = false;\n this.errorCallback(error);\n\n // restart polling\n this.poll.restart({ data: this.requestData });\n });\n },\n updateTable() {\n // Cancel ongoing request\n if (this.isMakingRequest) {\n this.service.cancelationSource.cancel(CANCEL_REQUEST);\n }\n // Stop polling\n this.poll.stop();\n // Restarting the poll also makes an initial request\n return this.poll.restart();\n },\n fetchPipelines() {\n if (!this.isMakingRequest) {\n this.isLoading = true;\n\n this.getPipelines();\n }\n },\n getPipelines() {\n return this.service\n .getPipelines(this.requestData)\n .then((response) => this.successCallback(response))\n .catch((error) => this.errorCallback(error));\n },\n setCommonData(pipelines, isUsingAsyncPipelineCreation = false) {\n this.store.storePipelines(pipelines, isUsingAsyncPipelineCreation);\n this.isLoading = false;\n this.updateGraphDropdown = true;\n this.hasMadeRequest = true;\n\n // In case the previous polling request returned an error, we need to reset it\n if (this.hasError) {\n this.hasError = false;\n }\n },\n errorCallback(error) {\n this.hasMadeRequest = true;\n this.isLoading = false;\n\n if (error && error.message && error.message !== CANCEL_REQUEST) {\n this.hasError = true;\n this.updateGraphDropdown = false;\n }\n reportToSentry('pipelines_list', error);\n },\n setIsMakingRequest(isMakingRequest) {\n this.isMakingRequest = isMakingRequest;\n\n if (isMakingRequest) {\n this.updateGraphDropdown = false;\n }\n },\n postAction(endpoint) {\n this.service\n .postAction(endpoint)\n .then(() => this.updateTable())\n .catch(() =>\n createAlert({\n message: __('An error occurred while making the request.'),\n }),\n );\n },\n\n /**\n * When the user clicks on the run pipeline button\n * we toggle the state of the button to be disabled\n *\n * Once the post request has finished, we fetch the\n * pipelines again to show the most recent data\n *\n * Once the pipeline has been updated, we toggle back the\n * loading state and re-enable the run pipeline button\n */\n runMergeRequestPipeline(options) {\n this.store.toggleIsRunningPipeline(true);\n\n this.service\n .runMRPipeline(options)\n .then(() => {\n if (!options.isAsync) {\n this.$toast.show(TOAST_MESSAGE);\n }\n\n this.updateTable();\n })\n .catch((e) => {\n const unauthorized = e.response.status === HTTP_STATUS_UNAUTHORIZED;\n let errorMessage = __(\n 'An error occurred while trying to run a new pipeline for this merge request.',\n );\n\n if (unauthorized) {\n errorMessage = __('You do not have permission to run a pipeline on this branch.');\n }\n\n createAlert({\n message: errorMessage,\n primaryButton: {\n text: __('Learn more'),\n link: helpPagePath('ci/pipelines/merge_request_pipelines.md'),\n },\n });\n reportToSentry('run_mr_pipeline', e);\n })\n .finally(() => {\n if (!options.isAsync) {\n this.store.toggleIsRunningPipeline(false);\n }\n });\n },\n onChangePage(page) {\n /* URLS parameters are strings, we need to parse to match types */\n let params = {\n page: Number(page).toString(),\n };\n\n if (this.scope) {\n params.scope = this.scope;\n }\n\n params = this.onChangeWithFilter(params);\n\n this.updateContent(params);\n },\n\n onChangeWithFilter(params) {\n return { ...params, ...validateParams(this.requestData) };\n },\n },\n};\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"retryPipelineMiniGraphJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiProcessableID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobRetry\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":184}};\n doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation retryPipelineMiniGraphJob($id: CiProcessableID!) {\\n jobRetry(input: { id: $id }) {\\n job {\\n ...Job\\n }\\n errors\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"retryPipelineMiniGraphJob\"] = oneQuery(doc, \"retryPipelineMiniGraphJob\");\n \n","(function() {\n var basenameMatch, computeMatch, isMatch, isWordStart, match, mergeMatches, scoreAcronyms, scoreCharacter, scoreConsecutives, _ref;\n\n _ref = require('./scorer'), isMatch = _ref.isMatch, isWordStart = _ref.isWordStart, scoreConsecutives = _ref.scoreConsecutives, scoreCharacter = _ref.scoreCharacter, scoreAcronyms = _ref.scoreAcronyms;\n\n exports.match = match = function(string, query, options) {\n var allowErrors, baseMatches, matches, pathSeparator, preparedQuery, string_lw;\n allowErrors = options.allowErrors, preparedQuery = options.preparedQuery, pathSeparator = options.pathSeparator;\n if (!(allowErrors || isMatch(string, preparedQuery.core_lw, preparedQuery.core_up))) {\n return [];\n }\n string_lw = string.toLowerCase();\n matches = computeMatch(string, string_lw, preparedQuery);\n if (matches.length === 0) {\n return matches;\n }\n if (string.indexOf(pathSeparator) > -1) {\n baseMatches = basenameMatch(string, string_lw, preparedQuery, pathSeparator);\n matches = mergeMatches(matches, baseMatches);\n }\n return matches;\n };\n\n exports.wrap = function(string, query, options) {\n var matchIndex, matchPos, matchPositions, output, strPos, tagClass, tagClose, tagOpen, _ref1;\n if ((options.wrap != null)) {\n _ref1 = options.wrap, tagClass = _ref1.tagClass, tagOpen = _ref1.tagOpen, tagClose = _ref1.tagClose;\n }\n if (tagClass == null) {\n tagClass = 'highlight';\n }\n if (tagOpen == null) {\n tagOpen = '<strong class=\"' + tagClass + '\">';\n }\n if (tagClose == null) {\n tagClose = '</strong>';\n }\n if (string === query) {\n return tagOpen + string + tagClose;\n }\n matchPositions = match(string, query, options);\n if (matchPositions.length === 0) {\n return string;\n }\n output = '';\n matchIndex = -1;\n strPos = 0;\n while (++matchIndex < matchPositions.length) {\n matchPos = matchPositions[matchIndex];\n if (matchPos > strPos) {\n output += string.substring(strPos, matchPos);\n strPos = matchPos;\n }\n while (++matchIndex < matchPositions.length) {\n if (matchPositions[matchIndex] === matchPos + 1) {\n matchPos++;\n } else {\n matchIndex--;\n break;\n }\n }\n matchPos++;\n if (matchPos > strPos) {\n output += tagOpen;\n output += string.substring(strPos, matchPos);\n output += tagClose;\n strPos = matchPos;\n }\n }\n if (strPos <= string.length - 1) {\n output += string.substring(strPos);\n }\n return output;\n };\n\n basenameMatch = function(subject, subject_lw, preparedQuery, pathSeparator) {\n var basePos, depth, end;\n end = subject.length - 1;\n while (subject[end] === pathSeparator) {\n end--;\n }\n basePos = subject.lastIndexOf(pathSeparator, end);\n if (basePos === -1) {\n return [];\n }\n depth = preparedQuery.depth;\n while (depth-- > 0) {\n basePos = subject.lastIndexOf(pathSeparator, basePos - 1);\n if (basePos === -1) {\n return [];\n }\n }\n basePos++;\n end++;\n return computeMatch(subject.slice(basePos, end), subject_lw.slice(basePos, end), preparedQuery, basePos);\n };\n\n mergeMatches = function(a, b) {\n var ai, bj, i, j, m, n, out;\n m = a.length;\n n = b.length;\n if (n === 0) {\n return a.slice();\n }\n if (m === 0) {\n return b.slice();\n }\n i = -1;\n j = 0;\n bj = b[j];\n out = [];\n while (++i < m) {\n ai = a[i];\n while (bj <= ai && ++j < n) {\n if (bj < ai) {\n out.push(bj);\n }\n bj = b[j];\n }\n out.push(ai);\n }\n while (j < n) {\n out.push(b[j++]);\n }\n return out;\n };\n\n computeMatch = function(subject, subject_lw, preparedQuery, offset) {\n var DIAGONAL, LEFT, STOP, UP, acro_score, align, backtrack, csc_diag, csc_row, csc_score, i, j, m, matches, move, n, pos, query, query_lw, score, score_diag, score_row, score_up, si_lw, start, trace;\n if (offset == null) {\n offset = 0;\n }\n query = preparedQuery.query;\n query_lw = preparedQuery.query_lw;\n m = subject.length;\n n = query.length;\n acro_score = scoreAcronyms(subject, subject_lw, query, query_lw).score;\n score_row = new Array(n);\n csc_row = new Array(n);\n STOP = 0;\n UP = 1;\n LEFT = 2;\n DIAGONAL = 3;\n trace = new Array(m * n);\n pos = -1;\n j = -1;\n while (++j < n) {\n score_row[j] = 0;\n csc_row[j] = 0;\n }\n i = -1;\n while (++i < m) {\n score = 0;\n score_up = 0;\n csc_diag = 0;\n si_lw = subject_lw[i];\n j = -1;\n while (++j < n) {\n csc_score = 0;\n align = 0;\n score_diag = score_up;\n if (query_lw[j] === si_lw) {\n start = isWordStart(i, subject, subject_lw);\n csc_score = csc_diag > 0 ? csc_diag : scoreConsecutives(subject, subject_lw, query, query_lw, i, j, start);\n align = score_diag + scoreCharacter(i, j, start, acro_score, csc_score);\n }\n score_up = score_row[j];\n csc_diag = csc_row[j];\n if (score > score_up) {\n move = LEFT;\n } else {\n score = score_up;\n move = UP;\n }\n if (align > score) {\n score = align;\n move = DIAGONAL;\n } else {\n csc_score = 0;\n }\n score_row[j] = score;\n csc_row[j] = csc_score;\n trace[++pos] = score > 0 ? move : STOP;\n }\n }\n i = m - 1;\n j = n - 1;\n pos = i * n + j;\n backtrack = true;\n matches = [];\n while (backtrack && i >= 0 && j >= 0) {\n switch (trace[pos]) {\n case UP:\n i--;\n pos -= n;\n break;\n case LEFT:\n j--;\n pos--;\n break;\n case DIAGONAL:\n matches.push(i + offset);\n j--;\n i--;\n pos -= n + 1;\n break;\n default:\n backtrack = false;\n }\n }\n matches.reverse();\n return matches;\n };\n\n}).call(this);\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"playJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiProcessableID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobPlay\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":165}};\n doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation playJob($id: CiProcessableID!) {\\n jobPlay(input: { id: $id }) {\\n job {\\n ...Job\\n }\\n errors\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"playJob\"] = oneQuery(doc, \"playJob\");\n \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"content-list pipelines\"},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"prepend-top-20\",attrs:{\"label\":_vm.s__('Pipelines|Loading pipelines'),\"size\":\"lg\"}}):(_vm.shouldRenderErrorState)?_c('gl-empty-state',{attrs:{\"svg-path\":_vm.errorStateSvgPath,\"title\":_vm.s__(`Pipelines|There was an error fetching the pipelines.\n Try again in a few moments or contact your support team.`),\"data-testid\":\"pipeline-error-empty-state\"}}):(_vm.shouldRenderEmptyState)?[_c('gl-empty-state',{attrs:{\"svg-path\":_vm.emptyStateSvgPath,\"svg-height\":150,\"title\":_vm.$options.i18n.emptyStateTitle,\"data-testid\":\"pipeline-empty-state\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.runPipelinePopoverDescription},scopedSlots:_vm._u([{key:\"ciDocsLink\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.$options.mrPipelinesDocsPath,\"target\":\"_blank\",\"data-testid\":\"mr-pipelines-docs-link\"}},[_vm._v(_vm._s(content))])]}},{key:\"permissionDocsLink\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.$options.userPermissionsDocsPath,\"target\":\"_blank\",\"data-testid\":\"user-permissions-docs-link\"}},[_vm._v(_vm._s(content))])]}}])})]},proxy:true},{key:\"actions\",fn:function(){return [_c('div',{staticClass:\"gl-align-middle\"},[_c('gl-button',{attrs:{\"variant\":\"confirm\",\"loading\":_vm.state.isRunningMergeRequestPipeline,\"data-testid\":\"run_pipeline_button\"},on:{\"click\":_vm.tryRunPipeline}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.runPipelineText)+\"\\n \")])],1)]},proxy:true}])})]:(_vm.shouldRenderTable)?_c('div',[(_vm.canRenderPipelineButton)?_c('gl-button',{staticClass:\"gl-mb-3 gl-mt-3 lg:gl-hidden\",attrs:{\"block\":\"\",\"variant\":\"confirm\",\"data-testid\":\"run_pipeline_button_mobile\",\"loading\":_vm.state.isRunningMergeRequestPipeline},on:{\"click\":_vm.tryRunPipeline}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.runPipelineText)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('pipelines-table',{attrs:{\"is-creating-pipeline\":_vm.state.isRunningMergeRequestPipeline,\"pipeline-id-type\":_vm.$options.pipelineIdKey,\"pipelines\":_vm.state.pipelines,\"view-type\":_vm.viewType},on:{\"cancel-pipeline\":_vm.onCancelPipeline,\"refresh-pipelines-table\":_vm.onRefreshPipelinesTable,\"retry-pipeline\":_vm.onRetryPipeline},scopedSlots:_vm._u([{key:\"table-header-actions\",fn:function(){return [(_vm.canRenderPipelineButton)?_c('div',{staticClass:\"gl-text-right\"},[_c('gl-button',{attrs:{\"data-testid\":\"run_pipeline_button\",\"loading\":_vm.state.isRunningMergeRequestPipeline},on:{\"click\":_vm.tryRunPipeline}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.runPipelineText)+\"\\n \")])],1):_vm._e()]},proxy:true}])})],1):_vm._e(),_vm._v(\" \"),(_vm.canRenderPipelineButton || _vm.shouldRenderEmptyState)?_c('gl-modal',{ref:\"modal\",attrs:{\"id\":_vm.modalId,\"modal-id\":_vm.modalId,\"title\":_vm.s__('Pipelines|Are you sure you want to run this pipeline?'),\"action-primary\":_vm.$options.modal.actionPrimary,\"action-cancel\":_vm.$options.modal.actionCancel},on:{\"primary\":_vm.onClickRunPipeline}},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.s__(\n 'Pipelines|This pipeline will run code originating from a forked project merge request. This means that the code can potentially have security considerations like exposing CI variables.',\n ))+\"\\n \")]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.s__(\n \"Pipelines|It is recommended the code is reviewed thoroughly before running this pipeline with the parent project's CI resource.\",\n ))+\"\\n \")]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.s__('Pipelines|If you are unsure, please ask a project maintainer to review it for you.'))+\"\\n \")]),_vm._v(\" \"),_c('gl-link',{attrs:{\"href\":_vm.$options.runPipelinesInTheParentProjectHelpPath,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.s__('Pipelines|More Information'))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.shouldRenderPagination)?_c('table-pagination',{attrs:{\"change\":_vm.onChangePage,\"page-info\":_vm.state.pageInfo}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./legacy_pipelines_table_wrapper.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./legacy_pipelines_table_wrapper.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlEmptyState, GlLoadingIcon, GlModal, GlLink, GlSprintf } from '@gitlab/ui';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { getParameterByName } from '~/lib/utils/url_utility';\nimport PipelinesTable from '~/ci/common/pipelines_table.vue';\nimport { PIPELINE_ID_KEY } from '~/ci/constants';\nimport eventHub from '~/ci/event_hub';\nimport PipelinesMixin from '~/ci/pipeline_details/mixins/pipelines_mixin';\nimport PipelinesService from '~/ci/pipelines_page/services/pipelines_service';\nimport PipelineStore from '~/ci/pipeline_details/stores/pipelines_store';\nimport TablePagination from '~/vue_shared/components/pagination/table_pagination.vue';\nimport { s__, __ } from '~/locale';\n\nexport default {\n components: {\n GlButton,\n GlEmptyState,\n GlLink,\n GlLoadingIcon,\n GlModal,\n GlSprintf,\n PipelinesTable,\n TablePagination,\n },\n mixins: [PipelinesMixin],\n props: {\n canCreatePipelineInTargetProject: {\n type: Boolean,\n required: false,\n default: false,\n },\n endpoint: {\n type: String,\n required: true,\n },\n errorStateSvgPath: {\n type: String,\n required: true,\n },\n emptyStateSvgPath: {\n type: String,\n required: true,\n },\n isMergeRequestTable: {\n type: Boolean,\n required: false,\n default: false,\n },\n mergeRequestId: {\n type: Number,\n required: false,\n default: 0,\n },\n projectId: {\n type: String,\n required: false,\n default: '',\n },\n sourceProjectFullPath: {\n type: String,\n required: false,\n default: '',\n },\n targetProjectFullPath: {\n type: String,\n required: false,\n default: '',\n },\n viewType: {\n type: String,\n required: false,\n default: 'root',\n },\n },\n\n data() {\n const store = new PipelineStore();\n\n return {\n store,\n state: store.state,\n page: getParameterByName('page') || '1',\n requestData: {},\n modalId: 'create-pipeline-for-fork-merge-request-modal',\n };\n },\n\n computed: {\n shouldRenderTable() {\n return !this.isLoading && this.state.pipelines.length > 0 && !this.hasError;\n },\n shouldRenderErrorState() {\n return this.hasError && !this.isLoading;\n },\n shouldRenderEmptyState() {\n return this.state.pipelines.length === 0 && !this.shouldRenderErrorState;\n },\n /**\n * The \"Run pipeline\" button can only be rendered when:\n * - In MR view - we use `canCreatePipelineInTargetProject` for that purpose\n * - If the latest pipeline has the `detached_merge_request_pipeline` flag\n *\n * @returns {Boolean}\n */\n canRenderPipelineButton() {\n return this.latestPipelineDetachedFlag;\n },\n isForkMergeRequest() {\n return this.sourceProjectFullPath !== this.targetProjectFullPath;\n },\n isLatestPipelineCreatedInTargetProject() {\n const latest = this.state.pipelines[0];\n\n return latest?.project?.full_path === `/${this.targetProjectFullPath}`;\n },\n shouldShowSecurityWarning() {\n return (\n this.canCreatePipelineInTargetProject &&\n this.isForkMergeRequest &&\n !this.isLatestPipelineCreatedInTargetProject\n );\n },\n /**\n * Checks if either `detached_merge_request_pipeline` or\n * `merge_request_pipeline` are tru in the first\n * object in the pipelines array.\n *\n * @returns {Boolean}\n */\n latestPipelineDetachedFlag() {\n const latest = this.state.pipelines[0];\n return (\n latest &&\n latest.flags &&\n (latest.flags.detached_merge_request_pipeline || latest.flags.merge_request_pipeline)\n );\n },\n },\n created() {\n this.service = new PipelinesService(this.endpoint);\n this.requestData = { page: this.page };\n },\n methods: {\n successCallback(resp) {\n // depending of the endpoint the response can either bring a `pipelines` key or not.\n const pipelines = resp.data.pipelines || resp.data;\n\n this.store.storePagination(resp.headers);\n this.setCommonData(pipelines, this.isMergeRequestTable);\n\n if (resp.headers?.['x-total']) {\n const updatePipelinesEvent = new CustomEvent('update-pipelines-count', {\n detail: { pipelineCount: resp.headers['x-total'] },\n });\n\n // notifiy to update the count in tabs\n if (this.$el.parentElement) {\n this.$el.parentElement.dispatchEvent(updatePipelinesEvent);\n }\n }\n },\n /**\n * When the user clicks on the \"Run pipeline\" button\n * we need to make a post request and\n * to update the table content once the request is finished.\n *\n * We are emitting an event through the eventHub using the old pattern\n * to make use of the code in mixins/pipelines.js that handles all the\n * table events\n *\n */\n onClickRunPipeline() {\n eventHub.$emit('runMergeRequestPipeline', {\n projectId: this.projectId,\n mergeRequestId: this.mergeRequestId,\n isAsync: this.isMergeRequestTable,\n });\n },\n tryRunPipeline() {\n if (!this.shouldShowSecurityWarning) {\n this.onClickRunPipeline();\n } else {\n this.$refs.modal.show();\n }\n },\n },\n pipelineIdKey: PIPELINE_ID_KEY,\n modal: {\n actionPrimary: {\n text: s__('Pipeline|Run pipeline'),\n attributes: {\n variant: 'danger',\n },\n },\n actionCancel: {\n text: __('Cancel'),\n attributes: {\n variant: 'default',\n },\n },\n },\n i18n: {\n runPipelinePopoverTitle: s__('Pipeline|Run merge request pipeline'),\n runPipelinePopoverDescription: s__(\n `Pipeline|To run a merge request pipeline, the jobs in the CI/CD configuration file %{ciDocsLinkStart}must be configured%{ciDocsLinkEnd} to run in merge request pipelines\n and you must have %{permissionDocsLinkStart}sufficient permissions%{permissionDocsLinkEnd} in the source project.`,\n ),\n runPipelineText: s__('Pipeline|Run pipeline'),\n emptyStateTitle: s__('Pipelines|There are currently no pipelines.'),\n },\n mrPipelinesDocsPath: helpPagePath('ci/pipelines/merge_request_pipelines.md', {\n anchor: 'prerequisites',\n }),\n userPermissionsDocsPath: helpPagePath('user/permissions.md', {\n anchor: 'cicd',\n }),\n runPipelinesInTheParentProjectHelpPath: helpPagePath(\n '/ci/pipelines/merge_request_pipelines.html',\n {\n anchor: 'run-pipelines-in-the-parent-project',\n },\n ),\n};\n</script>\n<template>\n <div class=\"content-list pipelines\">\n <gl-loading-icon\n v-if=\"isLoading\"\n :label=\"s__('Pipelines|Loading pipelines')\"\n size=\"lg\"\n class=\"prepend-top-20\"\n />\n\n <gl-empty-state\n v-else-if=\"shouldRenderErrorState\"\n :svg-path=\"errorStateSvgPath\"\n :title=\"\n s__(`Pipelines|There was an error fetching the pipelines.\n Try again in a few moments or contact your support team.`)\n \"\n data-testid=\"pipeline-error-empty-state\"\n />\n <template v-else-if=\"shouldRenderEmptyState\">\n <gl-empty-state\n :svg-path=\"emptyStateSvgPath\"\n :svg-height=\"150\"\n :title=\"$options.i18n.emptyStateTitle\"\n data-testid=\"pipeline-empty-state\"\n >\n <template #description>\n <gl-sprintf :message=\"$options.i18n.runPipelinePopoverDescription\">\n <template #ciDocsLink=\"{ content }\">\n <gl-link\n :href=\"$options.mrPipelinesDocsPath\"\n target=\"_blank\"\n data-testid=\"mr-pipelines-docs-link\"\n >{{ content }}</gl-link\n >\n </template>\n <template #permissionDocsLink=\"{ content }\">\n <gl-link\n :href=\"$options.userPermissionsDocsPath\"\n target=\"_blank\"\n data-testid=\"user-permissions-docs-link\"\n >{{ content }}</gl-link\n >\n </template>\n </gl-sprintf>\n </template>\n\n <template #actions>\n <div class=\"gl-align-middle\">\n <gl-button\n variant=\"confirm\"\n :loading=\"state.isRunningMergeRequestPipeline\"\n data-testid=\"run_pipeline_button\"\n @click=\"tryRunPipeline\"\n >\n {{ $options.i18n.runPipelineText }}\n </gl-button>\n </div>\n </template>\n </gl-empty-state>\n </template>\n\n <div v-else-if=\"shouldRenderTable\">\n <gl-button\n v-if=\"canRenderPipelineButton\"\n block\n class=\"gl-mb-3 gl-mt-3 lg:gl-hidden\"\n variant=\"confirm\"\n data-testid=\"run_pipeline_button_mobile\"\n :loading=\"state.isRunningMergeRequestPipeline\"\n @click=\"tryRunPipeline\"\n >\n {{ $options.i18n.runPipelineText }}\n </gl-button>\n\n <pipelines-table\n :is-creating-pipeline=\"state.isRunningMergeRequestPipeline\"\n :pipeline-id-type=\"$options.pipelineIdKey\"\n :pipelines=\"state.pipelines\"\n :view-type=\"viewType\"\n @cancel-pipeline=\"onCancelPipeline\"\n @refresh-pipelines-table=\"onRefreshPipelinesTable\"\n @retry-pipeline=\"onRetryPipeline\"\n >\n <template #table-header-actions>\n <div v-if=\"canRenderPipelineButton\" class=\"gl-text-right\">\n <gl-button\n data-testid=\"run_pipeline_button\"\n :loading=\"state.isRunningMergeRequestPipeline\"\n @click=\"tryRunPipeline\"\n >\n {{ $options.i18n.runPipelineText }}\n </gl-button>\n </div>\n </template>\n </pipelines-table>\n </div>\n\n <gl-modal\n v-if=\"canRenderPipelineButton || shouldRenderEmptyState\"\n :id=\"modalId\"\n ref=\"modal\"\n :modal-id=\"modalId\"\n :title=\"s__('Pipelines|Are you sure you want to run this pipeline?')\"\n :action-primary=\"$options.modal.actionPrimary\"\n :action-cancel=\"$options.modal.actionCancel\"\n @primary=\"onClickRunPipeline\"\n >\n <p>\n {{\n s__(\n 'Pipelines|This pipeline will run code originating from a forked project merge request. This means that the code can potentially have security considerations like exposing CI variables.',\n )\n }}\n </p>\n <p>\n {{\n s__(\n \"Pipelines|It is recommended the code is reviewed thoroughly before running this pipeline with the parent project's CI resource.\",\n )\n }}\n </p>\n <p>\n {{\n s__('Pipelines|If you are unsure, please ask a project maintainer to review it for you.')\n }}\n </p>\n <gl-link :href=\"$options.runPipelinesInTheParentProjectHelpPath\" target=\"_blank\">\n {{ s__('Pipelines|More Information') }}\n </gl-link>\n </gl-modal>\n\n <table-pagination\n v-if=\"shouldRenderPagination\"\n :change=\"onChangePage\"\n :page-info=\"state.pageInfo\"\n />\n </div>\n</template>\n","import { render, staticRenderFns } from \"./legacy_pipelines_table_wrapper.vue?vue&type=template&id=114fb4e4\"\nimport script from \"./legacy_pipelines_table_wrapper.vue?vue&type=script&lang=js\"\nexport * from \"./legacy_pipelines_table_wrapper.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-disclosure-dropdown-item',{staticClass:\"ci-job-component\",attrs:{\"item\":_vm.item,\"data-testid\":\"ci-job-item\"},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('div',{staticClass:\"-gl-my-2 gl-flex gl-items-center gl-justify-between\"},[_c('job-name-component',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",modifiers:{\"viewport\":true,\"left\":true}}],attrs:{\"title\":_vm.tooltipText,\"name\":_vm.job.name,\"status\":_vm.status,\"data-testid\":\"job-name\"}}),_vm._v(\" \"),(_vm.hasJobAction)?_c('job-action-button',{staticClass:\"gl-ml-6\",attrs:{\"job-id\":_vm.job.id,\"job-action\":_vm.status.action,\"job-name\":_vm.job.name},on:{\"jobActionExecuted\":function($event){return _vm.$emit('jobActionExecuted')}}}):_vm._e()],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_action_modal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_action_modal.vue?vue&type=script&lang=js\"","<script>\nimport { GlModal } from '@gitlab/ui';\nimport { s__, __, sprintf } from '~/locale';\n\nexport default {\n name: 'JobActionModal',\n i18n: {\n title: s__('PipelineGraph|Are you sure you want to run %{jobName}?'),\n confirmationText: s__('PipelineGraph|Do you want to continue?'),\n actionCancel: { text: __('Cancel') },\n },\n components: {\n GlModal,\n },\n model: {\n prop: 'visible',\n event: 'change',\n },\n props: {\n customMessage: {\n type: String,\n required: true,\n },\n visible: {\n type: Boolean,\n required: false,\n default: false,\n },\n jobName: {\n type: String,\n required: true,\n },\n },\n computed: {\n modalText() {\n return {\n confirmButton: {\n text: sprintf(__('Yes, run %{jobName}'), {\n jobName: this.jobName,\n }),\n },\n message: sprintf(__('Custom confirmation message: %{message}'), {\n message: this.customMessage,\n }),\n title: sprintf(this.$options.i18n.title, {\n jobName: this.jobName,\n }),\n };\n },\n },\n};\n</script>\n\n<template>\n <gl-modal\n modal-id=\"job-action-modal\"\n :action-cancel=\"$options.i18n.actionCancel\"\n :action-primary=\"modalText.confirmButton\"\n :title=\"modalText.title\"\n :visible=\"visible\"\n @primary=\"$emit('confirm')\"\n @change=\"$emit('change', $event)\"\n >\n <div>\n <p>{{ modalText.message }}</p>\n <span>{{ $options.i18n.confirmationText }}</span>\n </div>\n </gl-modal>\n</template>\n","import { render, staticRenderFns } from \"./job_action_modal.vue?vue&type=template&id=0793f7d2\"\nimport script from \"./job_action_modal.vue?vue&type=script&lang=js\"\nexport * from \"./job_action_modal.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-modal',{attrs:{\"modal-id\":\"job-action-modal\",\"action-cancel\":_vm.$options.i18n.actionCancel,\"action-primary\":_vm.modalText.confirmButton,\"title\":_vm.modalText.title,\"visible\":_vm.visible},on:{\"primary\":function($event){return _vm.$emit('confirm')},\"change\":function($event){return _vm.$emit('change', $event)}}},[_c('div',[_c('p',[_vm._v(_vm._s(_vm.modalText.message))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.$options.i18n.confirmationText))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlButton, GlIcon, GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { s__ } from '~/locale';\nimport { reportToSentry } from '~/ci/utils';\nimport cancelJobMutation from '~/ci/pipeline_mini_graph/graphql/mutations/job_cancel.mutation.graphql';\nimport playJobMutation from '~/ci/pipeline_mini_graph/graphql/mutations/job_play.mutation.graphql';\nimport retryJobMutation from '~/ci/pipeline_mini_graph/graphql/mutations/job_retry.mutation.graphql';\nimport unscheduleJobMutation from '~/ci/pipeline_mini_graph/graphql/mutations/job_unschedule.mutation.graphql';\nimport JobActionModal from './job_action_modal.vue';\n\nexport const i18n = {\n errors: {\n cancelJob: s__('Pipeline|There was a problem canceling the job.'),\n playJob: s__('Pipeline|There was a problem running the job.'),\n retryJob: s__('Pipeline|There was a problem running the job again.'),\n unscheduleJob: s__('Pipeline|There was a problem unscheduling the job.'),\n },\n};\n\nexport default {\n name: 'JobActionButton',\n JOB_ACTIONS: {\n cancel: {\n dataName: 'jobCancel',\n error: i18n.errors.cancelJob,\n mutation: cancelJobMutation,\n },\n play: {\n dataName: 'jobPlay',\n error: i18n.errors.playJob,\n mutation: playJobMutation,\n },\n retry: {\n dataName: 'jobRetry',\n error: i18n.errors.retryJob,\n mutation: retryJobMutation,\n },\n 'time-out': {\n dataName: 'jobUnschedule',\n error: i18n.errors.unscheduleJob,\n mutation: unscheduleJobMutation,\n },\n },\n i18n,\n components: {\n GlButton,\n GlIcon,\n GlLoadingIcon,\n JobActionModal,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n jobId: {\n type: String,\n required: true,\n },\n jobAction: {\n type: Object,\n required: true,\n },\n jobName: {\n type: String,\n required: true,\n },\n },\n emits: ['jobActionExecuted'],\n data() {\n return {\n isLoading: false,\n showConfirmationModal: false,\n };\n },\n computed: {\n actionType() {\n return this.jobAction.icon;\n },\n hasConfirmationModal() {\n return this.jobAction?.confirmationMessage !== null;\n },\n },\n methods: {\n onActionButtonClick() {\n if (this.hasConfirmationModal) {\n this.showConfirmationModal = true;\n } else {\n this.executeJobAction();\n }\n },\n async executeJobAction() {\n try {\n this.isLoading = true;\n const {\n data: {\n [this.$options.JOB_ACTIONS[this.actionType].dataName]: { errors },\n },\n } = await this.$apollo.mutate({\n mutation: this.$options.JOB_ACTIONS[this.actionType].mutation,\n variables: { id: this.jobId },\n });\n if (errors.length) {\n reportToSentry(this.$options.name, new Error(errors.join(', ')));\n }\n } catch (error) {\n createAlert({ message: this.$options.JOB_ACTIONS[this.actionType].error });\n reportToSentry(this.$options.name, error);\n } finally {\n this.isLoading = false;\n this.$emit('jobActionExecuted');\n }\n },\n },\n};\n</script>\n\n<template>\n <div>\n <gl-button\n v-gl-tooltip.viewport.left\n :title=\"jobAction.title\"\n :aria-label=\"jobAction.title\"\n :disabled=\"isLoading\"\n size=\"small\"\n class=\"gl-h-6 gl-w-6 !gl-rounded-full !gl-p-0\"\n data-testid=\"ci-action-button\"\n @click.prevent=\"onActionButtonClick\"\n >\n <gl-loading-icon v-if=\"isLoading\" size=\"sm\" class=\"gl-m-2\" />\n <gl-icon v-else :name=\"jobAction.icon\" :size=\"12\" />\n </gl-button>\n <job-action-modal\n v-if=\"hasConfirmationModal\"\n v-model=\"showConfirmationModal\"\n :job-name=\"jobName\"\n :custom-message=\"jobAction.confirmationMessage\"\n @confirm=\"executeJobAction\"\n />\n </div>\n</template>\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_action_button.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_action_button.vue?vue&type=script&lang=js\"","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_dropdown_item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_dropdown_item.vue?vue&type=script&lang=js\"","<script>\nimport { GlDisclosureDropdownItem, GlTooltipDirective } from '@gitlab/ui';\nimport { sprintf } from '~/locale';\nimport { capitalizeFirstCharacter } from '~/lib/utils/text_utility';\nimport delayedJobMixin from '~/ci/mixins/delayed_job_mixin';\nimport JobActionButton from './job_action_button.vue';\nimport JobNameComponent from './job_name_component.vue';\n\nexport default {\n name: 'JobDropdownItem',\n components: {\n JobActionButton,\n JobNameComponent,\n GlDisclosureDropdownItem,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n mixins: [delayedJobMixin],\n props: {\n job: {\n type: Object,\n required: true,\n },\n },\n emits: ['jobActionExecuted'],\n computed: {\n hasJobAction() {\n return Boolean(this.status?.action?.id);\n },\n item() {\n return {\n text: this.job.name,\n href: this.status?.detailsPath || '',\n };\n },\n status() {\n return this.job.detailedStatus || this.job.status;\n },\n tooltipText() {\n const statusTooltip = capitalizeFirstCharacter(this.status?.tooltip);\n\n if (this.isDelayedJob) {\n return sprintf(statusTooltip, { remainingTime: this.remainingTime });\n }\n return statusTooltip;\n },\n },\n};\n</script>\n<template>\n <gl-disclosure-dropdown-item :item=\"item\" class=\"ci-job-component\" data-testid=\"ci-job-item\">\n <template #list-item>\n <div class=\"-gl-my-2 gl-flex gl-items-center gl-justify-between\">\n <job-name-component\n v-gl-tooltip.viewport.left\n :title=\"tooltipText\"\n :name=\"job.name\"\n :status=\"status\"\n data-testid=\"job-name\"\n />\n <job-action-button\n v-if=\"hasJobAction\"\n class=\"gl-ml-6\"\n :job-id=\"job.id\"\n :job-action=\"status.action\"\n :job-name=\"job.name\"\n @jobActionExecuted=\"$emit('jobActionExecuted')\"\n />\n </div>\n </template>\n </gl-disclosure-dropdown-item>\n</template>\n","import { render, staticRenderFns } from \"./job_action_button.vue?vue&type=template&id=6a2f3078\"\nimport script from \"./job_action_button.vue?vue&type=script&lang=js\"\nexport * from \"./job_action_button.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",modifiers:{\"viewport\":true,\"left\":true}}],staticClass:\"gl-h-6 gl-w-6 !gl-rounded-full !gl-p-0\",attrs:{\"title\":_vm.jobAction.title,\"aria-label\":_vm.jobAction.title,\"disabled\":_vm.isLoading,\"size\":\"small\",\"data-testid\":\"ci-action-button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onActionButtonClick.apply(null, arguments)}}},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"gl-m-2\",attrs:{\"size\":\"sm\"}}):_c('gl-icon',{attrs:{\"name\":_vm.jobAction.icon,\"size\":12}})],1),_vm._v(\" \"),(_vm.hasConfirmationModal)?_c('job-action-modal',{attrs:{\"job-name\":_vm.jobName,\"custom-message\":_vm.jobAction.confirmationMessage},on:{\"confirm\":_vm.executeJobAction},model:{value:(_vm.showConfirmationModal),callback:function ($$v) {_vm.showConfirmationModal=$$v},expression:\"showConfirmationModal\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./job_dropdown_item.vue?vue&type=template&id=2ef1d186\"\nimport script from \"./job_dropdown_item.vue?vue&type=script&lang=js\"\nexport * from \"./job_dropdown_item.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import createEventHub from '~/helpers/event_hub_factory';\n\nexport default createEventHub();\n","import { extend } from '../../vue';\nimport { NAME_TABLE_LITE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { props as props$1, idMixin } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { props as props$2, captionMixin } from './helpers/mixin-caption';\nimport { props as props$3, colgroupMixin } from './helpers/mixin-colgroup';\nimport { props as props$4, itemsMixin } from './helpers/mixin-items';\nimport { props as props$5, stackedMixin } from './helpers/mixin-stacked';\nimport { props as props$6, tableRendererMixin } from './helpers/mixin-table-renderer';\nimport { props as props$7, tbodyMixin } from './helpers/mixin-tbody';\nimport { props as props$8, tfootMixin } from './helpers/mixin-tfoot';\nimport { props as props$9, theadMixin } from './helpers/mixin-thead';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n ...props$1,\n ...props$2,\n ...props$3,\n ...props$4,\n ...props$5,\n ...props$6,\n ...props$7,\n ...props$8,\n ...props$9\n}), NAME_TABLE_LITE);\n\n// --- Main component ---\n\n// @vue/component\nconst BTableLite = /*#__PURE__*/extend({\n name: NAME_TABLE_LITE,\n // Order of mixins is important!\n // They are merged from first to last, followed by this component\n mixins: [\n // General mixins\n attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin,\n // Required table mixins\n itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin,\n // Table features mixins\n // These are pretty lightweight, and are useful for lightweight tables\n captionMixin, colgroupMixin],\n props\n\n // Render function is provided by `tableRendererMixin`\n});\n\nexport { BTableLite, props };\n","import { BTableLite } from '../../../vendor/bootstrap-vue/src/components/table/table-lite';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst {\n tableClass\n} = BTableLite.options.props;\nvar script = {\n name: 'GlTableLite',\n components: {\n BTableLite\n },\n inheritAttrs: false,\n props: {\n tableClass,\n fields: {\n type: Array,\n required: false,\n default: null\n },\n stickyHeader: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n computed: {\n stickyHeaderClass() {\n return this.stickyHeader ? 'gl-table--sticky-header' : null;\n },\n localTableClass() {\n return ['gl-table', this.tableClass, this.stickyHeaderClass];\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-table-lite',_vm._g(_vm._b({attrs:{\"table-class\":_vm.localTableClass,\"fields\":_vm.fields},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$scopedSlots)),function(slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)},'b-table-lite',_vm.$attrs,false),_vm.$listeners))};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","(function() {\n var Query, pathScorer, pluckCandidates, scorer, sortCandidates;\n\n scorer = require('./scorer');\n\n pathScorer = require('./pathScorer');\n\n Query = require('./query');\n\n pluckCandidates = function(a) {\n return a.candidate;\n };\n\n sortCandidates = function(a, b) {\n return b.score - a.score;\n };\n\n module.exports = function(candidates, query, options) {\n var bKey, candidate, key, maxInners, maxResults, score, scoreProvider, scoredCandidates, spotLeft, string, usePathScoring, _i, _len;\n scoredCandidates = [];\n key = options.key, maxResults = options.maxResults, maxInners = options.maxInners, usePathScoring = options.usePathScoring;\n spotLeft = (maxInners != null) && maxInners > 0 ? maxInners : candidates.length + 1;\n bKey = key != null;\n scoreProvider = usePathScoring ? pathScorer : scorer;\n for (_i = 0, _len = candidates.length; _i < _len; _i++) {\n candidate = candidates[_i];\n string = bKey ? candidate[key] : candidate;\n if (!string) {\n continue;\n }\n score = scoreProvider.score(string, query, options);\n if (score > 0) {\n scoredCandidates.push({\n candidate: candidate,\n score: score\n });\n if (!--spotLeft) {\n break;\n }\n }\n }\n scoredCandidates.sort(sortCandidates);\n candidates = scoredCandidates.map(pluckCandidates);\n if (maxResults != null) {\n candidates = candidates.slice(0, maxResults);\n }\n return candidates;\n };\n\n}).call(this);\n"],"sourceRoot":""}