PageSourceSearch

https://www.huttonsgroup.com/build/assets/index-DkKUBixk.js

js huttonsgroup.com collected 2026-09-24 12:40:38 UTC 5,242 bytes, 2 lines download raw bytes

1import{n as w,i as T,D as P,p as S,e as V,w as R,b as _,u as n,f as $,a as h,y as k,m as B,s as D,B as L,o as j}from"./app-mFI3VYmo.js";import{P as G,u as U}from"./debounce-DvcxFQhK.js";import{p as Y}from"./useCsvPreprocess-Dw2gEsF-.js";import{_ as H}from"./Button.vue_vue_type_script_setup_true_lang-k3cvwrGg.js";import{_ as M}from"./CsvPreviewTable.vue_vue_type_script_setup_true_lang-ka63qTSi.js";import{_ as W}from"./Card.vue_vue_type_script_setup_true_lang-Be3n1fxU.js";import{_ as q}from"./Heading.vue_vue_type_script_setup_true_lang-BrV_tX0v.js";import{_ as K}from"./AppLayout.vue_vue_type_script_setup_true_lang-PeenwFxJ.js";import{_ as z}from"./HowTo.vue_vue_type_script_setup_true_lang-j4mFB2IJ.js";/* empty css            */import"./Spinner.vue_vue_type_script_setup_true_lang-CpQlG5al.js";import"./HorizontalScrollContainer-B5sDdovs.js";import"./Table.vue_vue_type_script_setup_true_lang-DIdnrMJe.js";import"./Skeleton.vue_vue_type_script_setup_true_lang-Bt9peTOf.js";import"./TableRow.vue_vue_type_script_setup_true_lang-cqLFCsGB.js";import"./TableHeader.vue_vue_type_script_setup_true_lang-CJrrdrcJ.js";import"./usePagination-sNUnOQ-a.js";import"./FormInput.vue_vue_type_script_setup_true_lang-Bd0O0_MO.js";import"./FormLabel.vue_vue_type_script_setup_true_lang-CaK9M24a.js";import"./FormatNumber-DtJYAcXm.js";import"./FormSelect.vue_vue_type_script_setup_true_lang-DLNfuC4a.js";import"./keyboard-DKN2DtMa.js";import"./use-resolve-button-type-DeF0NT7J.js";import"./use-text-value-DlNi8lvG.js";import"./csrfMeta-BHErKF-U.js";import"./Notification.vue_vue_type_script_setup_true_lang-BudQsNki.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./AppMenu.vue_vue_type_script_setup_true_lang-B8jjtGSI.js";import"./HuttonsLogo-BWFvgf73.js";import"./AppLogout.vue_vue_type_script_setup_true_lang-5bURSVEs.js";import"./portal-DKmILsax.js";import"./menuAdapter-Dl7JM_Ig.js";function J(){const y=w([]),l=w([]),m=["MONTH","YEAR","RANKING","CEA NO.","CATEGORY","CATEGORYID"];return{csvRows:y,validationErrors:l,parseCsv:c=>{l.value=[],G.parse(c,{header:!1,skipEmptyLines:!0,worker:!0,complete:o=>{const f=o.data,a=Y(f,m,l);if(!a)return;const{header:u,rows:b}=a,E=b.filter(t=>{if(!Array.isArray(t)||t.length<m.length)return!1;const v=t[0]?.trim(),p=t[1]?.trim(),i=t[2]?.trim(),N=t[4]?.trim(),F=t[5]?.trim();return!(!v||!p||!i||!N||!F)});y.value=[u.map(t=>({value:t})),...E.map(t=>t.slice(0,6).map((v,p)=>{let i=(v??"").replace(/"/g,"").trim();return(p===0||p===1||p===2||p===5)&&(i=i.replace(/[^0-9.\-]/g,""),i===""||isNaN(Number(i)))?{value:"",invalid:!0}:{value:i}}))]},error:o=>{l.value.push(o.message)}})},reset:()=>{y.value=[],l.value=[]}}}const Q={class:"space-y-0 mb-4"},X={class:"grid grid-cols-1 gap-x-8 gap-y-10 border-b border-gray-900/10 pb-12 md:grid-cols-3"},Z={class:"grid w-full grid-cols-1 gap-x-6 gap-y-8 sm:grid-cols-6 md:col-span-2"},ee={class:"mt-6 flex items-center justify-end gap-x-6"},Te=T({__name:"index",setup(y){const{show:l}=U(),m=B(),d=w(!1),C=w(null),c=(e="success",r="")=>{l({status:e,title:e==="success"?"Success":e==="error"?"Error":"Processing",message:r,open:!0})},o=P({csv_file:null}),f=P({payload:[]}),{csvRows:a,validationErrors:u,parseCsv:b,reset:E}=J(),t=w(1),v=e=>{const s=e.target.files?.[0];if(s){if(!s.name.endsWith(".csv")){c("error","Only CSV files are allowed.");return}o.csv_file=s,b(s)}},p=e=>{if(!e.dataTransfer)return;const r=e.dataTransfer.files;if(r.length!==1){c("error");return}const s=r[0];if(!s.name.endsWith(".csv")){c("error","Only CSV files are allowed.");return}o.csv_file=s,b(s)},i=()=>{o.csv_file=null,E()},N=async()=>{if(!a.value.length||a.value.length<=1){c("error","No valid data to import.");return}if(u.value&&u.value.length){c("error",u.value.join(`
2`));return}const e=a.value[0].map(s=>s.value),r=a.value.slice(1).map(s=>{const g={};return e.forEach((x,I)=>{g[x]=s[I]?.value??""}),g});f.clearErrors(),f.payload=r,f.post(D("admin.imports.award.import"),{preserveScroll:!0,onStart:()=>{d.value=!0},onSuccess:()=>{i(),o.reset()},onError:s=>{const g=Object.values(s).find(Boolean);c("error",g?String(g):"Upload failed.")},onFinish:()=>{d.value=!1}})},F=L(()=>!!o.csv_file&&a.value.length>1&&!u.value.length),O=(e,r)=>{l({status:r,title:r==="success"?"Success":"Error",message:e,open:!0})},A=(e,r)=>{e&&C.value!==e&&(C.value=e,O(e,r))};return S(()=>m.props.flash?.success,e=>A(e,"success")),S(()=>m.props.flash?.error,e=>A(e,"error")),(e,r)=>(j(),V(n(K),{title:"Import Awards | Huttons Super App"},{default:R(()=>[_(n(q),{level:"h1"},{default:R(()=>[...r[1]||(r[1]=[$("Import Awards",-1)])]),_:1}),_(n(W),null,{default:R(()=>[h("form",{enctype:"multipart/form-data",onSubmit:k(N,["prevent"])},[h("div",Q,[h("div",X,[_(n(z)),h("div",Z,[_(n(M),{currentPage:t.value,"onUpdate:currentPage":r[0]||(r[0]=s=>t.value=s),csvPreview:n(a).length>0,csvRows:n(a),file:n(o).csv_file,validationErrors:n(u),onFileChange:v,onFileDrop:p,onRemoveFile:i},null,8,["currentPage","csvPreview","csvRows","file","validationErrors"])])]),h("div",ee,[_(n(H),{id:"bt
2n-import","is-disabled":!F.value||d.value,isLoading:d.value,label:"Upload","leading-icon-class":"fa-regular fa-cloud-upload",type:"submit"},null,8,["is-disabled","isLoading"])])])],32)]),_:1})]),_:1}))}});export{Te as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.