diff --git a/dist/8514.d83f3592206d251f.js b/dist/8514.d83f3592206d251f.js new file mode 100644 index 000000000..f76305b75 --- /dev/null +++ b/dist/8514.d83f3592206d251f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdf_admin_interface=self.webpackChunkdf_admin_interface||[]).push([[8514],{88514:(R,E,r)=>{r.r(E),r.d(E,{DfSchedulerDetailsComponent:()=>M});var o=r(31635),i=r(89417),u=r(23472),v=r(90124),d=r(24784),D=r(33609),_=r(60177),h=r(96850),b=r(99631),l=r(82798),g=r(30450),c=r(88834),m=r(63281),p=r(9709),y=r(49894),S=r(51425),C=r(99437),O=r(18810),e=r(17705),P=r(30046),A=r(52868),T=r(32102),k=r(86600);function G(n,t){if(1&n&&(e.j41(0,"mat-option",14),e.EFF(1),e.k0s()),2&n){const s=t.$implicit;e.Y8G("value",s.id),e.R7$(1),e.SpI(" ",s.name," ")}}function F(n,t){if(1&n&&(e.j41(0,"mat-option",14),e.EFF(1),e.k0s()),2&n){const s=t.$implicit;e.Y8G("value",s),e.R7$(1),e.JRh(s)}}function B(n,t){if(1&n&&(e.j41(0,"mat-form-field",25)(1,"mat-label"),e.EFF(2),e.nI1(3,"transloco"),e.k0s(),e.j41(4,"mat-select",26),e.DNE(5,F,2,2,"mat-option",10),e.k0s()()),2&n){const s=e.XpG();e.R7$(2),e.JRh(e.bMT(3,2,"scheduler.form.label.component")),e.R7$(3),e.Y8G("ngForOf",s.componentDropdownOptions)}}function U(n,t){if(1&n&&(e.j41(0,"mat-option",14),e.EFF(1),e.k0s()),2&n){const s=t.$implicit;e.Y8G("value",s.id),e.R7$(1),e.SpI(" ",s.name," ")}}function L(n,t){if(1&n&&(e.j41(0,"mat-option",14),e.EFF(1),e.k0s()),2&n){const s=t.$implicit;e.Y8G("value",s.id),e.R7$(1),e.Lme(" ",s.name,"",s.email?" ("+s.email+")":""," ")}}function $(n,t){if(1&n&&(e.j41(0,"mat-form-field",4)(1,"mat-label"),e.EFF(2,"Run as user (optional)"),e.k0s(),e.j41(3,"mat-select",27)(4,"mat-option",14),e.EFF(5,"App default role"),e.k0s(),e.DNE(6,L,2,3,"mat-option",10),e.k0s()()),2&n){const s=e.XpG();e.R7$(4),e.Y8G("value",null),e.R7$(2),e.Y8G("ngForOf",s.runAsUsers)}}function j(n,t){1&n&&(e.qex(0),e.j41(1,"mat-form-field",4)(2,"mat-label"),e.EFF(3),e.nI1(4,"transloco"),e.k0s(),e.nrm(5,"textarea",28),e.k0s(),e.bVm()),2&n&&(e.R7$(3),e.JRh(e.bMT(4,1,"scheduler.form.label.payload")))}r(36225);const W=function(n){return{label:n}};let M=class I{constructor(t,s,a,f,K,N,Y,w){this.service=t,this.formBuilder=s,this.activatedRoute=a,this.router=f,this.accessListService=K,this.appService=N,this.userService=Y,this.themeService=w,this.relatedParam="task_log_by_task_id",this.componentDropdownOptions=[],this.runAsApps=[],this.runAsUsers=[],this.log="",this.alertMsg="",this.showAlert=!1,this.alertType="error",this.isDarkMode=this.themeService.darkMode$}ngOnInit(){this.formGroup=this.formBuilder.group({name:["",i.k0.required],description:[""],active:[!0,i.k0.required],serviceId:["",i.k0.required],component:["",i.k0.required],method:["GET",i.k0.required],frequency:[],appId:[null],userId:[null]}),this.activatedRoute.data.subscribe(t=>{this.userServicesDropdownOptions=t.data.resource}),this.appService.getAll({fields:"id,name",limit:1e3,sort:"name"}).subscribe(t=>this.runAsApps=t.resource),this.userService.getAll({fields:"id,name,email",limit:1e3,sort:"name"}).subscribe(t=>this.runAsUsers=t.resource),this.activatedRoute.data.subscribe(t=>{this.scheduleToEdit=t.schedulerObject,this.scheduleToEdit&&(this.log=this.scheduleToEdit.taskLogByTaskId?.content??"",this.getServiceAccessList(this.scheduleToEdit.serviceId),this.formGroup.setValue({name:this.scheduleToEdit.name,description:this.scheduleToEdit.description,active:this.scheduleToEdit.isActive,serviceId:this.scheduleToEdit.serviceId,component:this.scheduleToEdit.component,method:this.scheduleToEdit.verb,frequency:this.scheduleToEdit.frequency,appId:this.scheduleToEdit.appId??null,userId:this.scheduleToEdit.userId??null}),"GET"!==this.scheduleToEdit.verb&&this.addPayloadField(this.scheduleToEdit.payload))}),this.formGroup.get("method")?.valueChanges.subscribe(t=>{"GET"===t?this.removePayloadField():this.formGroup.contains("payload")||this.addPayloadField()}),this.formGroup.get("serviceId")?.valueChanges.subscribe(t=>{this.getServiceAccessList(t)})}triggerAlert(t,s){this.alertType=t,this.alertMsg=s,this.showAlert=!0}onCancel(){this.router.navigate([u.b.SYSTEM_SETTINGS,u.b.SCHEDULER])}onSubmit(){if(!this.formGroup.invalid&&!this.formGroup.pristine)if(typeof this.scheduleToEdit>"u"){const t=this.assemblePayload();this.service.create({resource:[t]},{snackbarSuccess:"scheduler.alerts.createdSuccess",fields:"*",related:this.relatedParam}).pipe((0,C.W)(s=>(this.triggerAlert("error",s.error.error.context.resource[0].message),(0,O.$)(()=>new Error(s))))).subscribe(()=>this.router.navigate([u.b.SYSTEM_SETTINGS,u.b.SCHEDULER]))}else if(this.scheduleToEdit){const t=this.assemblePayload();this.service.update(this.scheduleToEdit.id,t,{snackbarSuccess:"scheduler.alerts.updateSuccess",fields:"*",related:this.relatedParam}).pipe((0,C.W)(s=>(this.triggerAlert("error",s.error.error.message),(0,O.$)(()=>new Error(s))))).subscribe(()=>this.router.navigate([u.b.SYSTEM_SETTINGS,u.b.SCHEDULER]))}}addPayloadField(t){this.formGroup.addControl("payload",this.formBuilder.control(t??"",[v.V]))}removePayloadField(){this.formGroup.removeControl("payload")}getServiceAccessList(t){const s=this.userServicesDropdownOptions.find(a=>a.id===t);this.selectedService=s,s&&this.accessListService.get(s.name,{additionalParams:[{key:"as_access_list",value:!0}]}).subscribe(a=>{this.componentDropdownOptions=a.resource})}getVerbMask(t){switch(t){case"GET":default:return 1;case"POST":return 2;case"PUT":return 4;case"PATCH":return 8;case"DELETE":return 16}}assemblePayload(){if(this.selectedService){const t={component:this.formGroup.value.component,description:this.formGroup.value.description,frequency:this.formGroup.value.frequency,isActive:this.formGroup.value.active,name:this.formGroup.value.name,payload:this.formGroup.value.payload??null,serviceId:this.formGroup.value.serviceId,serviceName:this.selectedService.name,appId:this.formGroup.value.appId??null,userId:this.formGroup.value.userId??null,verb:this.formGroup.value.method,service:{id:this.formGroup.value.serviceId,name:this.selectedService.name,label:this.selectedService.label,description:this.selectedService.description,type:this.selectedService.type,components:this.componentDropdownOptions},verbMask:this.getVerbMask(this.formGroup.value.method)};return this.scheduleToEdit?{lastModifiedDate:this.scheduleToEdit.lastModifiedDate,lastModifiedById:this.scheduleToEdit.lastModifiedById,hasLog:!!this.scheduleToEdit.taskLogByTaskId,createdDate:this.scheduleToEdit.createdDate,createdById:this.scheduleToEdit.createdById,id:this.scheduleToEdit.id,...t}:{...t,id:null}}return null}static{this.\u0275fac=function(s){return new(s||I)(e.rXU(d.K),e.rXU(i.ok),e.rXU(P.nX),e.rXU(P.Ix),e.rXU(d.qJ),e.rXU(d.u7),e.rXU(d.Yh),e.rXU(A.n))}}static{this.\u0275cmp=e.VBU({type:I,selectors:[["df-scheduler"]],standalone:!0,features:[e.aNF],decls:64,vars:52,consts:[[3,"showAlert","alertType","alertClosed"],["dynamicHeight","","mat-stretch-tabs","false","mat-align-tabs","start"],["label","Basic"],[1,"details-section",3,"formGroup","ngSubmit"],["appearance","outline","subscriptSizing","dynamic",1,"dynamic-width"],["matInput","","placeholder","Name","formControlName","name"],["color","primary","formControlName","active",1,"dynamic-width"],["appearance","outline","subscriptSizing","dynamic",1,"full-width"],["rows","1","matInput","","placeholder","Description","formControlName","description"],["formControlName","serviceId"],[3,"value",4,"ngFor","ngForOf"],["subscriptSizing","dynamic","class","dynamic-width",4,"ngIf"],["matInput","","type","number","formControlName","frequency"],["formControlName","appId"],[3,"value"],["appearance","outline","subscriptSizing","dynamic","class","dynamic-width",4,"ngIf"],[4,"ngIf"],["formControlName","method",1,"dynamic-width",3,"schema"],[1,"full-width","action-bar"],["mat-flat-button","","type","button",1,"cancel-btn",3,"click"],["mat-flat-button","",1,"save-btn"],["label","Log"],[1,"details-section"],[1,"full-width",3,"readonly","value"],["type","button","mat-flat-button","",1,"schema","cancel-btn",3,"click"],["subscriptSizing","dynamic",1,"dynamic-width"],["formControlName","component"],["formControlName","userId"],["rows","1","matInput","","formControlName","payload"]],template:function(s,a){1&s&&(e.j41(0,"div"),e.nI1(1,"async"),e.j41(2,"df-alert",0),e.bIt("alertClosed",function(){return a.showAlert=!1}),e.EFF(3),e.k0s(),e.j41(4,"mat-tab-group",1)(5,"mat-tab",2)(6,"h4"),e.EFF(7),e.nI1(8,"transloco"),e.k0s(),e.j41(9,"form",3),e.bIt("ngSubmit",function(){return a.onSubmit()}),e.j41(10,"mat-form-field",4)(11,"mat-label"),e.EFF(12),e.nI1(13,"transloco"),e.k0s(),e.nrm(14,"input",5),e.k0s(),e.j41(15,"mat-slide-toggle",6),e.EFF(16),e.nI1(17,"transloco"),e.k0s(),e.j41(18,"mat-form-field",7)(19,"mat-label"),e.EFF(20),e.nI1(21,"transloco"),e.k0s(),e.nrm(22,"textarea",8),e.k0s(),e.j41(23,"mat-form-field",4)(24,"mat-label"),e.EFF(25),e.nI1(26,"transloco"),e.k0s(),e.j41(27,"mat-select",9),e.DNE(28,G,2,2,"mat-option",10),e.k0s()(),e.DNE(29,B,6,4,"mat-form-field",11),e.j41(30,"mat-form-field",4)(31,"mat-label"),e.EFF(32),e.nI1(33,"transloco"),e.k0s(),e.nrm(34,"input",12),e.k0s(),e.j41(35,"mat-form-field",4)(36,"mat-label"),e.EFF(37,"Run as app (optional)"),e.k0s(),e.j41(38,"mat-select",13)(39,"mat-option",14),e.EFF(40,"None (session-less)"),e.k0s(),e.DNE(41,U,2,2,"mat-option",10),e.k0s(),e.j41(42,"mat-hint"),e.EFF(43,"Runs the task with this app's API key and role so lookups and permissions resolve. Required for scheduled scripts that use lookups or call other services."),e.k0s()(),e.DNE(44,$,7,2,"mat-form-field",15),e.DNE(45,j,6,3,"ng-container",16),e.nrm(46,"df-verb-picker",17),e.nI1(47,"transloco"),e.j41(48,"div",18)(49,"button",19),e.bIt("click",function(){return a.onCancel()}),e.EFF(50),e.nI1(51,"transloco"),e.k0s(),e.j41(52,"button",20),e.EFF(53),e.nI1(54,"transloco"),e.k0s()()()(),e.j41(55,"mat-tab",21)(56,"div",22)(57,"p"),e.EFF(58),e.nI1(59,"transloco"),e.k0s(),e.nrm(60,"df-ace-editor",23),e.j41(61,"button",24),e.bIt("click",function(){return a.onCancel()}),e.EFF(62),e.nI1(63,"transloco"),e.k0s()()()()()),2&s&&(e.HbH(e.bMT(1,26,a.isDarkMode)?"dark-theme":""),e.R7$(2),e.Y8G("showAlert",a.showAlert)("alertType",a.alertType),e.R7$(1),e.SpI(" ",a.alertMsg," "),e.R7$(4),e.JRh(e.bMT(8,28,"scheduler.taskOverviewSubtitle")),e.R7$(2),e.Y8G("formGroup",a.formGroup),e.R7$(3),e.JRh(e.bMT(13,30,"scheduler.form.label.name")),e.R7$(4),e.JRh(e.bMT(17,32,"scheduler.form.label.active")),e.R7$(4),e.JRh(e.bMT(21,34,"scheduler.form.label.description")),e.R7$(5),e.JRh(e.bMT(26,36,"scheduler.form.label.service")),e.R7$(3),e.Y8G("ngForOf",a.userServicesDropdownOptions),e.R7$(1),e.Y8G("ngIf",a.componentDropdownOptions.length),e.R7$(3),e.JRh(e.bMT(33,38,"scheduler.form.label.frequency")),e.R7$(7),e.Y8G("value",null),e.R7$(2),e.Y8G("ngForOf",a.runAsApps),e.R7$(3),e.Y8G("ngIf",a.formGroup.value.appId),e.R7$(1),e.Y8G("ngIf",a.formGroup.controls.payload),e.R7$(1),e.Y8G("schema",e.eq3(50,W,e.bMT(47,40,"scheduler.form.label.method"))),e.R7$(4),e.SpI(" ",e.bMT(51,42,"cancel")," "),e.R7$(3),e.SpI(" ",e.bMT(54,44,"save")," "),e.R7$(5),e.Lme(" ",e.bMT(59,46,"scheduler.logs.statusCode"),": ",null==a.scheduleToEdit||null==a.scheduleToEdit.taskLogByTaskId?null:a.scheduleToEdit.taskLogByTaskId.statusCode," "),e.R7$(2),e.Y8G("readonly",!0)("value",a.log),e.R7$(2),e.SpI(" ",e.bMT(63,48,"goBack")," "))},dependencies:[_.Jj,c.Hl,c.$z,b.fS,b.fg,T.rl,T.nJ,T.MV,h.RI,h.mq,h.T8,l.Ve,l.VO,k.wT,g.mV,g.sG,_.bT,_.pM,D.Kj,i.X1,i.qT,i.me,i.Q0,i.BC,i.cb,i.j4,i.JD,m.s,p.N,S.W],encapsulation:2})}};M=(0,o.Cg)([(0,y.d)({checkProperties:!0})],M)},51425:(R,E,r)=>{r.d(E,{W:()=>b});var o=r(17705),i=r(60177),u=r(88834),v=r(20060),d=r(45383);function D(l,g){if(1&l){const c=o.RV6();o.j41(0,"button",5),o.bIt("click",function(){o.eBV(c);const p=o.XpG(2);return o.Njj(p.dismissAlert())}),o.j41(1,"fa-icon",6),o.EFF(2),o.k0s()()}if(2&l){const c=o.XpG(2);o.R7$(1),o.Y8G("icon",c.faXmark),o.R7$(1),o.JRh("alerts.close")}}function _(l,g){if(1&l&&(o.j41(0,"div",1),o.nrm(1,"fa-icon",2),o.j41(2,"span",3),o.SdG(3),o.k0s(),o.DNE(4,D,3,2,"button",4),o.k0s()),2&l){const c=o.XpG();o.HbH(c.alertType),o.R7$(1),o.Y8G("icon",c.icon),o.R7$(3),o.Y8G("ngIf",c.dismissible)}}const h=["*"];let b=(()=>{class l{constructor(){this.alertType="success",this.showAlert=!1,this.dismissible=!0,this.alertClosed=new o.bkB,this.faXmark=d.Jyw}dismissAlert(){this.alertClosed.emit()}get icon(){switch(this.alertType){case"success":return d.SGM;case"error":return d.rfe;case"warning":return d.tUE;default:return d.iW_}}static{this.\u0275fac=function(m){return new(m||l)}}static{this.\u0275cmp=o.VBU({type:l,selectors:[["df-alert"]],inputs:{alertType:"alertType",showAlert:"showAlert",dismissible:"dismissible"},outputs:{alertClosed:"alertClosed"},standalone:!0,features:[o.aNF],ngContentSelectors:h,decls:1,vars:1,consts:[["class","alert-container",3,"class",4,"ngIf"],[1,"alert-container"],["aria-hidden","true",1,"alert-icon",3,"icon"],["role","alert",1,"alert-message"],["mat-icon-button","","class","dismiss-alert",3,"click",4,"ngIf"],["mat-icon-button","",1,"dismiss-alert",3,"click"],[3,"icon"]],template:function(m,p){1&m&&(o.NAR(),o.DNE(0,_,5,4,"div",0)),2&m&&o.Y8G("ngIf",p.showAlert)},dependencies:[i.bT,u.Hl,u.iY,v.dX,v.aY],styles:[".alert-container[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border:1px solid;border-radius:5px;box-shadow:0 0 5px #0003;color:#000}.alert-container[_ngcontent-%COMP%] .alert-message[_ngcontent-%COMP%]{flex:1;padding:8px}.alert-container[_ngcontent-%COMP%] .alert-icon[_ngcontent-%COMP%]{padding:0 10px}.alert-container.success[_ngcontent-%COMP%]{border-color:#81c784;background-color:#c8e6c9}.alert-container.success[_ngcontent-%COMP%] .alert-icon[_ngcontent-%COMP%]{color:#4caf50}.alert-container.error[_ngcontent-%COMP%]{border-color:#e57373;background-color:#ffcdd2}.alert-container.error[_ngcontent-%COMP%] .alert-icon[_ngcontent-%COMP%]{color:#f44336}.alert-container.warning[_ngcontent-%COMP%]{border-color:#ffb74d;background-color:#ffe0b2}.alert-container.warning[_ngcontent-%COMP%] .alert-icon[_ngcontent-%COMP%]{color:#ff9800}.alert-container.info[_ngcontent-%COMP%]{border-color:#64b5f6;background-color:#bbdefb}.alert-container.info[_ngcontent-%COMP%] .alert-icon[_ngcontent-%COMP%]{color:#2196f3}"]})}}return l})()}}]); \ No newline at end of file diff --git a/dist/8514.e5e516e446b7bf0b.js b/dist/8514.e5e516e446b7bf0b.js deleted file mode 100644 index db3cfcb73..000000000 --- a/dist/8514.e5e516e446b7bf0b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdf_admin_interface=self.webpackChunkdf_admin_interface||[]).push([[8514],{88514:(y,E,r)=>{r.r(E),r.d(E,{DfSchedulerDetailsComponent:()=>D});var t=r(31635),n=r(89417),d=r(23472),v=r(90124),u=r(24784),T=r(33609),m=r(60177),h=r(96850),b=r(99631),i=r(82798),g=r(30450),c=r(88834),_=r(63281),f=r(9709),R=r(49894),S=r(51425),C=r(99437),O=r(18810),e=r(17705),P=r(30046),A=r(52868),I=r(32102),G=r(86600);function k(l,o){if(1&l&&(e.j41(0,"mat-option",22),e.EFF(1),e.k0s()),2&l){const s=o.$implicit;e.Y8G("value",s.id),e.R7$(1),e.SpI(" ",s.name," ")}}function B(l,o){if(1&l&&(e.j41(0,"mat-option",22),e.EFF(1),e.k0s()),2&l){const s=o.$implicit;e.Y8G("value",s),e.R7$(1),e.JRh(s)}}function F(l,o){if(1&l&&(e.j41(0,"mat-form-field",23)(1,"mat-label"),e.EFF(2),e.nI1(3,"transloco"),e.k0s(),e.j41(4,"mat-select",24),e.DNE(5,B,2,2,"mat-option",10),e.k0s()()),2&l){const s=e.XpG();e.R7$(2),e.JRh(e.bMT(3,2,"scheduler.form.label.component")),e.R7$(3),e.Y8G("ngForOf",s.componentDropdownOptions)}}function L(l,o){1&l&&(e.qex(0),e.j41(1,"mat-form-field",4)(2,"mat-label"),e.EFF(3),e.nI1(4,"transloco"),e.k0s(),e.nrm(5,"textarea",25),e.k0s(),e.bVm()),2&l&&(e.R7$(3),e.JRh(e.bMT(4,1,"scheduler.form.label.payload")))}r(36225);const U=function(l){return{label:l}};let D=class M{constructor(o,s,a,p,W,j){this.service=o,this.formBuilder=s,this.activatedRoute=a,this.router=p,this.accessListService=W,this.themeService=j,this.relatedParam="task_log_by_task_id",this.componentDropdownOptions=[],this.log="",this.alertMsg="",this.showAlert=!1,this.alertType="error",this.isDarkMode=this.themeService.darkMode$}ngOnInit(){this.formGroup=this.formBuilder.group({name:["",n.k0.required],description:[""],active:[!0,n.k0.required],serviceId:["",n.k0.required],component:["",n.k0.required],method:["GET",n.k0.required],frequency:[]}),this.activatedRoute.data.subscribe(o=>{this.userServicesDropdownOptions=o.data.resource}),this.activatedRoute.data.subscribe(o=>{this.scheduleToEdit=o.schedulerObject,this.scheduleToEdit&&(this.log=this.scheduleToEdit.taskLogByTaskId?.content??"",this.getServiceAccessList(this.scheduleToEdit.serviceId),this.formGroup.setValue({name:this.scheduleToEdit.name,description:this.scheduleToEdit.description,active:this.scheduleToEdit.isActive,serviceId:this.scheduleToEdit.serviceId,component:this.scheduleToEdit.component,method:this.scheduleToEdit.verb,frequency:this.scheduleToEdit.frequency}),"GET"!==this.scheduleToEdit.verb&&this.addPayloadField(this.scheduleToEdit.payload))}),this.formGroup.get("method")?.valueChanges.subscribe(o=>{"GET"===o?this.removePayloadField():this.formGroup.contains("payload")||this.addPayloadField()}),this.formGroup.get("serviceId")?.valueChanges.subscribe(o=>{this.getServiceAccessList(o)})}triggerAlert(o,s){this.alertType=o,this.alertMsg=s,this.showAlert=!0}onCancel(){this.router.navigate([d.b.SYSTEM_SETTINGS,d.b.SCHEDULER])}onSubmit(){if(!this.formGroup.invalid&&!this.formGroup.pristine)if(typeof this.scheduleToEdit>"u"){const o=this.assemblePayload();this.service.create({resource:[o]},{snackbarSuccess:"scheduler.alerts.createdSuccess",fields:"*",related:this.relatedParam}).pipe((0,C.W)(s=>(this.triggerAlert("error",s.error.error.context.resource[0].message),(0,O.$)(()=>new Error(s))))).subscribe(()=>this.router.navigate([d.b.SYSTEM_SETTINGS,d.b.SCHEDULER]))}else if(this.scheduleToEdit){const o=this.assemblePayload();this.service.update(this.scheduleToEdit.id,o,{snackbarSuccess:"scheduler.alerts.updateSuccess",fields:"*",related:this.relatedParam}).pipe((0,C.W)(s=>(this.triggerAlert("error",s.error.error.message),(0,O.$)(()=>new Error(s))))).subscribe(()=>this.router.navigate([d.b.SYSTEM_SETTINGS,d.b.SCHEDULER]))}}addPayloadField(o){this.formGroup.addControl("payload",this.formBuilder.control(o??"",[v.V]))}removePayloadField(){this.formGroup.removeControl("payload")}getServiceAccessList(o){const s=this.userServicesDropdownOptions.find(a=>a.id===o);this.selectedService=s,s&&this.accessListService.get(s.name,{additionalParams:[{key:"as_access_list",value:!0}]}).subscribe(a=>{this.componentDropdownOptions=a.resource})}getVerbMask(o){switch(o){case"GET":default:return 1;case"POST":return 2;case"PUT":return 4;case"PATCH":return 8;case"DELETE":return 16}}assemblePayload(){if(this.selectedService){const o={component:this.formGroup.value.component,description:this.formGroup.value.description,frequency:this.formGroup.value.frequency,isActive:this.formGroup.value.active,name:this.formGroup.value.name,payload:this.formGroup.value.payload??null,serviceId:this.formGroup.value.serviceId,serviceName:this.selectedService.name,verb:this.formGroup.value.method,service:{id:this.formGroup.value.serviceId,name:this.selectedService.name,label:this.selectedService.label,description:this.selectedService.description,type:this.selectedService.type,components:this.componentDropdownOptions},verbMask:this.getVerbMask(this.formGroup.value.method)};return this.scheduleToEdit?{lastModifiedDate:this.scheduleToEdit.lastModifiedDate,lastModifiedById:this.scheduleToEdit.lastModifiedById,hasLog:!!this.scheduleToEdit.taskLogByTaskId,createdDate:this.scheduleToEdit.createdDate,createdById:this.scheduleToEdit.createdById,id:this.scheduleToEdit.id,...o}:{...o,id:null}}return null}static{this.\u0275fac=function(s){return new(s||M)(e.rXU(u.K),e.rXU(n.ok),e.rXU(P.nX),e.rXU(P.Ix),e.rXU(u.qJ),e.rXU(A.n))}}static{this.\u0275cmp=e.VBU({type:M,selectors:[["df-scheduler"]],standalone:!0,features:[e.aNF],decls:54,vars:49,consts:[[3,"showAlert","alertType","alertClosed"],["dynamicHeight","","mat-stretch-tabs","false","mat-align-tabs","start"],["label","Basic"],[1,"details-section",3,"formGroup","ngSubmit"],["appearance","outline","subscriptSizing","dynamic",1,"dynamic-width"],["matInput","","placeholder","Name","formControlName","name"],["color","primary","formControlName","active",1,"dynamic-width"],["appearance","outline","subscriptSizing","dynamic",1,"full-width"],["rows","1","matInput","","placeholder","Description","formControlName","description"],["formControlName","serviceId"],[3,"value",4,"ngFor","ngForOf"],["subscriptSizing","dynamic","class","dynamic-width",4,"ngIf"],["matInput","","type","number","formControlName","frequency"],[4,"ngIf"],["formControlName","method",1,"dynamic-width",3,"schema"],[1,"full-width","action-bar"],["mat-flat-button","","type","button",1,"cancel-btn",3,"click"],["mat-flat-button","",1,"save-btn"],["label","Log"],[1,"details-section"],[1,"full-width",3,"readonly","value"],["type","button","mat-flat-button","",1,"schema","cancel-btn",3,"click"],[3,"value"],["subscriptSizing","dynamic",1,"dynamic-width"],["formControlName","component"],["rows","1","matInput","","formControlName","payload"]],template:function(s,a){1&s&&(e.j41(0,"div"),e.nI1(1,"async"),e.j41(2,"df-alert",0),e.bIt("alertClosed",function(){return a.showAlert=!1}),e.EFF(3),e.k0s(),e.j41(4,"mat-tab-group",1)(5,"mat-tab",2)(6,"h4"),e.EFF(7),e.nI1(8,"transloco"),e.k0s(),e.j41(9,"form",3),e.bIt("ngSubmit",function(){return a.onSubmit()}),e.j41(10,"mat-form-field",4)(11,"mat-label"),e.EFF(12),e.nI1(13,"transloco"),e.k0s(),e.nrm(14,"input",5),e.k0s(),e.j41(15,"mat-slide-toggle",6),e.EFF(16),e.nI1(17,"transloco"),e.k0s(),e.j41(18,"mat-form-field",7)(19,"mat-label"),e.EFF(20),e.nI1(21,"transloco"),e.k0s(),e.nrm(22,"textarea",8),e.k0s(),e.j41(23,"mat-form-field",4)(24,"mat-label"),e.EFF(25),e.nI1(26,"transloco"),e.k0s(),e.j41(27,"mat-select",9),e.DNE(28,k,2,2,"mat-option",10),e.k0s()(),e.DNE(29,F,6,4,"mat-form-field",11),e.j41(30,"mat-form-field",4)(31,"mat-label"),e.EFF(32),e.nI1(33,"transloco"),e.k0s(),e.nrm(34,"input",12),e.k0s(),e.DNE(35,L,6,3,"ng-container",13),e.nrm(36,"df-verb-picker",14),e.nI1(37,"transloco"),e.j41(38,"div",15)(39,"button",16),e.bIt("click",function(){return a.onCancel()}),e.EFF(40),e.nI1(41,"transloco"),e.k0s(),e.j41(42,"button",17),e.EFF(43),e.nI1(44,"transloco"),e.k0s()()()(),e.j41(45,"mat-tab",18)(46,"div",19)(47,"p"),e.EFF(48),e.nI1(49,"transloco"),e.k0s(),e.nrm(50,"df-ace-editor",20),e.j41(51,"button",21),e.bIt("click",function(){return a.onCancel()}),e.EFF(52),e.nI1(53,"transloco"),e.k0s()()()()()),2&s&&(e.HbH(e.bMT(1,23,a.isDarkMode)?"dark-theme":""),e.R7$(2),e.Y8G("showAlert",a.showAlert)("alertType",a.alertType),e.R7$(1),e.SpI(" ",a.alertMsg," "),e.R7$(4),e.JRh(e.bMT(8,25,"scheduler.taskOverviewSubtitle")),e.R7$(2),e.Y8G("formGroup",a.formGroup),e.R7$(3),e.JRh(e.bMT(13,27,"scheduler.form.label.name")),e.R7$(4),e.JRh(e.bMT(17,29,"scheduler.form.label.active")),e.R7$(4),e.JRh(e.bMT(21,31,"scheduler.form.label.description")),e.R7$(5),e.JRh(e.bMT(26,33,"scheduler.form.label.service")),e.R7$(3),e.Y8G("ngForOf",a.userServicesDropdownOptions),e.R7$(1),e.Y8G("ngIf",a.componentDropdownOptions.length),e.R7$(3),e.JRh(e.bMT(33,35,"scheduler.form.label.frequency")),e.R7$(3),e.Y8G("ngIf",a.formGroup.controls.payload),e.R7$(1),e.Y8G("schema",e.eq3(47,U,e.bMT(37,37,"scheduler.form.label.method"))),e.R7$(4),e.SpI(" ",e.bMT(41,39,"cancel")," "),e.R7$(3),e.SpI(" ",e.bMT(44,41,"save")," "),e.R7$(5),e.Lme(" ",e.bMT(49,43,"scheduler.logs.statusCode"),": ",null==a.scheduleToEdit||null==a.scheduleToEdit.taskLogByTaskId?null:a.scheduleToEdit.taskLogByTaskId.statusCode," "),e.R7$(2),e.Y8G("readonly",!0)("value",a.log),e.R7$(2),e.SpI(" ",e.bMT(53,45,"goBack")," "))},dependencies:[m.Jj,c.Hl,c.$z,b.fS,b.fg,I.rl,I.nJ,h.RI,h.mq,h.T8,i.Ve,i.VO,G.wT,g.mV,g.sG,m.bT,m.pM,T.Kj,n.X1,n.qT,n.me,n.Q0,n.BC,n.cb,n.j4,n.JD,_.s,f.N,S.W],encapsulation:2})}};D=(0,t.Cg)([(0,R.d)({checkProperties:!0})],D)},51425:(y,E,r)=>{r.d(E,{W:()=>b});var t=r(17705),n=r(60177),d=r(88834),v=r(20060),u=r(45383);function T(i,g){if(1&i){const c=t.RV6();t.j41(0,"button",5),t.bIt("click",function(){t.eBV(c);const f=t.XpG(2);return t.Njj(f.dismissAlert())}),t.j41(1,"fa-icon",6),t.EFF(2),t.k0s()()}if(2&i){const c=t.XpG(2);t.R7$(1),t.Y8G("icon",c.faXmark),t.R7$(1),t.JRh("alerts.close")}}function m(i,g){if(1&i&&(t.j41(0,"div",1),t.nrm(1,"fa-icon",2),t.j41(2,"span",3),t.SdG(3),t.k0s(),t.DNE(4,T,3,2,"button",4),t.k0s()),2&i){const c=t.XpG();t.HbH(c.alertType),t.R7$(1),t.Y8G("icon",c.icon),t.R7$(3),t.Y8G("ngIf",c.dismissible)}}const h=["*"];let b=(()=>{class i{constructor(){this.alertType="success",this.showAlert=!1,this.dismissible=!0,this.alertClosed=new t.bkB,this.faXmark=u.Jyw}dismissAlert(){this.alertClosed.emit()}get icon(){switch(this.alertType){case"success":return u.SGM;case"error":return u.rfe;case"warning":return u.tUE;default:return u.iW_}}static{this.\u0275fac=function(_){return new(_||i)}}static{this.\u0275cmp=t.VBU({type:i,selectors:[["df-alert"]],inputs:{alertType:"alertType",showAlert:"showAlert",dismissible:"dismissible"},outputs:{alertClosed:"alertClosed"},standalone:!0,features:[t.aNF],ngContentSelectors:h,decls:1,vars:1,consts:[["class","alert-container",3,"class",4,"ngIf"],[1,"alert-container"],["aria-hidden","true",1,"alert-icon",3,"icon"],["role","alert",1,"alert-message"],["mat-icon-button","","class","dismiss-alert",3,"click",4,"ngIf"],["mat-icon-button","",1,"dismiss-alert",3,"click"],[3,"icon"]],template:function(_,f){1&_&&(t.NAR(),t.DNE(0,m,5,4,"div",0)),2&_&&t.Y8G("ngIf",f.showAlert)},dependencies:[n.bT,d.Hl,d.iY,v.dX,v.aY],styles:[".alert-container[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border:1px solid;border-radius:5px;box-shadow:0 0 5px #0003;color:#000}.alert-container[_ngcontent-%COMP%] .alert-message[_ngcontent-%COMP%]{flex:1;padding:8px}.alert-container[_ngcontent-%COMP%] .alert-icon[_ngcontent-%COMP%]{padding:0 10px}.alert-container.success[_ngcontent-%COMP%]{border-color:#81c784;background-color:#c8e6c9}.alert-container.success[_ngcontent-%COMP%] .alert-icon[_ngcontent-%COMP%]{color:#4caf50}.alert-container.error[_ngcontent-%COMP%]{border-color:#e57373;background-color:#ffcdd2}.alert-container.error[_ngcontent-%COMP%] .alert-icon[_ngcontent-%COMP%]{color:#f44336}.alert-container.warning[_ngcontent-%COMP%]{border-color:#ffb74d;background-color:#ffe0b2}.alert-container.warning[_ngcontent-%COMP%] .alert-icon[_ngcontent-%COMP%]{color:#ff9800}.alert-container.info[_ngcontent-%COMP%]{border-color:#64b5f6;background-color:#bbdefb}.alert-container.info[_ngcontent-%COMP%] .alert-icon[_ngcontent-%COMP%]{color:#2196f3}"]})}}return i})()}}]); \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index 951c4b694..ed65ce8f5 100644 --- a/dist/index.html +++ b/dist/index.html @@ -10,5 +10,5 @@ - + diff --git a/dist/runtime.12c3a27dd8d0def0.js b/dist/runtime.12c3a27dd8d0def0.js new file mode 100644 index 000000000..fb7290351 --- /dev/null +++ b/dist/runtime.12c3a27dd8d0def0.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,_={},v={};function f(e){var r=v[e];if(void 0!==r)return r.exports;var a=v[e]={id:e,loaded:!1,exports:{}};return _[e].call(a.exports,a,a.exports,f),a.loaded=!0,a.exports}f.m=_,f.amdD=function(){throw new Error("define cannot be used indirect")},e=[],f.O=(r,a,d,b)=>{if(!a){var t=1/0;for(c=0;c=b)&&Object.keys(f.O).every(p=>f.O[p](a[n]))?a.splice(n--,1):(s=!1,b0&&e[c-1][2]>b;c--)e[c]=e[c-1];e[c]=[a,d,b]},f.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return f.d(r,{a:r}),r},(()=>{var r,e=Object.getPrototypeOf?a=>Object.getPrototypeOf(a):a=>a.__proto__;f.t=function(a,d){if(1&d&&(a=this(a)),8&d||"object"==typeof a&&a&&(4&d&&a.__esModule||16&d&&"function"==typeof a.then))return a;var b=Object.create(null);f.r(b);var c={};r=r||[null,e({}),e([]),e(e)];for(var t=2&d&&a;"object"==typeof t&&!~r.indexOf(t);t=e(t))Object.getOwnPropertyNames(t).forEach(s=>c[s]=()=>a[s]);return c.default=()=>a,f.d(b,c),b}})(),f.d=(e,r)=>{for(var a in r)f.o(r,a)&&!f.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:r[a]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce((r,a)=>(f.f[a](e,r),r),[])),f.u=e=>(2076===e?"common":e)+"."+{269:"40069ae076fbc927",372:"cc922c7b567f7b8e",582:"b2bab6af2272f9ce",615:"46d05f62bf146a6e",850:"baaa0bf29e7ff400",939:"e25ea665db205d77",987:"e075ec994661ba0c",990:"b73814cb4c41281d",1064:"51f76a90b9f6bf10",1253:"b1e909109605d955",1830:"619e9a6b98ae4626",2040:"465851f0c844885d",2043:"cb8949c28d8cfc98",2076:"c5bf1dbf59e6095b",2245:"b69a1a55fdd8d579",2423:"0854e58f2eaba3eb",2617:"96bbb36aeacfc4cc",2626:"d2784d9a54516f3a",2765:"91de37a203517a85",2798:"98700d1feb8241db",2816:"d257d0091fa1a569",2830:"a8dacedcf0f9b4ac",2841:"6c1cfab988ca06a9",2991:"acd4719683b91863",3280:"0656929b65c9b1ca",3281:"4a331953f9edb034",3386:"0d3938502e4475bf",3474:"94b6c05dc4679d08",3587:"bb5cc06ad7db7097",4060:"1707b1a192ce1eb6",4440:"98da779f406dbb54",4713:"69601fbb7509404c",4729:"3d69f1dff5520cf1",4823:"cdb0245c747c4079",4972:"3400887f446b6476",4991:"3ffb8310873a6f14",5052:"2c1d6c44d3130f85",5257:"6be50fee3a82e0f5",5486:"9b2aaa76a84be634",5555:"3e6bc60e71f4eb20",5571:"825672d546b8ffc6",5596:"b456c20ee1b937e9",5632:"17451062030c23cc",5951:"f7828a646042738c",6049:"91640e9a8bbe15ca",6192:"bc45952b276a0fbc",6272:"00caeaf39efbabd1",6700:"fbe069ed1a6eac69",6755:"5d6b805cf27c0a57",6850:"9b8bba2645db4440",7343:"a7f56ecc12535c09",7359:"7fb26b5d95441726",7649:"a3b5828e5f5d791f",7764:"8e4859f6b37674e7",7952:"86046d85ebca5105",8019:"0eab77c7c15cc91f",8105:"5cb3ed495455dd3f",8201:"8a8bc41ddad49397",8270:"72f5cab2fdbe1b02",8332:"75857d3d0a2ee2d4",8514:"d83f3592206d251f",8886:"9ed9dbf04d59145c",8889:"907045bda5017c96",8909:"1952e77fd01c3671",9159:"5d458bd6a0e65bb5",9213:"167429bea07256c5",9480:"fb13edd80625ba88",9516:"28c7a774be7ae2af",9709:"f94f9b45ca150980",9791:"6fd49ec05fc7bf58",9864:"99fa8e8b9b16c719",9962:"a6833cd2327e5ccd"}[e]+".js",f.miniCssF=e=>{},f.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{var e={},r="df-admin-interface:";f.l=(a,d,b,c)=>{if(e[a])e[a].push(d);else{var t,s;if(void 0!==b)for(var n=document.getElementsByTagName("script"),o=0;o{t.onerror=t.onload=null,clearTimeout(l);var m=e[a];if(delete e[a],t.parentNode&&t.parentNode.removeChild(t),m&&m.forEach(h=>h(p)),g)return g(p)},l=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),s&&document.head.appendChild(t)}}})(),f.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;f.tt=()=>(void 0===e&&(e={createScriptURL:r=>r},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),f.tu=e=>f.tt().createScriptURL(e),f.p="",(()=>{var e={9121:0};f.f.j=(d,b)=>{var c=f.o(e,d)?e[d]:void 0;if(0!==c)if(c)b.push(c[2]);else if(9121!=d){var t=new Promise((i,u)=>c=e[d]=[i,u]);b.push(c[2]=t);var s=f.p+f.u(d),n=new Error;f.l(s,i=>{if(f.o(e,d)&&(0!==(c=e[d])&&(e[d]=void 0),c)){var u=i&&("load"===i.type?"missing":i.type),l=i&&i.target&&i.target.src;n.message="Loading chunk "+d+" failed.\n("+u+": "+l+")",n.name="ChunkLoadError",n.type=u,n.request=l,c[1](n)}},"chunk-"+d,d)}else e[d]=0},f.O.j=d=>0===e[d];var r=(d,b)=>{var n,o,[c,t,s]=b,i=0;if(c.some(l=>0!==e[l])){for(n in t)f.o(t,n)&&(f.m[n]=t[n]);if(s)var u=s(f)}for(d&&d(b);i{{ 'scheduler.taskOverviewSubtitle' | transloco }} }} + + + + Run as app (optional) + + None (session-less) + + {{ app.name }} + + + Runs the task with this app's API key and role so lookups and + permissions resolve. Required for scheduled scripts that use lookups + or call other services. + + + Run as user (optional) + + App default role + + {{ user.name }}{{ user.email ? ' (' + user.email + ')' : '' }} + + + + = []; + runAsUsers: Array<{ id: number; name: string; email?: string }> = []; log = ''; alertMsg = ''; showAlert = false; @@ -78,6 +83,10 @@ export class DfSchedulerDetailsComponent implements OnInit { private router: Router, @Inject(BASE_SERVICE_TOKEN) private accessListService: DfBaseCrudService, + @Inject(APP_SERVICE_TOKEN) + private appService: DfBaseCrudService, + @Inject(USER_SERVICE_TOKEN) + private userService: DfBaseCrudService, private themeService: DfThemeService ) {} @@ -92,11 +101,27 @@ export class DfSchedulerDetailsComponent implements OnInit { component: ['', Validators.required], method: ['GET', Validators.required], frequency: [], + appId: [null], + userId: [null], }); this.activatedRoute.data.subscribe((data: any) => { this.userServicesDropdownOptions = data.data.resource; }); + // Populate the optional "run as" identity dropdowns. + this.appService + .getAll>({ + fields: 'id,name', + limit: 1000, + sort: 'name', + }) + .subscribe(res => (this.runAsApps = res.resource)); + this.userService + .getAll>( + { fields: 'id,name,email', limit: 1000, sort: 'name' } + ) + .subscribe(res => (this.runAsUsers = res.resource)); + this.activatedRoute.data.subscribe((data: any) => { this.scheduleToEdit = data.schedulerObject; @@ -113,6 +138,8 @@ export class DfSchedulerDetailsComponent implements OnInit { component: this.scheduleToEdit.component, method: this.scheduleToEdit.verb, frequency: this.scheduleToEdit.frequency, + appId: this.scheduleToEdit.appId ?? null, + userId: this.scheduleToEdit.userId ?? null, }); if (this.scheduleToEdit.verb !== 'GET') { @@ -258,6 +285,8 @@ export class DfSchedulerDetailsComponent implements OnInit { payload: this.formGroup.value.payload ?? null, serviceId: this.formGroup.value.serviceId, serviceName: this.selectedService.name, + appId: this.formGroup.value.appId ?? null, + userId: this.formGroup.value.userId ?? null, verb: this.formGroup.value.method, service: { id: this.formGroup.value.serviceId, diff --git a/src/app/shared/types/scheduler.ts b/src/app/shared/types/scheduler.ts index 445365e67..ddaab00b7 100644 --- a/src/app/shared/types/scheduler.ts +++ b/src/app/shared/types/scheduler.ts @@ -35,6 +35,10 @@ export type CreateSchedulePayload = { serviceName: string; verb: string; verbMask: number; + // Optional "run as" identity: when set, the scheduled task runs under a real + // session (role + lookups) instead of the legacy session-less context. + appId?: number | null; + userId?: number | null; }; export interface SchedulerTaskData { @@ -52,6 +56,8 @@ export interface SchedulerTaskData { lastModifiedById: number | null; verb: string; verbMask: number; + appId?: number | null; + userId?: number | null; taskLogByTaskId: { taskId: number; statusCode: number;