{"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":""}