PageSourceSearch

https://www.airgradient.com/_nuxt/UWHcmBiK.js

js airgradient.com collected 2026-09-24 09:06:02 UTC 9,038 bytes, 1 lines download raw bytes

1import{_ as ae}from"./D9MvgeHQ.js";import{K as oe,z as ne,r as c,av as le,e as z,w as de,g as ie,c as l,i as a,F as M,d as s,h as L,a as v,v as b,t as i,aL as B,aM as re,b1 as K,m as O,E as w,o as d,a3 as _,af as ce}from"./hpNDvw06.js";import{r as ue}from"./BYrMGjzP.js";import{u as pe,a as me}from"./C-LiYy0w.js";import"./Cf455Atp.js";const ve={class:"container-fluid support-zendesk-page"},be={key:0,class:"alert alert-secondary mb-0"},_e={key:1,class:"alert alert-danger mb-0"},fe={class:"support-zendesk-page__header"},ke={class:"support-zendesk-page__actions"},ge=["disabled"],ye={key:0,class:"alert alert-danger"},he={key:1,class:"alert alert-success"},ze={class:"row g-3"},we={class:"col-xl-8"},xe={class:"support-zendesk-panel"},Ie={class:"support-zendesk-filters"},Se={class:"support-zendesk-bulk"},Ce=["disabled"],Me={class:"text-muted"},Le=["disabled"],$e={key:0,class:"text-muted p-3"},Ae={key:1,class:"text-muted p-3"},Te={key:2,class:"text-muted p-3"},Be={key:3,class:"table-responsive"},Ne={class:"table support-zendesk-table align-middle mb-0"},Ue=["checked","disabled","onChange"],De={class:"support-zendesk-table__preview"},Fe={class:"text-end"},Pe=["onClick"],Ve={class:"col-xl-4"},Ze={class:"support-zendesk-panel support-zendesk-preview"},Ee={key:0,class:"text-muted"},He={class:"support-zendesk-preview__header"},Re=["innerHTML"],qe={key:1,class:"support-zendesk-preview__text"},Ke={key:0,class:"support-zendesk-panel mt-3"},Oe={class:"support-zendesk-result-list"},je={key:0,class:"text-danger small"},Ge=oe({__name:"zendesk-import",setup(Je){const N=pe(),j=ne(),U=ue(j.public.apiUrl),{authStatus:f,fetchAuthStatus:G}=me(),k=c([]),u=c(new Set),x=c(""),$=c([]),I=c(!1),g=c(!1),D=c(!1),m=c(""),y=c(""),F=c(!1),r=le({search:"",status:"",active:""}),P=e=>String(e||"").trim().toLowerCase(),V=(e,t)=>{var n,o,C;return String(((n=e==null?void 0:e.data)==null?void 0:n.message)||((C=(o=e==null?void 0:e.response)==null?void 0:o._data)==null?void 0:C.message)||(e==null?void 0:e.message)||t)},S=e=>e.hasImportableBody&&!e.duplicate,A=z(()=>{const e=P(r.search);return k.value.filter(t=>{const n=t.duplicate?"duplicate":t.hasImportableBody?"ready":"missing_body";return r.status&&r.status!==n||r.active==="active"&&!t.active||r.active==="inactive"&&t.active?!1:e?P(`${t.title} ${t.bodyText} ${t.description}`).includes(e):!0})}),h=z(()=>A.value.filter(S)),Z=z(()=>u.value.size),E=z(()=>h.value.length>0&&h.value.every(e=>u.value.has(e.zendeskId))),p=z(()=>k.value.find(e=>e.zendeskId===x.value)||null),J=e=>u.value.has(e),Q=e=>{const t=k.value.find(o=>o.zendeskId===e);if(!t||!S(t))return;const n=new Set(u.value);n.has(e)?n.delete(e):n.add(e),u.value=n},W=()=>{const e=new Set(u.value);if(E.value)for(const t of h.value)e.delete(t.zendeskId);else for(const t of h.value)e.add(t.zendeskId);u.value=e},X=e=>{x.value=e},T=async(e=!0)=>{var t;I.value=!0,m.value="",e&&(y.value="");try{k.value=await N(`${U}/support/admin/zendesk/macros`,{credentials:"include"}),D.value=!0,u.value=new Set,x.value=((t=k.value[0])==null?void 0:t.zendeskId)||""}catch(n){m.value=V(n,"Unable to load Zendesk macros.")}finally{I.value=!1}},H=async()=>{F.value||f.value!=="authorized"||(F.value=!0,await T())},Y=async()=>{const e=Array.from(u.value);if(!(!e.length||g.value||!window.confirm(`Import ${e.length} Zendesk macro(s) as canned responses?`))){g.value=!0,m.value="",y.value="";try{const n=await N(`${U}/support/admin/zendesk/macros/import`,{method:"POST",credentials:"include",body:{macroIds:e}});$.value=n.items||[],y.value=`Imported ${n.imported}. Skipped duplicates ${n.skippedDuplicates}. Skipped without body ${n.skippedNoBody}. Errors ${n.errors}.`,await T(!1)}catch(n){m.value=V(n,"Unable to import selected Zendesk macros.")}finally{g.value=!1}}},R=e=>e.duplicate?"Already exists":e.hasImportableBody?"Ready":"Missing body",q=e=>({"text-bg-success":S(e),"text-bg-secondary":e.duplicate,"text-bg-warning":!e.duplicate&&!e.hasImportableBody}),ee=e=>e.replace(/_/g," ").replace(/\b\w/g,t=>t.toUpperCase()),te=e=>({"text-bg-success":e==="imported","text-bg-secondary":e==="duplicate","text-bg-warning":e==="missing_body","text-bg-danger":e==="error"}),se=e=>{if(!e)return"";const t=new Date(e);return Number.isNaN(t.getTime())?e:new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"short"}).format(t)};return de(f,()=>{H()},{immediate:!0}),ie(async()=>{await G(),await H()}),(e,t)=>{const n=ae;return d(),l("main",ve,[a(f)==="idle"||a(f)==="loading"?(d(),l("div",be," Checking access... ")):a(f)!=="authorized"?(d(),l("div",_e," Support staff access required. ")):(d(),l(M,{key:2},[s("div",fe,[t[10]||(t[10]=s("div",null,[s("div",{class:"support-zendesk-page__eyebrow"},"Customer Support"),s("h1",{class:"support-zendesk-page__title mb-0"},"Zendesk Macro Import")],-1)),s("div",ke,[v(n,{class:"btn-small button-blue",to:"/admin/support"},{default:b(()=>[...t[4]||(t[4]=[_("Tickets",-1)])]),_:1}),v(n,{class:"btn-small button-blue",to:"/admin/support/zendesk-tickets"},{default:b(()=>[...t[5]||(t[5]=[_(" Zendesk tickets ",-1)])]),_:1}),v(n,{class:"btn-small button-blue",to:"/admin/support/tags"},{default:b(()=>[...t[6]||(t[6]=[_(" Tags ",-1)])]),_:1}),v(n,{class:"btn-small button-blue",to:"/admin/support/canned-responses"},{default:b(()=>[...t[7]||(t[7]=[_(" Canned responses ",-1)])]),_:1}),v(n,{class:"btn-small button-blue",to:"/admin/support/email-templates"},{default:b(()=>[...t[8]||(t[8]=[_(" Email templates ",-1)])]),_:1}),v(n,{class:"btn-small button-blue",to:"/admin/support/system-log"},{default:b(()=>[...t[9]||(t[9]=[_(" System Log ",-1)])]),_:1}),s("button",{class:"btn-small button-blue",type:"button",disabled:a(I),onClick:t[0]||(t[0]=()=>T())}," Load macros ",8,ge)])]),a(m)?(d(),l("div",ye,i(a(m)),1)):L("",!0),a(y)?(d(),l("div",he,i(a(y)),1)):L("",!0),s("div",ze,[s("section",we,[s("section",xe,[s("div",Ie,[B(s("input",{"onUpdate:modelValue":t[1]||(t[1]=o=>a(r).search=o),class:"form-control",type:"search",placeholder:"Search macros"},null,512),[[re,a(r).search]]),B(s("select",{"onUpdate:modelValue":t[2]||(t[2]=o=>a(r).status=o),class:"form-select"},[...t[11]||(t[11]=[s("option",{value:""},"All macros",-1),s("option",{value:"ready"},"Ready to import",-1),s("option",{value:"duplicate"},"Already exists",-1),s("option",{value:"missing_body"},"Missing response body",-1)])],512),[[K,a(r).status]]),B(s("select",{"onUpdate:modelValue":t[3]||(t[3]=o=>a(r).active=o),class:"form-select"},[...t[12]||(t[12]=[s("option",{value:""},"Active and inactive",-1),s("option",{value:"active"},"Active",-1),s("option",{value:"inactive"},"Inactive",-1)])],512),[[K,a(r).active]])]),s("div",Se,[s("button",{class:"btn-small button-blue",type:"button",disabled:!a(h).length,onClick:W},i(a(E)?"Clear selection":"Select importable"),9,Ce),s("span",Me,i(a(Z))+" selected ",1),s("button",{class:"btn-small button-orange",type:"button",disabled:a(g)||a(Z)===0,onClick:Y},i(a(g)?"Importing...":"Import selected"),9,Le)]),a(I)?(d(),l("div",$e,"Loading Zendesk macros...")):a(D)?a(A).length?(d(),l("div",Be,[s("table",Ne,[t[13]||(t[13]=s("thead",null,[s("tr",null,[s("th",{scope:"col"},[s("span",{class:"visually-hidden"},"Select")]),s("th",{scope:"col"},"Macro"),s("th",{scope:"col"},"Status"),s("th",{scope:"col"},"Updated"),s("th",{class:"text-end",scope:"col"},"Preview")])],-1)),s("tbody",null,[(d(!0),l(M,null,O(a(A),o=>(d(),l("tr",{key:o.zendeskId,class:w({"support-zendesk-table__row--active":a(x)===o.zendeskId})},[s("td",null,[s("input",{class:"form-check-input",type:"checkbox",checked:J(o.zendeskId),disabled:!S(o),onChange:C=>Q(o.zendeskId)},null,40,Ue)]),s("td",null,[s("strong",null,i(o.title),1),s("div",De,i(o.bodyText||o.description||"No response body"),1)]),s("td",null,[s("span",{class:w(["badge",q(o)])},i(R(o)),3),s("span",{class:w(["badge ms-1",o.active?"text-bg-success":"text-bg-secondary"])},i(o.active?"Active":"Inactive"),3)]),s("td",null,i(se(o.zendeskUpdatedAt)),1),s("td",Fe,[s("button",{class:"btn-small button-blue",type:"button",onClick:C=>X(o.zendeskId)}," Preview ",8,Pe)])],2))),128))])])])):(d(),l("div",Te,"No macros foun
1d.")):(d(),l("div",Ae," Load macros from Zendesk to start the one-time migration. "))])]),s("aside",Ve,[s("section",Ze,[t[14]||(t[14]=s("h2",{class:"h5 mb-3"},"Preview",-1)),a(p)?(d(),l(M,{key:1},[s("div",He,[s("strong",null,i(a(p).title),1),s("span",{class:w(["badge",q(a(p))])},i(R(a(p))),3)]),a(p).bodyHtml?(d(),l("div",{key:0,class:"support-zendesk-preview__body",innerHTML:a(p).bodyHtml},null,8,Re)):(d(),l("pre",qe,i(a(p).bodyText),1))],64)):(d(),l("div",Ee,"Select a macro to preview."))]),a($).length?(d(),l("section",Ke,[t[15]||(t[15]=s("h2",{class:"h5 mb-3"},"Last Import",-1)),s("div",Oe,[(d(!0),l(M,null,O(a($),o=>(d(),l("div",{key:`${o.zendeskId}:${o.status}`,class:"support-zendesk-result-list__item"},[s("strong",null,i(o.title),1),s("span",{class:w(["badge",te(o.status)])},i(ee(o.status)),3),o.error?(d(),l("div",je,i(o.error),1)):L("",!0)]))),128))])])):L("",!0)])])],64))])}}}),tt=ce(Ge,[["__scopeId","data-v-4f7a287c"]]);export{tt 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.