9 lines
42 KiB
JavaScript
9 lines
42 KiB
JavaScript
|
|
import{E as $t}from"./el-alert-B_M4eVTG.js";import{O as Vt,E as ke}from"./el-popper-CXiDZrHI.js";import{f as ze,E as re,e as Rt}from"./index-9zpOHVFd.js";import{E as Ie}from"./el-tag-DPsbND_Z.js";import{v as St}from"./directive-CGqZKDhv.js";import{d as G,h as U,B as H,G as je,f as P,H as Ge,y as k,F as ae,b as Tt,R as he,V as ye,ba as q,D as Ue,aT as Ot,a9 as de,j as I,bb as Dt,P as Nt,ai as j,o as y,e as B,w as c,s as $,bc as Ft,bd as Bt,W as ce,S as Pt,E as We,a as $e,aW as At,am as Lt,N as Ye,c as O,aX as He,Y as me,n as le,g as K,q as r,r as Mt,aL as Ce,M as ee,be as Pe,al as Jt,l as Kt,ab as qe,ad as we,x as A,aa as R,A as Z,aR as zt,K as Ae,ac as jt,aY as Gt,aZ as Ut}from"./index-Dd84m4NL.js";import{E as ge}from"./index-Czb9Dcel.js";import"./el-tooltip-l0sNRNKZ.js";import{A as Wt}from"./AppConfirmDialog-D8GYfvI4.js";import{P as Yt}from"./PageCard-Bj5UBPkt.js";import{b as Ht,f as qt,h as Ee,i as Xt,j as Zt,k as Qt,l as xt,m as en}from"./dataset-BbHN1ZVd.js";import{E as tn,a as nn}from"./el-select-DinjeS4W.js";import{_ as Q}from"./index-KnEmF0FL.js";import{E as on}from"./el-scrollbar-CnqWU4CY.js";import{d as an,a as Xe,b as ln}from"./dropdown-Dcv3Ch24.js";import{c as rn}from"./castArray-Cc7cuNko.js";import{c as Ze,E as sn}from"./el-dialog-B-t9W1v2.js";import{_ as ve}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{E as Qe}from"./index-CxrDRhwR.js";import{E as un}from"./el-pagination-CZfi7rql.js";import{E as dn,a as cn}from"./el-table-CknU6KUt.js";import"./el-checkbox-DmCZOH3C.js";import{E as vn,a as fn}from"./el-form-item-BMccCMQS.js";import{f as Le}from"./fileSize-tjwmv-ob.js";import"./vnode-CasYkit1.js";import"./index-DEuQ2B0Z.js";import"./validator-BEv3fs9p.js";import"./index-BsIWQhw5.js";import"./clamp-MxoDdpzk.js";import"./toNumber-Dzu6kJGs.js";import"./index-B6n2yrjP.js";import"./scroll-CJw98M_S.js";import"./raf-CGf5YZRu.js";import"./el-card-WMAJU1WK.js";import"./index-C5oiM9Uu.js";import"./index-BkMrw1Qg.js";import"./_baseIteratee-CfOSjoYo.js";import"./use-dialog-CGW4SdZ1.js";import"./_baseClone-C6YdWYHR.js";import"./debounce-CqM0EiuE.js";import"./omit-njl9pMBF.js";const be=Symbol("elDropdown"),xe="elDropdown";var pn=G({inheritAttrs:!1});function mn(e,l,o,t,i,n){return U(e.$slots,"default")}var gn=Q(pn,[["render",mn]]),yn=G({name:"ElCollectionItem",inheritAttrs:!1});function wn(e,l,o,t,i,n){return U(e.$slots,"default")}var bn=Q(yn,[["render",wn]]);const et="data-el-collection-item",_n=e=>{const l=`El${e}Collection`,o=`${l}Item`,t=Symbol(l),i=Symbol(o);return{COLLECTION_INJECTION_KEY:t,COLLECTION_ITEM_INJECTION_KEY:i,ElCollection:Object.assign({},gn,{name:l,setup(){const n=k(),a=new Map;ae(t,{itemMap:a,getItems:(()=>{const w=P(n);if(!w)return[];const g=Array.from(w.querySelectorAll(`[${et}]`));return[...a.values()].sort((E,_)=>g.indexOf(E.ref)-g.indexOf(_.ref))}),collectionRef:n})}}),ElCollectionItem:Object.assign({},bn,{name:o,setup(n,{attrs:a}){const p=k(),w=H(t,void 0);ae(i,{collectionItemRef:p}),je(()=>{const g=P(p);g&&w.itemMap.set(g,{ref:g,...a})}),Ge(()=>{const g=P(p);w.itemMap.delete(g)})}})}},hn=Tt({style:{type:he([String,Array,Object,Boolean]),default:void 0},currentTabId:{type:he(String)},defaultCurrentTabId:String,loop:Boolean,dir:{type:String,values:["ltr","rtl"],default:"ltr"},orientation:{type:he(String)},onBlur:Function,onFocus:Function,onMousedown:Function}),{ElCollection:En,ElCollectionItem:Cn,COLLECTION_INJECTION_KEY:tt,COLLECTION_ITEM_INJECTION_KEY:kn}=_n("RovingFocusGroup"),Ve=Symbol("elRovingFocusGroup"),nt=Symbol("elRovingFocusGroupItem"),In={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"},$n=(e,l)=>e,Vn=(e,l,o)=>{const t=$n(ye(e));return In[t]},Rn=(e,l)=>e.map((o,t)=>e[(t+l)%e.length]),Me=e=>{const{activeElement:l}=document;for(const o of e)if(o===l||(o.focus(),l!==document.activeElement))return},Je="currentTabIdChange",Ke="rovingFocusGroup.entryFocus",Sn={bubbles:!1,cancelable:!0};var Tn=G({name:"ElRovingFocusGroupImpl",inheritAttrs:!1,props:hn,emits:[Je,"entryFocus"],setup(e,{emit:l}){const o=k((e.currentTa
|
|||
|
|
`).forEach((i,n)=>{i.trim()&&t.push(oo(i,n,t.length+1))}),{supported:!0,records:t}}if(o.endsWith(".json"))try{const t=JSON.parse(e);return{supported:!0,records:(Array.isArray(t)?t:[t]).map((n,a)=>({sourceIndex:a,displayIndex:a+1,raw:JSON.stringify(n),kind:rt(n)?"object":"primitive",value:n}))}}catch(t){return{supported:!0,records:[{sourceIndex:0,displayIndex:1,raw:e,kind:"invalid",value:e,error:t instanceof Error?t.message:"JSON 格式不正确"}]}}return{supported:!1,records:[]}}function lo(e,l,o,t){const i=l.toLowerCase();if(i.endsWith(".jsonl")){const n=e.split(`
|
|||
|
|
`);if(o<0||o>=n.length)throw new Error("目标样本不存在");return n[o]=JSON.stringify(t),n.join(`
|
|||
|
|
`)}if(i.endsWith(".json")){let n;try{n=JSON.parse(e)}catch{if(o!==0)throw new Error("目标样本不存在");return JSON.stringify(t,null,2)}if(Array.isArray(n)){if(o<0||o>=n.length)throw new Error("目标样本不存在");return n[o]=t,JSON.stringify(n,null,2)}if(o!==0)throw new Error("目标样本不存在");return JSON.stringify(t,null,2)}throw new Error("当前文件不支持逐条编辑")}function ro(e,l,o){var i;const t=l.toLowerCase();if(t.endsWith(".jsonl")){const n=e.split(`
|
|||
|
|
`);if(o<0||o>=n.length||!((i=n[o])!=null&&i.trim()))throw new Error("目标样本不存在");return n.splice(o,1),n.join(`
|
|||
|
|
`)}if(t.endsWith(".json")){const n=JSON.parse(e);if(Array.isArray(n)){if(o<0||o>=n.length)throw new Error("目标样本不存在");return n.splice(o,1),JSON.stringify(n,null,2)}if(o!==0)throw new Error("目标样本不存在");return"[]"}throw new Error("当前文件不支持逐条删除")}const so={class:"version-control-bar","aria-label":"数据集版本控制"},io={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=G({__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 o=e,t=l,i=I(()=>o.versionLoading||o.savingRecord||o.activatingVersion||o.deletingVersion),n=I(()=>{var _;return((_=o.viewedVersion)==null?void 0:_.version)===1?"初始版本不可删除":o.versions.length<=1?"至少需要保留一个版本":""}),a=I(()=>i.value||!!n.value);function p(_){return new Date(_).toLocaleString("zh-CN",{hour12:!1})}function w(_){const v=_.id===o.activeVersionId?"当前版本":"历史版本";return`V${_.version} · ${v} · ${p(_.create_time)}`}function g(_){t("update:modelValue",_),t("change",_)}function E(_){if(!i.value){if(_==="activate"){t("activate");return}a.value||t("delete")}}return(_,v)=>{const D=nn,F=tn,h=Ie,C=re,N=eo,f=to,s=xn;return y(),O("section",so,[r("div",io,[v[0]||(v[0]=r("label",{for:"dataset-version-select"},"数据版本",-1)),$(F,{id:"dataset-version-select","model-value":e.modelValue,class:"version-select",loading:e.versionLoading,disabled:e.versionLoading||e.savingRecord,"aria-label":"选择要查看的数据集版本",onChange:g},{default:c(()=>[(y(!0),O(ee,null,we(e.versions,m=>(y(),B(D,{key:m.id,label:w(m),value:m.id},null,8,["label","value"]))),128))]),_:1},8,["model-value","loading","disabled"])]),r("div",uo,[e.viewedVersion?(y(),O(ee,{key:0},[e.isViewingActiveVersion?(y(),B(h,{key:0,type:"success"},{default:c(()=>[A(" V"+R(e.viewedVersion.version)+" · 当前版本 ",1)]),_:1})):(y(),B(h,{key:1,type:"info"},{default:c(()=>[A("V"+R(e.viewedVersion.version)+" · 历史版本(只读)",1)]),_:1})),e.hasPendingVersionChanges?(y(),B(h,{key:2,type:"warning"},{default:c(()=>[...v[1]||(v[1]=[A("有待保存修改",-1)])]),_:1})):K("",!0),r("span",null,R(e.viewedVersion.description||"无版本说明")+" · "+R(p(e.viewedVersion.create_time)),1)],64)):K("",!0)]),e.viewedVersion&&!e.isViewingActiveVersion?(y(),B(s,{key:0,class:"version-actions",trigger:"click",placement:"bottom-end","popper-class":"version-actions-popper",disabled:i.value,onCommand:E},{dropdown:c(()=>[$(f,null,{default:c(()=>[$(N,{command:"activate",class:"version-action-primary",disabled:i.value},{default:c(()=>[...v[2]||(v[2]=[r("i",{class:"fa fa-check-circle","aria-hidden":"true"},null,-1),A(" 设为当前版本 ",-1)])]),_:1},8,["disabled"]),$(N,{command:"delete",class:"version-action-danger",disabled:a.value,title:n.value||void 0,divided:""},{default:c(()=>[...v[3]||(v[3]=[r("i",{class:"fa fa-trash-o","aria-hidden":"true"},null,-1),A(" 删除版本 ",-1)])]),_:1},8,["disabled","title"])]),_:1})]),default:c(()=>[$(C,{class:"version-actions-button",loading:e.activatingVersion||e.deletingVersion,disabled:i.value,"aria-label":"打开历史版本操作菜单"},{default:c(()=>[!e.activatingVersion&&!e.deletingVersion?(y(),O("i",co)):K("",!0)]),_:1},8,["loading","disabled"])]),_:1},8,["disabled"])):K("",!0)])}}}),fo=ve(vo,[["__scopeId","data-v-e7e4bc14"]]),po={class:"records-viewer"},mo={class:"records-toolbar"},go={key:0,class:"viewer-state record-empty-state"},yo={key:1,class:"record-table-shell","aria-label":"数据样本表格"},wo={class:"table-index"},bo={class:"dataset-record-tooltip-body"},_o={class:"table-cell-text"},ho={class:"dataset-record-tooltip-body"},Eo={class:"dataset-record-tooltip-body"},Co={class:"tab
|
|||
|
|
`).slice(0,100));return(t,i)=>(y(),O("div",{class:"code-viewer",tabindex:"0","aria-label":`${e.fileName||""} 文件内容`},[(y(!0),O(ee,null,we(o.value,(n,a)=>(y(),O("div",{key:a,class:"code-line"},[r("span",Po,R(a+1),1),r("code",null,R(n||" "),1)]))),128))],8,Bo))}}),Lo=ve(Ao,[["__scopeId","data-v-66746ea9"]]);function Mo(e,l,o){const t=k(!1),i=k(null),n=k([]),a=k(""),p=k(""),w=k(!1),g=I(()=>{var s;return((s=i.value)==null?void 0:s.kind)==="object"?JSON.stringify(n.value):a.value}),E=I(()=>t.value&&g.value!==p.value);function _(){t.value=!1,i.value=null,n.value=[],a.value="",p.value=""}function v(s){if(!l.value){Z.warning("历史版本为只读,请先设为当前版本");return}i.value=s,s.kind==="object"?(n.value=Object.entries(s.value).map(([m,b])=>({key:m,value:typeof b=="string"?b:JSON.stringify(b,null,2),isJson:typeof b!="string"})),a.value=""):(n.value=[],a.value=s.raw),t.value=!0,p.value=s.kind==="object"?JSON.stringify(n.value):a.value}function D(s,m){const b=n.value[s];b&&(b.value=m)}async function F(){if(!E.value)return!0;try{return await ge.confirm("当前样本存在未暂存修改,放弃后将无法恢复。","确认放弃修改?",{type:"warning",confirmButtonText:"放弃修改",cancelButtonText:"继续编辑"}),!0}catch{return!1}}async function h(s){w.value||!await F()||(_(),s==null||s())}function C(){var m;if(((m=i.value)==null?void 0:m.kind)!=="object")return JSON.parse(a.value);const s={};for(const b of n.value)s[b.key]=b.isJson?JSON.parse(b.value):b.value;return s}async function N(){if(!e.value||!i.value||w.value)return;const s=i.value;let m;try{m=C()}catch(b){Z.error(`JSON 格式校验失败:${b instanceof Error?b.message:"内容格式不正确"}`);return}w.value=!0;try{o.value=lo(o.value,e.value.name,s.sourceIndex,m),_(),Z.success(`第 ${s.displayIndex} 条修改已暂存`)}finally{w.value=!1}}async function f(s){if(!e.value||!l.value){Z.warning("历史版本为只读,请先设为当前版本");return}try{await ge.confirm("删除后将暂存到当前草稿,点击“保存版本”后正式生效。",`删除第 ${s.displayIndex} 条数据?`,{type:"warning",confirmButtonText:"删除",cancelButtonText:"取消",confirmButtonClass:"el-button--danger"})}catch{return}try{o.value=ro(o.value,e.value.name,s.sourceIndex),_(),Z.success(`第 ${s.displayIndex} 条已删除,请保存为新版本`)}catch(m){Z.error(m instanceof Error?m.message:"删除失败")}}return{editorVisible:t,editingRecord:i,editFields:n,rawDraft:a,savingRecord:w,hasEditorDraftChanges:E,openRecordEditor:v,resetRecordEditor:_,updateEditField:D,closeRecordEditor:h,saveRecord:N,deleteRecord:f}}const Jo={class:"page-header"},Ko={class:"page-heading"},zo={class:"heading-row"},jo={class:"dataset-overview","aria-label":"数据集概览"},Go={class:"overview-item"},Uo={class:"overview-item"},Wo={class:"overview-item overview-item-wide"},Yo={key:1,class:"preview-workspace","aria-label":"数据集文件详情"},Ho={class:"content-pane"},qo={class:"content-toolbar"},Xo={class:"content-title"},Zo={class:"toolbar-actions"},Qo=["aria-busy"],xo={key:0,class:"viewer-state"},ea={key:1,class:"viewer-state viewer-state-error",role:"alert"},ta={key:2,class:"viewer-state"},na={class:"viewer-footer"},oa={key:0},aa={key:1},la={key:2,class:"empty-files","aria-label":"空文件列表"},ra=G({__name:"DatasetPreviewView",setup(e){const o=jt().params.id,t=k(),i=k(!1),n=k(!1),a=k(null),p=k(""),w=k(""),g=k(""),E=k(""),_=k(!1),v=k([]),D=k([]),F=k(""),h=k(""),C=k(""),N=k(!1),f=k(!1),s=k(!1),m=k(1);let b=0;const L=I(()=>{var u;return((u=a.value)==null?void 0:u.files)||[]}),S=I(()=>L.value.find(u=>W(u)===p.value)),x=I(()=>w.value?w.value.split(`
|
|||
|
|
`).length:0),X=I(()=>{var u;return ao(w.value,((u=S.value)==null?void 0:u.name)||"")}),te=I(()=>X.value.supported),V=I(()=>no(X.value.records,D.value)),z=I(()=>v.value.find(u=>u.id===C.value)),T=I(()=>!!C.value&&C.value===h.value),ne=I(()=>w.value!==g.value),st=I(()=>{var d,M;const u=String(((d=a.value)==null?void 0:d.type)||"").toLowerCase();return Gt[u]||((M=a.value)==null?void 0:M.type)||"-"}),it=I(()=>{var d;const u=((d=a.value)==null?void 0:d.storage_type)||"";return Ut[u]||u||"-"}),ut=I(()=>{var u;return(u=a.value)!=null&&u.create_time?new Date(a.value.create_time).toLocaleString("zh-CN"):"-"}),dt=I(()=>{var u,d;return Le((u=a.value)==null?void 0:u.size_bytes,(d=a.value)==null?void 0:d.size)}),ct=I(()=>{var u,d;return Le((u=S.value)==null?void 0:u.size_bytes,(d=S.value)==null?void 0:d.size)});function W(u){return String(u.id||u.name)}const{editorVisible:vt,editingRecord:ft,editFields:pt,rawDraft:Re,savingRecord:Se,hasEditorDraftChanges:Te,openRecordEditor:mt,resetRecordEditor:_e,updateEditField:gt,closeRecordEditor:yt,saveRecord:wt,deleteRecord:bt}=Mo(S,T,w),Oe=I(()=>Te.value||ne.value);async function _t(){i.value=!0;try{a.value=await Ht(o);const u=L.value[0];u&&(p.value=W(u),await De(u))}finally{i.value=!1}}async function De(u){n.value=!0,E.value="";const d=++b;try{const M=await qt(W(u)),[Y,J]=await Promise.all([Ee(W(u),M.active_version_id),Xt(W(u))]);if(d!==b)return;v.value=M.versions,m.value=M.next_version_number??Math.max(0,...M.versions.map(oe=>oe.version))+1,h.value=M.active_version_id,F.value=M.active_version_id,C.value=M.active_version_id,w.value=Y.content,g.value=Y.content,D.value=J.items||[],_e()}catch{d===b&&(D.value=[],E.value="版本内容加载失败,请稍后重试")}finally{d===b&&(n.value=!1)}}async function ht(u){if(!S.value||u===C.value)return;const d=C.value;if(!await Ne("切换版本后,当前样本的未保存修改将丢失。")){F.value=d;return}N.value=!0;const M=++b;try{const Y=await Ee(W(S.value),u);if(M!==b)return;w.value=Y.content,g.value=Y.content,C.value=Y.version.id,_e()}catch{M===b&&(F.value=d)}finally{M===b&&(N.value=!1)}}async function Et(){if(!(!S.value||!z.value||T.value)){try{await ge.confirm(`确定将 V${z.value.version} 设为当前版本吗?后续任务将使用该版本。`,"切换当前版本",{type:"warning",confirmButtonText:"设为当前版本",cancelButtonText:"取消"})}catch{return}f.value=!0;try{const u=await xt(W(S.value),z.value.id,h.value);h.value=u.version.id,w.value=u.content,g.value=u.content,Z.success(`已将 V${u.version.version} 设为当前版本`)}finally{f.value=!1}}}async function Ct(){var M,Y;if(!S.value||!z.value||T.value||s.value)return;const u=z.value;if(await((Y=t.value)==null?void 0:Y.open({title:`删除 V${u.version} 版本?`,message:`删除后无法恢复。当前版本 V${((M=v.value.find(J=>J.id===h.value))==null?void 0:M.version)||"-"} 不受影响。`,confirmText:"删除版本",cancelText:"取消",tone:"danger"}))){s.value=!0,N.value=!0;try{const J=await en(W(S.value),u.id,h.value),oe=await Ee(W(S.value),J.active_version_id);v.value=J.versions,m.value=J.next_version_number??Math.max(0,...J.versions.map(fe=>fe.version))+1,h.value=J.active_version_id,F.value=J.active_version_id,C.value=J.active_version_id,w.value=oe.content,g.value=oe.content,_e(),Z.success(`V${u.version} 版本已删除`)}finally{N.value=!1,s.value=!1}}}async function Ne(u="当前存在尚未保存为版本的修改,放弃后将无法恢复。"){if(!Oe.value)return!0;try{return await ge.confirm(u,"确认放弃修改?",{type:"warning",confirmButtonText:"放弃修改",cancelButtonText:"继续编辑"}),!0}catch{return!1}}async function kt(){if(!(!S.value||!ne.value||!T.value||_.value)){_.value=!0;try{const u=await Zt(W(S.value),w.value,{description:"在线编辑数据样本",baseVersionId:C.value,expectedCurrentVersionId:h.value});w.value=u.content,g.value=u.content,v.value=[u.version,...v.value],m.value=u.version.version+1,h.value=u.version.id,F.value=u.version.id,C.value=u.version.id,Z.success(`V${u.version.version} 创建成功,已设为当前版本`)}finally{
|