Files
YG_FT/frontend/dist/assets/DatasetPreviewView-YoAuCGb1.js

7 lines
41 KiB
JavaScript
Raw Normal View History

import{E as Tt}from"./el-alert-oogOlvLD.js";import{O as Rt,E as Fe}from"./el-popper-DAm2mVaB.js";import{f as He,E as ie,e as Ot}from"./index-Cp3It01C.js";import{E as he}from"./el-tag-BhOuL4lf.js";import{v as Ft}from"./directive-BVaYA311.js";import{d as J,h as j,B as W,G as We,f as Y,H as qe,y as _,F as le,b as Nt,R as Se,V as Ee,ba as q,D as Xe,aT as Dt,a9 as ve,j as h,bb as Bt,P as Lt,ai as z,o as c,e as N,w as p,s as C,bc as Pt,bd as At,W as fe,S as Mt,E as Ze,a as Ne,aW as Kt,am as Jt,N as Qe,c as R,aX as xe,Y as _e,n as se,g as A,q as o,r as zt,aL as Oe,M as Z,be as ze,al as jt,l as Gt,ab as et,ad as pe,x as L,aa as T,aR as Ut,K as je,ac as Yt,A as ae,aY as Ht,aZ as Wt}from"./index-DMfSG-9l.js";import{E as Te}from"./index-CtE6E8j5.js";import"./el-tooltip-l0sNRNKZ.js";import{A as qt}from"./AppConfirmDialog-io-Joa8G.js";import{P as Xt}from"./PageCard-BOBBu5NI.js";import{b as Zt,f as Qt,h as Re,i as xt,j as en,k as tn,l as nn}from"./dataset-DlN43bkd.js";import{E as on,a as an}from"./el-select-C8XVvVg6.js";import{_ as Q}from"./index-CJA4tZk1.js";import{E as ln}from"./el-scrollbar-B3-sB_hq.js";import{d as sn,a as tt,b as rn}from"./dropdown-BAEkU2tA.js";import{c as un}from"./castArray-qEIBurnE.js";import{c as nt,E as dn}from"./el-dialog-CGSDUoRt.js";import{_ as re}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{E as ot}from"./index-DYpWD2QI.js";import{E as cn}from"./el-pagination-Dl141Xco.js";import{E as vn,a as fn}from"./el-table-Cp5xAgqT.js";import"./el-checkbox-U4Gmy-zV.js";import{E as pn,a as mn}from"./el-form-item-rY4vNiXx.js";import"./vnode-DQ45xHFU.js";import"./index-BqlQpMip.js";import"./validator-WVQr2HNG.js";import"./index-DHvxCawT.js";import"./clamp-B9tkuT1F.js";import"./toNumber-COrtsVXo.js";import"./index-h-ZEyEHT.js";import"./scroll-D2ojO4wB.js";import"./raf-Cz9mkNBb.js";import"./el-card-CMZq6FhB.js";import"./index-YDvJ5KV2.js";import"./index-D3hDDBfW.js";import"./_baseIteratee-bMWfS5oT.js";import"./use-dialog-CRHE-RMe.js";import"./_baseClone-DE0sfIfI.js";import"./debounce-CVrTo2Ot.js";import"./omit-teeY8va1.js";const Ce=Symbol("elDropdown"),at="elDropdown";var gn=J({inheritAttrs:!1});function wn(e,l,s,a,m,i){return j(e.$slots,"default")}var yn=Q(gn,[["render",wn]]),bn=J({name:"ElCollectionItem",inheritAttrs:!1});function _n(e,l,s,a,m,i){return j(e.$slots,"default")}var hn=Q(bn,[["render",_n]]);const lt="data-el-collection-item",En=e=>{const l=`El${e}Collection`,s=`${l}Item`,a=Symbol(l),m=Symbol(s);return{COLLECTION_INJECTION_KEY:a,COLLECTION_ITEM_INJECTION_KEY:m,ElCollection:Object.assign({},yn,{name:l,setup(){const i=_(),t=new Map;le(a,{itemMap:t,getItems:(()=>{const w=Y(i);if(!w)return[];const d=Array.from(w.querySelectorAll(`[${lt}]`));return[...t.values()].sort((y,b)=>d.indexOf(y.ref)-d.indexOf(b.ref))}),collectionRef:i})}}),ElCollectionItem:Object.assign({},hn,{name:s,setup(i,{attrs:t}){const u=_(),w=W(a,void 0);le(m,{collectionItemRef:u}),We(()=>{const d=Y(u);d&&w.itemMap.set(d,{ref:d,...t})}),qe(()=>{const d=Y(u);w.itemMap.delete(d)})}})}},Cn=Nt({style:{type:Se([String,Array,Object,Boolean]),default:void 0},currentTabId:{type:Se(String)},defaultCurrentTabId:String,loop:Boolean,dir:{type:String,values:["ltr","rtl"],default:"ltr"},orientation:{type:Se(String)},onBlur:Function,onFocus:Function,onMousedown:Function}),{ElCollection:In,ElCollectionItem:kn,COLLECTION_INJECTION_KEY:st,COLLECTION_ITEM_INJECTION_KEY:$n}=En("RovingFocusGroup"),De=Symbol("elRovingFocusGroup"),it=Symbol("elRovingFocusGroupItem"),Vn={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"},Sn=(e,l)=>e,Tn=(e,l,s)=>{const a=Sn(Ee(e));return Vn[a]},Rn=(e,l)=>e.map((s,a)=>e[(a+l)%e.length]),Ge=e=>{const{activeElement:l}=document;for(const s of e)if(s===l||(s.focus(),l!==document.activeElement))return},Ue="currentTabIdChange",Ye="rovingFocusGroup.entryFocus",On={bubbles:!1,cancelable:!0};var Fn=J({name:"ElRovingFocusGroupImpl",inheritAttrs:!1,props:Cn,emits:[Ue,"entryFocus"],setup(e,{emit:l}){const s=_((e.currentTabId||e.defaultCurrentTabId)??null),a=_(!1),m=_(!1),i
`).forEach((m,i)=>{m.trim()&&a.push(ao(m,i,a.length+1))}),{supported:!0,records:a}}if(s.endsWith(".json"))try{const a=JSON.parse(e);return{supported:!0,records:(Array.isArray(a)?a:[a]).map((i,t)=>({sourceIndex:t,displayIndex:t+1,raw:JSON.stringify(i),kind:ct(i)?"object":"primitive",value:i}))}}catch(a){return{supported:!0,records:[{sourceIndex:0,displayIndex:1,raw:e,kind:"invalid",value:e,error:a instanceof Error?a.message:"JSON 格式不正确"}]}}return{supported:!1,records:[]}}function so(e,l,s,a){const m=l.toLowerCase();if(m.endsWith(".jsonl")){const i=e.split(`
`);if(s<0||s>=i.length)throw new Error("目标样本不存在");return i[s]=JSON.stringify(a),i.join(`
`)}if(m.endsWith(".json")){let i;try{i=JSON.parse(e)}catch{if(s!==0)throw new Error("目标样本不存在");return JSON.stringify(a,null,2)}if(Array.isArray(i)){if(s<0||s>=i.length)throw new Error("目标样本不存在");return i[s]=a,JSON.stringify(i,null,2)}if(s!==0)throw new Error("目标样本不存在");return JSON.stringify(a,null,2)}throw new Error("当前文件不支持逐条编辑")}const io={class:"version-control-bar","aria-label":"数据集版本控制"},ro={class:"version-selector-group"},uo={class:"version-status",role:"status","aria-live":"polite"},co={key:0,class:"fa fa-ellipsis-h","aria-hidden":"true"},vo=J({__name:"DatasetVersionBar",props:{modelValue:{},versions:{},viewedVersion:{},activeVersionId:{},isViewingActiveVersion:{type:Boolean},hasPendingVersionChanges:{type:Boolean},versionLoading:{type:Boolean},savingRecord:{type:Boolean},activatingVersion:{type:Boolean},deletingVersion:{type:Boolean}},emits:["update:modelValue","change","activate","delete"],setup(e,{emit:l}){const s=e,a=l,m=h(()=>s.versionLoading||s.savingRecord||s.activatingVersion||s.deletingVersion),i=h(()=>{var b;return((b=s.viewedVersion)==null?void 0:b.version)===1?"初始版本不可删除":s.versions.length<=1?"至少需要保留一个版本":""}),t=h(()=>m.value||!!i.value);function u(b){return new Date(b).toLocaleString("zh-CN",{hour12:!1})}function w(b){const v=b.id===s.activeVersionId?"当前版本":"历史版本";return`V${b.version} · ${v} · ${u(b.create_time)}`}function d(b){a("update:modelValue",b),a("change",b)}function y(b){if(!m.value){if(b==="activate"){a("activate");return}t.value||a("delete")}}return(b,v)=>{const O=an,D=on,S=he,F=ie,g=no,f=oo,$=to;return c(),R("section",io,[o("div",ro,[v[0]||(v[0]=o("label",{for:"dataset-version-select"},"数据版本",-1)),C(D,{id:"dataset-version-select","model-value":e.modelValue,class:"version-select",loading:e.versionLoading,disabled:e.versionLoading||e.savingRecord,"aria-label":"选择要查看的数据集版本",onChange:d},{default:p(()=>[(c(!0),R(Z,null,pe(e.versions,I=>(c(),N(O,{key:I.id,label:w(I),value:I.id},null,8,["label","value"]))),128))]),_:1},8,["model-value","loading","disabled"])]),o("div",uo,[e.viewedVersion?(c(),R(Z,{key:0},[e.isViewingActiveVersion?(c(),N(S,{key:0,type:"success"},{default:p(()=>[L(" V"+T(e.viewedVersion.version)+" · 当前版本 ",1)]),_:1})):(c(),N(S,{key:1,type:"info"},{default:p(()=>[L("V"+T(e.viewedVersion.version)+" · 历史版本(只读)",1)]),_:1})),e.hasPendingVersionChanges?(c(),N(S,{key:2,type:"warning"},{default:p(()=>[...v[1]||(v[1]=[L("有待保存修改",-1)])]),_:1})):A("",!0),o("span",null,T(e.viewedVersion.description||"无版本说明")+" · "+T(u(e.viewedVersion.create_time)),1)],64)):A("",!0)]),e.viewedVersion&&!e.isViewingActiveVersion?(c(),N($,{key:0,class:"version-actions",trigger:"click",placement:"bottom-end","popper-class":"version-actions-popper",disabled:m.value,onCommand:y},{dropdown:p(()=>[C(f,null,{default:p(()=>[C(g,{command:"activate",class:"version-action-primary",disabled:m.value},{default:p(()=>[...v[2]||(v[2]=[o("i",{class:"fa fa-check-circle","aria-hidden":"true"},null,-1),L(" 设为当前版本 ",-1)])]),_:1},8,["disabled"]),C(g,{command:"delete",class:"version-action-danger",disabled:t.value,title:i.value||void 0,divided:""},{default:p(()=>[...v[3]||(v[3]=[o("i",{class:"fa fa-trash-o","aria-hidden":"true"},null,-1),L(" 删除版本 ",-1)])]),_:1},8,["disabled","title"])]),_:1})]),default:p(()=>[C(F,{class:"version-actions-button",loading:e.activatingVersion||e.deletingVersion,disabled:m.value,"aria-label":"打开历史版本操作菜单"},{default:p(()=>[!e.activatingVersion&&!e.deletingVersion?(c(),R("i",co)):A("",!0)]),_:1},8,["loading","disabled"])]),_:1},8,["disabled"])):A("",!0)])}}}),fo=re(vo,[["__scopeId","data-v-e7e4bc14"]]),po={class:"records-viewer"},mo={class:"records-toolbar"},go={key:0,class:"viewer-state record-empty-state"},wo={key:1,class:"record-table-shell","aria-label":"数据样本表格"},yo={class:"table-index"},bo={class:"table-cell-text"},_o={class:"table-cell-text"},ho={
`).slice(0,100));return(a,m)=>(c(),R("div",{class:"code-viewer",tabindex:"0","aria-label":`${e.fileName||""} 文件内容`},[(c(!0),R(Z,null,pe(s.value,(i,t)=>(c(),R("div",{key:t,class:"code-line"},[o("span",Fo,T(t+1),1),o("code",null,T(i||" "),1)]))),128))],8,Oo))}}),Do=re(No,[["__scopeId","data-v-66746ea9"]]),Bo={class:"split-summary","aria-label":"数据切分统计"},Lo={class:"split-stat train"},Po={class:"split-stat validation"},Ao={class:"split-stat test"},Mo={key:0,class:"split-file-tabs","aria-label":"数据切分文件"},Ko=["onClick"],Jo=J({__name:"DatasetSplitNavigator",props:{files:{},selectedFileId:{},splitCounts:{}},emits:["select"],setup(e,{emit:l}){const s=l;function a(t){return String(t.id||t.name)}function m(t){return t?{train:"训练集",validation:"验证集",test:"测试集"}[t]:"数据文件"}function i(t){return t?{train:"primary",validation:"warning",test:"success"}[t]:"info"}return(t,u)=>{const w=he;return c(),R(Z,null,[o("section",Bo,[o("div",Lo,[u[0]||(u[0]=o("span",null,"训练集",-1)),o("strong",null,T(e.splitCounts.train.toLocaleString()),1)]),o("div",Po,[u[1]||(u[1]=o("span",null,"验证集",-1)),o("strong",null,T(e.splitCounts.validation.toLocaleString()),1)]),o("div",Ao,[u[2]||(u[2]=o("span",null,"测试集",-1)),o("strong",null,T(e.splitCounts.test.toLocaleString()),1)])]),e.files.length>1?(c(),R("nav",Mo,[(c(!0),R(Z,null,pe(e.files,d=>(c(),R("button",{key:a(d),type:"button",class:se(["split-file-tab",{active:a(d)===e.selectedFileId}]),onClick:y=>s("select",d)},[C(w,{type:i(d.split),size:"small"},{default:p(()=>[L(T(m(d.split)),1)]),_:2},1032,["type"]),o("strong",null,T((d.record_count||0).toLocaleString())+" 条",1),o("span",null,T(d.name),1)],10,Ko))),128))])):A("",!0)],64)}}}),zo=re(Jo,[["__scopeId","data-v-b8d078a0"]]),jo={class:"page-header"},Go={class:"page-heading"},Uo={class:"heading-row"},Yo={class:"dataset-overview","aria-label":"数据集概览"},Ho={class:"overview-item"},Wo={class:"overview-item"},qo={class:"overview-item overview-item-wide"},Xo={key:2,class:"preview-workspace","aria-label":"数据集文件详情"},Zo={class:"content-pane"},Qo={class:"content-toolbar"},xo={class:"content-title"},ea={class:"toolbar-actions"},ta=["aria-busy"],na={key:0,class:"viewer-state"},oa={key:1,class:"viewer-state viewer-state-error",role:"alert"},aa={key:2,class:"viewer-state"},la={class:"viewer-footer"},sa={key:0},ia={key:1},ra={key:3,class:"empty-files","aria-label":"空文件列表"},ua=J({__name:"DatasetPreviewView",setup(e){const s=Yt().params.id,a=_(),m=_(!1),i=_(!1),t=_(null),u=_(""),w=_(""),d=_(""),y=_(""),b=_(!1),v=_(null),O=_([]),D=_(""),S=_(""),F=_(!1),g=_(!1),f=_([]),$=_(""),I=_(""),k=_(""),M=_(!1),G=_(!1),x=_(!1),ee=_(1);let V=0;const X=h(()=>{var n;return((n=t.value)==null?void 0:n.files)||[]}),P=h(()=>X.value.find(n=>U(n)===u.value)),B=h(()=>{var n;return((n=t.value)==null?void 0:n.split_counts)||{train:0,validation:0,test:0}}),me=h(()=>w.value?w.value.split(`
`).length:0),Be=h(()=>{var n;return lo(w.value,((n=P.value)==null?void 0:n.name)||"")}),Ie=h(()=>Be.value.supported),Le=h(()=>Be.value.records),ne=h(()=>f.value.find(n=>n.id===k.value)),te=h(()=>!!k.value&&k.value===I.value),vt=h(()=>{var n;return((n=v.value)==null?void 0:n.kind)==="object"?JSON.stringify(O.value):D.value}),ke=h(()=>b.value&&vt.value!==S.value),ge=h(()=>w.value!==d.value),Pe=h(()=>ke.value||ge.value),ft=h(()=>{var r,E;const n=String(((r=t.value)==null?void 0:r.type)||"").toLowerCase();return Ht[n]||((E=t.value)==null?void 0:E.type)||"-"}),pt=h(()=>{var r;const n=((r=t.value)==null?void 0:r.storage_type)||"";return Wt[n]||n||"-"}),mt=h(()=>{var n;return(n=t.value)!=null&&n.create_time?new Date(t.value.create_time).toLocaleString("zh-CN"):"-"});function U(n){return String(n.id||n.name)}async function gt(n){U(n)!==u.value&&await Ve("切换数据切分后,当前样本的未保存修改将丢失。")&&(u.value=U(n),await $e(n))}async function wt(){m.value=!0;try{t.value=await Zt(s);const n=X.value[0];n&&(u.value=U(n),await $e(n))}finally{m.value=!1}}async function $e(n){i.value=!0,y.value="";const r=++V;try{const E=await Qt(U(n)),H=await Re(U(n),E.active_version_id);if(r!==V)return;f.value=E.versions,ee.value=E.next_version_number??Math.max(0,...E.versions.map(K=>K.version))+1,I.value=E.active_version_id,$.value=E.active_version_id,k.value=E.active_version_id,w.value=H.content,d.value=H.content,ue()}catch{r===V&&(y.value="版本内容加载失败,请稍后重试")}finally{r===V&&(i.value=!1)}}async function yt(n){if(!P.value||n===k.value)return;const r=k.value;if(!await Ve("切换版本后,当前样本的未保存修改将丢失。")){$.value=r;return}M.value=!0;const E=++V;try{const H=await Re(U(P.value),n);if(E!==V)return;w.value=H.content,d.value=H.content,k.value=H.version.id,ue()}catch{E===V&&($.value=r)}finally{E===V&&(M.value=!1)}}async function bt(){if(!(!P.value||!ne.value||te.value)){try{await Te.confirm(`确定将 V${ne.value.version} 设为当前版本吗后续任务将使用该版本`,"切换当前版本",{type:"warning",confirmButtonText:"设为当前版本",cancelButtonText:"取消"})}catch{return}G.value=!0;try{const n=await tn(U(P.value),ne.value.id,I.value);I.value=n.version.id,w.value=n.content,d.value=n.content,ae.success(`已将 V${n.version.version} 设为当前版本`)}finally{G.value=!1}}}async function _t(){var E,H;if(!P.value||!ne.value||te.value||x.value)return;const n=ne.value;if(await((H=a.value)==null?void 0:H.open({title:`删除 V${n.version} 版本`,message:`删除后无法恢复当前版本 V${((E=f.value.find(K=>K.id===I.value))==null?void 0:E.version)||"-"} 不受影响`,confirmText:"删除版本",cancelText:"取消",tone:"danger"}))){x.value=!0,M.value=!0;try{const K=await nn(U(P.value),n.id,I.value),we=await Re(U(P.value),K.active_version_id);f.value=K.versions,ee.value=K.next_version_number??Math.max(0,...K.versions.map(ye=>ye.version))+1,I.value=K.active_version_id,$.value=K.active_version_id,k.value=K.active_version_id,w.value=we.content,d.value=we.content,ue(),ae.success(`V${n.version} 版本已删除`)}finally{M.value=!1,x.value=!1}}}function ht(n){if(!te.value){ae.warning("历史版本为只读,请先设为当前版本");return}v.value=n,n.kind==="object"?(O.value=Object.entries(n.value).map(([r,E])=>({key:r,value:typeof E=="string"?E:JSON.stringify(E,null,2),isJson:typeof E!="string"})),D.value=""):(O.value=[],D.value=n.raw),b.value=!0,S.value=n.kind==="object"?JSON.stringify(O.value):D.value}function ue(){b.value=!1,v.value=null,O.value=[],D.value="",S.value=""}function Et(n,r){const E=O.value[n];E&&(E.value=r)}async function Ve(n="当前存在尚未保存为版本的修改,放弃后将无法恢复。"){if(!Pe.value)return!0;try{return await Te.confirm(n,"确认放弃修改?",{type:"warning",confirmButtonText:"放弃修改",cancelButtonText:"继续编辑"}),!0}catch{return!1}}async function Ct(){if(!ke.value)return!0;try{return await Te.confirm("当前样本存在未暂存修改,放弃后将无法恢复。","确认放弃修改?",{typ