{"version":3,"sources":["webpack:///./vue_shared/mixins/timeago.js","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_details/stores/pipelines_store.js","webpack:///./ci/pipelines_page/graphql/queries/get_pipeline_actions.query.graphql","webpack:///./ci/pipelines_page/services/pipelines_service.js","webpack:///./ci/pipelines_page/graphql/queries/get_pipeline_failed_jobs.query.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/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:///./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:///./ci/pipeline_details/graph/constants.js","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/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/event_hub.js"],"names":["methods","timeFormatted","time","format","getTimeago","newDate","timeagoLanguageCode","tooltipTitle","localeDateFormat","asDateTimeFull","components","CiIcon","GlButton","GlLink","GlTooltip","RootCauseAnalysisButton","directives","GlTooltipDirective","SafeHtml","props","job","type","Object","required","canTroubleshootJob","Boolean","data","isLoadingAction","computed","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","tooltipText","sprintf","jobActionTooltipText","jobName","name","isBuildJob","BUILD_KIND","jobRetry","errors","$apollo","mutate","mutation","RetryMrFailedJobMutation","variables","length","Error","$emit","error","createAlert","message","retryError","cannotReadBuild","s__","retry","__","_vm","this","_c","_self","staticClass","attrs","_v","_s","stage","_e","$refs","retryBtn","ref","rawName","on","$event","stopPropagation","retryJob","apply","arguments","JOB_ID_HEADER","JOB_NAME_HEADER","STAGE_HEADER","GlAlert","GlLoadingIcon","GlSprintf","FailedJobDetails","inject","isMaximumJobLimitReached","pipelineIid","Number","pipelinePath","String","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","class","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","default","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","GlAvatar","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","_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","includes","duration","durationFormatted","formatTime","finishedTime","finished_at","finishedAt","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","_t","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","size","prevRefs","has","childRef","op","push","oneQuery","PipelinesStore","constructor","state","pageInfo","isRunningMergeRequestPipeline","storePipelines","isUsingAsyncPipelineCreation","firstPipelineFromTable","firstPipelineFromRequest","created_at","toggleIsRunningPipeline","storeCount","storePagination","pagination","paginationInfo","keys","normalizedHeaders","normalizeHeaders","parseIntPagination","PipelinesService","root","indexOf","getPipelines","scope","page","CancelToken","queryParams","validateParams","cancelationSource","params","cancelToken","token","postAction","post","runMRPipeline","projectId","mergeRequestId","Api","postMergeRequestPipeline","GlPagination","change","Function","showPagination","nextPage","previousPage","component","_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","UserAvatarImage","lazy","linkHref","imgSrc","imgAlt","imgCssClasses","imgCssWrapperClasses","imgSize","tooltipPlacement","popoverUserId","popoverUsername","userId","shouldShowUsername","avatarTooltipText","ANY_TRIGGER_AUTHOR","FILTER_PIPELINES_SEARCH_DELAY","CATALOG_TRACKING_LABEL","GITLAB_UNIVERSITY_TRACKING_LABEL","MIGRATE_FROM_JENKINS_TRACKING_LABEL","icon","toggleText","toggleAriaLabel","isCollapsible","collapsed","anchorId","headerClass","titleClass","bodyClass","persistCollapsedState","isCollapsed","localStorage","getItem","getLocalStorageKeyName","isFormVisible","isContentVisible","$scopedSlots","empty","toggleIcon","toggleLabel","ariaExpandedAttr","displayedCount","isFormUsedAndVisible","form","handler","newVal","toggleCollapse","setItem","showForm","hideForm","toggleForm","footer","Poll","options","notificationCallback","intervalHeader","timeoutID","canPoll","checkConditions","response","headers","parseInt","clearTimeout","setTimeout","makeRequest","successCallback","makeDelayedRequest","delay","_this2","_this3","resource","method","errorCallback","stop","enable","restart","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","InternalEvents","jobStatusGroup","jobId","jobGid","isBuild","resourceId","convertToGraphQLId","TYPENAME_CI_BUILD","jobFailed","shouldDisplayButton","trackEvent","callDuo","sendDuoChatCommand","question","reportToSentry","failureType","Sentry","tags","__vue_script__","prop","x","totalItems","limits","xs","sm","md","linkGen","prevPage","prevText","nextText","ellipsisText","labelNav","labelFirstPage","labelPrevPage","labelNextPage","labelLastPage","labelPage","align","left","breakpoint","minTotalPagesToCollapse","totalPages","isCompactPagination","Math","max","ceil","paginationLimit","fill","classes","center","right","isFillAlign","diff","maxAdjacentPages","firstPage","shouldCollapseLeftSide","min","lastPage","shouldCollapseRightSide","from","to","getPageItem","splice","getEllipsisItem","pageIsDisabled","prevPageIsDisabled","labelForPage","nextPageIsDisabled","isLinkBased","addEventListener","setBreakpoint","removeEventListener","commonAttrs","undefined","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","names","concat","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","created","resp","_resp$headers","updatePipelinesEvent","CustomEvent","detail","pipelineCount","$el","parentElement","dispatchEvent","onClickRunPipeline","tryRunPipeline","modal","pipelineIdKey","actionPrimary","actionCancel","runPipelinePopoverTitle","runPipelinePopoverDescription","runPipelineText","emptyStateTitle","mrPipelinesDocsPath","anchor","userPermissionsDocsPath","runPipelinesInTheParentProjectHelpPath","createEventHub"],"mappings":"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","file":"1200.a72e5437.chunk.js","sourcesContent":["import {\n getTimeago,\n localeDateFormat,\n newDate,\n timeagoLanguageCode,\n} from '~/lib/utils/datetime_utility';\n\n/**\n * Mixin with time ago methods used in some vue components\n */\nexport default {\n methods: {\n timeFormatted(time, format) {\n const timeago = getTimeago(format);\n\n return timeago.format(newDate(time), timeagoLanguageCode);\n },\n\n tooltipTitle(time) {\n return localeDateFormat.asDateTimeFull.format(newDate(time));\n },\n },\n};\n","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","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\":\"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","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","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","\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","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","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","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\":\"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","import createEventHub from '~/helpers/event_hub_factory';\n\nexport default createEventHub();\n"],"sourceRoot":""}