platypush/platypush/backend/http/webapp/dist/static/js/3710.05c41d28.js

2 lines
16 KiB
JavaScript

"use strict";(self["webpackChunkplatypush"]=self["webpackChunkplatypush"]||[]).push([[3710],{3710:function(e,t,n){n.r(t),n.d(t,{default:function(){return Ue}});var s=n(6252),a=n(9963),i=n(3577);const r={class:"section command-container"},o=(0,s._)("div",{class:"section-title"},"Execute Action",-1),c={class:"request-type-container"},l=["checked"],u=(0,s._)("label",{for:"action-structured-input"},"Structured request",-1),d=["checked"],p=(0,s._)("label",{for:"action-raw-input"},"Raw request",-1),h={class:"request-header"},g={class:"autocomplete"},m=["disabled"],v={class:"buttons"},y=["disabled"],b=(0,s._)("i",{class:"fas fa-play"},null,-1),f=[b],k={key:0,class:"doc-container"},w={class:"title"},D=["href"],_={class:"doc html"},C=["innerHTML"],A={key:1,class:"options"},x={key:0,class:"params",ref:"params"},q=["disabled","placeholder","onUpdate:modelValue","onFocus"],L={key:0,class:"attr-doc-container mobile"},P={class:"title"},T=(0,s.Uk)(" Attribute: "),E=["textContent"],O={class:"doc html"},N=["innerHTML"],H={key:0,class:"extra-params",ref:"extraParams"},M={class:"col-5"},j=["disabled","onUpdate:modelValue"],R={class:"col-6"},U=["disabled","onUpdate:modelValue"],I={class:"col-1 buttons"},S=["onClick"],V=(0,s._)("i",{class:"fas fa-trash"},null,-1),$=[V],J={key:1,class:"add-param"},B=(0,s._)("i",{class:"fas fa-plus"},null,-1),K=[B],z={key:1,class:"attr-doc-container widescreen"},F={class:"title"},Y=(0,s.Uk)(" Attribute: "),Z=["textContent"],G={class:"doc html"},Q=["innerHTML"],W={class:"output-container"},X={key:0,class:"header"},ee=["textContent"],te={class:"buttons"},ne=(0,s._)("i",{class:"fas fa-clipboard"},null,-1),se=[ne],ae=["innerHTML"],ie=["innerHTML"],re={class:"first-row"},oe=["placeholder"],ce=["disabled"],le=(0,s._)("i",{class:"fas fa-play"},null,-1),ue=[le],de={key:0,class:"output-container"},pe={key:0,class:"header"},he=["textContent"],ge={class:"buttons"},me=(0,s._)("i",{class:"fas fa-clipboard"},null,-1),ve=[me],ye=["innerHTML"],be=["innerHTML"],fe={class:"section procedures-container"},ke=(0,s._)("div",{class:"section-title"},"Execute Procedure",-1),we=["onClick"],De={class:"head"},_e=["textContent"],Ce={class:"btn-container col-no-margin-1"},Ae=["disabled"],xe=(0,s._)("i",{class:"fas fa-play"},null,-1),qe=[xe],Le={key:0,class:"params"},Pe=["disabled","placeholder","onUpdate:modelValue"];function Te(e,t,n,b,V,B){const ne=(0,s.up)("Loading");return(0,s.wg)(),(0,s.iD)("div",{class:"row plugin execute-container",onClick:t[14]||(t[14]=(...e)=>B.onClick&&B.onClick(...e))},[V.loading?((0,s.wg)(),(0,s.j4)(ne,{key:0})):(0,s.kq)("",!0),(0,s._)("div",r,[o,(0,s._)("form",{class:"action-form",ref:"actionForm",autocomplete:"off",onSubmit:t[10]||(t[10]=(0,a.iM)(((...e)=>B.executeAction&&B.executeAction(...e)),["prevent"]))},[(0,s._)("div",c,[(0,s._)("input",{type:"radio",id:"action-structured-input",checked:V.structuredInput,onChange:t[0]||(t[0]=e=>B.onInputTypeChange(!0))},null,40,l),u,(0,s._)("input",{type:"radio",id:"action-raw-input",checked:!V.structuredInput,onChange:t[1]||(t[1]=e=>B.onInputTypeChange(!1))},null,40,d),p]),(0,s._)("div",{class:(0,i.C_)(["request structured-request",V.structuredInput?"":"hidden"])},[(0,s._)("div",h,[(0,s._)("div",g,[(0,s._)("label",null,[(0,s.wy)((0,s._)("input",{ref:"actionName",type:"text",class:"action-name",placeholder:"Action Name",disabled:V.running,"onUpdate:modelValue":t[2]||(t[2]=e=>V.action.name=e),onChange:t[3]||(t[3]=e=>V.actionChanged=!0),onBlur:t[4]||(t[4]=(...e)=>B.updateAction&&B.updateAction(...e))},null,40,m),[[a.nr,V.action.name]])])]),(0,s._)("div",v,[(0,s._)("button",{type:"submit",class:"run-btn btn-primary",disabled:V.running||!V.action?.name?.length,title:"Run"},f,8,y)])]),V.selectedDoc?((0,s.wg)(),(0,s.iD)("div",k,[(0,s._)("div",w,[(0,s._)("a",{href:B.currentActionDocURL},"Action documentation",8,D)]),(0,s._)("div",_,[V.docLoading?((0,s.wg)(),(0,s.j4)(ne,{key:0})):((0,s.wg)(),(0,s.iD)("span",{key:1,innerHTML:V.selectedDoc},null,8,C))])])):(0,s.kq)("",!0),V.action.name in V.actions&&(Object.keys(V.action.args).length||V.action.supportsExtraArgs)?((0,s.wg)(),(0,s.iD)("div",A,[Object.keys(V.action.args).length||V.action.supportsExtraArgs?((0,s.wg)(),(0,s.iD)("div",x,[((0,s.wg)(!0),(0,s.iD)(s.HY,null,(0,s.Ko)(Object.keys(V.action.args),(e=>((0,s.wg)(),(0,s.iD)("div",{class:"param",key:e},[(0,s._)("label",null,[(0,s.wy)((0,s._)("input",{type:"text",class:"action-param-value",disabled:V.running,placeholder:e,"onUpdate:modelValue":t=>V.action.args[e].value=t,onFocus:t=>B.selectAttrDoc(e),onBlur:t[5]||(t[5]=(...e)=>B.resetAttrDoc&&B.resetAttrDoc(...e))},null,40,q),[[a.nr,V.action.args[e].value]])]),V.selectedAttrDoc&&V.selectedAttr===e?((0,s.wg)(),(0,s.iD)("div",L,[(0,s._)("div",P,[T,(0,s._)("div",{class:"attr-name",textContent:(0,i.zw)(V.selectedAttr)},null,8,E)]),(0,s._)("div",O,[V.docLoading?((0,s.wg)(),(0,s.j4)(ne,{key:0})):((0,s.wg)(),(0,s.iD)("span",{key:1,innerHTML:V.selectedAttrDoc},null,8,N))])])):(0,s.kq)("",!0)])))),128)),Object.keys(V.action.extraArgs).length?((0,s.wg)(),(0,s.iD)("div",H,[((0,s.wg)(!0),(0,s.iD)(s.HY,null,(0,s.Ko)(Object.keys(V.action.extraArgs),(e=>((0,s.wg)(),(0,s.iD)("div",{class:"param extra-param",key:e},[(0,s._)("label",M,[(0,s.wy)((0,s._)("input",{type:"text",class:"action-extra-param-name",disabled:V.running,placeholder:"Name","onUpdate:modelValue":t=>V.action.extraArgs[e].name=t},null,8,j),[[a.nr,V.action.extraArgs[e].name]])]),(0,s._)("label",R,[(0,s.wy)((0,s._)("input",{type:"text",class:"action-extra-param-value",disabled:V.running,placeholder:"Value","onUpdate:modelValue":t=>V.action.extraArgs[e].value=t},null,8,U),[[a.nr,V.action.extraArgs[e].value]])]),(0,s._)("label",I,[(0,s._)("button",{type:"button",class:"action-extra-param-del",title:"Remove parameter",onClick:t=>B.removeParameter(e)},$,8,S)])])))),128))],512)):(0,s.kq)("",!0),V.action.supportsExtraArgs?((0,s.wg)(),(0,s.iD)("div",J,[(0,s._)("button",{type:"button",title:"Add a parameter",onClick:t[6]||(t[6]=(...e)=>B.addParameter&&B.addParameter(...e))},K)])):(0,s.kq)("",!0)],512)):(0,s.kq)("",!0),V.selectedAttrDoc?((0,s.wg)(),(0,s.iD)("div",z,[(0,s._)("div",F,[Y,(0,s._)("div",{class:"attr-name",textContent:(0,i.zw)(V.selectedAttr)},null,8,Z)]),(0,s._)("div",G,[V.docLoading?((0,s.wg)(),(0,s.j4)(ne,{key:0})):((0,s.wg)(),(0,s.iD)("span",{key:1,innerHTML:V.selectedAttrDoc},null,8,Q))])])):(0,s.kq)("",!0)])):(0,s.kq)("",!0),(0,s._)("div",W,[null!=V.error||null!=V.response?((0,s.wg)(),(0,s.iD)("div",X,[(0,s._)("div",{class:"title",textContent:(0,i.zw)(null!=V.error?"Error":"Output")},null,8,ee),(0,s._)("div",te,[(0,s._)("button",{type:"button",title:"Copy to clipboard",onClick:t[7]||(t[7]=(...e)=>B.copyToClipboard&&B.copyToClipboard(...e))},se)])])):(0,s.kq)("",!0),null!=V.response?((0,s.wg)(),(0,s.iD)("div",{key:1,class:"response",innerHTML:V.response},null,8,ae)):null!=V.error?((0,s.wg)(),(0,s.iD)("div",{key:2,class:"error",innerHTML:V.error},null,8,ie)):(0,s.kq)("",!0)])],2),(0,s._)("div",{class:(0,i.C_)(["request raw-request",V.structuredInput?"hidden":""])},[(0,s._)("div",re,[(0,s._)("label",null,[(0,s.wy)((0,s._)("textarea",{"onUpdate:modelValue":t[8]||(t[8]=e=>V.rawRequest=e),ref:"rawAction",placeholder:V.rawRequestPlaceholder},null,8,oe),[[a.nr,V.rawRequest]])]),(0,s._)("button",{type:"submit",disabled:V.running,class:"run-btn btn-primary",title:"Run"},ue,8,ce)]),null!=V.response||null!=V.error?((0,s.wg)(),(0,s.iD)("div",de,[null!=V.error||null!=V.response?((0,s.wg)(),(0,s.iD)("div",pe,[(0,s._)("div",{class:"title",textContent:(0,i.zw)(null!=V.error?"Error":"Output")},null,8,he),(0,s._)("div",ge,[(0,s._)("button",{type:"button",title:"Copy to clipboard",onClick:t[9]||(t[9]=(...e)=>B.copyToClipboard&&B.copyToClipboard(...e))},ve)])])):(0,s.kq)("",!0),null!=V.error?((0,s.wg)(),(0,s.iD)("div",{key:1,class:"error",innerHTML:V.error},null,8,ye)):null!=V.response?((0,s.wg)(),(0,s.iD)("div",{key:2,class:"response",innerHTML:V.response},null,8,be)):(0,s.kq)("",!0)])):(0,s.kq)("",!0)],2)],544)]),(0,s._)("div",fe,[ke,((0,s.wg)(!0),(0,s.iD)(s.HY,null,(0,s.Ko)(Object.keys(V.procedures).sort(),(n=>((0,s.wg)(),(0,s.iD)("div",{class:(0,i.C_)(["procedure",V.selectedProcedure.name===n?"selected":""]),key:n,onClick:e=>B.updateProcedure(n,e)},[(0,s._)("form",{ref_for:!0,ref:"procedureForm",autocomplete:"off",onSubmit:t[13]||(t[13]=(0,a.iM)(((...e)=>B.executeProcedure&&B.executeProcedure(...e)),["prevent"]))},[(0,s._)("div",De,[(0,s._)("div",{class:"name col-no-margin-11",textContent:(0,i.zw)(n)},null,8,_e),(0,s._)("div",Ce,[V.selectedProcedure.name===n?((0,s.wg)(),(0,s.iD)("button",{key:0,type:"submit",class:"run-btn btn-default",disabled:V.running,title:"Run",onClick:t[11]||(t[11]=(0,a.iM)((t=>e.$emit("submit")),["stop"]))},qe,8,Ae)):(0,s.kq)("",!0)])]),V.selectedProcedure.name===n?((0,s.wg)(),(0,s.iD)("div",Le,[((0,s.wg)(!0),(0,s.iD)(s.HY,null,(0,s.Ko)(Object.keys(V.selectedProcedure.args),(e=>((0,s.wg)(),(0,s.iD)("div",{class:"param",key:e},[(0,s._)("label",null,[(0,s.wy)((0,s._)("input",{type:"text",class:"action-param-value",onClick:t[12]||(t[12]=e=>e.stopPropagation()),disabled:V.running,placeholder:e,"onUpdate:modelValue":t=>V.selectedProcedure.args[e]=t},null,8,Pe),[[a.nr,V.selectedProcedure.args[e]]])])])))),128))])):(0,s.kq)("",!0)],544)],10,we)))),128))])])}function Ee(e,t,n){let s;function a(e){if(!e)return!1;i(e),s>=e.length&&(s=0),s<0&&(s=e.length-1),e[s].classList.add("autocomplete-active")}function i(e){for(let t=0;t<e.length;t++)e[t].classList.remove("autocomplete-active")}function r(t){const n=document.getElementsByClassName("autocomplete-items");for(let s=0;s<n.length;s++)t!==n[s]&&t!==e&&n[s].parentNode.removeChild(n[s])}e.addEventListener("input",(function(){let a,i,o,c=this.value;if(r(),!c)return!1;for(s=-1,a=document.createElement("DIV"),a.setAttribute("id",this.id+"autocomplete-list"),a.setAttribute("class","autocomplete-items"),this.parentNode.appendChild(a),o=0;o<t.length;o++)t[o].substr(0,c.length).toUpperCase()===c.toUpperCase()&&(i=document.createElement("DIV"),i.innerHTML="<strong>"+t[o].substr(0,c.length)+"</strong>",i.innerHTML+=t[o].substr(c.length),i.innerHTML+="<input type='hidden' value='"+t[o]+"'>",i.addEventListener("click",(function(t){e.value=this.getElementsByTagName("input")[0].value,n&&n(t,e.value),r()})),a.appendChild(i))})),e.addEventListener("keyup",(function(e){["ArrowUp","ArrowDown","Tab","Enter"].indexOf(e.key)>=0&&e.stopPropagation(),"Enter"===e.key&&this.blur()})),e.addEventListener("keydown",(function(e){let t=document.getElementById(this.id+"autocomplete-list");t&&(t=t.getElementsByTagName("div")),"ArrowDown"===e.key||"Tab"===e.key&&!e.shiftKey?(s++,a(t),e.preventDefault()):"ArrowUp"===e.key||"Tab"===e.key&&e.shiftKey?(s--,a(t),e.preventDefault()):"Enter"===e.key&&s>-1&&t&&t.length&&(e.preventDefault(),t[s].click(),this.focus())})),document.addEventListener("click",(function(e){r(e.target)}))}var Oe=Ee,Ne=n(6813),He=n(1232),Me={name:"Execute",components:{Loading:He.Z},mixins:[Ne.Z],data(){return{loading:!1,running:!1,docLoading:!1,structuredInput:!0,actionChanged:!1,selectedDoc:void 0,selectedAttr:void 0,selectedAttrDoc:void 0,selectedProcedure:{name:void 0,args:{}},response:void 0,error:void 0,rawRequest:void 0,rawRequestPlaceholder:'Raw JSON request. Example:\n\n{"type": "request", "action": "file.list", "args": {"path": "/"}}',actions:{},plugins:{},procedures:{},actionDocsCache:{},action:{name:void 0,args:{},extraArgs:[],supportsExtraArgs:!1}}},computed:{currentActionDocURL(){if(!this.action?.name?.length)return;const e=this.action.name.split(".").slice(0,-1).join("."),t=this.action.name.split(".").slice(-1),n=this.action.name.split(".").slice(0,-1).map((e=>e.slice(0,1).toUpperCase()+e.slice(1))).join("")+"Plugin";return`https://docs.platypush.tech/platypush/plugins/${e}.html#platypush.plugins.${e}.${n}.${t}`}},methods:{async refresh(){this.loading=!0;try{this.procedures=await this.request("inspect.get_procedures"),this.plugins=await this.request("inspect.get_all_plugins")}finally{this.loading=!1}for(const t of Object.values(this.plugins))for(const e of Object.values(t.actions))e.name=t.name+"."+e.name,e.supportsExtraArgs=!!e.has_kwargs,delete e.has_kwargs,this.actions[e.name]=e;const e=this;Oe(this.$refs.actionName,Object.keys(this.actions).sort(),((t,n)=>{this.action.name=n,e.updateAction()}))},async updateAction(){if(this.action.name in this.actions||(this.selectedDoc=void 0),this.actionChanged&&this.action.name in this.actions){this.docLoading=!0;try{this.action={...this.actions[this.action.name],args:Object.entries(this.actions[this.action.name].args).reduce(((e,t)=>(e[t[0]]={...t[1],value:t[1].default},e)),{}),extraArgs:[]}}finally{this.docLoading=!1}this.selectedDoc=this.actionDocsCache[this.action.name]?.html||await this.parseDoc(this.action.doc),this.actionDocsCache[this.action.name]||(this.actionDocsCache[this.action.name]={}),this.actionDocsCache[this.action.name].html=this.selectedDoc,this.actionChanged=!1,this.response=void 0,this.error=void 0}},async parseDoc(e){return e?.length?await this.request("utils.rst_to_html",{text:e}):e},updateProcedure(e,t){"submit"!==t.target.getAttribute("type")&&(this.selectedProcedure.name!==e?e in this.procedures?this.selectedProcedure={name:e,args:(this.procedures[e].args||[]).reduce(((e,t)=>(e[t]=void 0,e)),{})}:console.warn("Procedure not found: "+e):this.selectedProcedure={name:void 0,args:{}})},addParameter(){this.action.extraArgs.push({name:void 0,value:void 0})},removeParameter(e){this.action.extraArgs.pop(e)},async selectAttrDoc(e){this.selectedAttr=e,this.selectedAttrDoc=this.actionDocsCache[this.action.name]?.[e]?.html||await this.parseDoc(this.action.args[e].doc),this.actionDocsCache[this.action.name]||(this.actionDocsCache[this.action.name]={}),this.actionDocsCache[this.action.name][e]={html:this.selectedAttrDoc}},resetAttrDoc(){this.selectedAttr=void 0,this.selectedAttrDoc=void 0},onInputTypeChange(e){this.structuredInput=e,this.response=void 0,this.error=void 0,this.$nextTick((()=>{e?this.$refs.actionName.focus():this.$refs.rawAction.focus()}))},onResponse(e){this.response="<pre>"+JSON.stringify(e,null,2)+"</pre>",this.error=void 0},onError(e){this.response=void 0,this.error=e},onDone(){this.running=!1},async copyToClipboard(){const e=(null!=this.error?this.error:this.response).replace(/^\s*<pre>/g,"").replace(/<\/pre>\s*/g,"");await navigator.clipboard.writeText(e)},executeAction(){if((this.action.name||this.rawRequest)&&!this.running)if(this.running=!0,this.structuredInput){const e={...Object.entries(this.action.args).reduce(((e,t)=>{if(null!=t[1].value){let s=t[1].value;try{s=JSON.parse(s)}catch(n){console.debug("Not a valid JSON value"),console.debug(s)}e[t[0]]=s}return e}),{}),...this.action.extraArgs.reduce(((e,t)=>{let n=e[t.value];try{n=JSON.parse(n)}catch(s){console.debug("Not a valid JSON value"),console.debug(n)}return e[t.name]=n,e}),{})};this.request(this.action.name,e).then(this.onResponse).catch(this.onError).finally(this.onDone)}else try{const e=JSON.parse(this.rawRequest);this.execute(e).then(this.onResponse).catch(this.onError).finally(this.onDone)}catch(e){this.notify({error:!0,title:"Invalid JSON request",text:e.toString()})}},executeProcedure(e){if(!this.selectedProcedure.name||this.running)return;e.stopPropagation(),this.running=!0;const t={...Object.entries(this.selectedProcedure.args).reduce(((e,t)=>{if(null!=t[1]){let s=t[1];try{s=JSON.parse(s)}catch(n){console.debug("Not a valid JSON value"),console.debug(s)}e[t[0]]=s}return e}),{})};this.request("procedure."+this.selectedProcedure.name,t).then(this.onResponse).catch(this.onError).finally(this.onDone)},onClick(e){"a"===e.target.tagName.toLowerCase()&&(e.stopPropagation(),e.preventDefault(),window.open(e.target.getAttribute("href","_blank")))}},mounted(){this.$nextTick((()=>{this.$refs.actionName.focus()})),this.refresh()}},je=n(3744);const Re=(0,je.Z)(Me,[["render",Te]]);var Ue=Re}}]);
//# sourceMappingURL=3710.05c41d28.js.map