{"version":3,"sources":["webpack:///./ci/pipeline_mini_graph/graphql/mutations/job_play.mutation.graphql","webpack:///./ci/pipeline_mini_graph/graphql/mutations/job_unschedule.mutation.graphql","webpack:///./ci/pipeline_mini_graph/graphql/queries/get_pipeline_stage_jobs.query.graphql","webpack:///./ci/pipeline_mini_graph/pipeline_mini_graph.vue","webpack:///./ci/pipeline_mini_graph/utils/data_utils.js","webpack:///./ci/pipeline_mini_graph/downstream_pipelines.vue","webpack:///./ci/pipeline_mini_graph/downstream_pipelines.vue?f504","webpack:///ci/pipeline_mini_graph/downstream_pipelines.vue","webpack:///./ci/pipeline_mini_graph/downstream_pipelines.vue?0382","webpack:///./ci/pipeline_mini_graph/pipeline_stage_dropdown.vue?5247","webpack:///ci/pipeline_mini_graph/pipeline_stage_dropdown.vue","webpack:///./ci/pipeline_mini_graph/pipeline_stages.vue?789d","webpack:///ci/pipeline_mini_graph/pipeline_stages.vue","webpack:///./ci/pipeline_mini_graph/pipeline_stage_dropdown.vue?93d4","webpack:///./ci/pipeline_mini_graph/pipeline_stage_dropdown.vue","webpack:///./ci/pipeline_mini_graph/pipeline_stages.vue?35b5","webpack:///./ci/pipeline_mini_graph/pipeline_stages.vue","webpack:///./ci/pipeline_mini_graph/pipeline_mini_graph.vue?7660","webpack:///ci/pipeline_mini_graph/pipeline_mini_graph.vue","webpack:///./ci/pipeline_mini_graph/pipeline_mini_graph.vue?73e2","webpack:///./ci/pipeline_mini_graph/graphql/mutations/job_cancel.mutation.graphql","webpack:///./ci/pipeline_mini_graph/graphql/fragments/job.fragment.graphql","webpack:///./ci/mixins/delayed_job_mixin.js","webpack:///./ci/constants.js","webpack:///./ci/common/private/job_name_component.vue","webpack:///./ci/common/private/job_name_component.vue?272b","webpack:///ci/common/private/job_name_component.vue","webpack:///./ci/common/private/job_name_component.vue?453a","webpack:///./ci/pipeline_mini_graph/graphql/mutations/job_retry.mutation.graphql","webpack:///./ci/common/private/job_dropdown_item.vue","webpack:///./ci/common/private/job_action_modal.vue?21ee","webpack:///ci/common/private/job_action_modal.vue","webpack:///./ci/common/private/job_action_modal.vue?c514","webpack:///./ci/common/private/job_action_modal.vue","webpack:///ci/common/private/job_action_button.vue","webpack:///./ci/common/private/job_action_button.vue?28db","webpack:///./ci/common/private/job_dropdown_item.vue?1d97","webpack:///ci/common/private/job_dropdown_item.vue","webpack:///./ci/common/private/job_action_button.vue?6d71","webpack:///./ci/common/private/job_action_button.vue","webpack:///./ci/common/private/job_dropdown_item.vue?6f73"],"names":["doc","loc","source","names","definitions","concat","filter","def","kind","name","value","definitionRefs","findOperation","i","length","element","forEach","refs","Set","collectFragmentReferences","node","add","type","selectionSet","selections","selection","variableDefinitions","module","exports","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","size","prevRefs","has","childRef","op","push","oneQuery","hasDetailedStatus","item","Boolean","detailedStatus","directives","GlTooltip","GlTooltipDirective","components","CiIcon","props","pipelines","Array","required","default","pipelinePath","String","data","maxRenderedPipelines","computed","totalPipelineCount","pipelinesTrimmed","slice","shouldRenderCounter","counterLabel","counterTooltipText","sprintf","s__","methods","pipelineTooltipText","pipeline","_pipeline$project","_pipeline$detailedSta","project","label","_vm","this","_c","_self","staticClass","_l","rawName","modifiers","key","id","attrs","_v","title","expression","_s","_e","i18n","loadingText","__","mergeTrainMessage","stage","stageJobsFetchError","viewStageLabel","GlButton","GlDisclosureDropdown","GlLoadingIcon","JobDropdownItem","isMergeTrain","Object","emits","isDropdownOpen","stageJobs","apollo","context","getQueryHeaders","graphqlEtag","query","getPipelineStageJobsQuery","variables","skip","pollInterval","PIPELINE_POLL_INTERVAL_DEFAULT","update","_data$ciPipelineStage","ciPipelineStage","jobs","nodes","error","createAlert","message","$options","reportToSentry","dropdownHeaderText","dropdownTooltipTitle","tooltip","graphqlEtagStagePath","getIdFromGraphQLId","isLoading","$apollo","queries","loading","mounted","toggleQueryPollingByVisibility","onHideDropdown","stopPolling","onShowDropdown","startPolling","$emit","stageAriaLabel","PipelineStageDropdown","on","scopedSlots","_u","fn","proxy","$event","stopPropagation","job","stages","arrowStyles","DownstreamPipelines","GlIcon","PipelineStages","downstreamPipelines","pipelineStages","upstreamPipeline","formattedDownstreamPipelines","map","p","details","path","convertToGraphQLId","TYPENAME_CI_PIPELINE","status","formattedStages","s","TYPENAME_CI_STAGE","icon","hasDownstreamPipelines","latestDownstreamPipelines","hasUpstreamPipeline","_this$upstreamPipelin","keepLatestDownstreamPipelines","upstreamPipelineStatus","_this$upstreamPipelin2","_this$upstreamPipelin3","upstreamTooltipText","_this$upstreamPipelin4","_this$upstreamPipelin5","class","remainingTime","formatTime","remainingTimeIntervalId","startRemainingTimeInterval","beforeDestroy","clearInterval","isDelayedJob","_this$job","_this$job2","scheduled","scheduledAt","scheduledTime","scheduled_at","watch","_this","updateRemainingTime","setInterval","remainingMilliseconds","calculateRemainingMilliseconds","forwardDeploymentFailureModalId","BUTTON_TOOLTIP_RETRY","BUTTON_TOOLTIP_CANCEL","BUTTON_TOOLTIP_DELETE","FILTER_TAG_IDENTIFIER","JOB_GRAPHQL_ERRORS","jobMutationErrorText","jobQueryErrorText","ICONS","TAG","MR","BRANCH","RETRY","SUCCESS","SUCCESS_STATUS","PASSED_STATUS","MANUAL_STATUS","PIPELINE_ID_KEY","PIPELINE_IID_KEY","RAW_TEXT_WARNING","TRACKING_CATEGORIES","table","tabs","search","failed","tests","listbox","PIPELINE_POLL_INTERVAL_BACKOFF","FOUR_MINUTES_IN_MS","NETWORK_STATUS_READY","iconSize","Number","component","confirmationText","actionCancel","text","GlModal","model","prop","event","customMessage","visible","jobName","modalText","confirmButton","errors","cancelJob","playJob","retryJob","unscheduleJob","JOB_ACTIONS","cancel","dataName","mutation","cancelJobMutation","play","playJobMutation","retry","retryJobMutation","unscheduleJobMutation","JobActionModal","jobId","jobAction","showConfirmationModal","actionType","hasConfirmationModal","_this$jobAction","confirmationMessage","onActionButtonClick","executeJobAction","mutate","Error","join","JobActionButton","preventDefault","apply","arguments","callback","$$v","JobNameComponent","GlDisclosureDropdownItem","mixins","delayedJobMixin","hasJobAction","_this$status","action","_this$status2","href","detailsPath","tooltipText","_this$status3","statusTooltip","capitalizeFirstCharacter"],"mappings":"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","file":"104.fb1c1a00.chunk.js","sourcesContent":["\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"playPipelineMiniGraphJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiProcessableID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobPlay\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":182}};\n doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation playPipelineMiniGraphJob($id: CiProcessableID!) {\\n jobPlay(input: { id: $id }) {\\n job {\\n ...Job\\n }\\n errors\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"playPipelineMiniGraphJob\"] = oneQuery(doc, \"playPipelineMiniGraphJob\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"unschedulePipelineMiniGraphJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiBuildID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobUnschedule\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":188}};\n doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation unschedulePipelineMiniGraphJob($id: CiBuildID!) {\\n jobUnschedule(input: { id: $id }) {\\n job {\\n ...Job\\n }\\n errors\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"unschedulePipelineMiniGraphJob\"] = oneQuery(doc, \"unschedulePipelineMiniGraphJob\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getPipelineStageJobs\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiStageID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ciPipelineStage\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobs\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"action\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"confirmationMessage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailsPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasDetails\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tooltip\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scheduled\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scheduledAt\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":459}};\n doc.loc.source = {\"body\":\"query getPipelineStageJobs($id: CiStageID!) {\\n ciPipelineStage(id: $id) {\\n id\\n jobs {\\n nodes {\\n id\\n detailedStatus {\\n id\\n action {\\n id\\n confirmationMessage\\n icon\\n path\\n title\\n }\\n detailsPath\\n group\\n hasDetails\\n icon\\n tooltip\\n }\\n name\\n scheduled\\n scheduledAt\\n }\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"getPipelineStageJobs\"] = oneQuery(doc, \"getPipelineStageJobs\");\n \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"data-testid\":\"pipeline-mini-graph\"}},[(_vm.hasUpstreamPipeline)?_c('ci-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"gl-align-middle\",attrs:{\"title\":_vm.upstreamTooltipText,\"aria-label\":_vm.upstreamTooltipText,\"status\":_vm.upstreamPipelineStatus,\"show-tooltip\":false,\"data-testid\":\"pipeline-mini-graph-upstream\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasUpstreamPipeline)?_c('gl-icon',{class:_vm.$options.arrowStyles,attrs:{\"name\":\"arrow-right\",\"data-testid\":\"upstream-arrow-icon\",\"variant\":\"subtle\"}}):_vm._e(),_vm._v(\" \"),_c('pipeline-stages',{attrs:{\"is-merge-train\":_vm.isMergeTrain,\"stages\":_vm.formattedStages},on:{\"jobActionExecuted\":function($event){return _vm.$emit('jobActionExecuted')},\"miniGraphStageClick\":function($event){return _vm.$emit('miniGraphStageClick')}}}),_vm._v(\" \"),(_vm.hasDownstreamPipelines)?_c('gl-icon',{class:_vm.$options.arrowStyles,attrs:{\"name\":\"arrow-right\",\"data-testid\":\"downstream-arrow-icon\",\"variant\":\"subtle\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasDownstreamPipelines)?_c('downstream-pipelines',{attrs:{\"pipelines\":_vm.latestDownstreamPipelines,\"pipeline-path\":_vm.pipelinePath,\"data-testid\":\"pipeline-mini-graph-downstream\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { convertToGraphQLId } from '~/graphql_shared/utils';\nimport { TYPENAME_CI_PIPELINE, TYPENAME_CI_STAGE } from '~/graphql_shared/constants';\n\nconst hasDetailedStatus = (item) => {\n return Boolean(item.detailedStatus);\n};\n\n/**\n * Converts REST shaped downstreams to GraphQL shape\n *\n * @param {Array} pipelines - The downstream pipelines passed into legacy pipeline mini graph\n * @returns {Array} - GraphQL shaped downstream pipelines\n */\nexport const normalizeDownstreamPipelines = (pipelines) => {\n return pipelines.map((p) => {\n if (hasDetailedStatus(p)) {\n return p;\n }\n\n const { id, details, path, project } = p;\n return {\n id: convertToGraphQLId(TYPENAME_CI_PIPELINE, id),\n detailedStatus: details?.status,\n path,\n project: {\n name: project.name,\n },\n };\n });\n};\n\n/**\n * Converts REST shaped pipeline stages to GraphQL shape\n *\n * @param {Array} stages - The pipeline stages passed into legacy pipeline mini graph\n * @returns {Array} - GraphQL shaped pipeline stages\n */\nexport const normalizeStages = (stages) => {\n return stages.map((s) => {\n if (hasDetailedStatus(s)) {\n return s;\n }\n\n const { id, name, status } = s;\n return {\n id: convertToGraphQLId(TYPENAME_CI_STAGE, id),\n detailedStatus: {\n icon: status.icon,\n label: status.label,\n tooltip: status.tooltip,\n },\n name,\n };\n });\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.pipelines)?_c('span',{staticClass:\"gl-inline-flex gl-gap-2 gl-align-middle\"},[_vm._l((_vm.pipelinesTrimmed),function(pipeline){return _c('ci-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],key:pipeline.id,attrs:{\"title\":_vm.pipelineTooltipText(pipeline),\"status\":pipeline.detailedStatus,\"show-tooltip\":false,\"data-testid\":\"downstream-pipelines\"}})}),_vm._v(\" \"),(_vm.shouldRenderCounter)?_c('a',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:({ title: _vm.counterTooltipText }),expression:\"{ title: counterTooltipText }\"}],staticClass:\"gl-inline-flex gl-h-6 gl-w-7 gl-items-center gl-justify-center gl-rounded-pill gl-bg-gray-50 gl-text-sm gl-text-subtle gl-no-underline\",attrs:{\"title\":_vm.counterTooltipText,\"href\":_vm.pipelinePath,\"data-testid\":\"downstream-pipeline-counter\"}},[_vm._v(\"\\n \"+_vm._s(_vm.counterLabel)+\"\\n \")]):_vm._e()],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./downstream_pipelines.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./downstream_pipelines.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective } from '@gitlab/ui';\nimport { sprintf, s__ } from '~/locale';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\n/**\n * Renders the downstream portion of the pipeline mini graph.\n */\nexport default {\n name: 'DownstreamPipelines',\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n components: {\n CiIcon,\n },\n props: {\n pipelines: {\n type: Array,\n required: false,\n default: () => [],\n },\n pipelinePath: {\n type: String,\n required: false,\n default: '',\n },\n },\n data() {\n return {\n maxRenderedPipelines: 3,\n };\n },\n computed: {\n totalPipelineCount() {\n return this.pipelines.length;\n },\n pipelinesTrimmed() {\n return this.totalPipelineCount > this.maxRenderedPipelines\n ? this.pipelines.slice(0, this.maxRenderedPipelines)\n : this.pipelines;\n },\n shouldRenderCounter() {\n return this.pipelines.length > this.maxRenderedPipelines;\n },\n counterLabel() {\n return `+${this.pipelines.length - this.maxRenderedPipelines}`;\n },\n counterTooltipText() {\n return sprintf(s__('Pipelines|%{counterLabel} more downstream pipelines'), {\n counterLabel: this.counterLabel,\n });\n },\n },\n methods: {\n pipelineTooltipText(pipeline) {\n return `${pipeline?.project?.name} - ${pipeline?.detailedStatus?.label}`;\n },\n },\n};\n</script>\n\n<template>\n <span v-if=\"pipelines\" class=\"gl-inline-flex gl-gap-2 gl-align-middle\">\n <ci-icon\n v-for=\"pipeline in pipelinesTrimmed\"\n :key=\"pipeline.id\"\n v-gl-tooltip.hover\n :title=\"pipelineTooltipText(pipeline)\"\n :status=\"pipeline.detailedStatus\"\n :show-tooltip=\"false\"\n data-testid=\"downstream-pipelines\"\n />\n\n <a\n v-if=\"shouldRenderCounter\"\n v-gl-tooltip=\"{ title: counterTooltipText }\"\n :title=\"counterTooltipText\"\n :href=\"pipelinePath\"\n class=\"gl-inline-flex gl-h-6 gl-w-7 gl-items-center gl-justify-center gl-rounded-pill gl-bg-gray-50 gl-text-sm gl-text-subtle gl-no-underline\"\n data-testid=\"downstream-pipeline-counter\"\n >\n {{ counterLabel }}\n </a>\n </span>\n</template>\n","import { render, staticRenderFns } from \"./downstream_pipelines.vue?vue&type=template&id=f55fafbe\"\nimport script from \"./downstream_pipelines.vue?vue&type=script&lang=js\"\nexport * from \"./downstream_pipelines.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_stage_dropdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_stage_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlDisclosureDropdown, GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { s__, __, sprintf } from '~/locale';\nimport { reportToSentry } from '~/ci/utils';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport { getQueryHeaders, toggleQueryPollingByVisibility } from '~/ci/pipeline_details/graph/utils';\nimport { graphqlEtagStagePath } from '~/ci/pipeline_details/utils';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { PIPELINE_POLL_INTERVAL_DEFAULT } from '~/ci/constants';\nimport JobDropdownItem from '~/ci/common/private/job_dropdown_item.vue';\nimport getPipelineStageJobsQuery from './graphql/queries/get_pipeline_stage_jobs.query.graphql';\n\nexport default {\n name: 'PipelineStageDropdown',\n i18n: {\n loadingText: __('Loading...'),\n mergeTrainMessage: s__('Pipeline|Merge train pipeline jobs can not be retried'),\n stage: __('Stage'),\n stageJobsFetchError: __('There was a problem fetching the pipeline stage jobs.'),\n viewStageLabel: __('View Stage: %{title}'),\n },\n components: {\n CiIcon,\n GlButton,\n GlDisclosureDropdown,\n GlLoadingIcon,\n JobDropdownItem,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n isMergeTrain: {\n type: Boolean,\n required: false,\n default: false,\n },\n stage: {\n type: Object,\n required: true,\n },\n },\n emits: ['jobActionExecuted', 'miniGraphStageClick'],\n data() {\n return {\n isDropdownOpen: false,\n stageJobs: [],\n };\n },\n apollo: {\n stageJobs: {\n context() {\n return getQueryHeaders(this.graphqlEtag);\n },\n query: getPipelineStageJobsQuery,\n variables() {\n return {\n id: this.stage.id,\n };\n },\n skip() {\n return !this.isDropdownOpen;\n },\n pollInterval: PIPELINE_POLL_INTERVAL_DEFAULT,\n update(data) {\n return data?.ciPipelineStage?.jobs?.nodes || [];\n },\n error(error) {\n createAlert({ message: this.$options.i18n.stageJobsFetchError });\n reportToSentry(this.$options.name, error);\n },\n },\n },\n computed: {\n dropdownHeaderText() {\n return `${this.$options.i18n.stage}: ${this.stage.name}`;\n },\n dropdownTooltipTitle() {\n return this.isDropdownOpen ? '' : `${this.stage.name}: ${this.stage.detailedStatus.tooltip}`;\n },\n graphqlEtag() {\n return graphqlEtagStagePath('/api/graphql', getIdFromGraphQLId(this.stage.id));\n },\n isLoading() {\n return this.$apollo.queries.stageJobs.loading;\n },\n },\n mounted() {\n toggleQueryPollingByVisibility(this.$apollo.queries.stageJobs);\n },\n methods: {\n onHideDropdown() {\n this.isDropdownOpen = false;\n this.$apollo.queries.stageJobs.stopPolling();\n },\n onShowDropdown() {\n this.isDropdownOpen = true;\n this.$apollo.queries.stageJobs.startPolling(PIPELINE_POLL_INTERVAL_DEFAULT);\n\n // used for tracking in the pipeline table\n this.$emit('miniGraphStageClick');\n },\n stageAriaLabel(title) {\n return sprintf(this.$options.i18n.viewStageLabel, { title });\n },\n },\n};\n</script>\n\n<template>\n <gl-disclosure-dropdown\n data-testid=\"pipeline-mini-graph-dropdown\"\n :aria-label=\"stageAriaLabel(stage.name)\"\n fluid-width\n @hidden=\"onHideDropdown\"\n @shown=\"onShowDropdown\"\n >\n <template #toggle>\n <gl-button\n v-gl-tooltip.hover=\"dropdownTooltipTitle\"\n data-testid=\"pipeline-mini-graph-dropdown-toggle\"\n :title=\"dropdownTooltipTitle\"\n class=\"!gl-rounded-full\"\n variant=\"link\"\n >\n <ci-icon :status=\"stage.detailedStatus\" :show-tooltip=\"false\" :use-link=\"false\" />\n </gl-button>\n </template>\n\n <template #header>\n <div\n data-testid=\"pipeline-stage-dropdown-menu-title\"\n class=\"gl-flex gl-min-h-8 gl-items-center gl-border-b-1 gl-border-b-dropdown !gl-p-4 gl-text-sm gl-font-bold gl-leading-1 gl-border-b-solid\"\n >\n <span>{{ dropdownHeaderText }}</span>\n </div>\n </template>\n\n <div v-if=\"isLoading\" class=\"gl-flex gl-gap-3 gl-px-4 gl-py-3\">\n <gl-loading-icon size=\"sm\" />\n <span class=\"gl-leading-normal\">{{ $options.i18n.loadingText }}</span>\n </div>\n <ul\n v-else\n class=\"gl-m-0 gl-w-34 gl-overflow-y-auto gl-p-0\"\n data-testid=\"pipeline-mini-graph-dropdown-menu-list\"\n @click.stop\n >\n <job-dropdown-item\n v-for=\"job in stageJobs\"\n :key=\"job.id\"\n :dropdown-length=\"stageJobs.length\"\n :job=\"job\"\n @jobActionExecuted=\"$emit('jobActionExecuted')\"\n />\n </ul>\n\n <template #footer>\n <div\n v-if=\"!isLoading && isMergeTrain\"\n class=\"gl-border-t gl-px-4 gl-py-3 gl-text-sm gl-text-subtle\"\n data-testid=\"merge-train-message\"\n >\n {{ $options.i18n.mergeTrainMessage }}\n </div>\n </template>\n </gl-disclosure-dropdown>\n</template>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_stages.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_stages.vue?vue&type=script&lang=js\"","<script>\nimport PipelineStageDropdown from './pipeline_stage_dropdown.vue';\n/**\n * Renders the pipeline stages portion of the pipeline mini graph.\n */\nexport default {\n name: 'PipelineStages',\n components: {\n PipelineStageDropdown,\n },\n props: {\n isMergeTrain: {\n type: Boolean,\n required: false,\n default: false,\n },\n stages: {\n type: Array,\n required: true,\n },\n },\n emits: ['jobActionExecuted', 'miniGraphStageClick'],\n};\n</script>\n<template>\n <div class=\"gl-inline gl-align-middle\">\n <div\n v-for=\"stage in stages\"\n :key=\"stage.id\"\n class=\"pipeline-mini-graph-stage-container dropdown gl-my-1 gl-mr-2 gl-inline-flex gl-align-middle\"\n >\n <pipeline-stage-dropdown\n :stage=\"stage\"\n :is-merge-train=\"isMergeTrain\"\n @jobActionExecuted=\"$emit('jobActionExecuted')\"\n @miniGraphStageClick=\"$emit('miniGraphStageClick')\"\n />\n </div>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_stage_dropdown.vue?vue&type=template&id=438e18a5\"\nimport script from \"./pipeline_stage_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_stage_dropdown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-disclosure-dropdown',{attrs:{\"data-testid\":\"pipeline-mini-graph-dropdown\",\"aria-label\":_vm.stageAriaLabel(_vm.stage.name),\"fluid-width\":\"\"},on:{\"hidden\":_vm.onHideDropdown,\"shown\":_vm.onShowDropdown},scopedSlots:_vm._u([{key:\"toggle\",fn:function(){return [_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",value:(_vm.dropdownTooltipTitle),expression:\"dropdownTooltipTitle\",modifiers:{\"hover\":true}}],staticClass:\"!gl-rounded-full\",attrs:{\"data-testid\":\"pipeline-mini-graph-dropdown-toggle\",\"title\":_vm.dropdownTooltipTitle,\"variant\":\"link\"}},[_c('ci-icon',{attrs:{\"status\":_vm.stage.detailedStatus,\"show-tooltip\":false,\"use-link\":false}})],1)]},proxy:true},{key:\"header\",fn:function(){return [_c('div',{staticClass:\"gl-flex gl-min-h-8 gl-items-center gl-border-b-1 gl-border-b-dropdown !gl-p-4 gl-text-sm gl-font-bold gl-leading-1 gl-border-b-solid\",attrs:{\"data-testid\":\"pipeline-stage-dropdown-menu-title\"}},[_c('span',[_vm._v(_vm._s(_vm.dropdownHeaderText))])])]},proxy:true},{key:\"footer\",fn:function(){return [(!_vm.isLoading && _vm.isMergeTrain)?_c('div',{staticClass:\"gl-border-t gl-px-4 gl-py-3 gl-text-sm gl-text-subtle\",attrs:{\"data-testid\":\"merge-train-message\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.mergeTrainMessage)+\"\\n \")]):_vm._e()]},proxy:true}])},[_vm._v(\" \"),_vm._v(\" \"),(_vm.isLoading)?_c('div',{staticClass:\"gl-flex gl-gap-3 gl-px-4 gl-py-3\"},[_c('gl-loading-icon',{attrs:{\"size\":\"sm\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-leading-normal\"},[_vm._v(_vm._s(_vm.$options.i18n.loadingText))])],1):_c('ul',{staticClass:\"gl-m-0 gl-w-34 gl-overflow-y-auto gl-p-0\",attrs:{\"data-testid\":\"pipeline-mini-graph-dropdown-menu-list\"},on:{\"click\":function($event){$event.stopPropagation();}}},_vm._l((_vm.stageJobs),function(job){return _c('job-dropdown-item',{key:job.id,attrs:{\"dropdown-length\":_vm.stageJobs.length,\"job\":job},on:{\"jobActionExecuted\":function($event){return _vm.$emit('jobActionExecuted')}}})}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./pipeline_stages.vue?vue&type=template&id=6672dfcb\"\nimport script from \"./pipeline_stages.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_stages.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-inline gl-align-middle\"},_vm._l((_vm.stages),function(stage){return _c('div',{key:stage.id,staticClass:\"pipeline-mini-graph-stage-container dropdown gl-my-1 gl-mr-2 gl-inline-flex gl-align-middle\"},[_c('pipeline-stage-dropdown',{attrs:{\"stage\":stage,\"is-merge-train\":_vm.isMergeTrain},on:{\"jobActionExecuted\":function($event){return _vm.$emit('jobActionExecuted')},\"miniGraphStageClick\":function($event){return _vm.$emit('miniGraphStageClick')}}})],1)}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_mini_graph.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_mini_graph.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { keepLatestDownstreamPipelines } from '~/ci/pipeline_details/utils/parsing_utils';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport { normalizeDownstreamPipelines, normalizeStages } from './utils/data_utils';\nimport DownstreamPipelines from './downstream_pipelines.vue';\nimport PipelineStages from './pipeline_stages.vue';\n/**\n * Renders the pipeline mini graph.\n * All REST data passed in is formatted to GraphQL.\n */\nexport default {\n name: 'PipelineMiniGraph',\n arrowStyles: ['arrow-icon gl-inline-block gl-mx-1 gl-text-subtle !gl-align-middle'],\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n components: {\n CiIcon,\n DownstreamPipelines,\n GlIcon,\n PipelineStages,\n },\n props: {\n downstreamPipelines: {\n type: Array,\n required: false,\n default: () => [],\n },\n isMergeTrain: {\n type: Boolean,\n required: false,\n default: false,\n },\n pipelinePath: {\n type: String,\n required: false,\n default: '',\n },\n pipelineStages: {\n type: Array,\n required: true,\n },\n upstreamPipeline: {\n type: Object,\n required: false,\n default: () => {},\n },\n },\n emits: ['jobActionExecuted', 'miniGraphStageClick'],\n computed: {\n formattedDownstreamPipelines() {\n return normalizeDownstreamPipelines(this.downstreamPipelines);\n },\n formattedStages() {\n return normalizeStages(this.pipelineStages);\n },\n hasDownstreamPipelines() {\n return Boolean(this.latestDownstreamPipelines.length);\n },\n hasUpstreamPipeline() {\n return this.upstreamPipeline?.id;\n },\n latestDownstreamPipelines() {\n return keepLatestDownstreamPipelines(this.formattedDownstreamPipelines);\n },\n upstreamPipelineStatus() {\n return this.upstreamPipeline?.detailedStatus || this.upstreamPipeline?.details?.status;\n },\n upstreamTooltipText() {\n return `${this.upstreamPipeline?.project?.name} - ${this.upstreamPipelineStatus?.label}`;\n },\n },\n};\n</script>\n\n<template>\n <div data-testid=\"pipeline-mini-graph\">\n <ci-icon\n v-if=\"hasUpstreamPipeline\"\n v-gl-tooltip.hover\n :title=\"upstreamTooltipText\"\n :aria-label=\"upstreamTooltipText\"\n :status=\"upstreamPipelineStatus\"\n :show-tooltip=\"false\"\n class=\"gl-align-middle\"\n data-testid=\"pipeline-mini-graph-upstream\"\n />\n <gl-icon\n v-if=\"hasUpstreamPipeline\"\n :class=\"$options.arrowStyles\"\n name=\"arrow-right\"\n data-testid=\"upstream-arrow-icon\"\n variant=\"subtle\"\n />\n <pipeline-stages\n :is-merge-train=\"isMergeTrain\"\n :stages=\"formattedStages\"\n @jobActionExecuted=\"$emit('jobActionExecuted')\"\n @miniGraphStageClick=\"$emit('miniGraphStageClick')\"\n />\n <gl-icon\n v-if=\"hasDownstreamPipelines\"\n :class=\"$options.arrowStyles\"\n name=\"arrow-right\"\n data-testid=\"downstream-arrow-icon\"\n variant=\"subtle\"\n />\n <downstream-pipelines\n v-if=\"hasDownstreamPipelines\"\n :pipelines=\"latestDownstreamPipelines\"\n :pipeline-path=\"pipelinePath\"\n data-testid=\"pipeline-mini-graph-downstream\"\n />\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_mini_graph.vue?vue&type=template&id=e9abb0ce\"\nimport script from \"./pipeline_mini_graph.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_mini_graph.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"cancelPipelineMiniGraphJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiBuildID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobCancel\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":180}};\n doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation cancelPipelineMiniGraphJob($id: CiBuildID!) {\\n jobCancel(input: { id: $id }) {\\n job {\\n ...Job\\n }\\n errors\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"cancelPipelineMiniGraphJob\"] = oneQuery(doc, \"cancelPipelineMiniGraphJob\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiJob\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"action\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"confirmationMessage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":149}};\n doc.loc.source = {\"body\":\"fragment Job on CiJob {\\n id\\n detailedStatus {\\n id\\n action {\\n id\\n confirmationMessage\\n icon\\n path\\n title\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"Job\"] = oneQuery(doc, \"Job\");\n \n","import { calculateRemainingMilliseconds, formatTime } from '~/lib/utils/datetime_utility';\n\nexport default {\n data() {\n return {\n remainingTime: formatTime(0),\n remainingTimeIntervalId: null,\n };\n },\n\n mounted() {\n this.startRemainingTimeInterval();\n },\n\n beforeDestroy() {\n if (this.remainingTimeIntervalId) {\n clearInterval(this.remainingTimeIntervalId);\n }\n },\n\n computed: {\n isDelayedJob() {\n return this.job?.scheduled || this.job?.scheduledAt;\n },\n scheduledTime() {\n return this.job.scheduled_at || this.job.scheduledAt;\n },\n },\n\n watch: {\n isDelayedJob() {\n this.startRemainingTimeInterval();\n },\n },\n\n methods: {\n startRemainingTimeInterval() {\n if (this.remainingTimeIntervalId) {\n clearInterval(this.remainingTimeIntervalId);\n }\n\n if (this.isDelayedJob) {\n this.updateRemainingTime();\n this.remainingTimeIntervalId = setInterval(() => this.updateRemainingTime(), 1000);\n }\n },\n\n updateRemainingTime() {\n const remainingMilliseconds = calculateRemainingMilliseconds(this.scheduledTime);\n this.remainingTime = formatTime(remainingMilliseconds);\n },\n },\n};\n","import { __, s__ } from '~/locale';\n\nexport const forwardDeploymentFailureModalId = 'forward-deployment-failure';\n\nexport const BUTTON_TOOLTIP_RETRY = __('Retry all failed or cancelled jobs');\nexport const BUTTON_TOOLTIP_CANCEL = __('Cancel the running pipeline');\nexport const BUTTON_TOOLTIP_DELETE = __('Delete the pipeline');\n\nexport const FILTER_TAG_IDENTIFIER = 'tag';\n\nexport const JOB_GRAPHQL_ERRORS = {\n jobMutationErrorText: __('There was an error running the job. Please try again.'),\n jobQueryErrorText: __('There was an error fetching the job.'),\n};\n\nexport const ICONS = {\n TAG: 'tag',\n MR: 'merge-request',\n BRANCH: 'branch',\n RETRY: 'retry',\n SUCCESS: 'success',\n};\n\nexport const SUCCESS_STATUS = 'SUCCESS';\nexport const PASSED_STATUS = 'passed';\nexport const MANUAL_STATUS = 'manual';\n\nexport const PIPELINE_ID_KEY = 'id';\nexport const PIPELINE_IID_KEY = 'iid';\n\nexport const RAW_TEXT_WARNING = s__(\n 'Pipeline|Raw text search is not currently supported. Please use the available search tokens.',\n);\n\nexport const TRACKING_CATEGORIES = {\n table: 'pipelines_table_component',\n tabs: 'pipelines_filter_tabs',\n search: 'pipelines_filtered_search',\n failed: 'pipeline_failed_jobs_tab',\n tests: 'pipeline_tests_tab',\n listbox: 'pipeline_id_iid_listbox',\n};\n\n// For pipeline polling\nexport const PIPELINE_POLL_INTERVAL_DEFAULT = 1000 * 8;\nexport const PIPELINE_POLL_INTERVAL_BACKOFF = 1.2;\nexport const FOUR_MINUTES_IN_MS = 1000 * 60 * 4;\n\nexport const NETWORK_STATUS_READY = 7;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"gl-flex gl-items-center\"},[_c('ci-icon',{staticClass:\"gl-leading-0\",attrs:{\"size\":_vm.iconSize,\"status\":_vm.status,\"show-tooltip\":false,\"use-link\":false}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-line-clamp-2 gl-pl-3 gl-wrap-anywhere\",attrs:{\"title\":_vm.name}},[_vm._v(\"\\n \"+_vm._s(_vm.name)+\"\\n \")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_name_component.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_name_component.vue?vue&type=script&lang=js\"","<script>\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\n\n/**\n * Component that renders both the CI icon status and the job name.\n * Used in\n * - Badge component\n * - Dropdown badge components\n */\nexport default {\n components: {\n CiIcon,\n },\n props: {\n name: {\n type: String,\n required: true,\n },\n status: {\n type: Object,\n required: true,\n },\n iconSize: {\n type: Number,\n required: false,\n default: 16,\n },\n },\n};\n</script>\n<template>\n <span class=\"gl-flex gl-items-center\">\n <ci-icon\n :size=\"iconSize\"\n :status=\"status\"\n :show-tooltip=\"false\"\n :use-link=\"false\"\n class=\"gl-leading-0\"\n />\n <span class=\"gl-line-clamp-2 gl-pl-3 gl-wrap-anywhere\" :title=\"name\">\n {{ name }}\n </span>\n </span>\n</template>\n","import { render, staticRenderFns } from \"./job_name_component.vue?vue&type=template&id=10612be2\"\nimport script from \"./job_name_component.vue?vue&type=script&lang=js\"\nexport * from \"./job_name_component.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"retryPipelineMiniGraphJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiProcessableID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobRetry\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":184}};\n doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation retryPipelineMiniGraphJob($id: CiProcessableID!) {\\n jobRetry(input: { id: $id }) {\\n job {\\n ...Job\\n }\\n errors\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"retryPipelineMiniGraphJob\"] = oneQuery(doc, \"retryPipelineMiniGraphJob\");\n \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-disclosure-dropdown-item',{staticClass:\"ci-job-component\",attrs:{\"item\":_vm.item,\"data-testid\":\"ci-job-item\"},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('div',{staticClass:\"-gl-my-2 gl-flex gl-items-center gl-justify-between\"},[_c('job-name-component',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",modifiers:{\"viewport\":true,\"left\":true}}],attrs:{\"title\":_vm.tooltipText,\"name\":_vm.job.name,\"status\":_vm.status,\"data-testid\":\"job-name\"}}),_vm._v(\" \"),(_vm.hasJobAction)?_c('job-action-button',{staticClass:\"gl-ml-6\",attrs:{\"job-id\":_vm.job.id,\"job-action\":_vm.status.action,\"job-name\":_vm.job.name},on:{\"jobActionExecuted\":function($event){return _vm.$emit('jobActionExecuted')}}}):_vm._e()],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_action_modal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_action_modal.vue?vue&type=script&lang=js\"","<script>\nimport { GlModal } from '@gitlab/ui';\nimport { s__, __, sprintf } from '~/locale';\n\nexport default {\n name: 'JobActionModal',\n i18n: {\n title: s__('PipelineGraph|Are you sure you want to run %{jobName}?'),\n confirmationText: s__('PipelineGraph|Do you want to continue?'),\n actionCancel: { text: __('Cancel') },\n },\n components: {\n GlModal,\n },\n model: {\n prop: 'visible',\n event: 'change',\n },\n props: {\n customMessage: {\n type: String,\n required: true,\n },\n visible: {\n type: Boolean,\n required: false,\n default: false,\n },\n jobName: {\n type: String,\n required: true,\n },\n },\n computed: {\n modalText() {\n return {\n confirmButton: {\n text: sprintf(__('Yes, run %{jobName}'), {\n jobName: this.jobName,\n }),\n },\n message: sprintf(__('Custom confirmation message: %{message}'), {\n message: this.customMessage,\n }),\n title: sprintf(this.$options.i18n.title, {\n jobName: this.jobName,\n }),\n };\n },\n },\n};\n</script>\n\n<template>\n <gl-modal\n modal-id=\"job-action-modal\"\n :action-cancel=\"$options.i18n.actionCancel\"\n :action-primary=\"modalText.confirmButton\"\n :title=\"modalText.title\"\n :visible=\"visible\"\n @primary=\"$emit('confirm')\"\n @change=\"$emit('change', $event)\"\n >\n <div>\n <p>{{ modalText.message }}</p>\n <span>{{ $options.i18n.confirmationText }}</span>\n </div>\n </gl-modal>\n</template>\n","import { render, staticRenderFns } from \"./job_action_modal.vue?vue&type=template&id=0793f7d2\"\nimport script from \"./job_action_modal.vue?vue&type=script&lang=js\"\nexport * from \"./job_action_modal.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-modal',{attrs:{\"modal-id\":\"job-action-modal\",\"action-cancel\":_vm.$options.i18n.actionCancel,\"action-primary\":_vm.modalText.confirmButton,\"title\":_vm.modalText.title,\"visible\":_vm.visible},on:{\"primary\":function($event){return _vm.$emit('confirm')},\"change\":function($event){return _vm.$emit('change', $event)}}},[_c('div',[_c('p',[_vm._v(_vm._s(_vm.modalText.message))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.$options.i18n.confirmationText))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlButton, GlIcon, GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { s__ } from '~/locale';\nimport { reportToSentry } from '~/ci/utils';\nimport cancelJobMutation from '~/ci/pipeline_mini_graph/graphql/mutations/job_cancel.mutation.graphql';\nimport playJobMutation from '~/ci/pipeline_mini_graph/graphql/mutations/job_play.mutation.graphql';\nimport retryJobMutation from '~/ci/pipeline_mini_graph/graphql/mutations/job_retry.mutation.graphql';\nimport unscheduleJobMutation from '~/ci/pipeline_mini_graph/graphql/mutations/job_unschedule.mutation.graphql';\nimport JobActionModal from './job_action_modal.vue';\n\nexport const i18n = {\n errors: {\n cancelJob: s__('Pipeline|There was a problem canceling the job.'),\n playJob: s__('Pipeline|There was a problem running the job.'),\n retryJob: s__('Pipeline|There was a problem running the job again.'),\n unscheduleJob: s__('Pipeline|There was a problem unscheduling the job.'),\n },\n};\n\nexport default {\n name: 'JobActionButton',\n JOB_ACTIONS: {\n cancel: {\n dataName: 'jobCancel',\n error: i18n.errors.cancelJob,\n mutation: cancelJobMutation,\n },\n play: {\n dataName: 'jobPlay',\n error: i18n.errors.playJob,\n mutation: playJobMutation,\n },\n retry: {\n dataName: 'jobRetry',\n error: i18n.errors.retryJob,\n mutation: retryJobMutation,\n },\n 'time-out': {\n dataName: 'jobUnschedule',\n error: i18n.errors.unscheduleJob,\n mutation: unscheduleJobMutation,\n },\n },\n i18n,\n components: {\n GlButton,\n GlIcon,\n GlLoadingIcon,\n JobActionModal,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n jobId: {\n type: String,\n required: true,\n },\n jobAction: {\n type: Object,\n required: true,\n },\n jobName: {\n type: String,\n required: true,\n },\n },\n emits: ['jobActionExecuted'],\n data() {\n return {\n isLoading: false,\n showConfirmationModal: false,\n };\n },\n computed: {\n actionType() {\n return this.jobAction.icon;\n },\n hasConfirmationModal() {\n return this.jobAction?.confirmationMessage !== null;\n },\n },\n methods: {\n onActionButtonClick() {\n if (this.hasConfirmationModal) {\n this.showConfirmationModal = true;\n } else {\n this.executeJobAction();\n }\n },\n async executeJobAction() {\n try {\n this.isLoading = true;\n const {\n data: {\n [this.$options.JOB_ACTIONS[this.actionType].dataName]: { errors },\n },\n } = await this.$apollo.mutate({\n mutation: this.$options.JOB_ACTIONS[this.actionType].mutation,\n variables: { id: this.jobId },\n });\n if (errors.length) {\n reportToSentry(this.$options.name, new Error(errors.join(', ')));\n }\n } catch (error) {\n createAlert({ message: this.$options.JOB_ACTIONS[this.actionType].error });\n reportToSentry(this.$options.name, error);\n } finally {\n this.isLoading = false;\n this.$emit('jobActionExecuted');\n }\n },\n },\n};\n</script>\n\n<template>\n <div>\n <gl-button\n v-gl-tooltip.viewport.left\n :title=\"jobAction.title\"\n :aria-label=\"jobAction.title\"\n :disabled=\"isLoading\"\n size=\"small\"\n class=\"gl-h-6 gl-w-6 !gl-rounded-full !gl-p-0\"\n data-testid=\"ci-action-button\"\n @click.prevent=\"onActionButtonClick\"\n >\n <gl-loading-icon v-if=\"isLoading\" size=\"sm\" class=\"gl-m-2\" />\n <gl-icon v-else :name=\"jobAction.icon\" :size=\"12\" />\n </gl-button>\n <job-action-modal\n v-if=\"hasConfirmationModal\"\n v-model=\"showConfirmationModal\"\n :job-name=\"jobName\"\n :custom-message=\"jobAction.confirmationMessage\"\n @confirm=\"executeJobAction\"\n />\n </div>\n</template>\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_action_button.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_action_button.vue?vue&type=script&lang=js\"","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_dropdown_item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_dropdown_item.vue?vue&type=script&lang=js\"","<script>\nimport { GlDisclosureDropdownItem, GlTooltipDirective } from '@gitlab/ui';\nimport { sprintf } from '~/locale';\nimport { capitalizeFirstCharacter } from '~/lib/utils/text_utility';\nimport delayedJobMixin from '~/ci/mixins/delayed_job_mixin';\nimport JobActionButton from './job_action_button.vue';\nimport JobNameComponent from './job_name_component.vue';\n\nexport default {\n name: 'JobDropdownItem',\n components: {\n JobActionButton,\n JobNameComponent,\n GlDisclosureDropdownItem,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n mixins: [delayedJobMixin],\n props: {\n job: {\n type: Object,\n required: true,\n },\n },\n emits: ['jobActionExecuted'],\n computed: {\n hasJobAction() {\n return Boolean(this.status?.action?.id);\n },\n item() {\n return {\n text: this.job.name,\n href: this.status?.detailsPath || '',\n };\n },\n status() {\n return this.job.detailedStatus || this.job.status;\n },\n tooltipText() {\n const statusTooltip = capitalizeFirstCharacter(this.status?.tooltip);\n\n if (this.isDelayedJob) {\n return sprintf(statusTooltip, { remainingTime: this.remainingTime });\n }\n return statusTooltip;\n },\n },\n};\n</script>\n<template>\n <gl-disclosure-dropdown-item :item=\"item\" class=\"ci-job-component\" data-testid=\"ci-job-item\">\n <template #list-item>\n <div class=\"-gl-my-2 gl-flex gl-items-center gl-justify-between\">\n <job-name-component\n v-gl-tooltip.viewport.left\n :title=\"tooltipText\"\n :name=\"job.name\"\n :status=\"status\"\n data-testid=\"job-name\"\n />\n <job-action-button\n v-if=\"hasJobAction\"\n class=\"gl-ml-6\"\n :job-id=\"job.id\"\n :job-action=\"status.action\"\n :job-name=\"job.name\"\n @jobActionExecuted=\"$emit('jobActionExecuted')\"\n />\n </div>\n </template>\n </gl-disclosure-dropdown-item>\n</template>\n","import { render, staticRenderFns } from \"./job_action_button.vue?vue&type=template&id=6a2f3078\"\nimport script from \"./job_action_button.vue?vue&type=script&lang=js\"\nexport * from \"./job_action_button.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",modifiers:{\"viewport\":true,\"left\":true}}],staticClass:\"gl-h-6 gl-w-6 !gl-rounded-full !gl-p-0\",attrs:{\"title\":_vm.jobAction.title,\"aria-label\":_vm.jobAction.title,\"disabled\":_vm.isLoading,\"size\":\"small\",\"data-testid\":\"ci-action-button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onActionButtonClick.apply(null, arguments)}}},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"gl-m-2\",attrs:{\"size\":\"sm\"}}):_c('gl-icon',{attrs:{\"name\":_vm.jobAction.icon,\"size\":12}})],1),_vm._v(\" \"),(_vm.hasConfirmationModal)?_c('job-action-modal',{attrs:{\"job-name\":_vm.jobName,\"custom-message\":_vm.jobAction.confirmationMessage},on:{\"confirm\":_vm.executeJobAction},model:{value:(_vm.showConfirmationModal),callback:function ($$v) {_vm.showConfirmationModal=$$v},expression:\"showConfirmationModal\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./job_dropdown_item.vue?vue&type=template&id=2ef1d186\"\nimport script from \"./job_dropdown_item.vue?vue&type=script&lang=js\"\nexport * from \"./job_dropdown_item.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}