UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

2 lines 10.2 kB
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{};e.SENTRY_RELEASE={id:`n8n@2.13.4`}}catch{}})();try{(function(){var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`4dc8e34d-9a97-438d-bf54-c01038cd7aea`,e._sentryDebugIdIdentifier=`sentry-dbid-4dc8e34d-9a97-438d-bf54-c01038cd7aea`)})()}catch{}import{o as e}from"./chunk-DxpFCn6T.js";import{$ as t,A as n,C as r,E as i,Ft as a,H as o,N as s,O as c,S as l,Sn as u,Wt as d,_ as f,_n as p,_t as m,dt as h,gt as g,j as _,rt as v,w as y,yt as b}from"./vue.runtime.esm-bundler-D9KLAxvJ.js";import{C as x,bt as S,xt as C}from"./_MapCache-CUJwh2qp.js";import{$i as w,Et as T,Mi as E,Qi as D,Tt as O,Yi as k,Zi as A,_t as j}from"./src-wni2AGA3.js";import{t as M}from"./_plugin-vue_export-helper-Dm3nT7Ps.js";import"./sanitize-html-my1ogl5v.js";import"./table-BOCs7B1T.js";import{E as N,Tr as P}from"./users.store-BHWXXawf.js";import{ms as F}from"./constants-CIP7tKq1.js";import"./merge-BqvKZ38d.js";import"./_baseOrderBy-CaKruttV.js";import{t as I}from"./dateformat-CYfyw486.js";import"./useDebounce-CTeIt-cH.js";import{t as L}from"./dateFormatter-aoRZizgK.js";import{t as R}from"./orderBy-D1a3yE-B.js";import{t as z}from"./AnimatedSpinner-CGTlYi1c.js";import{r as B}from"./dist-DCXTMsxp.js";import{n as V,r as H,t as U}from"./evaluation.constants-d_gkWXb9.js";var W=e(I(),1);function G(){let e={primary:x(`--color--primary`,document.body).value,textBase:x(`--color--text`,document.body).value,backgroundXLight:x(`--color--background--light-3`,document.body).value,foregroundLight:x(`--color--foreground--tint-1`,document.body).value,foregroundBase:x(`--color--foreground`,document.body).value,foregroundDark:x(`--color--foreground--shade-1`,document.body).value};function t(t,n){return{datasets:[{data:t,parsing:{xAxisKey:`id`,yAxisKey:`metrics.${n}`},borderColor:e.primary,backgroundColor:e.backgroundXLight,borderWidth:1,pointRadius:2,pointHoverRadius:4,pointBackgroundColor:e.backgroundXLight,pointHoverBackgroundColor:e.backgroundXLight}]}}function n({metric:t,data:n}){return{responsive:!0,maintainAspectRatio:!1,animation:!1,devicePixelRatio:2,interaction:{mode:`index`,intersect:!1},scales:{y:{border:{display:!1},grid:{color:e.foregroundBase},ticks:{padding:8,color:e.textBase}},x:{border:{display:!1},grid:{display:!1},ticks:{color:e.textBase,callback(e,t){return`#${n[t].index}`}}}},plugins:{tooltip:{backgroundColor:e.backgroundXLight,titleColor:e.textBase,titleFont:{weight:`600`},bodyColor:e.textBase,bodySpacing:4,padding:12,borderColor:e.foregroundBase,borderWidth:1,displayColors:!0,callbacks:{title:e=>(0,W.default)(e[0].raw.runAt,`yyyy-mm-dd HH:MM`),label:e=>`${t}: ${e.parsed.y.toFixed(2)}`,labelColor(){return{borderColor:`rgba(29, 21, 21, 0)`,backgroundColor:e.primary,borderWidth:0,borderRadius:5}}}},legend:{display:!1}}}}return{generateChartData:t,generateChartOptions:n}}var K=M(s({__name:`MetricsChart`,props:{selectedMetric:{},runs:{}},emits:[`update:selectedMetric`],setup(e,{emit:n}){let a=n,o=e,s=G(),c=l(()=>o.runs.reduce((e,t)=>{let n=Object.keys(t.metrics??{});return[...new Set([...e,...n])]},[])),u=l(()=>o.runs.filter(e=>e.metrics?.[o.selectedMetric]!==void 0)),h=l(()=>s.generateChartData(u.value,o.selectedMetric)),g=l(()=>s.generateChartOptions({metric:o.selectedMetric,data:u.value}));return m(()=>{o.runs.length>0&&!o.selectedMetric&&a(`update:selectedMetric`,c.value[0])}),(n,o)=>(t(),i(`div`,{class:p(n.$style.metricsChartContainer)},[r(`div`,{class:p(n.$style.chartHeader)},[_(d(O),{"model-value":e.selectedMetric,class:p(n.$style.metricSelect),placeholder:`Select metric`,size:`small`,"onUpdate:modelValue":o[0]||=e=>a(`update:selectedMetric`,e)},{default:b(()=>[(t(!0),i(f,null,v(c.value,e=>(t(),y(d(T),{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`model-value`,`class`])],2),r(`div`,{class:p(n.$style.chartWrapper)},[(t(),y(d(B),{key:e.selectedMetric,data:h.value,options:g.value,class:p(n.$style.metricsChart)},null,8,[`data`,`options`,`class`]))],2)],2))}}),[[`__cssModules`,{$style:{metricsChartContainer:`_metricsChartContainer_1i2e2_125`,chartHeader:`_chartHeader_1i2e2_130`,chartTitle:`_chartTitle_1i2e2_133`,metricSelect:`_metricSelect_1i2e2_138`,chartWrapper:`_chartWrapper_1i2e2_141`}}]]),q={style:{display:`inline-flex`,gap:`12px`,"text-transform":`capitalize`,"align-items":`center`}},J=M(s({__name:`TestRunsTable`,props:{runs:{},columns:{}},emits:[`rowClick`],setup(e,{emit:a}){let o=a,s=e,m=S(),h=l(()=>s.columns.map(e=>e.prop===`id`?{...e,width:100}:e.prop===`runAt`?{...e,width:150}:e)),g=l(()=>s.runs.map(({status:e,finalResult:t,errorDetails:n,...r})=>(e===`completed`&&t&&[`error`,`warning`].includes(t)&&(e=`warning`),{...r,status:e,finalResult:t,errorDetails:n})));return(a,s)=>(t(),i(`div`,{class:p(a.$style.container)},[_(d(k),{size:`large`,bold:!0,class:p(a.$style.runsTableHeading),color:`text-base`},{default:b(()=>[n(u(d(m).baseText(`evaluation.listRuns.pastRuns.total`,{adjustToNumber:e.runs.length}))+` (`+u(e.runs.length)+`) `,1)]),_:1},8,[`class`]),_(H,{data:g.value,columns:h.value,"default-sort":{prop:`runAt`,order:`descending`},onRowClick:s[0]||=e=>e.status===`error`?void 0:o(`rowClick`,e)},{id:b(({row:e})=>[n(`#`+u(e.index),1)]),status:b(({row:e})=>[r(`div`,q,[e.status===`running`?(t(),y(d(A),{key:0,color:`secondary`},{default:b(()=>[_(z)]),_:1})):(t(),y(d(w),{key:1,icon:d(V)[e.status].icon,color:d(V)[e.status].color},null,8,[`icon`,`color`])),e.status===`warning`?(t(),y(d(A),{key:2,color:`warning`,class:p([a.$style.alertText,a.$style.warningText])},{default:b(()=>[n(u(d(m).baseText(`evaluation.runDetail.error.partialCasesFailed`)),1)]),_:1},8,[`class`])):e.status===`error`?(t(),y(d(E),{key:3,placement:`top`,"show-after":300},{content:b(()=>[_(d(C),{keypath:`${d(U)(e.errorCode)}`,scope:`global`},c({_:2},[d(m).exists(`${d(U)(e.errorCode)}.description`)?{name:`description`,fn:b(()=>[n(u(d(m).baseText(`${d(U)(e.errorCode)}.description`)&&`. `)+` `+u(d(m).baseText(`${d(U)(e.errorCode)}.description`)),1)]),key:`0`}:void 0]),1032,[`keypath`])]),default:b(()=>[_(d(A),{class:p([a.$style.alertText,a.$style.errorText])},{default:b(()=>[_(d(C),{keypath:`${d(U)(e.errorCode)}`,scope:`global`},c({_:2},[d(m).exists(`${d(U)(e.errorCode)}.description`)?{name:`description`,fn:b(()=>[r(`p`,{class:p(a.$style.grayText)},u(d(m).baseText(`${d(U)(e.errorCode)}.description`)),3)]),key:`0`}:void 0]),1032,[`keypath`])]),_:2},1032,[`class`])]),_:2},1024)):(t(),i(f,{key:4},[n(u(e.status),1)],64))])]),_:1},8,[`data`,`columns`])],2))}}),[[`__cssModules`,{$style:{container:`_container_1ulnw_125`,grayText:`_grayText_1ulnw_131`,alertText:`_alertText_1ulnw_135`,warningText:`_warningText_1ulnw_153`,errorText:`_errorText_1ulnw_157`}}]]),Y=M(s({__name:`RunsSection`,props:o({runs:{},workflowId:{}},{selectedMetric:{required:!0},selectedMetricModifiers:{}}),emits:[`update:selectedMetric`],setup(e){let n=e,r=S(),a=j(),o=h(e,`selectedMetric`),s=l(()=>[...n.runs.reduce((e,t)=>(Object.keys(t.metrics??{}).forEach(t=>e.add(t)),e),new Set)]),c=l(()=>s.value.map(e=>({prop:`metrics.${e}`,label:e,sortable:!0,showHeaderTooltip:!0,sortMethod:(t,n)=>(t.metrics?.[e]??0)-(n.metrics?.[e]??0),formatter:t=>t.metrics?.[e]===void 0?``:(t.metrics?.[e]).toFixed(2)}))),u=l(()=>[{prop:`id`,label:r.baseText(`evaluation.listRuns.runNumber`),showOverflowTooltip:!0},{prop:`runAt`,label:`Run at`,sortable:!0,showOverflowTooltip:!0,formatter:e=>{let{date:t,time:n}=L(e.runAt);return[t,n].join(`, `)},sortMethod:(e,t)=>new Date(e.runAt??e.createdAt).getTime()-new Date(t.runAt??t.createdAt).getTime()},{prop:`status`,label:r.baseText(`evaluation.listRuns.status`),sortable:!0},...c.value]),d=e=>{a.push({name:F.EVALUATION_RUNS_DETAIL,params:{runId:e.id}})};return(n,r)=>(t(),i(`div`,{class:p(n.$style.runs)},[_(K,{"selected-metric":o.value,"onUpdate:selectedMetric":r[0]||=e=>o.value=e,runs:e.runs},null,8,[`selected-metric`,`runs`]),_(J,{class:p(n.$style.runsTable),runs:e.runs,columns:u.value,selectable:!0,"data-test-id":`past-runs-table`,onRowClick:d},null,8,[`class`,`runs`,`columns`])],2))}}),[[`__cssModules`,{$style:{runs:`_runs_ni2ti_125`}}]]),X=e(R(),1),Z=M(s({__name:`EvaluationsView`,props:{name:{}},setup(e){let n=e,o=S(),s=P(),c=N(),u=a(``),f=a(!1),m=l(()=>b.value.find(e=>e.status===`running`));async function h(){try{await c.startTestRun(n.name)}catch(e){s.showError(e,o.baseText(`evaluation.listRuns.error.cantStartTestRun`))}try{await c.fetchTestRuns(n.name)}catch(e){s.showError(e,o.baseText(`evaluation.listRuns.error.cantFetchTestRuns`))}}async function v(){if(m.value)try{f.value=!0,await c.cancelTestRun(m.value.workflowId,m.value.id)}catch(e){s.showError(e,o.baseText(`evaluation.listRuns.error.cantStopTestRun`)),f.value=!1}}let b=l(()=>(0,X.default)(Object.values(c.testRunsById??{}).filter(({workflowId:e})=>e===n.name),e=>new Date(e.runAt),[`asc`]).map((e,t)=>({...e,index:t+1})));return g(m,e=>{e||(f.value=!1)}),(e,a)=>(t(),i(`div`,{class:p(e.$style.evaluationsView)},[r(`div`,{class:p(e.$style.header)},[m.value?(t(),y(d(D),{key:0,variant:`subtle`,disabled:f.value,class:p(e.$style.runOrStopTestButton),size:`small`,"data-test-id":`stop-test-button`,label:d(o).baseText(`evaluation.stopTest`),onClick:v},null,8,[`disabled`,`class`,`label`])):(t(),y(d(D),{key:1,variant:`solid`,class:p(e.$style.runOrStopTestButton),size:`small`,"data-test-id":`run-test-button`,label:d(o).baseText(`evaluation.runTest`),onClick:h},null,8,[`class`,`label`]))],2),r(`div`,{class:p(e.$style.wrapper)},[r(`div`,{class:p(e.$style.content)},[_(Y,{"selected-metric":u.value,"onUpdate:selectedMetric":a[0]||=e=>u.value=e,class:p(e.$style.runs),runs:b.value,"workflow-id":n.name},null,8,[`selected-metric`,`class`,`runs`,`workflow-id`])],2)],2)],2))}}),[[`__cssModules`,{$style:{evaluationsView:`_evaluationsView_gyn02_125`,content:`_content_gyn02_129`,header:`_header_gyn02_136`,wrapper:`_wrapper_gyn02_150`,runOrStopTestButton:`_runOrStopTestButton_gyn02_155`,runs:`_runs_gyn02_159`}}]]);export{Z as default}; //# sourceMappingURL=EvaluationsView-CQmQS7dM.js.map