From 5a938c35f4b6961bd3893ac82c99c51b4a701f62 Mon Sep 17 00:00:00 2001 From: Konstantin Lepeshenkov Date: Thu, 6 Feb 2020 12:09:26 +0100 Subject: [PATCH] prettified JSON in instance details --- .../wwwroot/index.html | 2 +- .../wwwroot/service-worker.js | 2 +- .../wwwroot/static/js/main.344f11ea.chunk.js | 2 ++ .../static/js/main.344f11ea.chunk.js.map | 1 + .../wwwroot/static/js/main.a0ea1d29.chunk.js | 2 -- .../static/js/main.a0ea1d29.chunk.js.map | 1 - .../src/components/DurableEntityFields.tsx | 8 +++--- .../src/components/MainMenu.tsx | 25 ++++++++++++------- .../src/components/OrchestrationFields.tsx | 12 ++++----- 9 files changed, 30 insertions(+), 25 deletions(-) create mode 100644 durablefunctionsmonitor.dotnetbackend/wwwroot/static/js/main.344f11ea.chunk.js create mode 100644 durablefunctionsmonitor.dotnetbackend/wwwroot/static/js/main.344f11ea.chunk.js.map delete mode 100644 durablefunctionsmonitor.dotnetbackend/wwwroot/static/js/main.a0ea1d29.chunk.js delete mode 100644 durablefunctionsmonitor.dotnetbackend/wwwroot/static/js/main.a0ea1d29.chunk.js.map diff --git a/durablefunctionsmonitor.dotnetbackend/wwwroot/index.html b/durablefunctionsmonitor.dotnetbackend/wwwroot/index.html index 655e6dd..9f4d8d4 100644 --- a/durablefunctionsmonitor.dotnetbackend/wwwroot/index.html +++ b/durablefunctionsmonitor.dotnetbackend/wwwroot/index.html @@ -1 +1 @@ -Durable Functions Monitor
\ No newline at end of file +Durable Functions Monitor
\ No newline at end of file diff --git a/durablefunctionsmonitor.dotnetbackend/wwwroot/service-worker.js b/durablefunctionsmonitor.dotnetbackend/wwwroot/service-worker.js index 679a920..827bc5e 100644 --- a/durablefunctionsmonitor.dotnetbackend/wwwroot/service-worker.js +++ b/durablefunctionsmonitor.dotnetbackend/wwwroot/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "/api/monitor/precache-manifest.6d3c04e65869ef9f242f8ee3b831204e.js" + "/api/monitor/precache-manifest.f4bb24759cb1e86c9674e7b21f91349d.js" ); self.addEventListener('message', (event) => { diff --git a/durablefunctionsmonitor.dotnetbackend/wwwroot/static/js/main.344f11ea.chunk.js b/durablefunctionsmonitor.dotnetbackend/wwwroot/static/js/main.344f11ea.chunk.js new file mode 100644 index 0000000..85fe997 --- /dev/null +++ b/durablefunctionsmonitor.dotnetbackend/wwwroot/static/js/main.344f11ea.chunk.js @@ -0,0 +1,2 @@ +(this["webpackJsonpdurablefunctionsmonitor.react"]=this["webpackJsonpdurablefunctionsmonitor.react"]||[]).push([[0],{108:function(e,t,n){e.exports=n(143)},114:function(e,t,n){},115:function(e,t,n){},116:function(e,t,n){},120:function(e,t,n){},122:function(e,t,n){},123:function(e,t,n){},124:function(e,t,n){},125:function(e,t,n){e.exports=n.p+"static/media/logo.9b5d7869.svg"},143:function(e,t,n){"use strict";n.r(t);var a=n(0),r=n(19),i=Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));function o(e){navigator.serviceWorker.register(e).then((function(e){e.onupdatefound=function(){var t=e.installing;t&&(t.onstatechange=function(){"installed"===t.state&&(navigator.serviceWorker.controller?console.log("New content is available; please refresh."):console.log("Content is cached for offline use."))})}})).catch((function(e){console.error("Error during service worker registration:",e)}))}n(113),n(114);var l,s,c,u,m,p,h,d,g,y,f,b,O,E,v,j,_,k,w,C,P,T,S,D,N=n(10),I=n(9),F=n(18),A=n(16),z=n(17),R=n(21),M=n(211),L=n(209),x=n(200),W=n(67),B=n(214),V=n(199),H=(n(115),n(182)),q=n(219),J=n(95),U=n(218),K=n(216),Y=n(189),G=n(190),$=n(191),Q=n(192),Z=n(186),X=n(193),ee=(n(116),Object(R.a)(l=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.state;return a.createElement("div",null,a.createElement(H.a,{color:e.isLoggedInAnonymously?"secondary":"inherit",onClick:function(t){return e.menuAnchorElement=t.currentTarget}},a.createElement(Z.a,null),a.createElement(M.a,{width:5}),a.createElement(q.a,{title:e.isLoggedInAnonymously?"Ensure this endpoint is not exposed to the public!":""},a.createElement(W.a,{color:e.isLoggedInAnonymously?"secondary":"inherit"},e.isLoggedInAnonymously?"Anonymous":e.userName))),!e.isLoggedInAnonymously&&a.createElement(J.a,{anchorEl:e.menuAnchorElement,keepMounted:!0,open:!!e.menuAnchorElement,onClose:function(){return e.menuAnchorElement=void 0}},a.createElement(U.a,{onClick:function(){return e.logout()}},"Login under a different name")),a.createElement(K.a,{open:!e.isLoggedIn},a.createElement(Y.a,null,!e.errorMessage&&a.createElement("div",null,a.createElement(G.a,{className:"login-progress"},a.createElement($.a,null)),a.createElement(Q.a,null,"Login in progress...")),!!e.errorMessage&&a.createElement("div",null,a.createElement(G.a,{className:"login-progress"},a.createElement(X.a,{color:"secondary",fontSize:"large"})),a.createElement(Q.a,{color:"secondary"},"Login failed. ",e.errorMessage)))))}}]),t}(a.Component))||l),te=n(144),ne=n(195),ae=n(196),re=n(197),ie=n(198),oe=n(92),le=n.n(oe),se=n(6),ce=n(5),ue=n(217),me=n(194),pe=n(91),he=n.n(pe),de=n(90),ge=n.n(de),ye=(n(120),s=ce.d.bound,Object(R.a)((u=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.state;return a.createElement(ue.a,{className:"message-snackbar",anchorOrigin:{vertical:"top",horizontal:"right"},open:!!e.errorMessage,autoHideDuration:6e3,onClose:this.handleClose},a.createElement(me.a,{className:"error-snackbar-content",message:a.createElement("span",null,a.createElement(ge.a,{className:"error-icon"}),e.errorMessage),action:[a.createElement(te.a,{key:"close","aria-label":"Close",color:"inherit",onClick:this.handleClose},a.createElement(he.a,null))]}))}},{key:"handleClose",value:function(){this.props.state.errorMessage=""}}]),t}(a.Component),Object(se.a)(u.prototype,"handleClose",[s],Object.getOwnPropertyDescriptor(u.prototype,"handleClose"),u.prototype),c=u))||c),fe=Object(R.a)(m=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"componentDidMount",value:function(){this.props.state.setWindowTitle()}},{key:"render",value:function(){var e=this.props.state;return a.createElement("div",null,a.createElement(te.a,{color:"inherit",onClick:function(t){return e.menuAnchorElement=t.currentTarget}},a.createElement(le.a,null)),a.createElement(J.a,{anchorEl:e.menuAnchorElement,keepMounted:!0,open:!!e.menuAnchorElement,onClose:function(){return e.menuAnchorElement=void 0}},a.createElement(U.a,{onClick:function(){return e.showConnectionParamsDialog()}},"Manage Storage Connection Settings..."),a.createElement(U.a,{onClick:function(){return e.showPurgeHistoryDialog()}},"Purge Instance History...")),a.createElement(K.a,{open:e.connectionParamsDialogOpen,onClose:function(){return e.connectionParamsDialogOpen=!1}},a.createElement(ne.a,null,"Manage Storage Connection Settings"),a.createElement(Y.a,null,e.inProgress?a.createElement(ae.a,null):a.createElement(M.a,{height:4}),a.createElement(Q.a,null,e.isReadonly?"Change the below values via your application settings ('DFM_HUB_NAME' and 'AzureWebJobsStorage' respectively":"The below values will be saved to local.settings.json file."),a.createElement(re.a,{autoFocus:!0,margin:"dense",label:"Hub Name",fullWidth:!0,disabled:e.inProgress,InputProps:{readOnly:e.isReadonly},InputLabelProps:{shrink:!0},value:e.hubName,onChange:function(t){return e.hubName=t.target.value}}),a.createElement(re.a,{autoFocus:!0,margin:"dense",label:"Azure Storage Connection String",fullWidth:!0,disabled:e.inProgress,InputProps:{readOnly:e.isReadonly},InputLabelProps:{shrink:!0},value:e.connectionString,onChange:function(t){return e.connectionString=t.target.value}}),a.createElement(ye,{state:e})),a.createElement(ie.a,null,a.createElement(H.a,{onClick:function(){return e.connectionParamsDialogOpen=!1},color:"primary"},"Cancel"),!e.isReadonly&&a.createElement(H.a,{onClick:function(){return e.saveConnectionParams()},disabled:!e.isDirty||!e.hubName||!e.connectionString||e.inProgress,color:"secondary"},"Save"))))}}]),t}(a.Component))||m,be=n(201),Oe=n(147),Ee=n(148),ve=n(215),je=n(152),_e=n(202),ke=n(203),we=n(212),Ce=n(150),Pe=n(204),Te=n(205),Se=n(206),De=n(207),Ne=n(220),Ie=n(208),Fe=n(98),Ae=n(64),ze=n.n(Ae),Re=(n(122),function(){function e(){Object(N.a)(this,e)}return Object(I.a)(e,null,[{key:"getDateTimeValue",value:function(e){var t=new Date(e.target.value.slice(0,16)+":00Z");try{t.toISOString()}catch(n){t=new Date}return t}},{key:"formatDateTime",value:function(e){return e.toISOString().slice(0,16)}}]),e}()),Me=["Timestamp","EventType","Name","ScheduledTime","Result","Details"],Le=function e(){Object(N.a)(this,e),this.instanceId=void 0,this.name=void 0,this.entityId=void 0,this.runtimeStatus=void 0,this.entityType=void 0,this.lastEvent=void 0,this.input=void 0,this.customStatus=void 0,this.output=void 0,this.createdTime=void 0,this.lastUpdatedTime=void 0,this.historyEvents=void 0},xe=["instanceId","name","createdTime","lastUpdatedTime","runtimeStatus","lastEvent","input","output","customStatus"],We=(p=ce.d.bound,Object(R.a)((d=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){return this.props.backendClient.isVsCode?a.createElement(V.a,{href:"#",onClick:this.onLinkClicked},this.props.orchestrationId):a.createElement(V.a,{href:"".concat("/api/monitor","/orchestrations/").concat(this.props.orchestrationId),target:"_blank"},this.props.orchestrationId)}},{key:"onLinkClicked",value:function(){this.props.backendClient.call("OpenInNewWindow",this.props.orchestrationId)}}]),t}(a.Component),Object(se.a)(d.prototype,"onLinkClicked",[p],Object.getOwnPropertyDescriptor(d.prototype,"onLinkClicked"),d.prototype),h=d))||h),Be=n(94),Ve=n(12),He=n(11),qe=(n(43),g=function e(){Object(N.a)(this,e),Object(Ve.a)(this,"errorMessage",y,this)},y=Object(se.a)(g.prototype,"errorMessage",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),g);!function(e){e[e.Equals=0]="Equals",e[e.StartsWith=1]="StartsWith",e[e.Contains=2]="Contains"}(S||(S={})),function(e){e[e.ShowBoth=0]="ShowBoth",e[e.OrchestrationsOnly=1]="OrchestrationsOnly",e[e.DurableEntitiesOnly=2]="DurableEntitiesOnly"}(D||(D={}));var Je,Ue,Ke,Ye,Ge,$e,Qe,Ze,Xe,et,tt,nt,at,rt,it,ot,lt,st,ct,ut,mt,pt,ht,dt,gt,yt,ft,bt,Ot,Et,vt,jt,_t,kt,wt,Ct,Pt,Tt,St,Dt,Nt,It,Ft,At=(f=function(e){function t(e,n){var a,r;Object(N.a)(this,t),(a=Object(F.a)(this,Object(A.a)(t).call(this)))._backendClient=e,a._localStorage=n,Object(Ve.a)(a,"_inProgress",b,Object(He.a)(a)),Object(Ve.a)(a,"_orchestrations",O,Object(He.a)(a)),Object(Ve.a)(a,"_orderByDirection",E,Object(He.a)(a)),Object(Ve.a)(a,"_orderBy",v,Object(He.a)(a)),Object(Ve.a)(a,"_autoRefresh",j,Object(He.a)(a)),Object(Ve.a)(a,"_timeFrom",_,Object(He.a)(a)),Object(Ve.a)(a,"_timeTill",k,Object(He.a)(a)),Object(Ve.a)(a,"_filterValue",w,Object(He.a)(a)),Object(Ve.a)(a,"_filterOperator",C,Object(He.a)(a)),Object(Ve.a)(a,"_filteredColumn",P,Object(He.a)(a)),Object(Ve.a)(a,"_showEntityType",T,Object(He.a)(a)),a._noMorePagesToLoad=!1,a._pageSize=50,a._autoRefreshToken=void 0,a._oldFilterValue="",a._oldTimeFrom=void 0,a._oldTimeTill=void 0;var i=a._localStorage.getItem("timeFrom");i?r=new Date(i):(r=new Date).setDate(r.getDate()-1),a._timeFrom=r,a._oldTimeFrom=r;var o=a._localStorage.getItem("timeTill");o&&(a._timeTill=new Date(o),a._oldTimeTill=a._timeTill);var l=a._localStorage.getItem("filteredColumn");l&&(a._filteredColumn=l);var s=a._localStorage.getItem("filterOperator");s&&(a._filterOperator=S[s]);var c=a._localStorage.getItem("filterValue");c&&(a._filterValue=c,a._oldFilterValue=c);var u=a._localStorage.getItem("showEntityType");u&&(a._showEntityType=D[u]);var m=a._localStorage.getItem("autoRefresh");m&&(a._autoRefresh=Number(m));var p=a._localStorage.getItem("orderBy");p&&(a._orderBy=p);var h=a._localStorage.getItem("orderByDirection");return h&&(a._orderByDirection=h),a}return Object(z.a)(t,e),Object(I.a)(t,[{key:"inProgress",get:function(){return this._inProgress}},{key:"orchestrations",get:function(){return this._orchestrations}},{key:"autoRefresh",get:function(){return this._autoRefresh},set:function(e){this._autoRefresh=e,this._localStorage.setItem("autoRefresh",this._autoRefresh.toString()),this.loadOrchestrations(!0)}},{key:"timeFrom",get:function(){return this._timeFrom},set:function(e){this._timeFrom=e,this.resetOrderBy()}},{key:"timeTill",get:function(){return this._timeTill?this._timeTill:new Date},set:function(e){this._timeTill=e,this.resetOrderBy()}},{key:"timeTillEnabled",get:function(){return!!this._timeTill},set:function(e){this._timeTill=e?new Date:void 0,e||(this.resetOrderBy(),this.reloadOrchestrations())}},{key:"orderByDirection",get:function(){return this._orderByDirection}},{key:"orderBy",get:function(){return this._orderBy},set:function(e){this._orderBy!==e?this._orderBy=e:this._orderByDirection="desc"===this._orderByDirection?"asc":"desc",this.reloadOrchestrations()}},{key:"filterValue",get:function(){return this._filterValue},set:function(e){this._filterValue=e}},{key:"filterOperator",get:function(){return this._filterOperator},set:function(e){this._filterOperator=e,this._filterValue&&"0"!==this._filteredColumn&&this.reloadOrchestrations()}},{key:"filteredColumn",get:function(){return this._filteredColumn},set:function(e){this._filteredColumn=e,this._filterValue&&("0"===this._filteredColumn&&(this._filterValue=""),this.reloadOrchestrations())}},{key:"showEntityType",get:function(){return D[this._showEntityType]},set:function(e){this._showEntityType=D[e],this.reloadOrchestrations()}},{key:"showLastEventColumn",get:function(){return"lastEvent"===this._filteredColumn&&!!this._oldFilterValue}},{key:"backendClient",get:function(){return this._backendClient}}]),Object(I.a)(t,[{key:"applyTimeFrom",value:function(){this._oldTimeFrom!==this._timeFrom&&this.reloadOrchestrations()}},{key:"applyTimeTill",value:function(){this._oldTimeTill!==this._timeTill&&this.reloadOrchestrations()}},{key:"applyFilterValue",value:function(){this._oldFilterValue!==this._filterValue&&this.reloadOrchestrations()}},{key:"reloadOrchestrations",value:function(){this._orchestrations=[],this._noMorePagesToLoad=!1,this._localStorage.setItems([{fieldName:"timeFrom",value:this._timeFrom.toISOString()},{fieldName:"timeTill",value:this._timeTill?this._timeTill.toISOString():null},{fieldName:"timeFrom",value:this._timeFrom.toISOString()},{fieldName:"filteredColumn",value:this._filteredColumn},{fieldName:"filterOperator",value:S[this._filterOperator]},{fieldName:"filterValue",value:this._filterValue?this._filterValue:null},{fieldName:"showEntityType",value:D[this._showEntityType]},{fieldName:"orderBy",value:this._orderBy},{fieldName:"orderByDirection",value:this._orderByDirection}]),this.loadOrchestrations(),this._oldFilterValue=this._filterValue,this._oldTimeFrom=this._timeFrom,this._oldTimeTill=this._timeTill}},{key:"loadOrchestrations",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!(this.inProgress||this._noMorePagesToLoad&&!this._autoRefresh)){this._inProgress=!0;var n=t?0:this._orchestrations.length,a=this._timeTill?this._timeTill:new Date,r="&$filter=createdTime ge '".concat(this._timeFrom.toISOString(),"' and createdTime le '").concat(a.toISOString(),"'");if(this._showEntityType===D.OrchestrationsOnly?r+=" and entityType eq 'Orchestration'":this._showEntityType===D.DurableEntitiesOnly&&(r+=" and entityType eq 'DurableEntity'"),this._filterValue&&"0"!==this._filteredColumn)switch(r+=" and ",this._filterOperator){case S.Equals:r+="".concat(this._filteredColumn," eq '").concat(this._filterValue,"'");break;case S.StartsWith:r+="startswith(".concat(this._filteredColumn,", '").concat(this._filterValue,"')");break;case S.Contains:r+="contains(".concat(this._filteredColumn,", '").concat(this._filterValue,"')")}var i=this._orderBy?"&$orderby=".concat(this._orderBy," ").concat(this.orderByDirection):"",o="/orchestrations?$top=".concat(this._pageSize,"&$skip=").concat(n).concat(r).concat(i);this._backendClient.call("GET",o).then((function(n){var a;n.length?t?e._orchestrations=n:(a=e._orchestrations).push.apply(a,Object(Be.a)(n)):e._noMorePagesToLoad=!0;e._autoRefresh&&(e._autoRefreshToken&&clearTimeout(e._autoRefreshToken),e._autoRefreshToken=setTimeout((function(){return e.loadOrchestrations(!0)}),1e3*e._autoRefresh))}),(function(t){e._autoRefresh=0,e.errorMessage="Load failed: ".concat(t.message,".").concat(t.response?t.response.data:""," ")})).finally((function(){e._inProgress=!1}))}}},{key:"resetOrderBy",value:function(){this._orderBy="",this._orderByDirection="asc"}}]),t}(qe),Object(se.a)(f.prototype,"inProgress",[ce.e],Object.getOwnPropertyDescriptor(f.prototype,"inProgress"),f.prototype),Object(se.a)(f.prototype,"orchestrations",[ce.e],Object.getOwnPropertyDescriptor(f.prototype,"orchestrations"),f.prototype),Object(se.a)(f.prototype,"autoRefresh",[ce.e],Object.getOwnPropertyDescriptor(f.prototype,"autoRefresh"),f.prototype),Object(se.a)(f.prototype,"timeFrom",[ce.e],Object.getOwnPropertyDescriptor(f.prototype,"timeFrom"),f.prototype),Object(se.a)(f.prototype,"timeTill",[ce.e],Object.getOwnPropertyDescriptor(f.prototype,"timeTill"),f.prototype),Object(se.a)(f.prototype,"timeTillEnabled",[ce.e],Object.getOwnPropertyDescriptor(f.prototype,"timeTillEnabled"),f.prototype),Object(se.a)(f.prototype,"orderByDirection",[ce.e],Object.getOwnPropertyDescriptor(f.prototype,"orderByDirection"),f.prototype),Object(se.a)(f.prototype,"orderBy",[ce.e],Object.getOwnPropertyDescriptor(f.prototype,"orderBy"),f.prototype),Object(se.a)(f.prototype,"filterValue",[ce.e],Object.getOwnPropertyDescriptor(f.prototype,"filterValue"),f.prototype),Object(se.a)(f.prototype,"filterOperator",[ce.e],Object.getOwnPropertyDescriptor(f.prototype,"filterOperator"),f.prototype),Object(se.a)(f.prototype,"filteredColumn",[ce.e],Object.getOwnPropertyDescriptor(f.prototype,"filteredColumn"),f.prototype),Object(se.a)(f.prototype,"showEntityType",[ce.e],Object.getOwnPropertyDescriptor(f.prototype,"showEntityType"),f.prototype),Object(se.a)(f.prototype,"showLastEventColumn",[ce.e],Object.getOwnPropertyDescriptor(f.prototype,"showLastEventColumn"),f.prototype),b=Object(se.a)(f.prototype,"_inProgress",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),O=Object(se.a)(f.prototype,"_orchestrations",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return[]}}),E=Object(se.a)(f.prototype,"_orderByDirection",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return"asc"}}),v=Object(se.a)(f.prototype,"_orderBy",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),j=Object(se.a)(f.prototype,"_autoRefresh",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return 0}}),_=Object(se.a)(f.prototype,"_timeFrom",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),k=Object(se.a)(f.prototype,"_timeTill",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),w=Object(se.a)(f.prototype,"_filterValue",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),C=Object(se.a)(f.prototype,"_filterOperator",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return S.Equals}}),P=Object(se.a)(f.prototype,"_filteredColumn",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return"0"}}),T=Object(se.a)(f.prototype,"_showEntityType",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return D.ShowBoth}}),f),zt=(Je=ce.d.bound,Object(R.a)((Ke=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"componentDidMount",value:function(){var e=this;this.props.state.loadOrchestrations(),document.addEventListener("scroll",(function(t){var n=t.target.scrollingElement;if(n){n.scrollHeight-window.innerHeight-n.scrollTop<100&&e.props.state.loadOrchestrations()}}))}},{key:"render",value:function(){var e=this.props.state;return a.createElement("div",null,e.inProgress?a.createElement(ae.a,null):a.createElement(M.a,{height:4}),a.createElement(x.a,{variant:"dense",className:"top-toolbar"},a.createElement(be.a,{container:!0,className:"toolbar-grid1"},a.createElement(be.a,{item:!0,xs:12},a.createElement(re.a,{className:"from-input",style:{marginLeft:10},label:"From \xa0\xa0 (UTC)",type:"datetime-local",InputLabelProps:{shrink:!0},disabled:e.inProgress,value:Re.formatDateTime(e.timeFrom),onChange:function(t){e.timeFrom=Re.getDateTimeValue(t)},onBlur:function(){return e.applyTimeFrom()},onKeyPress:this.handleKeyPress})),a.createElement(be.a,{item:!0,xs:12,className:"toolbar-grid1-item2"},a.createElement(Oe.a,null,a.createElement(Ee.a,{className:"till-label",htmlFor:"till-checkbox",shrink:!0},"Till"),a.createElement(ve.a,{id:"till-checkbox",className:"till-checkbox",disabled:e.inProgress,checked:e.timeTillEnabled,onChange:function(t){return e.timeTillEnabled=t.target.checked}})),a.createElement(re.a,{className:"till-input",label:"(UTC)",placeholder:"[Now]",InputLabelProps:{shrink:!0},type:e.timeTillEnabled?"datetime-local":"text",disabled:!e.timeTillEnabled||e.inProgress,value:e.timeTillEnabled?Re.formatDateTime(e.timeTill):"",onChange:function(t){e.timeTill=Re.getDateTimeValue(t)},onBlur:function(){return e.applyTimeTill()},onKeyPress:this.handleKeyPress}))),a.createElement(be.a,{container:!0,className:"toolbar-grid2"},a.createElement(be.a,{item:!0,xs:12},a.createElement(Oe.a,null,a.createElement(Ee.a,{htmlFor:"filtered-column-select"},"Filtered Column"),a.createElement(je.a,{className:"toolbar-select filtered-column-input",disabled:e.inProgress,value:e.filteredColumn,onChange:function(t){return e.filteredColumn=t.target.value},inputProps:{id:"filtered-column-select"}},a.createElement(U.a,{value:"0"},"[Not Selected]"),xe.map((function(e){return a.createElement(U.a,{key:e,value:e},e)})))),a.createElement(Oe.a,{className:"toolbar-grid2-item1-select"},a.createElement(Ee.a,{htmlFor:"filter-operator-select"},"Filter Operator"),a.createElement(je.a,{className:"toolbar-select",disabled:e.inProgress,value:e.filterOperator,onChange:function(t){return e.filterOperator=t.target.value},inputProps:{id:"filter-operator-select"}},a.createElement(U.a,{value:0},"Equals"),a.createElement(U.a,{value:1},"Starts With"),a.createElement(U.a,{value:2},"Contains")))),a.createElement(be.a,{item:!0,xs:12,className:"toolbar-grid2-item2"},a.createElement(re.a,{className:"filter-value-input",label:"Filter Value",InputLabelProps:{shrink:!0},placeholder:"[some text or 'null']",disabled:"0"===e.filteredColumn||e.inProgress,value:e.filterValue,onChange:function(t){return e.filterValue=t.target.value},onBlur:function(){return e.applyFilterValue()},onKeyPress:this.handleKeyPress}))),a.createElement(_e.a,{value:e.showEntityType,onChange:function(t){return e.showEntityType=t.target.value}},a.createElement(ke.a,{className:"entity-type-radio",disabled:e.inProgress,value:D[D.ShowBoth],control:a.createElement(we.a,null),label:a.createElement(W.a,{variant:"subtitle2"},"Show both")}),a.createElement(ke.a,{className:"entity-type-radio",disabled:e.inProgress,value:D[D.OrchestrationsOnly],control:a.createElement(we.a,null),label:a.createElement(W.a,{variant:"subtitle2"},"Orchestrations only")}),a.createElement(ke.a,{className:"entity-type-radio",disabled:e.inProgress,value:D[D.DurableEntitiesOnly],control:a.createElement(we.a,null),label:a.createElement(W.a,{variant:"subtitle2"},"Durable Entities only")})),a.createElement(W.a,{style:{flex:1}}),a.createElement(be.a,{container:!0,className:"toolbar-grid3"},a.createElement(be.a,{item:!0,xs:12},a.createElement(Oe.a,{className:"form-control-float-right"},a.createElement(Ee.a,{htmlFor:"auto-refresh-select"},"Auto-refresh"),a.createElement(je.a,{className:"toolbar-select",inputProps:{id:"auto-refresh-select"},value:e.autoRefresh,onChange:function(t){return e.autoRefresh=t.target.value}},a.createElement(U.a,{value:0},"Never"),a.createElement(U.a,{value:1},"Every 1 sec."),a.createElement(U.a,{value:5},"Every 5 sec."),a.createElement(U.a,{value:10},"Every 10 sec.")))),a.createElement(be.a,{item:!0,xs:12,className:"toolbar-grid3-item2"},a.createElement(H.a,{className:"refresh-button form-control-float-right",variant:"outlined",color:"default",size:"large",onClick:function(){return e.reloadOrchestrations()}},a.createElement(ze.a,null))))),a.createElement(Ce.a,{className:"items-count-label"},e.orchestrations.length?"".concat(e.orchestrations.length," items shown"):""),e.orchestrations.length?this.renderTable(e):this.renderEmptyTable(),e.inProgress&&e.orchestrations.length?a.createElement(ae.a,null):a.createElement(M.a,{height:4}),a.createElement(x.a,{variant:"dense"}),a.createElement(ye,{state:this.props.state}))}},{key:"renderEmptyTable",value:function(){return a.createElement(W.a,{variant:"h5",className:"empty-table-placeholder"},"This list is empty")}},{key:"renderTable",value:function(e){return a.createElement(Pe.a,{size:"small"},a.createElement(Te.a,null,a.createElement(Se.a,null,xe.filter((function(t){return!!e.showLastEventColumn||"lastEvent"!==t})).map((function(t){return a.createElement(De.a,{key:t},a.createElement(Ne.a,{active:e.orderBy===t,direction:e.orderByDirection,onClick:function(){return e.orderBy=t}},t))})))),a.createElement(Ie.a,null,e.orchestrations.map((function(t){var n={verticalAlign:"top"};return a.createElement(Se.a,{key:t.instanceId,className:"runtime-status-"+t.runtimeStatus.toString().toLowerCase()},a.createElement(De.a,{className:"instance-id-cell",style:n},a.createElement(We,{orchestrationId:t.instanceId,backendClient:e.backendClient})),a.createElement(De.a,{className:"name-cell",style:n},t.name),a.createElement(De.a,{className:"datetime-cell",style:n},t.createdTime),a.createElement(De.a,{className:"datetime-cell",style:n},t.lastUpdatedTime),a.createElement(De.a,{style:n},t.runtimeStatus),e.showLastEventColumn&&a.createElement(De.a,{style:n},t.lastEvent),a.createElement(De.a,{className:"long-text-cell",style:n},a.createElement(Fe.a,{className:"long-text-cell-input",multiline:!0,fullWidth:!0,rowsMax:5,readOnly:!0,value:JSON.stringify(t.input)})),a.createElement(De.a,{className:"output-cell",style:n},a.createElement(Fe.a,{className:"long-text-cell-input",multiline:!0,fullWidth:!0,rowsMax:5,readOnly:!0,value:JSON.stringify(t.output)})),a.createElement(De.a,{className:"output-cell",style:n},a.createElement(Fe.a,{className:"long-text-cell-input",multiline:!0,fullWidth:!0,rowsMax:5,readOnly:!0,value:JSON.stringify(t.customStatus)})))}))))}},{key:"handleKeyPress",value:function(e){"Enter"===e.key&&(e.preventDefault(),this.props.state.reloadOrchestrations())}}]),t}(a.Component),Object(se.a)(Ke.prototype,"handleKeyPress",[Je],Object.getOwnPropertyDescriptor(Ke.prototype,"handleKeyPress"),Ke.prototype),Ue=Ke))||Ue),Rt=(n(123),Object(R.a)(Ye=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.state;return a.createElement(a.Fragment,null,this.renderDialogs(e),a.createElement(H.a,{variant:"outlined",color:"primary",size:"large",onClick:function(){return e.purgeConfirmationOpen=!0}},"Purge"))}},{key:"renderDialogs",value:function(e){return a.createElement(a.Fragment,null,a.createElement(K.a,{open:e.purgeConfirmationOpen,onClose:function(){return e.purgeConfirmationOpen=!1}},a.createElement(ne.a,null,"Confirm Purge"),a.createElement(Y.a,null,a.createElement(Q.a,null,"You're about to purge entity '",e.orchestrationId,"'. This operation drops entity state from the underlying storage and cannot be undone. Are you sure?")),a.createElement(ie.a,null,a.createElement(H.a,{onClick:function(){return e.purgeConfirmationOpen=!1},color:"primary",autoFocus:!0},"Cancel"),a.createElement(H.a,{onClick:function(){return e.purge()},color:"secondary"},"Yes, purge"))))}}]),t}(a.Component))||Ye),Mt=Object(R.a)(Ge=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.details;return a.createElement(a.Fragment,null,a.createElement(be.a,{container:!0,className:"grid-container"},a.createElement(be.a,{item:!0,xs:12,sm:12,md:3,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"entityId.name",value:e.entityId.name,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0})),a.createElement(be.a,{item:!0,xs:12,sm:6,md:3,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"entityId.key",value:e.entityId.key,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0})),a.createElement(be.a,{item:!0,xs:12,sm:6,md:2,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"createdTime",value:e.createdTime,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0})),a.createElement(be.a,{item:!0,xs:12,sm:6,md:2,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"lastUpdatedTime",value:e.lastUpdatedTime,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0})),a.createElement(be.a,{item:!0,xs:12,sm:6,md:2,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"runtimeStatus",value:e.runtimeStatus,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0,className:e.runtimeStatus?"runtime-status-"+e.runtimeStatus.toLowerCase():""})),a.createElement(be.a,{item:!0,xs:12,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"input",value:JSON.stringify(e.input,null,3),margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0,multiline:!0,rowsMax:10})),a.createElement(be.a,{item:!0,xs:12,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"customStatus",value:JSON.stringify(e.customStatus,null,3),margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0,multiline:!0,rowsMax:10}))))}}]),t}(a.Component))||Ge,Lt=Object(R.a)($e=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.state;return a.createElement(a.Fragment,null,this.renderDialogs(e),a.createElement(H.a,{variant:"outlined",color:"primary",size:"large",onClick:function(){return e.rewindConfirmationOpen=!0}},"Rewind"),a.createElement(M.a,{width:20}),a.createElement(H.a,{variant:"outlined",color:"primary",size:"large",onClick:function(){return e.terminateConfirmationOpen=!0}},"Terminate"),a.createElement(M.a,{width:20}),a.createElement(H.a,{variant:"outlined",color:"primary",size:"large",onClick:function(){return e.dialogOpen=!0}},"Raise Event"),a.createElement(M.a,{width:20}),a.createElement(H.a,{variant:"outlined",color:"primary",size:"large",onClick:function(){return e.purgeConfirmationOpen=!0}},"Purge"))}},{key:"renderDialogs",value:function(e){return a.createElement(a.Fragment,null,a.createElement(K.a,{open:e.rewindConfirmationOpen,onClose:function(){return e.rewindConfirmationOpen=!1}},a.createElement(ne.a,null,"Confirm Rewind"),a.createElement(Y.a,null,a.createElement(Q.a,null,"You're about to rewind orchestration '",e.orchestrationId,"'. Are you sure?")),a.createElement(ie.a,null,a.createElement(H.a,{onClick:function(){return e.rewindConfirmationOpen=!1},color:"primary",autoFocus:!0},"Cancel"),a.createElement(H.a,{onClick:function(){return e.rewind()},color:"secondary"},"Yes, rewind"))),a.createElement(K.a,{open:e.terminateConfirmationOpen,onClose:function(){return e.terminateConfirmationOpen=!1}},a.createElement(ne.a,null,"Confirm Terminate"),a.createElement(Y.a,null,a.createElement(Q.a,null,"You're about to terminate orchestration '",e.orchestrationId,"'. This operation cannot be undone. Are you sure?")),a.createElement(ie.a,null,a.createElement(H.a,{onClick:function(){return e.terminateConfirmationOpen=!1},color:"primary",autoFocus:!0},"Cancel"),a.createElement(H.a,{onClick:function(){return e.terminate()},color:"secondary"},"Yes, terminate"))),a.createElement(K.a,{open:e.dialogOpen,onClose:function(){return e.dialogOpen=!1}},a.createElement(ne.a,null,"Raise Event"),a.createElement(Y.a,null,a.createElement(Q.a,null,"Provide event name and some additional data."),a.createElement(re.a,{autoFocus:!0,margin:"dense",label:"Event Name",fullWidth:!0,value:e.eventName,onChange:function(t){return e.eventName=t.target.value}}),a.createElement(re.a,{margin:"dense",label:"Event Data (JSON)",fullWidth:!0,multiline:!0,rows:7,value:e.eventData,onChange:function(t){return e.eventData=t.target.value}})),a.createElement(ie.a,null,a.createElement(H.a,{onClick:function(){return e.dialogOpen=!1},color:"primary"},"Cancel"),a.createElement(H.a,{onClick:function(){return e.raiseEvent()},disabled:!e.eventName,color:"secondary"},"Raise"))),a.createElement(K.a,{open:e.purgeConfirmationOpen,onClose:function(){return e.purgeConfirmationOpen=!1}},a.createElement(ne.a,null,"Confirm Purge"),a.createElement(Y.a,null,a.createElement(Q.a,null,"You're about to purge orchestration '",e.orchestrationId,"'. This operation drops orchestration state from the underlying storage and cannot be undone. Are you sure?")),a.createElement(ie.a,null,a.createElement(H.a,{onClick:function(){return e.purgeConfirmationOpen=!1},color:"primary",autoFocus:!0},"Cancel"),a.createElement(H.a,{onClick:function(){return e.purge()},color:"secondary"},"Yes, purge"))))}}]),t}(a.Component))||$e,xt=Object(R.a)(Qe=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.details;return a.createElement(a.Fragment,null,a.createElement(be.a,{container:!0,className:"grid-container"},a.createElement(be.a,{item:!0,xs:12,sm:12,md:3,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"name",value:e.name,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0})),a.createElement(be.a,{item:!0,xs:12,sm:6,md:2,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"createdTime",value:e.createdTime,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0})),a.createElement(be.a,{item:!0,xs:12,sm:6,md:2,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"lastUpdatedTime",value:e.lastUpdatedTime,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0})),a.createElement(be.a,{item:!0,xs:12,sm:6,md:2,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"runtimeStatus",value:e.runtimeStatus,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0,className:e.runtimeStatus?"runtime-status-"+e.runtimeStatus.toLowerCase():""})),a.createElement(be.a,{item:!0,xs:12,sm:6,md:3,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"customStatus",value:JSON.stringify(e.customStatus),margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0})),a.createElement(be.a,{item:!0,xs:12,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"input",value:JSON.stringify(e.input,null,3),margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0,multiline:!0,rowsMax:8})),a.createElement(be.a,{item:!0,xs:12,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"output",value:JSON.stringify(e.output,null,3),margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0,multiline:!0,rowsMax:8}))),a.createElement(Ce.a,{className:"history-events-count-label"},"historyEvents: ",e.historyEvents?e.historyEvents.length:0," items"),this.renderTable(e.historyEvents))}},{key:"renderEmptyTable",value:function(){return a.createElement(W.a,{variant:"h5",className:"empty-table-placeholder"},"This list is empty")}},{key:"renderTable",value:function(e){return e&&e.length?a.createElement(Pe.a,{size:"small"},a.createElement(Te.a,null,a.createElement(Se.a,null,Me.map((function(e){return a.createElement(De.a,{key:e},e)})))),a.createElement(Ie.a,null,e.map((function(e,t){var n={verticalAlign:"top"};return a.createElement(Se.a,{key:t},a.createElement(De.a,{style:n},e.Timestamp),a.createElement(De.a,{style:n},e.EventType),a.createElement(De.a,{className:"name-cell",style:n},e.Name?e.Name:e.FunctionName),a.createElement(De.a,{style:n},e.ScheduledTime),a.createElement(De.a,{className:"long-text-cell",style:n},a.createElement(Fe.a,{className:"long-text-cell-input",multiline:!0,fullWidth:!0,rowsMax:5,readOnly:!0,value:JSON.stringify(e.Result)})),a.createElement(De.a,{className:"long-text-cell",style:n},a.createElement(Fe.a,{className:"long-text-cell-input",multiline:!0,fullWidth:!0,rowsMax:5,readOnly:!0,value:e.Details})))})))):this.renderEmptyTable()}}]),t}(a.Component))||Qe,Wt=Object(R.a)(Ze=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"componentDidMount",value:function(){this.props.state.loadDetails()}},{key:"render",value:function(){var e=this.props.state;return a.createElement("div",null,e.inProgress?a.createElement(ae.a,null):a.createElement(M.a,{height:4}),a.createElement(x.a,{variant:"dense",className:"top-toolbar"},"Orchestration"===e.details.entityType&&a.createElement(Lt,{state:e}),"DurableEntity"===e.details.entityType&&a.createElement(Rt,{state:e}),a.createElement(M.a,{width:20}),a.createElement(W.a,{style:{flex:1}}),a.createElement(Oe.a,null,a.createElement(Ee.a,{htmlFor:"auto-refresh-select"},"Auto-refresh"),a.createElement(je.a,{className:"toolbar-select",value:e.autoRefresh,onChange:function(t){return e.autoRefresh=t.target.value},inputProps:{id:"auto-refresh-select"}},a.createElement(U.a,{value:0},"Never"),a.createElement(U.a,{value:1},"Every 1 sec."),a.createElement(U.a,{value:5},"Every 5 sec."),a.createElement(U.a,{value:10},"Every 10 sec."))),a.createElement(M.a,{width:20}),a.createElement(H.a,{className:"refresh-button",variant:"outlined",color:"default",size:"large",onClick:function(){return e.loadDetails()}},a.createElement(ze.a,null))),"Orchestration"===e.details.entityType&&a.createElement(xt,{details:e.details}),"DurableEntity"===e.details.entityType&&a.createElement(Mt,{details:e.details}),e.inProgress?a.createElement(ae.a,null):a.createElement(M.a,{height:4}),a.createElement(M.a,{height:10}),a.createElement(ye,{state:this.props.state}))}}]),t}(a.Component))||Ze,Bt=n(149),Vt=n(151),Ht=(n(124),Object(R.a)(Xe=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.state;return a.createElement(K.a,{open:e.dialogOpen,onClose:function(){e.inProgress||(e.dialogOpen=!1)}},a.createElement(ne.a,null,"Purge Instance History"),null===e.instancesDeleted&&a.createElement("div",null,a.createElement(Y.a,null,e.inProgress?a.createElement(ae.a,null):a.createElement(M.a,{height:4}),a.createElement(Q.a,null,"WARNING: this operation drops instance states from the underlying storage and cannot be undone.","DurableEntity"===e.entityType&&a.createElement(W.a,{color:"error"},"It might as well remove Durable Entities, that are still active. Ensure that you specify the correct time frame!")),a.createElement(Oe.a,{className:"purge-history-statuses",disabled:e.inProgress,fullWidth:!0},a.createElement(Bt.a,null,"Apply to:"),a.createElement(_e.a,{row:!0,value:e.entityType,onChange:function(t){return e.entityType=t.target.value}},a.createElement(ke.a,{disabled:e.inProgress,value:"Orchestration",control:a.createElement(we.a,null),label:"Orchestrations"}),a.createElement(ke.a,{disabled:e.inProgress,value:"DurableEntity",control:a.createElement(we.a,null),label:"Durable Entities"}))),a.createElement(re.a,{className:"purge-history-from-input",label:"From (UTC)",type:"datetime-local",InputLabelProps:{shrink:!0},disabled:e.inProgress,value:Re.formatDateTime(e.timeFrom),onChange:function(t){e.timeFrom=Re.getDateTimeValue(t)}}),a.createElement(re.a,{className:"purge-history-till-input",label:"Till (UTC)",type:"datetime-local",InputLabelProps:{shrink:!0},disabled:e.inProgress,value:Re.formatDateTime(e.timeTill),onChange:function(t){e.timeTill=Re.getDateTimeValue(t)}}),a.createElement(Oe.a,{className:"purge-history-statuses",disabled:e.inProgress},a.createElement(Bt.a,null,"With the following status:"),"Orchestration"===e.entityType&&a.createElement(Vt.a,{row:!0},a.createElement(qt,{state:e,runtimeStatus:"Completed"}),a.createElement(qt,{state:e,runtimeStatus:"Failed"}),a.createElement(qt,{state:e,runtimeStatus:"Terminated"})),"DurableEntity"===e.entityType&&a.createElement(Vt.a,{row:!0},a.createElement(q.a,{title:"Durable Entities are always in 'Running' state"},a.createElement(ke.a,{control:a.createElement(ve.a,{checked:!0}),label:"Running",disabled:!0})))),a.createElement(ye,{state:e})),a.createElement(ie.a,null,a.createElement(H.a,{onClick:function(){return e.dialogOpen=!1},disabled:e.inProgress,color:"primary"},"Cancel"),a.createElement(H.a,{onClick:function(){return e.purgeHistory()},disabled:!e.isValid||e.inProgress,color:"secondary"},"Purge"))),null!==e.instancesDeleted&&a.createElement("div",null,a.createElement(Y.a,null,a.createElement(Q.a,{className:"success-message"},e.instancesDeleted," instances were deleted.")),a.createElement(ie.a,null,a.createElement(H.a,{onClick:function(){return e.dialogOpen=!1},color:"primary"},"Close"))))}}]),t}(a.Component))||Xe),qt=Object(R.a)(et=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.state,t=this.props.runtimeStatus;return a.createElement(ke.a,{control:a.createElement(ve.a,{checked:e.getStatusIncluded(t),onChange:function(n){return e.setStatusIncluded(t,n.target.checked)}}),label:t})}}]),t}(a.Component))||et,Jt=n(125),Ut=Object(R.a)(tt=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.state;return a.createElement("div",null,!e.loginState&&a.createElement(M.a,{height:20}),!!e.loginState&&a.createElement(L.a,{position:"static",color:"default",className:"app-bar"},a.createElement(x.a,null,e.loginState.isLoggedIn&&!!e.mainMenuState&&a.createElement(fe,{state:e.mainMenuState}),a.createElement("img",{src:Jt,width:"30px"}),a.createElement(M.a,{width:5}),a.createElement(W.a,{variant:"h6",color:"inherit",className:"title-typography"},"Durable Functions Monitor"),a.createElement(B.a,{color:"inherit"},a.createElement(V.a,{color:"inherit",href:"/api/monitor"},"/ instances"),!!e.orchestrationDetailsState&&a.createElement(W.a,{color:"inherit"},e.orchestrationDetailsState.orchestrationId)),a.createElement(W.a,{style:{flex:1}}),a.createElement(ee,{state:e.loginState}))),!!e.orchestrationsState&&(!e.loginState||e.loginState.isLoggedIn)&&a.createElement(zt,{state:e.orchestrationsState}),!!e.orchestrationDetailsState&&(!e.loginState||e.loginState.isLoggedIn)&&a.createElement(Wt,{state:e.orchestrationDetailsState}),a.createElement(Ht,{state:e.purgeHistoryDialogState}))}}]),t}(a.Component))||tt,Kt=n(66),Yt=n.n(Kt),Gt=function(){function e(t){Object(N.a)(this,e),this._getAuthorizationHeaderAsync=t}return Object(I.a)(e,[{key:"isVsCode",get:function(){return!1}}]),Object(I.a)(e,[{key:"call",value:function(e,t,n){var a=this;return new Promise((function(r,i){a._getAuthorizationHeaderAsync().then((function(a){Yt.a.request({url:"/api"+t,method:e,data:n,headers:a}).then((function(e){r(e.data)}),i)}))}))}}]),e}(),$t=n(93),Qt=(nt=ce.d.bound,at=ce.d.bound,rt=ce.d.bound,it=function(e){function t(){var e;return Object(N.a)(this,t),e=Object(F.a)(this,Object(A.a)(t).call(this)),Object(Ve.a)(e,"menuAnchorElement",ot,Object(He.a)(e)),Object(Ve.a)(e,"_isLoggedIn",lt,Object(He.a)(e)),Object(Ve.a)(e,"_userName",st,Object(He.a)(e)),e._aadApp=void 0,e.login(),e}return Object(z.a)(t,e),Object(I.a)(t,[{key:"isLoggedIn",get:function(){return this._isLoggedIn}},{key:"isLoggedInAnonymously",get:function(){return!this._userName}},{key:"userName",get:function(){return this._userName}}]),Object(I.a)(t,[{key:"login",value:function(){var e=this,t="".concat("/api","/easyauth-config");Yt.a.get(t).then(this.loginWithEasyAuthConfig,(function(t){e.errorMessage="".concat(t.message,".").concat(t.response?t.response.data:"")}))}},{key:"logout",value:function(){this.menuAnchorElement=void 0,this._aadApp.logout()}},{key:"getAuthorizationHeaderAsync",value:function(){var e=this;return this._aadApp?new Promise((function(t,n){var a={scopes:[e._aadApp.getCurrentConfiguration().auth.clientId]};e._aadApp.acquireTokenSilent(a).then((function(e){var n=e.accessToken;n||(console.log("DFM: accessToken is null, so using idToken.rawIdToken instead"),n=e.idToken.rawIdToken),t({Authorization:"Bearer ".concat(n)})}),(function(t){console.log("DFM: acquireTokenSilent() failed (".concat(t,"), so calling acquireTokenRedirect()...")),e._aadApp.acquireTokenRedirect(a)}))})):new Promise((function(e,t){return e()}))}},{key:"loginWithEasyAuthConfig",value:function(e){var t=e.data;if(t.clientId){this._aadApp=new $t.a({auth:{clientId:t.clientId,authority:t.authority}}),this._aadApp.handleRedirectCallback((function(){}),this.handleRedirectCallbackFailed);var n=this._aadApp.getAccount();n?(this._userName=n.userName,this._isLoggedIn=!0):(console.log("DFM: redirecting user to AAD for login..."),this._aadApp.loginRedirect())}else this._isLoggedIn=!0}},{key:"handleRedirectCallbackFailed",value:function(e,t){this.errorMessage="Failed to handle login redirect. name: ".concat(e.name,", message: ").concat(e.message,", errorCode: ").concat(e.errorCode,", errorMessage: ").concat(e.errorMessage,", accountState: ").concat(t)}}]),t}(qe),Object(se.a)(it.prototype,"isLoggedIn",[ce.e],Object.getOwnPropertyDescriptor(it.prototype,"isLoggedIn"),it.prototype),Object(se.a)(it.prototype,"isLoggedInAnonymously",[ce.e],Object.getOwnPropertyDescriptor(it.prototype,"isLoggedInAnonymously"),it.prototype),Object(se.a)(it.prototype,"userName",[ce.e],Object.getOwnPropertyDescriptor(it.prototype,"userName"),it.prototype),ot=Object(se.a)(it.prototype,"menuAnchorElement",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),Object(se.a)(it.prototype,"getAuthorizationHeaderAsync",[nt],Object.getOwnPropertyDescriptor(it.prototype,"getAuthorizationHeaderAsync"),it.prototype),lt=Object(se.a)(it.prototype,"_isLoggedIn",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),st=Object(se.a)(it.prototype,"_userName",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),Object(se.a)(it.prototype,"loginWithEasyAuthConfig",[at],Object.getOwnPropertyDescriptor(it.prototype,"loginWithEasyAuthConfig"),it.prototype),Object(se.a)(it.prototype,"handleRedirectCallbackFailed",[rt],Object.getOwnPropertyDescriptor(it.prototype,"handleRedirectCallbackFailed"),it.prototype),it),Zt=(ct=function(e){function t(e,n){var a;return Object(N.a)(this,t),(a=Object(F.a)(this,Object(A.a)(t).call(this)))._backendClient=e,a._purgeHistoryDialogState=n,Object(Ve.a)(a,"menuAnchorElement",ut,Object(He.a)(a)),Object(Ve.a)(a,"hubName",mt,Object(He.a)(a)),Object(Ve.a)(a,"connectionString",pt,Object(He.a)(a)),Object(Ve.a)(a,"connectionParamsDialogOpen",ht,Object(He.a)(a)),Object(Ve.a)(a,"_inProgress",dt,Object(He.a)(a)),Object(Ve.a)(a,"_isReadOnly",gt,Object(He.a)(a)),a._oldConnectionString=void 0,a._oldHubName=void 0,a}return Object(z.a)(t,e),Object(I.a)(t,[{key:"inProgress",get:function(){return this._inProgress}},{key:"isReadonly",get:function(){return this._isReadOnly}},{key:"isDirty",get:function(){return this.connectionString!==this._oldConnectionString||this.hubName!==this._oldHubName}}]),Object(I.a)(t,[{key:"showConnectionParamsDialog",value:function(){var e=this;this.menuAnchorElement=void 0,this.connectionParamsDialogOpen=!0,this._inProgress=!0,this._backendClient.call("GET","/manage-connection").then((function(t){e.connectionString=e._oldConnectionString=t.connectionString,e.hubName=e._oldHubName=t.hubName,e._isReadOnly=t.isReadOnly}),(function(t){e.errorMessage="Load failed: ".concat(t.message,".").concat(t.response?t.response.data:""," ")})).finally((function(){e._inProgress=!1}))}},{key:"saveConnectionParams",value:function(){var e=this;this._inProgress=!0,this._backendClient.call("PUT","/manage-connection",{connectionString:this.connectionString!==this._oldConnectionString?this.connectionString:"",hubName:this.hubName}).then((function(){e.connectionParamsDialogOpen=!1,alert("Your changes were saved to local.settings.json file, but they cannot be picked up automatically. Please, restart the Function Host for them to take effect.")}),(function(t){e.errorMessage="Save failed: ".concat(t.message,".").concat(t.response?t.response.data:""," ")})).finally((function(){e._inProgress=!1}))}},{key:"showPurgeHistoryDialog",value:function(){this.menuAnchorElement=void 0,this._purgeHistoryDialogState.dialogOpen=!0}},{key:"setWindowTitle",value:function(){this._backendClient.call("GET","/about").then((function(e){document.title="Durable Functions Monitor (".concat(e.accountName,"/").concat(e.hubName,") v").concat(e.version)}))}}]),t}(qe),ut=Object(se.a)(ct.prototype,"menuAnchorElement",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),mt=Object(se.a)(ct.prototype,"hubName",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),pt=Object(se.a)(ct.prototype,"connectionString",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),ht=Object(se.a)(ct.prototype,"connectionParamsDialogOpen",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),Object(se.a)(ct.prototype,"inProgress",[ce.e],Object.getOwnPropertyDescriptor(ct.prototype,"inProgress"),ct.prototype),Object(se.a)(ct.prototype,"isReadonly",[ce.e],Object.getOwnPropertyDescriptor(ct.prototype,"isReadonly"),ct.prototype),Object(se.a)(ct.prototype,"isDirty",[ce.e],Object.getOwnPropertyDescriptor(ct.prototype,"isDirty"),ct.prototype),dt=Object(se.a)(ct.prototype,"_inProgress",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),gt=Object(se.a)(ct.prototype,"_isReadOnly",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),ct),Xt=(yt=function(e){function t(e,n,a){var r;Object(N.a)(this,t),(r=Object(F.a)(this,Object(A.a)(t).call(this)))._orchestrationId=e,r._backendClient=n,r._localStorage=a,Object(Ve.a)(r,"details",ft,Object(He.a)(r)),Object(Ve.a)(r,"rewindConfirmationOpen",bt,Object(He.a)(r)),Object(Ve.a)(r,"terminateConfirmationOpen",Ot,Object(He.a)(r)),Object(Ve.a)(r,"purgeConfirmationOpen",Et,Object(He.a)(r)),Object(Ve.a)(r,"eventName",vt,Object(He.a)(r)),Object(Ve.a)(r,"eventData",jt,Object(He.a)(r)),Object(Ve.a)(r,"_inProgress",_t,Object(He.a)(r)),Object(Ve.a)(r,"_dialogOpen",kt,Object(He.a)(r)),Object(Ve.a)(r,"_autoRefresh",wt,Object(He.a)(r)),r._autoRefreshToken=void 0;var i=r._localStorage.getItem("autoRefresh");return i&&(r._autoRefresh=Number(i)),r}return Object(z.a)(t,e),Object(I.a)(t,[{key:"orchestrationId",get:function(){return this._orchestrationId}},{key:"inProgress",get:function(){return this._inProgress}},{key:"autoRefresh",get:function(){return this._autoRefresh},set:function(e){this._autoRefresh=e,this._localStorage.setItem("autoRefresh",this._autoRefresh.toString()),this.loadDetails()}},{key:"dialogOpen",get:function(){return this._dialogOpen},set:function(e){this._dialogOpen=e,this.eventName="",this.eventData=""}}]),Object(I.a)(t,[{key:"rewind",value:function(){var e=this;this.rewindConfirmationOpen=!1;var t="/orchestrations('".concat(this._orchestrationId,"')/rewind");this._inProgress=!0,this._backendClient.call("POST",t).then((function(){e._inProgress=!1,e.loadDetails()}),(function(t){e._inProgress=!1,e.errorMessage="Failed to rewind: ".concat(t.message,".").concat(t.response?t.response.data:""," ")}))}},{key:"terminate",value:function(){var e=this;this.terminateConfirmationOpen=!1;var t="/orchestrations('".concat(this._orchestrationId,"')/terminate");this._inProgress=!0,this._backendClient.call("POST",t).then((function(){e._inProgress=!1,e.loadDetails()}),(function(t){e._inProgress=!1,e.errorMessage="Failed to terminate: ".concat(t.message,".").concat(t.response?t.response.data:""," ")}))}},{key:"purge",value:function(){var e=this;this.purgeConfirmationOpen=!1;var t="/orchestrations('".concat(this._orchestrationId,"')/purge");this._inProgress=!0,this._backendClient.call("POST",t).then((function(){e._inProgress=!1,e.details=new Le}),(function(t){e._inProgress=!1,e.errorMessage="Failed to purge: ".concat(t.message,".").concat(t.response?t.response.data:""," ")}))}},{key:"raiseEvent",value:function(){var e=this,t="/orchestrations('".concat(this._orchestrationId,"')/raise-event"),n={name:this.eventName,data:null};try{n.data=JSON.parse(this.eventData)}catch(a){return void(this.errorMessage="Event Data failed to parse: ".concat(a.message))}finally{this.dialogOpen=!1}this._inProgress=!0,this._backendClient.call("POST",t,n).then((function(){e._inProgress=!1,e.loadDetails()}),(function(t){e._inProgress=!1,e.errorMessage="Failed to raise an event: ".concat(t.message,".").concat(t.response?t.response.data:""," ")}))}},{key:"loadDetails",value:function(){var e=this;if(!this.inProgress){this._inProgress=!0;var t="/orchestrations('".concat(this._orchestrationId,"')");this._backendClient.call("GET",t).then((function(t){if(!t)return e.errorMessage="Orchestration '".concat(e._orchestrationId,"' not found."),void(e._autoRefresh=0);t.history&&(t.historyEvents=t.history),e.details=t,e._autoRefresh&&(e._autoRefreshToken&&clearTimeout(e._autoRefreshToken),e._autoRefreshToken=setTimeout((function(){return e.loadDetails()}),1e3*e._autoRefresh))}),(function(t){e._autoRefresh=0,e.errorMessage="Load failed: ".concat(t.message,".").concat(t.response?t.response.data:""," ")})).finally((function(){e._inProgress=!1}))}}}]),t}(qe),ft=Object(se.a)(yt.prototype,"details",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return new Le}}),Object(se.a)(yt.prototype,"orchestrationId",[ce.e],Object.getOwnPropertyDescriptor(yt.prototype,"orchestrationId"),yt.prototype),Object(se.a)(yt.prototype,"inProgress",[ce.e],Object.getOwnPropertyDescriptor(yt.prototype,"inProgress"),yt.prototype),Object(se.a)(yt.prototype,"autoRefresh",[ce.e],Object.getOwnPropertyDescriptor(yt.prototype,"autoRefresh"),yt.prototype),Object(se.a)(yt.prototype,"dialogOpen",[ce.e],Object.getOwnPropertyDescriptor(yt.prototype,"dialogOpen"),yt.prototype),bt=Object(se.a)(yt.prototype,"rewindConfirmationOpen",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),Ot=Object(se.a)(yt.prototype,"terminateConfirmationOpen",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),Et=Object(se.a)(yt.prototype,"purgeConfirmationOpen",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),vt=Object(se.a)(yt.prototype,"eventName",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),jt=Object(se.a)(yt.prototype,"eventData",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),_t=Object(se.a)(yt.prototype,"_inProgress",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),kt=Object(se.a)(yt.prototype,"_dialogOpen",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),wt=Object(se.a)(yt.prototype,"_autoRefresh",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return 0}}),yt),en=(Ct=function(e){function t(e){var n;return Object(N.a)(this,t),(n=Object(F.a)(this,Object(A.a)(t).call(this)))._backendClient=e,Object(Ve.a)(n,"timeFrom",Pt,Object(He.a)(n)),Object(Ve.a)(n,"timeTill",Tt,Object(He.a)(n)),Object(Ve.a)(n,"entityType",St,Object(He.a)(n)),Object(Ve.a)(n,"_statuses",Dt,Object(He.a)(n)),Object(Ve.a)(n,"_dialogOpen",Nt,Object(He.a)(n)),Object(Ve.a)(n,"_inProgress",It,Object(He.a)(n)),Object(Ve.a)(n,"_instancesDeleted",Ft,Object(He.a)(n)),n}return Object(z.a)(t,e),Object(I.a)(t,[{key:"dialogOpen",get:function(){return this._dialogOpen},set:function(e){if(this._dialogOpen=e,e){this._instancesDeleted=null;var t=new Date;t.setDate(t.getDate()-1),this.timeFrom=t,this.timeTill=new Date,this._statuses=new Set(["Completed","Terminated"]),this.entityType="Orchestration"}}},{key:"instancesDeleted",get:function(){return this._instancesDeleted}},{key:"inProgress",get:function(){return this._inProgress}},{key:"isValid",get:function(){return this._statuses.size>0}}]),Object(I.a)(t,[{key:"purgeHistory",value:function(){var e=this;this._inProgress=!0,this._backendClient.call("POST","/purge-history",{entityType:this.entityType,timeFrom:this.timeFrom,timeTill:this.timeTill,statuses:Array.from(this._statuses.values())}).then((function(t){e._instancesDeleted=t.instancesDeleted}),(function(t){e.errorMessage="Purge history failed: ".concat(t.message,".").concat(t.response?t.response.data:""," ")})).finally((function(){e._inProgress=!1}))}},{key:"getStatusIncluded",value:function(e){return this._statuses.has(e)}},{key:"setStatusIncluded",value:function(e,t){t?this._statuses.add(e):this._statuses.delete(e)}}]),t}(qe),Object(se.a)(Ct.prototype,"dialogOpen",[ce.e],Object.getOwnPropertyDescriptor(Ct.prototype,"dialogOpen"),Ct.prototype),Object(se.a)(Ct.prototype,"instancesDeleted",[ce.e],Object.getOwnPropertyDescriptor(Ct.prototype,"instancesDeleted"),Ct.prototype),Object(se.a)(Ct.prototype,"inProgress",[ce.e],Object.getOwnPropertyDescriptor(Ct.prototype,"inProgress"),Ct.prototype),Object(se.a)(Ct.prototype,"isValid",[ce.e],Object.getOwnPropertyDescriptor(Ct.prototype,"isValid"),Ct.prototype),Pt=Object(se.a)(Ct.prototype,"timeFrom",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return new Date}}),Tt=Object(se.a)(Ct.prototype,"timeTill",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return new Date}}),St=Object(se.a)(Ct.prototype,"entityType",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return"Orchestration"}}),Dt=Object(se.a)(Ct.prototype,"_statuses",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return new Set}}),Nt=Object(se.a)(Ct.prototype,"_dialogOpen",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),It=Object(se.a)(Ct.prototype,"_inProgress",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),Ft=Object(se.a)(Ct.prototype,"_instancesDeleted",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return null}}),Ct),tn=function(){function e(t){Object(N.a)(this,e),this._prefix=t}return Object(I.a)(e,[{key:"setItem",value:function(e,t){localStorage.setItem("".concat(this._prefix,"::").concat(e),t)}},{key:"setItems",value:function(e){var t=!0,n=!1,a=void 0;try{for(var r,i=e[Symbol.iterator]();!(t=(r=i.next()).done);t=!0){var o=r.value;null===o.value?localStorage.removeItem("".concat(this._prefix,"::").concat(o.fieldName)):localStorage.setItem("".concat(this._prefix,"::").concat(o.fieldName),o.value)}}catch(l){n=!0,a=l}finally{try{t||null==i.return||i.return()}finally{if(n)throw a}}}},{key:"getItem",value:function(e){return localStorage.getItem("".concat(this._prefix,"::").concat(e))}},{key:"removeItem",value:function(e){localStorage.removeItem("".concat(this._prefix,"::").concat(e))}}]),e}(),nn=function(){function e(t){var n=this;Object(N.a)(this,e),this._vsCodeApi=t,this._handlers={},this._requests={},window.addEventListener("message",(function(e){var t=e.data,a=n._handlers[t.id];if(a)a(t.data);else{var r=n._requests[t.id];r&&(t.data?r.resolve(t.data):r.reject(t.err),delete n._requests[t.id])}}))}return Object(I.a)(e,[{key:"isVsCode",get:function(){return!0}}]),Object(I.a)(e,[{key:"call",value:function(e,t,n){var a=this,r=Math.random().toString();return this._vsCodeApi.postMessage({id:r,method:e,url:t,data:n}),new Promise((function(e,t){a._requests[r]={resolve:e,reject:t}}))}},{key:"setPurgeHistoryHandler",value:function(e){this._handlers.purgeHistory=e,this._vsCodeApi.postMessage({method:"IAmReady"})}}]),e}(),an=function(){function e(t,n){Object(N.a)(this,e),this._prefix=t,this._vsCodeApi=n;var a=this._vsCodeApi.getState();e.State=a||{}}return Object(I.a)(e,[{key:"setItem",value:function(t,n){e.State["".concat(this._prefix,"::").concat(t)]=n,this._vsCodeApi.setState(e.State)}},{key:"setItems",value:function(t){var n=!0,a=!1,r=void 0;try{for(var i,o=t[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var l=i.value;null===l.value?delete e.State["".concat(this._prefix,"::").concat(l.fieldName)]:e.State["".concat(this._prefix,"::").concat(l.fieldName)]=l.value}}catch(s){a=!0,r=s}finally{try{n||null==o.return||o.return()}finally{if(a)throw r}}this._vsCodeApi.setState(e.State)}},{key:"getItem",value:function(t){return e.State["".concat(this._prefix,"::").concat(t)]}},{key:"removeItem",value:function(t){delete e.State["".concat(this._prefix,"::").concat(t)],this._vsCodeApi.setState(e.State)}}]),e}();an.State={};var rn=new(function(){function e(){var t=this;Object(N.a)(this,e),this.loginState=void 0,this.mainMenuState=void 0,this.orchestrationsState=void 0,this.orchestrationDetailsState=void 0,this.purgeHistoryDialogState=void 0;var n=void 0;try{n=acquireVsCodeApi()}catch(i){}if(n){var a=new nn(n);this.purgeHistoryDialogState=new en(a),this.orchestrationId?this.orchestrationDetailsState=new Xt(this.orchestrationId,a,new an("OrchestrationDetailsState",n)):(this.orchestrationsState=new At(a,new an("OrchestrationsState",n)),a.setPurgeHistoryHandler((function(){return t.purgeHistoryDialogState.dialogOpen=!0})))}else{this.loginState=new Qt;var r=new Gt(this.loginState.getAuthorizationHeaderAsync);this.purgeHistoryDialogState=new en(r),this.orchestrationId?this.orchestrationDetailsState=new Xt(this.orchestrationId,r,new tn("OrchestrationDetailsState")):(this.mainMenuState=new Zt(r,this.purgeHistoryDialogState),this.orchestrationsState=new At(r,new tn("OrchestrationsState")))}}return Object(I.a)(e,[{key:"orchestrationId",get:function(){if(OrchestrationIdFromVsCode)return OrchestrationIdFromVsCode;var e="".concat("/api/monitor","/orchestrations/");return window.location.pathname.startsWith(e)?window.location.pathname.substr(e.length):""}}]),e}());r.render(a.createElement(Ut,{state:rn}),document.getElementById("root")),function(){if("serviceWorker"in navigator){if(new URL("/api/monitor",window.location.toString()).origin!==window.location.origin)return;window.addEventListener("load",(function(){var e="".concat("/api/monitor","/service-worker.js");i?(!function(e){fetch(e).then((function(t){404===t.status||-1===t.headers.get("content-type").indexOf("javascript")?navigator.serviceWorker.ready.then((function(e){e.unregister().then((function(){window.location.reload()}))})):o(e)})).catch((function(){console.log("No internet connection found. App is running in offline mode.")}))}(e),navigator.serviceWorker.ready.then((function(){console.log("This web app is being served cache-first by a service worker. To learn more, visit https://goo.gl/SC7cgQ")}))):o(e)}))}}()}},[[108,1,2]]]); +//# sourceMappingURL=main.344f11ea.chunk.js.map \ No newline at end of file diff --git a/durablefunctionsmonitor.dotnetbackend/wwwroot/static/js/main.344f11ea.chunk.js.map b/durablefunctionsmonitor.dotnetbackend/wwwroot/static/js/main.344f11ea.chunk.js.map new file mode 100644 index 0000000..ca073db --- /dev/null +++ b/durablefunctionsmonitor.dotnetbackend/wwwroot/static/js/main.344f11ea.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["logo.svg","registerServiceWorker.ts","states/OrchestrationsState.ts","components/LoginIcon.tsx","components/ErrorMessage.tsx","components/MainMenu.tsx","DateTimeHelpers.ts","states/DurableOrchestrationStatus.ts","components/OrchestrationLink.tsx","states/ErrorMessageState.ts","components/Orchestrations.tsx","components/DurableEntityButtons.tsx","components/DurableEntityFields.tsx","components/OrchestrationButtons.tsx","components/OrchestrationFields.tsx","components/OrchestrationDetails.tsx","components/PurgeHistoryDialog.tsx","components/Main.tsx","services/BackendClient.ts","states/LoginState.ts","states/MainMenuState.ts","states/OrchestrationDetailsState.ts","states/PurgeHistoryDialogState.ts","states/TypedLocalStorage.ts","services/VsCodeBackendClient.ts","states/VsCodeTypedLocalStorage.ts","states/MainState.ts","index.tsx"],"names":["module","exports","isLocalhost","Boolean","window","location","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","state","controller","console","log","catch","error","FilterOperatorEnum","ShowEntityTypeEnum","LoginIcon","observer","this","props","Button","color","isLoggedInAnonymously","onClick","evt","menuAnchorElement","currentTarget","AccountCircle","Box","width","Tooltip","title","Typography","userName","Menu","anchorEl","keepMounted","open","onClose","undefined","MenuItem","logout","Dialog","isLoggedIn","DialogContent","errorMessage","Container","className","CircularProgress","DialogContentText","Error","fontSize","React","ErrorMessage","action","bound","Snackbar","anchorOrigin","vertical","horizontal","autoHideDuration","handleClose","SnackbarContent","message","IconButton","key","aria-label","MainMenu","setWindowTitle","showConnectionParamsDialog","showPurgeHistoryDialog","connectionParamsDialogOpen","DialogTitle","inProgress","LinearProgress","height","isReadonly","TextField","autoFocus","margin","label","fullWidth","disabled","InputProps","readOnly","InputLabelProps","shrink","value","hubName","onChange","target","connectionString","DialogActions","saveConnectionParams","isDirty","DateTimeHelpers","dt","Date","slice","toISOString","err","HistoryEventFields","DurableOrchestrationStatus","instanceId","name","entityId","runtimeStatus","entityType","lastEvent","input","customStatus","output","createdTime","lastUpdatedTime","historyEvents","DurableOrchestrationStatusFields","OrchestrationLink","backendClient","isVsCode","Link","href","onLinkClicked","orchestrationId","process","call","ErrorMessageState","observable","OrchestrationsState","_backendClient","_localStorage","timeFrom","_noMorePagesToLoad","_pageSize","_autoRefreshToken","_oldFilterValue","_oldTimeFrom","_oldTimeTill","timeFromString","getItem","setDate","getDate","_timeFrom","timeTillString","_timeTill","filteredColumnString","_filteredColumn","filterOperatorString","_filterOperator","filterValueString","_filterValue","showEntityTypeString","_showEntityType","autoRefreshString","_autoRefresh","Number","orderByString","_orderBy","orderByDirectionString","_orderByDirection","_inProgress","_orchestrations","val","setItem","toString","loadOrchestrations","resetOrderBy","reloadOrchestrations","setItems","fieldName","isAutoRefresh","skip","length","timeTill","filterClause","OrchestrationsOnly","DurableEntitiesOnly","Equals","StartsWith","Contains","orderByClause","orderByDirection","uri","response","push","clearTimeout","setTimeout","data","finally","computed","ShowBoth","Orchestrations","document","addEventListener","scrollingElement","scrollHeight","innerHeight","scrollTop","Toolbar","variant","Grid","container","item","xs","style","marginLeft","type","formatDateTime","getDateTimeValue","onBlur","applyTimeFrom","onKeyPress","handleKeyPress","FormControl","InputLabel","htmlFor","Checkbox","id","checked","timeTillEnabled","placeholder","applyTimeTill","Select","filteredColumn","inputProps","map","col","filterOperator","filterValue","applyFilterValue","RadioGroup","showEntityType","FormControlLabel","control","Radio","flex","autoRefresh","size","FormHelperText","orchestrations","renderTable","renderEmptyTable","Table","TableHead","TableRow","filter","f","showLastEventColumn","TableCell","TableSortLabel","active","orderBy","direction","TableBody","orchestration","cellStyle","verticalAlign","toLowerCase","InputBase","multiline","rowsMax","JSON","stringify","event","preventDefault","DurableEntityButtons","renderDialogs","purgeConfirmationOpen","purge","DurableEntityFields","details","sm","md","zeroMinWidth","OrchestrationButtons","rewindConfirmationOpen","terminateConfirmationOpen","dialogOpen","rewind","terminate","eventName","rows","eventData","raiseEvent","OrchestrationFields","events","index","Timestamp","EventType","Name","FunctionName","ScheduledTime","Result","Details","OrchestrationDetails","loadDetails","PurgeHistoryDialog","instancesDeleted","FormLabel","row","FormGroup","purgeHistory","isValid","RuntimeStatusCheckbox","getStatusIncluded","setStatusIncluded","logo","require","Main","loginState","AppBar","position","mainMenuState","src","Breadcrumbs","orchestrationDetailsState","orchestrationsState","purgeHistoryDialogState","BackendClient","_getAuthorizationHeaderAsync","method","url","Promise","resolve","reject","headers","axios","request","r","LoginState","_aadApp","login","_isLoggedIn","_userName","get","loginWithEasyAuthConfig","authParams","scopes","getCurrentConfiguration","auth","clientId","acquireTokenSilent","authResponse","accessToken","idToken","rawIdToken","Authorization","acquireTokenRedirect","easyAuthConfigResponse","config","Msal","authority","handleRedirectCallback","handleRedirectCallbackFailed","account","getAccount","loginRedirect","authErr","accountState","errorCode","MainMenuState","_purgeHistoryDialogState","_oldConnectionString","_oldHubName","_isReadOnly","isReadOnly","alert","accountName","version","OrchestrationDetailsState","_orchestrationId","_dialogOpen","requestBody","parse","history","PurgeHistoryDialogState","_instancesDeleted","_statuses","Set","statuses","Array","from","values","status","has","included","add","delete","TypedLocalStorage","_prefix","localStorage","items","removeItem","VsCodeBackendClient","_vsCodeApi","_handlers","_requests","requestHandler","requestPromise","requestId","Math","random","postMessage","handler","VsCodeTypedLocalStorage","oldState","getState","State","setState","appState","vsCodeApi","acquireVsCodeApi","setPurgeHistoryHandler","getAuthorizationHeaderAsync","OrchestrationIdFromVsCode","uriSuffix","pathname","startsWith","substr","ReactDOM","getElementById","URL","origin","fetch","indexOf","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.344f11ea.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/logo.9b5d7869.svg\";","// tslint:disable:no-console\n// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the 'N+1' visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport default function register() {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL!,\n window.location.toString()\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://goo.gl/SC7cgQ'\n );\n });\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker) {\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a 'New content is\n // available; please refresh.' message in your web app.\n console.log('New content is available; please refresh.');\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // 'Content is cached for offline use.' message.\n console.log('Content is cached for offline use.');\n }\n }\n };\n }\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type')!.indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import { observable, computed } from 'mobx'\r\n\r\nimport { DurableOrchestrationStatus } from '../states/DurableOrchestrationStatus';\r\nimport { ErrorMessageState } from './ErrorMessageState';\r\nimport { IBackendClient } from '../services/IBackendClient';\r\nimport { ITypedLocalStorage } from './ITypedLocalStorage';\r\n\r\nexport enum FilterOperatorEnum {\r\n Equals = 0,\r\n StartsWith,\r\n Contains\r\n}\r\n\r\nexport enum ShowEntityTypeEnum {\r\n ShowBoth = 0,\r\n OrchestrationsOnly,\r\n DurableEntitiesOnly\r\n}\r\n\r\n// State of Orchestrations view\r\nexport class OrchestrationsState extends ErrorMessageState {\r\n\r\n @computed\r\n get inProgress(): boolean { return this._inProgress; }\r\n\r\n @computed\r\n get orchestrations(): DurableOrchestrationStatus[] { return this._orchestrations; }\r\n\r\n @computed\r\n get autoRefresh(): number { return this._autoRefresh; }\r\n set autoRefresh(val: number) {\r\n this._autoRefresh = val;\r\n this._localStorage.setItem('autoRefresh', this._autoRefresh.toString());\r\n this.loadOrchestrations(true);\r\n }\r\n\r\n @computed\r\n get timeFrom(): Date { return this._timeFrom; }\r\n set timeFrom(val: Date) {\r\n this._timeFrom = val;\r\n this.resetOrderBy();\r\n }\r\n \r\n @computed\r\n get timeTill(): Date { return (!this._timeTill) ? new Date() : this._timeTill!; }\r\n set timeTill(val: Date) {\r\n this._timeTill = val;\r\n this.resetOrderBy();\r\n }\r\n\r\n @computed\r\n get timeTillEnabled(): boolean { return !!this._timeTill; }\r\n set timeTillEnabled(val: boolean) {\r\n\r\n this._timeTill = val ? new Date() : undefined;\r\n \r\n if (!val) {\r\n this.resetOrderBy();\r\n this.reloadOrchestrations();\r\n }\r\n }\r\n \r\n @computed\r\n get orderByDirection(): ('asc' | 'desc') { return this._orderByDirection;}\r\n\r\n @computed\r\n get orderBy() : string { return this._orderBy; }\r\n set orderBy(val: string) {\r\n\r\n if (this._orderBy !== val) {\r\n this._orderBy = val;\r\n }\r\n else {\r\n this._orderByDirection = (this._orderByDirection === 'desc') ? 'asc' : 'desc';\r\n }\r\n\r\n this.reloadOrchestrations();\r\n }\r\n\r\n @computed\r\n get filterValue(): string { return this._filterValue; }\r\n set filterValue(val: string) { this._filterValue = val; }\r\n\r\n @computed\r\n get filterOperator(): FilterOperatorEnum { return this._filterOperator; }\r\n set filterOperator(val: FilterOperatorEnum) {\r\n \r\n this._filterOperator = val;\r\n\r\n if (!!this._filterValue && this._filteredColumn !== '0') {\r\n\r\n this.reloadOrchestrations();\r\n }\r\n }\r\n\r\n @computed\r\n get filteredColumn(): string { return this._filteredColumn; }\r\n set filteredColumn(val: string) {\r\n\r\n this._filteredColumn = val;\r\n\r\n if (!this._filterValue) {\r\n return;\r\n }\r\n\r\n if (this._filteredColumn === '0') {\r\n this._filterValue = '';\r\n }\r\n\r\n this.reloadOrchestrations();\r\n }\r\n\r\n @computed\r\n get showEntityType(): string { return ShowEntityTypeEnum[this._showEntityType]; }\r\n set showEntityType(val: string) {\r\n\r\n this._showEntityType = ShowEntityTypeEnum[val];\r\n\r\n this.reloadOrchestrations();\r\n }\r\n\r\n @computed\r\n get showLastEventColumn(): boolean {\r\n // Only showing lastEvent field when being filtered by it (because otherwise it is not populated on the server)\r\n return this._filteredColumn === 'lastEvent' && (!!this._oldFilterValue);\r\n }\r\n \r\n get backendClient(): IBackendClient { return this._backendClient; }\r\n\r\n constructor(private _backendClient: IBackendClient, private _localStorage: ITypedLocalStorage) {\r\n super();\r\n\r\n var timeFrom: Date;\r\n const timeFromString = this._localStorage.getItem('timeFrom');\r\n if (!!timeFromString) {\r\n timeFrom = new Date(timeFromString);\r\n } else {\r\n // By default setting it to 24 hours ago\r\n timeFrom = new Date();\r\n timeFrom.setDate(timeFrom.getDate() - 1);\r\n }\r\n this._timeFrom = timeFrom;\r\n this._oldTimeFrom = timeFrom;\r\n\r\n const timeTillString = this._localStorage.getItem('timeTill');\r\n if (!!timeTillString) {\r\n this._timeTill = new Date(timeTillString);\r\n this._oldTimeTill = this._timeTill;\r\n }\r\n\r\n const filteredColumnString = this._localStorage.getItem('filteredColumn');\r\n if (!!filteredColumnString) {\r\n this._filteredColumn = filteredColumnString;\r\n }\r\n\r\n const filterOperatorString = this._localStorage.getItem('filterOperator');\r\n if (!!filterOperatorString) {\r\n this._filterOperator = FilterOperatorEnum[filterOperatorString];\r\n }\r\n\r\n const filterValueString = this._localStorage.getItem('filterValue');\r\n if (!!filterValueString) {\r\n this._filterValue = filterValueString;\r\n this._oldFilterValue = filterValueString;\r\n }\r\n\r\n const showEntityTypeString = this._localStorage.getItem('showEntityType');\r\n if (!!showEntityTypeString) {\r\n this._showEntityType = ShowEntityTypeEnum[showEntityTypeString];\r\n }\r\n\r\n const autoRefreshString = this._localStorage.getItem('autoRefresh');\r\n if (!!autoRefreshString) {\r\n this._autoRefresh = Number(autoRefreshString);\r\n }\r\n\r\n const orderByString = this._localStorage.getItem('orderBy');\r\n if (!!orderByString) {\r\n this._orderBy = orderByString;\r\n }\r\n\r\n const orderByDirectionString = this._localStorage.getItem('orderByDirection');\r\n if (!!orderByDirectionString) {\r\n this._orderByDirection = orderByDirectionString as 'asc' | 'desc';\r\n }\r\n }\r\n\r\n applyTimeFrom() {\r\n if (this._oldTimeFrom !== this._timeFrom) {\r\n this.reloadOrchestrations();\r\n }\r\n }\r\n\r\n applyTimeTill() {\r\n if (this._oldTimeTill !== this._timeTill) {\r\n this.reloadOrchestrations();\r\n }\r\n }\r\n\r\n applyFilterValue() {\r\n if (this._oldFilterValue !== this._filterValue) {\r\n this.reloadOrchestrations();\r\n }\r\n }\r\n\r\n reloadOrchestrations() {\r\n this._orchestrations = [];\r\n this._noMorePagesToLoad = false;\r\n\r\n // persisting state as a batch\r\n this._localStorage.setItems([\r\n { fieldName: 'timeFrom', value: this._timeFrom.toISOString() },\r\n { fieldName: 'timeTill', value: !!this._timeTill ? this._timeTill.toISOString() : null },\r\n { fieldName: 'timeFrom', value: this._timeFrom.toISOString() },\r\n { fieldName: 'filteredColumn', value: this._filteredColumn },\r\n { fieldName: 'filterOperator', value: FilterOperatorEnum[this._filterOperator] },\r\n { fieldName: 'filterValue', value: !!this._filterValue ? this._filterValue : null },\r\n { fieldName: 'showEntityType', value: ShowEntityTypeEnum[this._showEntityType] },\r\n { fieldName: 'orderBy', value: this._orderBy },\r\n { fieldName: 'orderByDirection', value: this._orderByDirection },\r\n ]);\r\n\r\n this.loadOrchestrations();\r\n\r\n this._oldFilterValue = this._filterValue;\r\n this._oldTimeFrom = this._timeFrom;\r\n this._oldTimeTill = this._timeTill;\r\n }\r\n\r\n loadOrchestrations(isAutoRefresh: boolean = false) {\r\n\r\n if (!!this.inProgress || (!!this._noMorePagesToLoad && !this._autoRefresh )) {\r\n return; \r\n }\r\n this._inProgress = true;\r\n\r\n // In auto-refresh mode only refreshing the first page\r\n const skip = isAutoRefresh ? 0 : this._orchestrations.length;\r\n\r\n const timeTill = !!this._timeTill ? this._timeTill : new Date();\r\n var filterClause = `&$filter=createdTime ge '${this._timeFrom.toISOString()}' and createdTime le '${timeTill.toISOString()}'`;\r\n\r\n if (this._showEntityType === ShowEntityTypeEnum.OrchestrationsOnly) {\r\n filterClause += ` and entityType eq 'Orchestration'`;\r\n }\r\n else if (this._showEntityType === ShowEntityTypeEnum.DurableEntitiesOnly) {\r\n filterClause += ` and entityType eq 'DurableEntity'`;\r\n }\r\n \r\n if (!!this._filterValue && this._filteredColumn !== '0') {\r\n\r\n filterClause += ' and ';\r\n\r\n switch (this._filterOperator) {\r\n case FilterOperatorEnum.Equals:\r\n filterClause += `${this._filteredColumn} eq '${this._filterValue}'`;\r\n break;\r\n case FilterOperatorEnum.StartsWith:\r\n filterClause += `startswith(${this._filteredColumn}, '${this._filterValue}')`;\r\n break;\r\n case FilterOperatorEnum.Contains:\r\n filterClause += `contains(${this._filteredColumn}, '${this._filterValue}')`;\r\n break;\r\n }\r\n }\r\n\r\n const orderByClause = !!this._orderBy ? `&$orderby=${this._orderBy} ${this.orderByDirection}` : '';\r\n\r\n const uri = `/orchestrations?$top=${this._pageSize}&$skip=${skip}${filterClause}${orderByClause}`;\r\n\r\n this._backendClient.call('GET', uri).then(response => {\r\n\r\n if (!response.length) {\r\n // Stop the infinite scrolling\r\n this._noMorePagesToLoad = true;\r\n } else {\r\n if (isAutoRefresh) {\r\n this._orchestrations = response;\r\n } else {\r\n this._orchestrations.push(...response);\r\n }\r\n }\r\n\r\n // Doing auto-refresh\r\n if (!!this._autoRefresh) {\r\n\r\n if (!!this._autoRefreshToken) {\r\n clearTimeout(this._autoRefreshToken);\r\n }\r\n this._autoRefreshToken = setTimeout(() => this.loadOrchestrations(true), this._autoRefresh * 1000);\r\n }\r\n\r\n }, err => {\r\n\r\n // Cancelling auto-refresh just in case\r\n this._autoRefresh = 0;\r\n\r\n this.errorMessage = `Load failed: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n\r\n }).finally(() => {\r\n this._inProgress = false;\r\n });\r\n }\r\n\r\n @observable\r\n private _inProgress: boolean = false;\r\n @observable\r\n private _orchestrations: DurableOrchestrationStatus[] = [];\r\n @observable\r\n private _orderByDirection: ('asc' | 'desc') = 'asc';\r\n @observable\r\n private _orderBy: string = '';\r\n @observable\r\n private _autoRefresh: number = 0;\r\n @observable\r\n private _timeFrom: Date;\r\n @observable\r\n private _timeTill?: Date;\r\n @observable\r\n private _filterValue: string = '';\r\n @observable\r\n private _filterOperator: FilterOperatorEnum = FilterOperatorEnum.Equals;\r\n @observable\r\n private _filteredColumn: string = '0';\r\n @observable\r\n private _showEntityType: ShowEntityTypeEnum = ShowEntityTypeEnum.ShowBoth;\r\n\r\n private _noMorePagesToLoad: boolean = false;\r\n private readonly _pageSize = 50;\r\n private _autoRefreshToken: NodeJS.Timeout;\r\n private _oldFilterValue: string = '';\r\n private _oldTimeFrom: Date;\r\n private _oldTimeTill?: Date;\r\n\r\n private resetOrderBy() {\r\n this._orderBy = '';\r\n this._orderByDirection = 'asc';\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n Box, Button, Container, CircularProgress, Dialog, DialogContent, DialogContentText,\r\n Menu, MenuItem, Tooltip, Typography\r\n} from '@material-ui/core';\r\n\r\nimport { AccountCircle, Error } from '@material-ui/icons';\r\n\r\nimport './LoginIcon.css';\r\n\r\nimport { LoginState } from '../states/LoginState';\r\n\r\n// Main Menu view\r\n@observer\r\nexport class LoginIcon extends React.Component<{ state: LoginState }> {\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (\r\n
\r\n \r\n\r\n {!state.isLoggedInAnonymously && (\r\n state.menuAnchorElement = undefined}\r\n >\r\n state.logout()}>Login under a different name\r\n \r\n )}\r\n\r\n \r\n \r\n\r\n {!state.errorMessage && (\r\n
\r\n \r\n \r\n \r\n Login in progress...\r\n
)}\r\n\r\n {!!state.errorMessage && (\r\n
\r\n \r\n \r\n \r\n Login failed. {state.errorMessage}\r\n
)}\r\n\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { action } from 'mobx'\r\nimport { observer } from 'mobx-react';\r\n\r\nimport { IconButton, Snackbar, SnackbarContent } from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\n\r\nimport './ErrorMessage.css';\r\n\r\nimport { ErrorMessageState } from '../states/ErrorMessageState';\r\n\r\n// Error Message Snackbar\r\n@observer\r\nexport class ErrorMessage extends React.Component<{ state: ErrorMessageState }> {\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (\r\n\r\n \r\n \r\n \r\n {state.errorMessage}\r\n \r\n }\r\n action={[\r\n \r\n \r\n ,\r\n ]}\r\n />\r\n\r\n \r\n );\r\n }\r\n\r\n @action.bound\r\n private handleClose() {\r\n this.props.state.errorMessage = '';\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n Box, Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, IconButton, LinearProgress,\r\n Menu, MenuItem, TextField\r\n} from '@material-ui/core';\r\n\r\nimport MenuIcon from '@material-ui/icons/Menu';\r\n\r\nimport { ErrorMessage } from './ErrorMessage';\r\nimport { MainMenuState } from '../states/MainMenuState';\r\n\r\n// Main Menu view\r\n@observer\r\nexport class MainMenu extends React.Component<{ state: MainMenuState }> {\r\n\r\n componentDidMount() {\r\n // Querying the backend for connection info and displaying it in window title\r\n this.props.state.setWindowTitle();\r\n }\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (\r\n
\r\n\r\n state.menuAnchorElement = evt.currentTarget}\r\n >\r\n \r\n \r\n\r\n state.menuAnchorElement = undefined}\r\n >\r\n state.showConnectionParamsDialog()}>Manage Storage Connection Settings...\r\n state.showPurgeHistoryDialog()}>Purge Instance History...\r\n \r\n\r\n state.connectionParamsDialogOpen = false}\r\n >\r\n Manage Storage Connection Settings\r\n \r\n\r\n {state.inProgress ? () : ()}\r\n \r\n \r\n {\r\n state.isReadonly ?\r\n \"Change the below values via your application settings ('DFM_HUB_NAME' and 'AzureWebJobsStorage' respectively\" :\r\n \"The below values will be saved to local.settings.json file.\"\r\n }\r\n \r\n\r\n state.hubName = evt.target.value as string}\r\n />\r\n\r\n state.connectionString = evt.target.value as string}\r\n />\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n {(!state.isReadonly) && (\r\n state.saveConnectionParams()}\r\n disabled={!state.isDirty || !state.hubName || !state.connectionString || state.inProgress}\r\n color=\"secondary\"\r\n >\r\n Save\r\n \r\n )}\r\n\r\n \r\n \r\n
\r\n );\r\n }\r\n}","\r\nexport class DateTimeHelpers\r\n{\r\n public static getDateTimeValue(evt: any): Date {\r\n\r\n var dt = new Date(evt.target.value.slice(0, 16) + ':00Z');\r\n\r\n // If invalid date entered, then setting it to current date\r\n try {\r\n dt.toISOString();\r\n } catch (err) {\r\n dt = new Date();\r\n }\r\n\r\n return dt;\r\n }\r\n\r\n public static formatDateTime(dt: Date) {\r\n return dt.toISOString().slice(0, 16);\r\n }\r\n}","\r\n// A DTO used by DurableOrchestrationStatus.historyEvents\r\nexport class HistoryEvent {\r\n Timestamp: string;\r\n EventType: string;\r\n Name: string;\r\n ScheduledTime: string;\r\n Result: any;\r\n Details: any;\r\n}\r\n\r\n// Could instead just iterate through field names of HistoryEvent, but reflection in TypeScript still looks tricky\r\nexport const HistoryEventFields = [\r\n 'Timestamp',\r\n 'EventType',\r\n 'Name',\r\n 'ScheduledTime',\r\n 'Result',\r\n 'Details',\r\n];\r\n\r\nexport type RuntimeStatus = \"Running\" | \"Completed\" | \"ContinuedAsNew\" | \"Failed\" | \"Canceled\" | \"Terminated\" | \"Pending\";\r\n\r\nexport type EntityType = \"Orchestration\" | \"DurableEntity\";\r\n\r\nexport class EntityId {\r\n name: string;\r\n key: string;\r\n}\r\n\r\n// A DTO returned by DurableOrchestrationClient.getStatusAll()\r\nexport class DurableOrchestrationStatus {\r\n instanceId: string;\r\n name: string;\r\n entityId: EntityId;\r\n runtimeStatus: RuntimeStatus;\r\n entityType: EntityType;\r\n lastEvent: string;\r\n input: any;\r\n customStatus: string;\r\n output: any;\r\n createdTime: string;\r\n lastUpdatedTime: string;\r\n historyEvents?: HistoryEvent[];\r\n}\r\n\r\n// Could instead just iterate through field names of DurableOrchestrationStatus, but reflection in TypeScript still looks tricky\r\nexport const DurableOrchestrationStatusFields = [\r\n 'instanceId',\r\n 'name',\r\n 'createdTime',\r\n 'lastUpdatedTime',\r\n 'runtimeStatus',\r\n 'lastEvent',\r\n 'input',\r\n 'output',\r\n 'customStatus'\r\n];","import * as React from 'react';\r\nimport { action } from 'mobx'\r\nimport { observer } from 'mobx-react';\r\n\r\nimport { Link } from '@material-ui/core';\r\n\r\nimport { IBackendClient } from '../services/IBackendClient';\r\n\r\nexport const UriSuffix = process.env.REACT_APP_URI_SUFFIX as string;\r\n\r\n// Renders a link to be opened either in a new browser tab or in a new VsCode WebView\r\n@observer\r\nexport class OrchestrationLink extends React.Component<{ orchestrationId: string, backendClient: IBackendClient }> {\r\n\r\n render(): JSX.Element {\r\n\r\n if (this.props.backendClient.isVsCode) {\r\n\r\n return (\r\n \r\n {this.props.orchestrationId}\r\n \r\n ); \r\n } else {\r\n\r\n return (\r\n \r\n {this.props.orchestrationId}\r\n \r\n );\r\n }\r\n }\r\n\r\n @action.bound\r\n private onLinkClicked() {\r\n this.props.backendClient.call('OpenInNewWindow', this.props.orchestrationId);\r\n }\r\n}","import { observable } from 'mobx'\r\n\r\n// State of Error Message snackbar\r\nexport class ErrorMessageState {\r\n\r\n @observable\r\n errorMessage: string = '';\r\n}","import * as React from 'react';\r\nimport { action } from 'mobx'\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n Box, Button, Checkbox, FormControl, FormControlLabel, FormHelperText, Grid, InputBase, InputLabel,\r\n LinearProgress, MenuItem, Select,\r\n Table, TableBody, TableCell, TableHead, TableRow, TableSortLabel, TextField, Toolbar, Typography, Radio, RadioGroup\r\n} from '@material-ui/core';\r\n\r\nimport RefreshIcon from '@material-ui/icons/Refresh';\r\n\r\nimport './Orchestrations.css';\r\n\r\nimport { DateTimeHelpers } from '../DateTimeHelpers';\r\nimport { DurableOrchestrationStatusFields } from '../states/DurableOrchestrationStatus';\r\nimport { ErrorMessage } from './ErrorMessage';\r\nimport { OrchestrationLink } from './OrchestrationLink';\r\nimport { OrchestrationsState, ShowEntityTypeEnum } from '../states/OrchestrationsState';\r\n\r\nexport const UriSuffix = process.env.REACT_APP_URI_SUFFIX as string;\r\n\r\n// Orchestrations view\r\n@observer\r\nexport class Orchestrations extends React.Component<{ state: OrchestrationsState }> {\r\n\r\n componentDidMount() {\r\n\r\n // Triggering initial load\r\n this.props.state.loadOrchestrations();\r\n\r\n // Doing a simple infinite scroll\r\n document.addEventListener('scroll', (evt) => {\r\n\r\n const scrollingElement = (evt.target as Document).scrollingElement;\r\n if (!scrollingElement) { \r\n return;\r\n }\r\n\r\n const scrollPos = scrollingElement.scrollHeight - window.innerHeight - scrollingElement.scrollTop;\r\n const scrollPosThreshold = 100;\r\n\r\n if (scrollPos < scrollPosThreshold) {\r\n this.props.state.loadOrchestrations();\r\n }\r\n });\r\n }\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (\r\n
\r\n {state.inProgress ? () : ()}\r\n\r\n \r\n\r\n \r\n \r\n { state.timeFrom = DateTimeHelpers.getDateTimeValue(evt); }}\r\n onBlur={() => state.applyTimeFrom()}\r\n onKeyPress={this.handleKeyPress}\r\n />\r\n \r\n \r\n \r\n Till\r\n state.timeTillEnabled = evt.target.checked}\r\n />\r\n \r\n { state.timeTill = DateTimeHelpers.getDateTimeValue(evt); }}\r\n onBlur={() => state.applyTimeTill()}\r\n onKeyPress={this.handleKeyPress}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n \r\n Filtered Column\r\n state.filteredColumn = evt.target.value as string}\r\n inputProps={{ id: \"filtered-column-select\" }}>\r\n\r\n [Not Selected]\r\n {DurableOrchestrationStatusFields.map(col => {\r\n return ({col});\r\n })}\r\n\r\n \r\n \r\n \r\n Filter Operator\r\n state.filterOperator = evt.target.value as number}\r\n inputProps={{ id: \"filter-operator-select\" }}>\r\n Equals\r\n Starts With\r\n Contains\r\n \r\n \r\n \r\n \r\n state.filterValue = evt.target.value as string}\r\n onBlur={() => state.applyFilterValue()}\r\n onKeyPress={this.handleKeyPress}\r\n />\r\n \r\n \r\n\r\n state.showEntityType = (evt.target as HTMLInputElement).value}\r\n >\r\n }\r\n label={Show both}\r\n />\r\n }\r\n label={Orchestrations only}\r\n />\r\n }\r\n label={Durable Entities only}\r\n />\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n Auto-refresh\r\n state.autoRefresh = evt.target.value as number}\r\n >\r\n Never\r\n Every 1 sec.\r\n Every 5 sec.\r\n Every 10 sec.\r\n \r\n \r\n \r\n \r\n state.reloadOrchestrations()}\r\n >\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n {!!state.orchestrations.length ? `${state.orchestrations.length} items shown`: ''}\r\n \r\n\r\n {!!state.orchestrations.length ? this.renderTable(state) : this.renderEmptyTable()}\r\n\r\n {state.inProgress && !!state.orchestrations.length ? () : ()}\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n private renderEmptyTable(): JSX.Element {\r\n return (\r\n \r\n This list is empty\r\n \r\n );\r\n }\r\n\r\n private renderTable(state: OrchestrationsState): JSX.Element {\r\n\r\n return (\r\n \r\n \r\n \r\n {DurableOrchestrationStatusFields\r\n // hiding artificial 'lastEvent' column, when not used\r\n .filter(f => state.showLastEventColumn ? true : f !== 'lastEvent')\r\n .map(col => {\r\n return (\r\n \r\n state.orderBy = col}\r\n >\r\n {col}\r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n {state.orchestrations.map(orchestration => {\r\n\r\n const cellStyle = { verticalAlign: 'top' };\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {orchestration.name}\r\n \r\n \r\n {orchestration.createdTime}\r\n \r\n \r\n {orchestration.lastUpdatedTime}\r\n \r\n \r\n {orchestration.runtimeStatus}\r\n \r\n {state.showLastEventColumn && (\r\n {orchestration.lastEvent}\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n );\r\n }\r\n\r\n @action.bound\r\n private handleKeyPress(event: React.KeyboardEvent) {\r\n if (event.key === 'Enter') {\r\n // Otherwise the event will bubble up and the form will be submitted\r\n event.preventDefault();\r\n\r\n this.props.state.reloadOrchestrations();\r\n }\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle,\r\n} from '@material-ui/core';\r\n\r\nimport { OrchestrationDetailsState } from '../states/OrchestrationDetailsState';\r\n\r\n// Buttons for detailed durable entity view\r\n@observer\r\nexport class DurableEntityButtons extends React.Component<{ state: OrchestrationDetailsState }> {\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (<>\r\n\r\n {this.renderDialogs(state)}\r\n\r\n \r\n );\r\n }\r\n\r\n private renderDialogs(state: OrchestrationDetailsState): JSX.Element {\r\n return (<>\r\n\r\n state.purgeConfirmationOpen = false}\r\n >\r\n Confirm Purge\r\n \r\n \r\n You're about to purge entity '{state.orchestrationId}'. This operation drops entity state from the underlying storage and cannot be undone. Are you sure?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n Grid, TextField\r\n} from '@material-ui/core';\r\n\r\nimport { DurableOrchestrationStatus } from '../states/DurableOrchestrationStatus';\r\n\r\n// Fields for detailed durable entity view\r\n@observer\r\nexport class DurableEntityFields extends React.Component<{ details: DurableOrchestrationStatus }> {\r\n\r\n render(): JSX.Element {\r\n const details = this.props.details;\r\n\r\n return (<>\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n Box, Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, TextField\r\n} from '@material-ui/core';\r\n\r\nimport { OrchestrationDetailsState } from '../states/OrchestrationDetailsState';\r\n\r\n// Buttons for detailed orchestration view\r\n@observer\r\nexport class OrchestrationButtons extends React.Component<{ state: OrchestrationDetailsState }> {\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (<>\r\n\r\n {this.renderDialogs(state)}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private renderDialogs(state: OrchestrationDetailsState): JSX.Element {\r\n return (<>\r\n\r\n state.rewindConfirmationOpen = false}\r\n >\r\n Confirm Rewind\r\n \r\n \r\n You're about to rewind orchestration '{state.orchestrationId}'. Are you sure?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n state.terminateConfirmationOpen = false}\r\n >\r\n Confirm Terminate\r\n \r\n \r\n You're about to terminate orchestration '{state.orchestrationId}'. This operation cannot be undone. Are you sure?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n state.dialogOpen = false}\r\n >\r\n Raise Event\r\n \r\n \r\n Provide event name and some additional data.\r\n \r\n\r\n state.eventName = evt.target.value as string}\r\n />\r\n\r\n state.eventData = evt.target.value as string}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n state.purgeConfirmationOpen = false}\r\n >\r\n Confirm Purge\r\n \r\n \r\n You're about to purge orchestration '{state.orchestrationId}'. This operation drops orchestration state from the underlying storage and cannot be undone. Are you sure?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n FormHelperText, Grid, InputBase, Table, TableBody, TableCell, TableHead, TableRow, Typography, TextField\r\n} from '@material-ui/core';\r\n\r\nimport { DurableOrchestrationStatus, HistoryEventFields } from '../states/DurableOrchestrationStatus';\r\n\r\n// Fields for detailed orchestration view\r\n@observer\r\nexport class OrchestrationFields extends React.Component<{ details: DurableOrchestrationStatus }> {\r\n\r\n render(): JSX.Element {\r\n const details = this.props.details;\r\n\r\n return (<>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n historyEvents: {!!details.historyEvents ? details.historyEvents.length : 0} items\r\n \r\n\r\n {this.renderTable(details.historyEvents)}\r\n\r\n );\r\n }\r\n\r\n private renderEmptyTable(): JSX.Element {\r\n return (\r\n \r\n This list is empty\r\n \r\n );\r\n }\r\n\r\n private renderTable(events: Array | undefined): JSX.Element {\r\n\r\n if (!events || !events.length) {\r\n return this.renderEmptyTable();\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {HistoryEventFields.map(col => {\r\n return {col};\r\n })}\r\n \r\n \r\n \r\n {events.map((event: any, index: number) => {\r\n\r\n const cellStyle = { verticalAlign: 'top' };\r\n return (\r\n \r\n \r\n {event.Timestamp}\r\n \r\n \r\n {event.EventType}\r\n \r\n \r\n {!!event.Name ? event.Name : event.FunctionName}\r\n \r\n \r\n {event.ScheduledTime}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n Box, Button, FormControl, InputLabel, LinearProgress, MenuItem, Select, Toolbar, Typography\r\n} from '@material-ui/core';\r\n\r\nimport RefreshIcon from '@material-ui/icons/Refresh';\r\n\r\nimport './OrchestrationDetails.css';\r\n\r\nimport { DurableEntityButtons } from './DurableEntityButtons';\r\nimport { DurableEntityFields } from './DurableEntityFields';\r\nimport { ErrorMessage } from './ErrorMessage';\r\nimport { OrchestrationButtons } from './OrchestrationButtons';\r\nimport { OrchestrationDetailsState } from '../states/OrchestrationDetailsState';\r\nimport { OrchestrationFields } from './OrchestrationFields';\r\n\r\n// Orchestration Details view\r\n@observer\r\nexport class OrchestrationDetails extends React.Component<{ state: OrchestrationDetailsState }> {\r\n\r\n componentDidMount() {\r\n\r\n // Triggering initial load\r\n this.props.state.loadDetails();\r\n }\r\n \r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (
\r\n {state.inProgress ? () : ()}\r\n \r\n \r\n\r\n {state.details.entityType === \"Orchestration\" && (\r\n \r\n )}\r\n {state.details.entityType === \"DurableEntity\" && (\r\n \r\n )}\r\n \r\n \r\n \r\n\r\n \r\n Auto-refresh\r\n state.autoRefresh = evt.target.value as number}\r\n inputProps={{ id: 'auto-refresh-select' }}>\r\n Never\r\n Every 1 sec.\r\n Every 5 sec.\r\n Every 10 sec.\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n {state.details.entityType === \"Orchestration\" && (\r\n \r\n )}\r\n {state.details.entityType === \"DurableEntity\" && (\r\n \r\n )}\r\n\r\n {state.inProgress ? () : ()}\r\n \r\n\r\n \r\n \r\n
);\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n Box, Checkbox, Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, FormControl,\r\n FormControlLabel, FormGroup, FormLabel, LinearProgress, Radio, RadioGroup, TextField, Tooltip, Typography\r\n} from '@material-ui/core';\r\n\r\nimport './PurgeHistoryDialog.css';\r\n\r\nimport { DateTimeHelpers } from '../DateTimeHelpers';\r\nimport { ErrorMessage } from './ErrorMessage';\r\nimport { EntityType, RuntimeStatus } from '../states/DurableOrchestrationStatus';\r\nimport { PurgeHistoryDialogState } from '../states/PurgeHistoryDialogState';\r\n\r\n// Dialog with parameters for purging orchestration instance history\r\n@observer\r\nexport class PurgeHistoryDialog extends React.Component<{ state: PurgeHistoryDialogState }> {\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (\r\n { if (!state.inProgress) state.dialogOpen = false; }}>\r\n\r\n Purge Instance History\r\n\r\n {state.instancesDeleted === null && (\r\n
\r\n \r\n\r\n {state.inProgress ? () : ()}\r\n\r\n \r\n WARNING: this operation drops instance states from the underlying storage and cannot be undone.\r\n\r\n {state.entityType === \"DurableEntity\" && (\r\n \r\n It might as well remove Durable Entities, that are still active.\r\n Ensure that you specify the correct time frame!\r\n \r\n )}\r\n\r\n \r\n\r\n \r\n Apply to:\r\n state.entityType = (evt.target as HTMLInputElement).value as EntityType}\r\n >\r\n }\r\n label=\"Orchestrations\"\r\n />\r\n }\r\n label=\"Durable Entities\"\r\n />\r\n \r\n \r\n\r\n { state.timeFrom = DateTimeHelpers.getDateTimeValue(evt); }}\r\n />\r\n\r\n { state.timeTill = DateTimeHelpers.getDateTimeValue(evt); }}\r\n />\r\n\r\n \r\n With the following status:\r\n\r\n {state.entityType === \"Orchestration\" && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {state.entityType === \"DurableEntity\" && (\r\n \r\n \r\n }\r\n label=\"Running\"\r\n disabled={true}\r\n />\r\n \r\n \r\n )}\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n\r\n {state.instancesDeleted !== null && (\r\n
\r\n \r\n \r\n {state.instancesDeleted} instances were deleted.\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\n@observer\r\nclass RuntimeStatusCheckbox extends React.Component<{ state: PurgeHistoryDialogState, runtimeStatus: RuntimeStatus }> {\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n const runtimeStatus = this.props.runtimeStatus;\r\n\r\n return (\r\n state.setStatusIncluded(runtimeStatus, evt.target.checked)} />}\r\n label={runtimeStatus}\r\n />\r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport { AppBar, Breadcrumbs, Box, Link, Toolbar, Typography } from '@material-ui/core';\r\n\r\nimport './Main.css';\r\n\r\nimport { LoginIcon } from './LoginIcon';\r\nimport { MainMenu } from './MainMenu';\r\nimport { MainState } from '../states/MainState';\r\nimport { Orchestrations } from './Orchestrations';\r\nimport { OrchestrationDetails } from './OrchestrationDetails';\r\nimport { PurgeHistoryDialog } from './PurgeHistoryDialog';\r\n\r\nconst logo = require('../logo.svg');\r\n\r\nexport const UriSuffix = process.env.REACT_APP_URI_SUFFIX as string;\r\n\r\n// The main application view\r\n@observer\r\nexport class Main extends React.Component<{ state: MainState }> {\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (\r\n
\r\n\r\n {!state.loginState && (\r\n \r\n )}\r\n \r\n {!!state.loginState && (\r\n \r\n \r\n\r\n {state.loginState.isLoggedIn && !!state.mainMenuState && (\r\n \r\n )}\r\n\r\n \r\n \r\n\r\n \r\n Durable Functions Monitor\r\n \r\n\r\n \r\n \r\n / instances\r\n \r\n {!!state.orchestrationDetailsState && (\r\n \r\n {state.orchestrationDetailsState.orchestrationId}\r\n \r\n )}\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n )}\r\n\r\n {!!state.orchestrationsState && (!state.loginState || state.loginState.isLoggedIn) && (\r\n \r\n )}\r\n\r\n {!!state.orchestrationDetailsState && (!state.loginState || state.loginState.isLoggedIn) && (\r\n \r\n )}\r\n\r\n \r\n\r\n
\r\n );\r\n }\r\n}","import axios, { Method } from 'axios';\r\nimport { IBackendClient } from './IBackendClient';\r\n\r\nexport const BackendBaseUri = process.env.REACT_APP_BACKEND_BASE_URI as string;\r\n\r\n// Common IBackendClient implementation, sends HTTP requests directly\r\nexport class BackendClient implements IBackendClient {\r\n\r\n get isVsCode(): boolean { return false; }\r\n\r\n constructor(private _getAuthorizationHeaderAsync: () => Promise<{ Authorization: string }>) {\r\n }\r\n\r\n call(method: Method, url: string, data?: any): Promise {\r\n return new Promise((resolve, reject) => {\r\n\r\n this._getAuthorizationHeaderAsync().then(headers => {\r\n\r\n axios.request({\r\n url: BackendBaseUri + url,\r\n method, data, headers\r\n }).then(r => { resolve(r.data); }, reject);\r\n });\r\n });\r\n }\r\n}","import { action, observable, computed } from 'mobx'\r\nimport axios, { AxiosResponse } from 'axios';\r\nimport * as Msal from 'msal';\r\n\r\nimport { ErrorMessageState } from './ErrorMessageState';\r\n\r\nexport const BackendBaseUri = process.env.REACT_APP_BACKEND_BASE_URI as string;\r\n\r\n// Login State\r\nexport class LoginState extends ErrorMessageState {\r\n\r\n @computed\r\n get isLoggedIn(): boolean { return this._isLoggedIn; };\r\n\r\n @computed\r\n get isLoggedInAnonymously(): boolean { return !this._userName; };\r\n\r\n @computed\r\n get userName(): string { return this._userName; };\r\n\r\n @observable\r\n menuAnchorElement?: Element;\r\n\r\n constructor() {\r\n super();\r\n this.login();\r\n }\r\n\r\n login() {\r\n const uri = `${BackendBaseUri}/easyauth-config`;\r\n axios.get(uri).then(this.loginWithEasyAuthConfig, err => {\r\n this.errorMessage = `${err.message}.${(!!err.response ? err.response.data : '')}`;\r\n });\r\n }\r\n\r\n logout() {\r\n this.menuAnchorElement = undefined;\r\n this._aadApp.logout();\r\n }\r\n\r\n @action.bound\r\n getAuthorizationHeaderAsync() {\r\n\r\n // Let's think we're on localhost and proceed with no auth\r\n if (!this._aadApp) {\r\n return new Promise<{ Authorization: string }>((resolve, reject) => resolve());\r\n }\r\n\r\n return new Promise<{ Authorization: string }>((resolve, reject) => {\r\n // Obtaining a token to access our own AAD app\r\n const authParams: Msal.AuthenticationParameters = {\r\n scopes: [this._aadApp.getCurrentConfiguration().auth.clientId]\r\n };\r\n\r\n this._aadApp.acquireTokenSilent(authParams)\r\n .then((authResponse) => {\r\n\r\n var accessToken = authResponse.accessToken;\r\n if (!accessToken) {\r\n // https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/736\r\n // accessToken might randomly be returned as null, in which case we can probably use id_token\r\n // (which is supposed to be the same)\r\n console.log('DFM: accessToken is null, so using idToken.rawIdToken instead');\r\n accessToken = authResponse.idToken.rawIdToken;\r\n }\r\n\r\n resolve({ Authorization: `Bearer ${accessToken}` });\r\n\r\n }, err => {\r\n // If silent token aquiring failed, then just redirecting the user back to AAD, \r\n // so that the page is reloaded anyway.\r\n // This is supposed to happen very rarely, as default refresh token lifetime is quite long. \r\n console.log(`DFM: acquireTokenSilent() failed (${err}), so calling acquireTokenRedirect()...`);\r\n this._aadApp.acquireTokenRedirect(authParams);\r\n });\r\n });\r\n }\r\n\r\n @observable\r\n private _isLoggedIn: boolean = false;\r\n\r\n @observable\r\n private _userName: string;\r\n\r\n private _aadApp: Msal.UserAgentApplication;\r\n\r\n @action.bound\r\n private loginWithEasyAuthConfig(easyAuthConfigResponse: AxiosResponse) {\r\n\r\n const config = easyAuthConfigResponse.data;\r\n if (!config.clientId) {\r\n // Let's think we're on localhost and proceed with no auth\r\n this._isLoggedIn = true;\r\n return;\r\n }\r\n\r\n // Configuring MSAL with values received from backend\r\n this._aadApp = new Msal.UserAgentApplication({\r\n auth: {\r\n clientId: config.clientId,\r\n authority: config.authority\r\n }\r\n })\r\n\r\n // Checking if it was a redirect from AAD\r\n this._aadApp.handleRedirectCallback(() => { }, this.handleRedirectCallbackFailed);\r\n const account = this._aadApp.getAccount();\r\n\r\n if (!account) {\r\n // Redirecting user to AAD. Redirect flow is more reliable (doesn't need popups enabled)\r\n console.log('DFM: redirecting user to AAD for login...');\r\n this._aadApp.loginRedirect();\r\n } else {\r\n // We've logged in successfully. Setting user name.\r\n this._userName = account.userName;\r\n this._isLoggedIn = true;\r\n }\r\n }\r\n\r\n @action.bound\r\n private handleRedirectCallbackFailed(authErr: Msal.AuthError, accountState: string) {\r\n this.errorMessage = `Failed to handle login redirect. name: ${authErr.name}, message: ${authErr.message}, errorCode: ${authErr.errorCode}, errorMessage: ${authErr.errorMessage}, accountState: ${accountState}`;\r\n }\r\n}","import { observable, computed } from 'mobx'\r\n\r\nimport { ErrorMessageState } from './ErrorMessageState';\r\nimport { IBackendClient } from '../services/IBackendClient';\r\nimport { PurgeHistoryDialogState } from './PurgeHistoryDialogState';\r\n\r\n// State of Main Menu component\r\nexport class MainMenuState extends ErrorMessageState {\r\n\r\n @observable\r\n menuAnchorElement?: Element;\r\n\r\n @observable\r\n hubName: string;\r\n @observable\r\n connectionString: string;\r\n \r\n @observable\r\n connectionParamsDialogOpen: boolean = false;\r\n\r\n @computed\r\n get inProgress(): boolean { return this._inProgress; }\r\n\r\n @computed\r\n get isReadonly(): boolean { return this._isReadOnly; }\r\n\r\n @computed\r\n get isDirty(): boolean {\r\n return (this.connectionString !== this._oldConnectionString) || (this.hubName !== this._oldHubName);\r\n }\r\n\r\n constructor(private _backendClient: IBackendClient, private _purgeHistoryDialogState: PurgeHistoryDialogState) {\r\n super();\r\n }\r\n \r\n showConnectionParamsDialog() {\r\n this.menuAnchorElement = undefined;\r\n\r\n this.connectionParamsDialogOpen = true;\r\n this._inProgress = true;\r\n\r\n this._backendClient.call('GET', '/manage-connection').then(response => {\r\n\r\n this.connectionString = this._oldConnectionString = response.connectionString;\r\n this.hubName = this._oldHubName = response.hubName;\r\n this._isReadOnly = response.isReadOnly;\r\n\r\n }, err => {\r\n this.errorMessage = `Load failed: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n }).finally(() => {\r\n this._inProgress = false;\r\n });\r\n }\r\n\r\n saveConnectionParams() {\r\n\r\n this._inProgress = true;\r\n\r\n this._backendClient.call('PUT', '/manage-connection', {\r\n connectionString: this.connectionString !== this._oldConnectionString ? this.connectionString : '',\r\n hubName: this.hubName\r\n }).then(() => {\r\n \r\n this.connectionParamsDialogOpen = false;\r\n\r\n alert(`Your changes were saved to local.settings.json file, but they cannot be picked up automatically. Please, restart the Function Host for them to take effect.`);\r\n\r\n }, err => {\r\n this.errorMessage = `Save failed: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n }).finally(() => {\r\n this._inProgress = false;\r\n });\r\n }\r\n\r\n showPurgeHistoryDialog() {\r\n this.menuAnchorElement = undefined;\r\n \r\n this._purgeHistoryDialogState.dialogOpen = true;\r\n }\r\n\r\n setWindowTitle() {\r\n \r\n this._backendClient.call('GET', '/about').then(response => {\r\n document.title = `Durable Functions Monitor (${response.accountName}/${response.hubName}) v${response.version}`;\r\n });\r\n }\r\n\r\n @observable\r\n private _inProgress: boolean = false;\r\n\r\n @observable\r\n private _isReadOnly: boolean = false;\r\n \r\n private _oldConnectionString: string;\r\n private _oldHubName: string;\r\n}","import { observable, computed } from 'mobx'\r\n\r\nimport { DurableOrchestrationStatus } from '../states/DurableOrchestrationStatus';\r\nimport { ErrorMessageState } from './ErrorMessageState';\r\nimport { IBackendClient } from '../services/IBackendClient';\r\nimport { ITypedLocalStorage } from './ITypedLocalStorage';\r\n\r\n// State of OrchestrationDetails view\r\nexport class OrchestrationDetailsState extends ErrorMessageState {\r\n\r\n @observable\r\n details: DurableOrchestrationStatus = new DurableOrchestrationStatus();\r\n\r\n @computed\r\n get orchestrationId(): string { return this._orchestrationId; }\r\n\r\n @computed\r\n get inProgress(): boolean { return this._inProgress; };\r\n\r\n @computed\r\n get autoRefresh(): number { return this._autoRefresh; }\r\n set autoRefresh(val: number) {\r\n this._autoRefresh = val;\r\n this._localStorage.setItem('autoRefresh', this._autoRefresh.toString());\r\n this.loadDetails();\r\n }\r\n\r\n @computed\r\n get dialogOpen(): boolean { return this._dialogOpen; }\r\n set dialogOpen(val: boolean) {\r\n this._dialogOpen = val;\r\n this.eventName = '';\r\n this.eventData = '';\r\n }\r\n\r\n @observable\r\n rewindConfirmationOpen: boolean = false;\r\n @observable\r\n terminateConfirmationOpen: boolean = false;\r\n @observable\r\n purgeConfirmationOpen: boolean = false;\r\n @observable\r\n eventName: string;\r\n @observable\r\n eventData: string;\r\n\r\n constructor(private _orchestrationId: string,\r\n private _backendClient: IBackendClient,\r\n private _localStorage: ITypedLocalStorage) {\r\n super();\r\n\r\n const autoRefreshString = this._localStorage.getItem('autoRefresh');\r\n if (!!autoRefreshString) {\r\n this._autoRefresh = Number(autoRefreshString);\r\n }\r\n }\r\n\r\n rewind() {\r\n this.rewindConfirmationOpen = false;\r\n\r\n const uri = `/orchestrations('${this._orchestrationId}')/rewind`;\r\n this._inProgress = true;\r\n\r\n this._backendClient.call('POST', uri).then(() => {\r\n this._inProgress = false;\r\n this.loadDetails();\r\n }, err => {\r\n this._inProgress = false;\r\n this.errorMessage = `Failed to rewind: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n });\r\n }\r\n\r\n terminate() {\r\n this.terminateConfirmationOpen = false;\r\n\r\n const uri = `/orchestrations('${this._orchestrationId}')/terminate`;\r\n this._inProgress = true;\r\n\r\n this._backendClient.call('POST', uri).then(() => {\r\n this._inProgress = false;\r\n this.loadDetails();\r\n }, err => {\r\n this._inProgress = false;\r\n this.errorMessage = `Failed to terminate: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n });\r\n }\r\n\r\n purge() {\r\n this.purgeConfirmationOpen = false;\r\n\r\n const uri = `/orchestrations('${this._orchestrationId}')/purge`;\r\n this._inProgress = true;\r\n\r\n this._backendClient.call('POST', uri).then(() => {\r\n this._inProgress = false;\r\n this.details = new DurableOrchestrationStatus();\r\n }, err => {\r\n this._inProgress = false;\r\n this.errorMessage = `Failed to purge: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n });\r\n }\r\n\r\n raiseEvent() {\r\n\r\n const uri = `/orchestrations('${this._orchestrationId}')/raise-event`;\r\n const requestBody = { name: this.eventName, data: null };\r\n\r\n try {\r\n requestBody.data = JSON.parse(this.eventData);\r\n } catch (err) {\r\n this.errorMessage = `Event Data failed to parse: ${err.message}`;\r\n return;\r\n } finally {\r\n this.dialogOpen = false;\r\n }\r\n\r\n this._inProgress = true;\r\n\r\n this._backendClient.call('POST', uri, requestBody).then(() => {\r\n this._inProgress = false;\r\n this.loadDetails();\r\n }, err => {\r\n this._inProgress = false;\r\n this.errorMessage = `Failed to raise an event: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n });\r\n }\r\n\r\n loadDetails() {\r\n\r\n if (!!this.inProgress) {\r\n return;\r\n }\r\n this._inProgress = true;\r\n\r\n const uri = `/orchestrations('${this._orchestrationId}')`;\r\n\r\n this._backendClient.call('GET', uri).then(response => {\r\n\r\n if (!response) {\r\n this.errorMessage = `Orchestration '${this._orchestrationId}' not found.`;\r\n\r\n // Cancelling auto-refresh just in case\r\n this._autoRefresh = 0;\r\n return;\r\n }\r\n\r\n // Based on backend implementation, this field can appear to be called differently ('historyEvents' vs. 'history')\r\n // Fixing that here\r\n if (!!response.history) {\r\n response.historyEvents = response.history;\r\n }\r\n\r\n this.details = response;\r\n\r\n // Doing auto-refresh\r\n if (!!this._autoRefresh) {\r\n\r\n if (!!this._autoRefreshToken) {\r\n clearTimeout(this._autoRefreshToken);\r\n }\r\n this._autoRefreshToken = setTimeout(() => this.loadDetails(), this._autoRefresh * 1000);\r\n }\r\n\r\n }, err => {\r\n\r\n // Cancelling auto-refresh just in case\r\n this._autoRefresh = 0;\r\n\r\n this.errorMessage = `Load failed: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n\r\n }).finally(() => {\r\n this._inProgress = false;\r\n });\r\n }\r\n\r\n @observable\r\n private _inProgress: boolean = false;\r\n @observable\r\n _dialogOpen: boolean = false;\r\n @observable\r\n private _autoRefresh: number = 0;\r\n\r\n private _autoRefreshToken: NodeJS.Timeout;\r\n}","import { observable, computed } from 'mobx'\r\n\r\nimport { IBackendClient } from '../services/IBackendClient';\r\nimport { RuntimeStatus, EntityType } from './DurableOrchestrationStatus';\r\nimport { ErrorMessageState } from './ErrorMessageState';\r\n\r\n// State of Purge History Dialog\r\nexport class PurgeHistoryDialogState extends ErrorMessageState {\r\n\r\n @computed\r\n get dialogOpen(): boolean { return this._dialogOpen; };\r\n set dialogOpen(value: boolean) {\r\n this._dialogOpen = value;\r\n\r\n if (value) {\r\n\r\n this._instancesDeleted = null;\r\n\r\n var timeFrom: Date = new Date();\r\n timeFrom.setDate(timeFrom.getDate() - 1);\r\n this.timeFrom = timeFrom;\r\n\r\n this.timeTill = new Date();\r\n\r\n this._statuses = new Set([\"Completed\", \"Terminated\"]);\r\n\r\n this.entityType = \"Orchestration\";\r\n }\r\n }\r\n\r\n @computed\r\n get instancesDeleted(): number | null { return this._instancesDeleted; };\r\n\r\n @computed\r\n get inProgress(): boolean { return this._inProgress; };\r\n\r\n @computed\r\n get isValid(): boolean { return this._statuses.size > 0; };\r\n\r\n constructor(private _backendClient: IBackendClient) {\r\n super();\r\n }\r\n\r\n purgeHistory() {\r\n\r\n this._inProgress = true;\r\n\r\n this._backendClient.call('POST', '/purge-history', {\r\n entityType: this.entityType,\r\n timeFrom: this.timeFrom,\r\n timeTill: this.timeTill,\r\n statuses: Array.from(this._statuses.values())\r\n }).then(response => {\r\n\r\n this._instancesDeleted = response.instancesDeleted;\r\n\r\n }, err => {\r\n this.errorMessage = `Purge history failed: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n }).finally(() => {\r\n this._inProgress = false;\r\n });\r\n }\r\n\r\n @observable\r\n timeFrom: Date = new Date();\r\n @observable\r\n timeTill: Date = new Date();\r\n\r\n @observable\r\n entityType: EntityType = \"Orchestration\";\r\n\r\n getStatusIncluded(status: RuntimeStatus) {\r\n return this._statuses.has(status);\r\n }\r\n\r\n setStatusIncluded(status: RuntimeStatus, included: boolean) {\r\n if (included) {\r\n this._statuses.add(status);\r\n } else {\r\n this._statuses.delete(status);\r\n }\r\n }\r\n\r\n @observable\r\n private _statuses: Set = new Set();\r\n\r\n @observable\r\n private _dialogOpen: boolean = false;\r\n \r\n @observable\r\n private _inProgress: boolean = false;\r\n\r\n @observable\r\n private _instancesDeleted: number | null = null;\r\n}","import { ITypedLocalStorage } from './ITypedLocalStorage';\r\n\r\n// Stores field values in a localStorage\r\nexport class TypedLocalStorage implements ITypedLocalStorage\r\n{\r\n constructor(private _prefix: string) { }\r\n\r\n setItem(fieldName: Extract, value: string) {\r\n localStorage.setItem(`${this._prefix}::${fieldName}`, value);\r\n }\r\n\r\n setItems(items: { fieldName: Extract, value: string | null }[]) {\r\n for (const item of items) {\r\n if (item.value === null) {\r\n localStorage.removeItem(`${this._prefix}::${item.fieldName}`);\r\n } else {\r\n localStorage.setItem(`${this._prefix}::${item.fieldName}`, item.value);\r\n }\r\n }\r\n }\r\n\r\n getItem(fieldName: Extract): string | null {\r\n return localStorage.getItem(`${this._prefix}::${fieldName}`);\r\n }\r\n\r\n removeItem(fieldName: Extract) {\r\n localStorage.removeItem(`${this._prefix}::${fieldName}`);\r\n }\r\n}\r\n","import { Method } from 'axios';\r\nimport { IBackendClient } from './IBackendClient';\r\n\r\n// IBackendClient implementation for VsCode extension, forwards HTTP requests to VsCode\r\nexport class VsCodeBackendClient implements IBackendClient {\r\n\r\n get isVsCode(): boolean { return true; }\r\n\r\n constructor(private _vsCodeApi: any) {\r\n\r\n // Handling responses from VsCode\r\n window.addEventListener('message', event => {\r\n\r\n const message = event.data;\r\n\r\n // handling menu commands\r\n const requestHandler = this._handlers[message.id];\r\n if (!!requestHandler) {\r\n requestHandler(message.data);\r\n return;\r\n }\r\n\r\n // handling HTTP responses\r\n const requestPromise = this._requests[message.id];\r\n if (!requestPromise) {\r\n return;\r\n }\r\n\r\n if (!!message.data) {\r\n requestPromise.resolve(message.data);\r\n } else {\r\n requestPromise.reject(message.err);\r\n }\r\n\r\n delete this._requests[message.id];\r\n });\r\n }\r\n\r\n call(method: Method | 'OpenInNewWindow', url: string, data?: any): Promise {\r\n\r\n const requestId = Math.random().toString();\r\n\r\n // Sending request to VsCode\r\n this._vsCodeApi.postMessage({ id: requestId, method, url, data });\r\n\r\n return new Promise((resolve, reject) => {\r\n this._requests[requestId] = { resolve, reject };\r\n });\r\n }\r\n\r\n setPurgeHistoryHandler(handler: (data: any) => void) {\r\n this._handlers['purgeHistory'] = handler;\r\n\r\n // Notifying VsCode that we're ready to process messages\r\n // Cannot do this in ctor, because VsCodeBackendClient and PurgeHistoryDialogState depend on each other\r\n this._vsCodeApi.postMessage({ method: 'IAmReady' });\r\n }\r\n\r\n private _handlers: {\r\n [id: string]: (data: any) => void\r\n } = {};\r\n\r\n private _requests: {\r\n [id: string]: {\r\n resolve: (value?: any) => void,\r\n reject: (reason?: any) => void\r\n }\r\n } = {};\r\n}","import { ITypedLocalStorage } from './ITypedLocalStorage';\r\n\r\n// Stores field values in VsCode\r\nexport class VsCodeTypedLocalStorage implements ITypedLocalStorage\r\n{\r\n constructor(private _prefix: string, private _vsCodeApi: any) { \r\n\r\n const oldState = this._vsCodeApi.getState();\r\n VsCodeTypedLocalStorage.State = !oldState ? {} : oldState;\r\n }\r\n\r\n setItem(fieldName: Extract, value: string) {\r\n\r\n VsCodeTypedLocalStorage.State[`${this._prefix}::${fieldName}`] = value;\r\n this._vsCodeApi.setState(VsCodeTypedLocalStorage.State);\r\n }\r\n\r\n setItems(items: { fieldName: Extract, value: string | null }[]) {\r\n\r\n for (const item of items) {\r\n\r\n if (item.value === null) {\r\n delete VsCodeTypedLocalStorage.State[`${this._prefix}::${item.fieldName}`];\r\n } else {\r\n VsCodeTypedLocalStorage.State[`${this._prefix}::${item.fieldName}`] = item.value;\r\n }\r\n }\r\n this._vsCodeApi.setState(VsCodeTypedLocalStorage.State);\r\n }\r\n\r\n getItem(fieldName: Extract): string | null {\r\n return VsCodeTypedLocalStorage.State[`${this._prefix}::${fieldName}`];\r\n }\r\n\r\n removeItem(fieldName: Extract) {\r\n\r\n delete VsCodeTypedLocalStorage.State[`${this._prefix}::${fieldName}`];\r\n this._vsCodeApi.setState(VsCodeTypedLocalStorage.State);\r\n }\r\n\r\n private static State = {};\r\n}\r\n","import { BackendClient } from '../services/BackendClient';\r\nimport { LoginState } from './LoginState';\r\nimport { MainMenuState } from './MainMenuState';\r\nimport { OrchestrationsState } from './OrchestrationsState';\r\nimport { OrchestrationDetailsState } from './OrchestrationDetailsState';\r\nimport { PurgeHistoryDialogState } from './PurgeHistoryDialogState';\r\nimport { TypedLocalStorage } from './TypedLocalStorage';\r\nimport { VsCodeBackendClient } from '../services/VsCodeBackendClient';\r\nimport { VsCodeTypedLocalStorage } from './VsCodeTypedLocalStorage';\r\n\r\n// This method is provided by VsCode, when running inside a WebView\r\ndeclare const acquireVsCodeApi: () => any;\r\n\r\n// A global variable declared in index.html and replaced by VsCode extension\r\ndeclare const OrchestrationIdFromVsCode: string;\r\n\r\nexport const UriSuffix = process.env.REACT_APP_URI_SUFFIX as string;\r\n\r\n// Main Application State\r\nexport class MainState {\r\n \r\n loginState?: LoginState; \r\n mainMenuState?: MainMenuState;\r\n orchestrationsState?: OrchestrationsState;\r\n orchestrationDetailsState?: OrchestrationDetailsState;\r\n purgeHistoryDialogState: PurgeHistoryDialogState;\r\n\r\n constructor() {\r\n\r\n // checking whether we're inside VsCode\r\n var vsCodeApi: any = undefined;\r\n try {\r\n vsCodeApi = acquireVsCodeApi();\r\n } catch { }\r\n\r\n if (!!vsCodeApi) {\r\n\r\n const backendClient = new VsCodeBackendClient(vsCodeApi);\r\n\r\n this.purgeHistoryDialogState = new PurgeHistoryDialogState(backendClient);\r\n\r\n if (!!this.orchestrationId) {\r\n this.orchestrationDetailsState = new OrchestrationDetailsState(this.orchestrationId,\r\n backendClient,\r\n new VsCodeTypedLocalStorage('OrchestrationDetailsState', vsCodeApi));\r\n } else {\r\n this.orchestrationsState = new OrchestrationsState(backendClient,\r\n new VsCodeTypedLocalStorage('OrchestrationsState', vsCodeApi));\r\n\r\n backendClient.setPurgeHistoryHandler(() => this.purgeHistoryDialogState.dialogOpen = true);\r\n }\r\n \r\n } else {\r\n\r\n this.loginState = new LoginState();\r\n\r\n const backendClient = new BackendClient(this.loginState.getAuthorizationHeaderAsync);\r\n\r\n this.purgeHistoryDialogState = new PurgeHistoryDialogState(backendClient);\r\n\r\n if (!!this.orchestrationId) {\r\n this.orchestrationDetailsState = new OrchestrationDetailsState(this.orchestrationId,\r\n backendClient, \r\n new TypedLocalStorage('OrchestrationDetailsState'));\r\n } else {\r\n this.mainMenuState = new MainMenuState(backendClient, this.purgeHistoryDialogState);\r\n this.orchestrationsState = new OrchestrationsState(backendClient,\r\n new TypedLocalStorage('OrchestrationsState'));\r\n }\r\n }\r\n }\r\n\r\n // Extracts orchestrationId from URL or from VsCode\r\n private get orchestrationId(): string {\r\n\r\n if (!!OrchestrationIdFromVsCode) {\r\n return OrchestrationIdFromVsCode;\r\n }\r\n\r\n const uriSuffix = `${UriSuffix}/orchestrations/`;\r\n if (!window.location.pathname.startsWith(uriSuffix)) {\r\n return '';\r\n }\r\n\r\n return window.location.pathname.substr(uriSuffix.length);\r\n }\r\n}","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\n\nimport registerServiceWorker from './registerServiceWorker';\n\n// styles\nimport 'bootstrap/dist/css/bootstrap.css';\nimport './index.css';\n\nimport { Main } from './components/Main';\nimport { MainState } from './states/MainState';\n\n// This is the app's global state. It consists of multiple parts, consumed by multiple nested components\nconst appState = new MainState();\n\nReactDOM.render(\n
,\n document.getElementById('root') as HTMLElement\n);\n\nregisterServiceWorker();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/durablefunctionsmonitor.dotnetbackend/wwwroot/static/js/main.a0ea1d29.chunk.js b/durablefunctionsmonitor.dotnetbackend/wwwroot/static/js/main.a0ea1d29.chunk.js deleted file mode 100644 index 5968bb7..0000000 --- a/durablefunctionsmonitor.dotnetbackend/wwwroot/static/js/main.a0ea1d29.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(this["webpackJsonpdurablefunctionsmonitor.react"]=this["webpackJsonpdurablefunctionsmonitor.react"]||[]).push([[0],{108:function(e,t,n){e.exports=n(143)},114:function(e,t,n){},115:function(e,t,n){},116:function(e,t,n){},120:function(e,t,n){},122:function(e,t,n){},123:function(e,t,n){},124:function(e,t,n){},125:function(e,t,n){e.exports=n.p+"static/media/logo.9b5d7869.svg"},143:function(e,t,n){"use strict";n.r(t);var a=n(0),r=n(19),i=Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));function o(e){navigator.serviceWorker.register(e).then((function(e){e.onupdatefound=function(){var t=e.installing;t&&(t.onstatechange=function(){"installed"===t.state&&(navigator.serviceWorker.controller?console.log("New content is available; please refresh."):console.log("Content is cached for offline use."))})}})).catch((function(e){console.error("Error during service worker registration:",e)}))}n(113),n(114);var l,s,c,u,m,p,h,d,g,f,y,b,O,E,v,j,_,k,w,C,P,T,S,D,N=n(10),I=n(9),F=n(18),A=n(16),z=n(17),R=n(21),M=n(211),L=n(209),x=n(200),W=n(67),B=n(214),V=n(199),H=(n(115),n(182)),q=n(219),J=n(95),U=n(218),K=n(216),Y=n(189),G=n(190),$=n(191),Q=n(192),Z=n(186),X=n(193),ee=(n(116),Object(R.a)(l=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.state;return a.createElement("div",null,a.createElement(H.a,{color:e.isLoggedInAnonymously?"secondary":"inherit",onClick:function(t){return e.menuAnchorElement=t.currentTarget}},a.createElement(Z.a,null),a.createElement(M.a,{width:5}),a.createElement(q.a,{title:e.isLoggedInAnonymously?"Ensure this endpoint is not exposed to the public!":""},a.createElement(W.a,{color:e.isLoggedInAnonymously?"secondary":"inherit"},e.isLoggedInAnonymously?"Anonymous":e.userName))),!e.isLoggedInAnonymously&&a.createElement(J.a,{anchorEl:e.menuAnchorElement,keepMounted:!0,open:!!e.menuAnchorElement,onClose:function(){return e.menuAnchorElement=void 0}},a.createElement(U.a,{onClick:function(){return e.logout()}},"Login under a different name")),a.createElement(K.a,{open:!e.isLoggedIn},a.createElement(Y.a,null,!e.errorMessage&&a.createElement("div",null,a.createElement(G.a,{className:"login-progress"},a.createElement($.a,null)),a.createElement(Q.a,null,"Login in progress...")),!!e.errorMessage&&a.createElement("div",null,a.createElement(G.a,{className:"login-progress"},a.createElement(X.a,{color:"secondary",fontSize:"large"})),a.createElement(Q.a,{color:"secondary"},"Login failed. ",e.errorMessage)))))}}]),t}(a.Component))||l),te=n(144),ne=n(195),ae=n(196),re=n(197),ie=n(198),oe=n(92),le=n.n(oe),se=n(6),ce=n(5),ue=n(217),me=n(194),pe=n(91),he=n.n(pe),de=n(90),ge=n.n(de),fe=(n(120),s=ce.d.bound,Object(R.a)((u=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.state;return a.createElement(ue.a,{className:"message-snackbar",anchorOrigin:{vertical:"top",horizontal:"right"},open:!!e.errorMessage,autoHideDuration:6e3,onClose:this.handleClose},a.createElement(me.a,{className:"error-snackbar-content",message:a.createElement("span",null,a.createElement(ge.a,{className:"error-icon"}),e.errorMessage),action:[a.createElement(te.a,{key:"close","aria-label":"Close",color:"inherit",onClick:this.handleClose},a.createElement(he.a,null))]}))}},{key:"handleClose",value:function(){this.props.state.errorMessage=""}}]),t}(a.Component),Object(se.a)(u.prototype,"handleClose",[s],Object.getOwnPropertyDescriptor(u.prototype,"handleClose"),u.prototype),c=u))||c),ye=Object(R.a)(m=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"componentDidMount",value:function(){this.props.state.setWindowTitle()}},{key:"render",value:function(){var e=this.props.state;return a.createElement("div",null,a.createElement(te.a,{color:"inherit",onClick:function(t){return e.menuAnchorElement=t.currentTarget}},a.createElement(le.a,null)),a.createElement(J.a,{anchorEl:e.menuAnchorElement,keepMounted:!0,open:!!e.menuAnchorElement,onClose:function(){return e.menuAnchorElement=void 0}},a.createElement(U.a,{onClick:function(){return e.showConnectionParamsDialog()}},"Manage Storage Connection Settings..."),a.createElement(U.a,{onClick:function(){return e.showPurgeHistoryDialog()}},"Purge Instance History...")),a.createElement(K.a,{open:e.connectionParamsDialogOpen,onClose:function(){return e.connectionParamsDialogOpen=!1}},a.createElement(ne.a,null,"Manage Storage Connection Settings"),a.createElement(Y.a,null,e.inProgress?a.createElement(ae.a,null):a.createElement(M.a,{height:4}),a.createElement(Q.a,null,e.isReadonly?"Change the below values via your application settings ('DFM_HUB_NAME' and 'AzureWebJobsStorage' respectively":"The below values will be saved to local.settings.json file."),a.createElement(re.a,{autoFocus:!0,margin:"dense",label:"Hub Name",fullWidth:!0,disabled:e.inProgress||e.isReadonly,value:e.hubName,onChange:function(t){return e.hubName=t.target.value}}),a.createElement(re.a,{autoFocus:!0,margin:"dense",label:"Azure Storage Connection String",fullWidth:!0,InputLabelProps:{shrink:!0},disabled:e.inProgress||e.isReadonly,value:e.connectionString,onChange:function(t){return e.connectionString=t.target.value}}),a.createElement(fe,{state:e})),a.createElement(ie.a,null,a.createElement(H.a,{onClick:function(){return e.connectionParamsDialogOpen=!1},color:"primary"},"Cancel"),a.createElement(H.a,{onClick:function(){return e.saveConnectionParams()},disabled:!e.isDirty||e.isReadonly||!e.hubName||!e.connectionString||e.inProgress,color:"secondary"},"Save"))))}}]),t}(a.Component))||m,be=n(201),Oe=n(147),Ee=n(148),ve=n(215),je=n(152),_e=n(202),ke=n(203),we=n(212),Ce=n(150),Pe=n(204),Te=n(205),Se=n(206),De=n(207),Ne=n(220),Ie=n(208),Fe=n(98),Ae=n(64),ze=n.n(Ae),Re=(n(122),function(){function e(){Object(N.a)(this,e)}return Object(I.a)(e,null,[{key:"getDateTimeValue",value:function(e){var t=new Date(e.target.value.slice(0,16)+":00Z");try{t.toISOString()}catch(n){t=new Date}return t}},{key:"formatDateTime",value:function(e){return e.toISOString().slice(0,16)}}]),e}()),Me=["Timestamp","EventType","Name","ScheduledTime","Result","Details"],Le=function e(){Object(N.a)(this,e),this.instanceId=void 0,this.name=void 0,this.entityId=void 0,this.runtimeStatus=void 0,this.entityType=void 0,this.lastEvent=void 0,this.input=void 0,this.customStatus=void 0,this.output=void 0,this.createdTime=void 0,this.lastUpdatedTime=void 0,this.historyEvents=void 0},xe=["instanceId","name","createdTime","lastUpdatedTime","runtimeStatus","lastEvent","input","output","customStatus"],We=(p=ce.d.bound,Object(R.a)((d=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){return this.props.backendClient.isVsCode?a.createElement(V.a,{href:"#",onClick:this.onLinkClicked},this.props.orchestrationId):a.createElement(V.a,{href:"".concat("/api/monitor","/orchestrations/").concat(this.props.orchestrationId),target:"_blank"},this.props.orchestrationId)}},{key:"onLinkClicked",value:function(){this.props.backendClient.call("OpenInNewWindow",this.props.orchestrationId)}}]),t}(a.Component),Object(se.a)(d.prototype,"onLinkClicked",[p],Object.getOwnPropertyDescriptor(d.prototype,"onLinkClicked"),d.prototype),h=d))||h),Be=n(94),Ve=n(12),He=n(11),qe=(n(43),g=function e(){Object(N.a)(this,e),Object(Ve.a)(this,"errorMessage",f,this)},f=Object(se.a)(g.prototype,"errorMessage",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),g);!function(e){e[e.Equals=0]="Equals",e[e.StartsWith=1]="StartsWith",e[e.Contains=2]="Contains"}(S||(S={})),function(e){e[e.ShowBoth=0]="ShowBoth",e[e.OrchestrationsOnly=1]="OrchestrationsOnly",e[e.DurableEntitiesOnly=2]="DurableEntitiesOnly"}(D||(D={}));var Je,Ue,Ke,Ye,Ge,$e,Qe,Ze,Xe,et,tt,nt,at,rt,it,ot,lt,st,ct,ut,mt,pt,ht,dt,gt,ft,yt,bt,Ot,Et,vt,jt,_t,kt,wt,Ct,Pt,Tt,St,Dt,Nt,It,Ft,At=(y=function(e){function t(e,n){var a,r;Object(N.a)(this,t),(a=Object(F.a)(this,Object(A.a)(t).call(this)))._backendClient=e,a._localStorage=n,Object(Ve.a)(a,"_inProgress",b,Object(He.a)(a)),Object(Ve.a)(a,"_orchestrations",O,Object(He.a)(a)),Object(Ve.a)(a,"_orderByDirection",E,Object(He.a)(a)),Object(Ve.a)(a,"_orderBy",v,Object(He.a)(a)),Object(Ve.a)(a,"_autoRefresh",j,Object(He.a)(a)),Object(Ve.a)(a,"_timeFrom",_,Object(He.a)(a)),Object(Ve.a)(a,"_timeTill",k,Object(He.a)(a)),Object(Ve.a)(a,"_filterValue",w,Object(He.a)(a)),Object(Ve.a)(a,"_filterOperator",C,Object(He.a)(a)),Object(Ve.a)(a,"_filteredColumn",P,Object(He.a)(a)),Object(Ve.a)(a,"_showEntityType",T,Object(He.a)(a)),a._noMorePagesToLoad=!1,a._pageSize=50,a._autoRefreshToken=void 0,a._oldFilterValue="",a._oldTimeFrom=void 0,a._oldTimeTill=void 0;var i=a._localStorage.getItem("timeFrom");i?r=new Date(i):(r=new Date).setDate(r.getDate()-1),a._timeFrom=r,a._oldTimeFrom=r;var o=a._localStorage.getItem("timeTill");o&&(a._timeTill=new Date(o),a._oldTimeTill=a._timeTill);var l=a._localStorage.getItem("filteredColumn");l&&(a._filteredColumn=l);var s=a._localStorage.getItem("filterOperator");s&&(a._filterOperator=S[s]);var c=a._localStorage.getItem("filterValue");c&&(a._filterValue=c,a._oldFilterValue=c);var u=a._localStorage.getItem("showEntityType");u&&(a._showEntityType=D[u]);var m=a._localStorage.getItem("autoRefresh");m&&(a._autoRefresh=Number(m));var p=a._localStorage.getItem("orderBy");p&&(a._orderBy=p);var h=a._localStorage.getItem("orderByDirection");return h&&(a._orderByDirection=h),a}return Object(z.a)(t,e),Object(I.a)(t,[{key:"inProgress",get:function(){return this._inProgress}},{key:"orchestrations",get:function(){return this._orchestrations}},{key:"autoRefresh",get:function(){return this._autoRefresh},set:function(e){this._autoRefresh=e,this._localStorage.setItem("autoRefresh",this._autoRefresh.toString()),this.loadOrchestrations(!0)}},{key:"timeFrom",get:function(){return this._timeFrom},set:function(e){this._timeFrom=e,this.resetOrderBy()}},{key:"timeTill",get:function(){return this._timeTill?this._timeTill:new Date},set:function(e){this._timeTill=e,this.resetOrderBy()}},{key:"timeTillEnabled",get:function(){return!!this._timeTill},set:function(e){this._timeTill=e?new Date:void 0,e||(this.resetOrderBy(),this.reloadOrchestrations())}},{key:"orderByDirection",get:function(){return this._orderByDirection}},{key:"orderBy",get:function(){return this._orderBy},set:function(e){this._orderBy!==e?this._orderBy=e:this._orderByDirection="desc"===this._orderByDirection?"asc":"desc",this.reloadOrchestrations()}},{key:"filterValue",get:function(){return this._filterValue},set:function(e){this._filterValue=e}},{key:"filterOperator",get:function(){return this._filterOperator},set:function(e){this._filterOperator=e,this._filterValue&&"0"!==this._filteredColumn&&this.reloadOrchestrations()}},{key:"filteredColumn",get:function(){return this._filteredColumn},set:function(e){this._filteredColumn=e,this._filterValue&&("0"===this._filteredColumn&&(this._filterValue=""),this.reloadOrchestrations())}},{key:"showEntityType",get:function(){return D[this._showEntityType]},set:function(e){this._showEntityType=D[e],this.reloadOrchestrations()}},{key:"showLastEventColumn",get:function(){return"lastEvent"===this._filteredColumn&&!!this._oldFilterValue}},{key:"backendClient",get:function(){return this._backendClient}}]),Object(I.a)(t,[{key:"applyTimeFrom",value:function(){this._oldTimeFrom!==this._timeFrom&&this.reloadOrchestrations()}},{key:"applyTimeTill",value:function(){this._oldTimeTill!==this._timeTill&&this.reloadOrchestrations()}},{key:"applyFilterValue",value:function(){this._oldFilterValue!==this._filterValue&&this.reloadOrchestrations()}},{key:"reloadOrchestrations",value:function(){this._orchestrations=[],this._noMorePagesToLoad=!1,this._localStorage.setItems([{fieldName:"timeFrom",value:this._timeFrom.toISOString()},{fieldName:"timeTill",value:this._timeTill?this._timeTill.toISOString():null},{fieldName:"timeFrom",value:this._timeFrom.toISOString()},{fieldName:"filteredColumn",value:this._filteredColumn},{fieldName:"filterOperator",value:S[this._filterOperator]},{fieldName:"filterValue",value:this._filterValue?this._filterValue:null},{fieldName:"showEntityType",value:D[this._showEntityType]},{fieldName:"orderBy",value:this._orderBy},{fieldName:"orderByDirection",value:this._orderByDirection}]),this.loadOrchestrations(),this._oldFilterValue=this._filterValue,this._oldTimeFrom=this._timeFrom,this._oldTimeTill=this._timeTill}},{key:"loadOrchestrations",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!(this.inProgress||this._noMorePagesToLoad&&!this._autoRefresh)){this._inProgress=!0;var n=t?0:this._orchestrations.length,a=this._timeTill?this._timeTill:new Date,r="&$filter=createdTime ge '".concat(this._timeFrom.toISOString(),"' and createdTime le '").concat(a.toISOString(),"'");if(this._showEntityType===D.OrchestrationsOnly?r+=" and entityType eq 'Orchestration'":this._showEntityType===D.DurableEntitiesOnly&&(r+=" and entityType eq 'DurableEntity'"),this._filterValue&&"0"!==this._filteredColumn)switch(r+=" and ",this._filterOperator){case S.Equals:r+="".concat(this._filteredColumn," eq '").concat(this._filterValue,"'");break;case S.StartsWith:r+="startswith(".concat(this._filteredColumn,", '").concat(this._filterValue,"')");break;case S.Contains:r+="contains(".concat(this._filteredColumn,", '").concat(this._filterValue,"')")}var i=this._orderBy?"&$orderby=".concat(this._orderBy," ").concat(this.orderByDirection):"",o="/orchestrations?$top=".concat(this._pageSize,"&$skip=").concat(n).concat(r).concat(i);this._backendClient.call("GET",o).then((function(n){var a;n.length?t?e._orchestrations=n:(a=e._orchestrations).push.apply(a,Object(Be.a)(n)):e._noMorePagesToLoad=!0;e._autoRefresh&&(e._autoRefreshToken&&clearTimeout(e._autoRefreshToken),e._autoRefreshToken=setTimeout((function(){return e.loadOrchestrations(!0)}),1e3*e._autoRefresh))}),(function(t){e._autoRefresh=0,e.errorMessage="Load failed: ".concat(t.message,".").concat(t.response?t.response.data:""," ")})).finally((function(){e._inProgress=!1}))}}},{key:"resetOrderBy",value:function(){this._orderBy="",this._orderByDirection="asc"}}]),t}(qe),Object(se.a)(y.prototype,"inProgress",[ce.e],Object.getOwnPropertyDescriptor(y.prototype,"inProgress"),y.prototype),Object(se.a)(y.prototype,"orchestrations",[ce.e],Object.getOwnPropertyDescriptor(y.prototype,"orchestrations"),y.prototype),Object(se.a)(y.prototype,"autoRefresh",[ce.e],Object.getOwnPropertyDescriptor(y.prototype,"autoRefresh"),y.prototype),Object(se.a)(y.prototype,"timeFrom",[ce.e],Object.getOwnPropertyDescriptor(y.prototype,"timeFrom"),y.prototype),Object(se.a)(y.prototype,"timeTill",[ce.e],Object.getOwnPropertyDescriptor(y.prototype,"timeTill"),y.prototype),Object(se.a)(y.prototype,"timeTillEnabled",[ce.e],Object.getOwnPropertyDescriptor(y.prototype,"timeTillEnabled"),y.prototype),Object(se.a)(y.prototype,"orderByDirection",[ce.e],Object.getOwnPropertyDescriptor(y.prototype,"orderByDirection"),y.prototype),Object(se.a)(y.prototype,"orderBy",[ce.e],Object.getOwnPropertyDescriptor(y.prototype,"orderBy"),y.prototype),Object(se.a)(y.prototype,"filterValue",[ce.e],Object.getOwnPropertyDescriptor(y.prototype,"filterValue"),y.prototype),Object(se.a)(y.prototype,"filterOperator",[ce.e],Object.getOwnPropertyDescriptor(y.prototype,"filterOperator"),y.prototype),Object(se.a)(y.prototype,"filteredColumn",[ce.e],Object.getOwnPropertyDescriptor(y.prototype,"filteredColumn"),y.prototype),Object(se.a)(y.prototype,"showEntityType",[ce.e],Object.getOwnPropertyDescriptor(y.prototype,"showEntityType"),y.prototype),Object(se.a)(y.prototype,"showLastEventColumn",[ce.e],Object.getOwnPropertyDescriptor(y.prototype,"showLastEventColumn"),y.prototype),b=Object(se.a)(y.prototype,"_inProgress",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),O=Object(se.a)(y.prototype,"_orchestrations",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return[]}}),E=Object(se.a)(y.prototype,"_orderByDirection",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return"asc"}}),v=Object(se.a)(y.prototype,"_orderBy",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),j=Object(se.a)(y.prototype,"_autoRefresh",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return 0}}),_=Object(se.a)(y.prototype,"_timeFrom",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),k=Object(se.a)(y.prototype,"_timeTill",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),w=Object(se.a)(y.prototype,"_filterValue",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),C=Object(se.a)(y.prototype,"_filterOperator",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return S.Equals}}),P=Object(se.a)(y.prototype,"_filteredColumn",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return"0"}}),T=Object(se.a)(y.prototype,"_showEntityType",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return D.ShowBoth}}),y),zt=(Je=ce.d.bound,Object(R.a)((Ke=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"componentDidMount",value:function(){var e=this;this.props.state.loadOrchestrations(),document.addEventListener("scroll",(function(t){var n=t.target.scrollingElement;if(n){n.scrollHeight-window.innerHeight-n.scrollTop<100&&e.props.state.loadOrchestrations()}}))}},{key:"render",value:function(){var e=this.props.state;return a.createElement("div",null,e.inProgress?a.createElement(ae.a,null):a.createElement(M.a,{height:4}),a.createElement(x.a,{variant:"dense",className:"top-toolbar"},a.createElement(be.a,{container:!0,className:"toolbar-grid1"},a.createElement(be.a,{item:!0,xs:12},a.createElement(re.a,{className:"from-input",style:{marginLeft:10},label:"From \xa0\xa0 (UTC)",type:"datetime-local",InputLabelProps:{shrink:!0},disabled:e.inProgress,value:Re.formatDateTime(e.timeFrom),onChange:function(t){e.timeFrom=Re.getDateTimeValue(t)},onBlur:function(){return e.applyTimeFrom()},onKeyPress:this.handleKeyPress})),a.createElement(be.a,{item:!0,xs:12,className:"toolbar-grid1-item2"},a.createElement(Oe.a,null,a.createElement(Ee.a,{className:"till-label",htmlFor:"till-checkbox",shrink:!0},"Till"),a.createElement(ve.a,{id:"till-checkbox",className:"till-checkbox",disabled:e.inProgress,checked:e.timeTillEnabled,onChange:function(t){return e.timeTillEnabled=t.target.checked}})),a.createElement(re.a,{className:"till-input",label:"(UTC)",placeholder:"[Now]",InputLabelProps:{shrink:!0},type:e.timeTillEnabled?"datetime-local":"text",disabled:!e.timeTillEnabled||e.inProgress,value:e.timeTillEnabled?Re.formatDateTime(e.timeTill):"",onChange:function(t){e.timeTill=Re.getDateTimeValue(t)},onBlur:function(){return e.applyTimeTill()},onKeyPress:this.handleKeyPress}))),a.createElement(be.a,{container:!0,className:"toolbar-grid2"},a.createElement(be.a,{item:!0,xs:12},a.createElement(Oe.a,null,a.createElement(Ee.a,{htmlFor:"filtered-column-select"},"Filtered Column"),a.createElement(je.a,{className:"toolbar-select filtered-column-input",disabled:e.inProgress,value:e.filteredColumn,onChange:function(t){return e.filteredColumn=t.target.value},inputProps:{id:"filtered-column-select"}},a.createElement(U.a,{value:"0"},"[Not Selected]"),xe.map((function(e){return a.createElement(U.a,{key:e,value:e},e)})))),a.createElement(Oe.a,{className:"toolbar-grid2-item1-select"},a.createElement(Ee.a,{htmlFor:"filter-operator-select"},"Filter Operator"),a.createElement(je.a,{className:"toolbar-select",disabled:e.inProgress,value:e.filterOperator,onChange:function(t){return e.filterOperator=t.target.value},inputProps:{id:"filter-operator-select"}},a.createElement(U.a,{value:0},"Equals"),a.createElement(U.a,{value:1},"Starts With"),a.createElement(U.a,{value:2},"Contains")))),a.createElement(be.a,{item:!0,xs:12,className:"toolbar-grid2-item2"},a.createElement(re.a,{className:"filter-value-input",label:"Filter Value",InputLabelProps:{shrink:!0},placeholder:"[some text or 'null']",disabled:"0"===e.filteredColumn||e.inProgress,value:e.filterValue,onChange:function(t){return e.filterValue=t.target.value},onBlur:function(){return e.applyFilterValue()},onKeyPress:this.handleKeyPress}))),a.createElement(_e.a,{value:e.showEntityType,onChange:function(t){return e.showEntityType=t.target.value}},a.createElement(ke.a,{className:"entity-type-radio",disabled:e.inProgress,value:D[D.ShowBoth],control:a.createElement(we.a,null),label:a.createElement(W.a,{variant:"subtitle2"},"Show both")}),a.createElement(ke.a,{className:"entity-type-radio",disabled:e.inProgress,value:D[D.OrchestrationsOnly],control:a.createElement(we.a,null),label:a.createElement(W.a,{variant:"subtitle2"},"Orchestrations only")}),a.createElement(ke.a,{className:"entity-type-radio",disabled:e.inProgress,value:D[D.DurableEntitiesOnly],control:a.createElement(we.a,null),label:a.createElement(W.a,{variant:"subtitle2"},"Durable Entities only")})),a.createElement(W.a,{style:{flex:1}}),a.createElement(be.a,{container:!0,className:"toolbar-grid3"},a.createElement(be.a,{item:!0,xs:12},a.createElement(Oe.a,{className:"form-control-float-right"},a.createElement(Ee.a,{htmlFor:"auto-refresh-select"},"Auto-refresh"),a.createElement(je.a,{className:"toolbar-select",inputProps:{id:"auto-refresh-select"},value:e.autoRefresh,onChange:function(t){return e.autoRefresh=t.target.value}},a.createElement(U.a,{value:0},"Never"),a.createElement(U.a,{value:1},"Every 1 sec."),a.createElement(U.a,{value:5},"Every 5 sec."),a.createElement(U.a,{value:10},"Every 10 sec.")))),a.createElement(be.a,{item:!0,xs:12,className:"toolbar-grid3-item2"},a.createElement(H.a,{className:"refresh-button form-control-float-right",variant:"outlined",color:"default",size:"large",onClick:function(){return e.reloadOrchestrations()}},a.createElement(ze.a,null))))),a.createElement(Ce.a,{className:"items-count-label"},e.orchestrations.length?"".concat(e.orchestrations.length," items shown"):""),e.orchestrations.length?this.renderTable(e):this.renderEmptyTable(),e.inProgress&&e.orchestrations.length?a.createElement(ae.a,null):a.createElement(M.a,{height:4}),a.createElement(x.a,{variant:"dense"}),a.createElement(fe,{state:this.props.state}))}},{key:"renderEmptyTable",value:function(){return a.createElement(W.a,{variant:"h5",className:"empty-table-placeholder"},"This list is empty")}},{key:"renderTable",value:function(e){return a.createElement(Pe.a,{size:"small"},a.createElement(Te.a,null,a.createElement(Se.a,null,xe.filter((function(t){return!!e.showLastEventColumn||"lastEvent"!==t})).map((function(t){return a.createElement(De.a,{key:t},a.createElement(Ne.a,{active:e.orderBy===t,direction:e.orderByDirection,onClick:function(){return e.orderBy=t}},t))})))),a.createElement(Ie.a,null,e.orchestrations.map((function(t){var n={verticalAlign:"top"};return a.createElement(Se.a,{key:t.instanceId,className:"runtime-status-"+t.runtimeStatus.toString().toLowerCase()},a.createElement(De.a,{className:"instance-id-cell",style:n},a.createElement(We,{orchestrationId:t.instanceId,backendClient:e.backendClient})),a.createElement(De.a,{className:"name-cell",style:n},t.name),a.createElement(De.a,{className:"datetime-cell",style:n},t.createdTime),a.createElement(De.a,{className:"datetime-cell",style:n},t.lastUpdatedTime),a.createElement(De.a,{style:n},t.runtimeStatus),e.showLastEventColumn&&a.createElement(De.a,{style:n},t.lastEvent),a.createElement(De.a,{className:"long-text-cell",style:n},a.createElement(Fe.a,{className:"long-text-cell-input",multiline:!0,fullWidth:!0,rowsMax:5,readOnly:!0,value:JSON.stringify(t.input)})),a.createElement(De.a,{className:"output-cell",style:n},a.createElement(Fe.a,{className:"long-text-cell-input",multiline:!0,fullWidth:!0,rowsMax:5,readOnly:!0,value:JSON.stringify(t.output)})),a.createElement(De.a,{className:"output-cell",style:n},a.createElement(Fe.a,{className:"long-text-cell-input",multiline:!0,fullWidth:!0,rowsMax:5,readOnly:!0,value:JSON.stringify(t.customStatus)})))}))))}},{key:"handleKeyPress",value:function(e){"Enter"===e.key&&(e.preventDefault(),this.props.state.reloadOrchestrations())}}]),t}(a.Component),Object(se.a)(Ke.prototype,"handleKeyPress",[Je],Object.getOwnPropertyDescriptor(Ke.prototype,"handleKeyPress"),Ke.prototype),Ue=Ke))||Ue),Rt=(n(123),Object(R.a)(Ye=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.state;return a.createElement(a.Fragment,null,this.renderDialogs(e),a.createElement(H.a,{variant:"outlined",color:"primary",size:"large",onClick:function(){return e.purgeConfirmationOpen=!0}},"Purge"))}},{key:"renderDialogs",value:function(e){return a.createElement(a.Fragment,null,a.createElement(K.a,{open:e.purgeConfirmationOpen,onClose:function(){return e.purgeConfirmationOpen=!1}},a.createElement(ne.a,null,"Confirm Purge"),a.createElement(Y.a,null,a.createElement(Q.a,null,"You're about to purge entity '",e.orchestrationId,"'. This operation drops entity state from the underlying storage and cannot be undone. Are you sure?")),a.createElement(ie.a,null,a.createElement(H.a,{onClick:function(){return e.purgeConfirmationOpen=!1},color:"primary",autoFocus:!0},"Cancel"),a.createElement(H.a,{onClick:function(){return e.purge()},color:"secondary"},"Yes, purge"))))}}]),t}(a.Component))||Ye),Mt=Object(R.a)(Ge=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.details;return a.createElement(a.Fragment,null,a.createElement(be.a,{container:!0,className:"grid-container"},a.createElement(be.a,{item:!0,xs:12,sm:12,md:3,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"entityId.name",value:e.entityId.name,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0})),a.createElement(be.a,{item:!0,xs:12,sm:6,md:3,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"entityId.key",value:e.entityId.key,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0})),a.createElement(be.a,{item:!0,xs:12,sm:6,md:2,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"createdTime",value:e.createdTime,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0})),a.createElement(be.a,{item:!0,xs:12,sm:6,md:2,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"lastUpdatedTime",value:e.lastUpdatedTime,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0})),a.createElement(be.a,{item:!0,xs:12,sm:6,md:2,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"runtimeStatus",value:e.runtimeStatus,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0,className:e.runtimeStatus?"runtime-status-"+e.runtimeStatus.toLowerCase():""})),a.createElement(be.a,{item:!0,xs:12,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"input",value:JSON.stringify(e.input),margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0,multiline:!0,rowsMax:5})),a.createElement(be.a,{item:!0,xs:12,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"customStatus",value:JSON.stringify(e.customStatus),margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0,multiline:!0,rowsMax:5}))))}}]),t}(a.Component))||Ge,Lt=Object(R.a)($e=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.state;return a.createElement(a.Fragment,null,this.renderDialogs(e),a.createElement(H.a,{variant:"outlined",color:"primary",size:"large",onClick:function(){return e.rewindConfirmationOpen=!0}},"Rewind"),a.createElement(M.a,{width:20}),a.createElement(H.a,{variant:"outlined",color:"primary",size:"large",onClick:function(){return e.terminateConfirmationOpen=!0}},"Terminate"),a.createElement(M.a,{width:20}),a.createElement(H.a,{variant:"outlined",color:"primary",size:"large",onClick:function(){return e.dialogOpen=!0}},"Raise Event"),a.createElement(M.a,{width:20}),a.createElement(H.a,{variant:"outlined",color:"primary",size:"large",onClick:function(){return e.purgeConfirmationOpen=!0}},"Purge"))}},{key:"renderDialogs",value:function(e){return a.createElement(a.Fragment,null,a.createElement(K.a,{open:e.rewindConfirmationOpen,onClose:function(){return e.rewindConfirmationOpen=!1}},a.createElement(ne.a,null,"Confirm Rewind"),a.createElement(Y.a,null,a.createElement(Q.a,null,"You're about to rewind orchestration '",e.orchestrationId,"'. Are you sure?")),a.createElement(ie.a,null,a.createElement(H.a,{onClick:function(){return e.rewindConfirmationOpen=!1},color:"primary",autoFocus:!0},"Cancel"),a.createElement(H.a,{onClick:function(){return e.rewind()},color:"secondary"},"Yes, rewind"))),a.createElement(K.a,{open:e.terminateConfirmationOpen,onClose:function(){return e.terminateConfirmationOpen=!1}},a.createElement(ne.a,null,"Confirm Terminate"),a.createElement(Y.a,null,a.createElement(Q.a,null,"You're about to terminate orchestration '",e.orchestrationId,"'. This operation cannot be undone. Are you sure?")),a.createElement(ie.a,null,a.createElement(H.a,{onClick:function(){return e.terminateConfirmationOpen=!1},color:"primary",autoFocus:!0},"Cancel"),a.createElement(H.a,{onClick:function(){return e.terminate()},color:"secondary"},"Yes, terminate"))),a.createElement(K.a,{open:e.dialogOpen,onClose:function(){return e.dialogOpen=!1}},a.createElement(ne.a,null,"Raise Event"),a.createElement(Y.a,null,a.createElement(Q.a,null,"Provide event name and some additional data."),a.createElement(re.a,{autoFocus:!0,margin:"dense",label:"Event Name",fullWidth:!0,value:e.eventName,onChange:function(t){return e.eventName=t.target.value}}),a.createElement(re.a,{margin:"dense",label:"Event Data (JSON)",fullWidth:!0,multiline:!0,rows:7,value:e.eventData,onChange:function(t){return e.eventData=t.target.value}})),a.createElement(ie.a,null,a.createElement(H.a,{onClick:function(){return e.dialogOpen=!1},color:"primary"},"Cancel"),a.createElement(H.a,{onClick:function(){return e.raiseEvent()},disabled:!e.eventName,color:"secondary"},"Raise"))),a.createElement(K.a,{open:e.purgeConfirmationOpen,onClose:function(){return e.purgeConfirmationOpen=!1}},a.createElement(ne.a,null,"Confirm Purge"),a.createElement(Y.a,null,a.createElement(Q.a,null,"You're about to purge orchestration '",e.orchestrationId,"'. This operation drops orchestration state from the underlying storage and cannot be undone. Are you sure?")),a.createElement(ie.a,null,a.createElement(H.a,{onClick:function(){return e.purgeConfirmationOpen=!1},color:"primary",autoFocus:!0},"Cancel"),a.createElement(H.a,{onClick:function(){return e.purge()},color:"secondary"},"Yes, purge"))))}}]),t}(a.Component))||$e,xt=Object(R.a)(Qe=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.details;return a.createElement(a.Fragment,null,a.createElement(be.a,{container:!0,className:"grid-container"},a.createElement(be.a,{item:!0,xs:12,sm:12,md:3,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"name",value:e.name,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0})),a.createElement(be.a,{item:!0,xs:12,sm:6,md:2,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"createdTime",value:e.createdTime,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0})),a.createElement(be.a,{item:!0,xs:12,sm:6,md:2,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"lastUpdatedTime",value:e.lastUpdatedTime,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0})),a.createElement(be.a,{item:!0,xs:12,sm:6,md:2,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"runtimeStatus",value:e.runtimeStatus,margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0,className:e.runtimeStatus?"runtime-status-"+e.runtimeStatus.toLowerCase():""})),a.createElement(be.a,{item:!0,xs:12,sm:6,md:3,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"customStatus",value:JSON.stringify(e.customStatus),margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0})),a.createElement(be.a,{item:!0,xs:12,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"input",value:JSON.stringify(e.input),margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0,multiline:!0,rowsMax:5})),a.createElement(be.a,{item:!0,xs:12,zeroMinWidth:!0,className:"grid-item"},a.createElement(re.a,{label:"output",value:JSON.stringify(e.output),margin:"normal",InputProps:{readOnly:!0},InputLabelProps:{shrink:!0},variant:"outlined",fullWidth:!0,multiline:!0,rowsMax:5}))),a.createElement(Ce.a,{className:"history-events-count-label"},"historyEvents: ",e.historyEvents?e.historyEvents.length:0," items"),this.renderTable(e.historyEvents))}},{key:"renderEmptyTable",value:function(){return a.createElement(W.a,{variant:"h5",className:"empty-table-placeholder"},"This list is empty")}},{key:"renderTable",value:function(e){return e&&e.length?a.createElement(Pe.a,{size:"small"},a.createElement(Te.a,null,a.createElement(Se.a,null,Me.map((function(e){return a.createElement(De.a,{key:e},e)})))),a.createElement(Ie.a,null,e.map((function(e,t){var n={verticalAlign:"top"};return a.createElement(Se.a,{key:t},a.createElement(De.a,{style:n},e.Timestamp),a.createElement(De.a,{style:n},e.EventType),a.createElement(De.a,{className:"name-cell",style:n},e.Name?e.Name:e.FunctionName),a.createElement(De.a,{style:n},e.ScheduledTime),a.createElement(De.a,{className:"long-text-cell",style:n},a.createElement(Fe.a,{className:"long-text-cell-input",multiline:!0,fullWidth:!0,rowsMax:5,readOnly:!0,value:JSON.stringify(e.Result)})),a.createElement(De.a,{className:"long-text-cell",style:n},a.createElement(Fe.a,{className:"long-text-cell-input",multiline:!0,fullWidth:!0,rowsMax:5,readOnly:!0,value:e.Details})))})))):this.renderEmptyTable()}}]),t}(a.Component))||Qe,Wt=Object(R.a)(Ze=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"componentDidMount",value:function(){this.props.state.loadDetails()}},{key:"render",value:function(){var e=this.props.state;return a.createElement("div",null,e.inProgress?a.createElement(ae.a,null):a.createElement(M.a,{height:4}),a.createElement(x.a,{variant:"dense",className:"top-toolbar"},"Orchestration"===e.details.entityType&&a.createElement(Lt,{state:e}),"DurableEntity"===e.details.entityType&&a.createElement(Rt,{state:e}),a.createElement(M.a,{width:20}),a.createElement(W.a,{style:{flex:1}}),a.createElement(Oe.a,null,a.createElement(Ee.a,{htmlFor:"auto-refresh-select"},"Auto-refresh"),a.createElement(je.a,{className:"toolbar-select",value:e.autoRefresh,onChange:function(t){return e.autoRefresh=t.target.value},inputProps:{id:"auto-refresh-select"}},a.createElement(U.a,{value:0},"Never"),a.createElement(U.a,{value:1},"Every 1 sec."),a.createElement(U.a,{value:5},"Every 5 sec."),a.createElement(U.a,{value:10},"Every 10 sec."))),a.createElement(M.a,{width:20}),a.createElement(H.a,{className:"refresh-button",variant:"outlined",color:"default",size:"large",onClick:function(){return e.loadDetails()}},a.createElement(ze.a,null))),"Orchestration"===e.details.entityType&&a.createElement(xt,{details:e.details}),"DurableEntity"===e.details.entityType&&a.createElement(Mt,{details:e.details}),e.inProgress?a.createElement(ae.a,null):a.createElement(M.a,{height:4}),a.createElement(M.a,{height:10}),a.createElement(fe,{state:this.props.state}))}}]),t}(a.Component))||Ze,Bt=n(149),Vt=n(151),Ht=(n(124),Object(R.a)(Xe=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.state;return a.createElement(K.a,{open:e.dialogOpen,onClose:function(){e.inProgress||(e.dialogOpen=!1)}},a.createElement(ne.a,null,"Purge Instance History"),null===e.instancesDeleted&&a.createElement("div",null,a.createElement(Y.a,null,e.inProgress?a.createElement(ae.a,null):a.createElement(M.a,{height:4}),a.createElement(Q.a,null,"WARNING: this operation drops instance states from the underlying storage and cannot be undone.","DurableEntity"===e.entityType&&a.createElement(W.a,{color:"error"},"It might as well remove Durable Entities, that are still active. Ensure that you specify the correct time frame!")),a.createElement(Oe.a,{className:"purge-history-statuses",disabled:e.inProgress,fullWidth:!0},a.createElement(Bt.a,null,"Apply to:"),a.createElement(_e.a,{row:!0,value:e.entityType,onChange:function(t){return e.entityType=t.target.value}},a.createElement(ke.a,{disabled:e.inProgress,value:"Orchestration",control:a.createElement(we.a,null),label:"Orchestrations"}),a.createElement(ke.a,{disabled:e.inProgress,value:"DurableEntity",control:a.createElement(we.a,null),label:"Durable Entities"}))),a.createElement(re.a,{className:"purge-history-from-input",label:"From (UTC)",type:"datetime-local",InputLabelProps:{shrink:!0},disabled:e.inProgress,value:Re.formatDateTime(e.timeFrom),onChange:function(t){e.timeFrom=Re.getDateTimeValue(t)}}),a.createElement(re.a,{className:"purge-history-till-input",label:"Till (UTC)",type:"datetime-local",InputLabelProps:{shrink:!0},disabled:e.inProgress,value:Re.formatDateTime(e.timeTill),onChange:function(t){e.timeTill=Re.getDateTimeValue(t)}}),a.createElement(Oe.a,{className:"purge-history-statuses",disabled:e.inProgress},a.createElement(Bt.a,null,"With the following status:"),"Orchestration"===e.entityType&&a.createElement(Vt.a,{row:!0},a.createElement(qt,{state:e,runtimeStatus:"Completed"}),a.createElement(qt,{state:e,runtimeStatus:"Failed"}),a.createElement(qt,{state:e,runtimeStatus:"Terminated"})),"DurableEntity"===e.entityType&&a.createElement(Vt.a,{row:!0},a.createElement(q.a,{title:"Durable Entities are always in 'Running' state"},a.createElement(ke.a,{control:a.createElement(ve.a,{checked:!0}),label:"Running",disabled:!0})))),a.createElement(fe,{state:e})),a.createElement(ie.a,null,a.createElement(H.a,{onClick:function(){return e.dialogOpen=!1},disabled:e.inProgress,color:"primary"},"Cancel"),a.createElement(H.a,{onClick:function(){return e.purgeHistory()},disabled:!e.isValid||e.inProgress,color:"secondary"},"Purge"))),null!==e.instancesDeleted&&a.createElement("div",null,a.createElement(Y.a,null,a.createElement(Q.a,{className:"success-message"},e.instancesDeleted," instances were deleted.")),a.createElement(ie.a,null,a.createElement(H.a,{onClick:function(){return e.dialogOpen=!1},color:"primary"},"Close"))))}}]),t}(a.Component))||Xe),qt=Object(R.a)(et=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.state,t=this.props.runtimeStatus;return a.createElement(ke.a,{control:a.createElement(ve.a,{checked:e.getStatusIncluded(t),onChange:function(n){return e.setStatusIncluded(t,n.target.checked)}}),label:t})}}]),t}(a.Component))||et,Jt=n(125),Ut=Object(R.a)(tt=function(e){function t(){return Object(N.a)(this,t),Object(F.a)(this,Object(A.a)(t).apply(this,arguments))}return Object(z.a)(t,e),Object(I.a)(t,[{key:"render",value:function(){var e=this.props.state;return a.createElement("div",null,!e.loginState&&a.createElement(M.a,{height:20}),!!e.loginState&&a.createElement(L.a,{position:"static",color:"default",className:"app-bar"},a.createElement(x.a,null,e.loginState.isLoggedIn&&!!e.mainMenuState&&a.createElement(ye,{state:e.mainMenuState}),a.createElement("img",{src:Jt,width:"30px"}),a.createElement(M.a,{width:5}),a.createElement(W.a,{variant:"h6",color:"inherit",className:"title-typography"},"Durable Functions Monitor"),a.createElement(B.a,{color:"inherit"},a.createElement(V.a,{color:"inherit",href:"/api/monitor"},"/ instances"),!!e.orchestrationDetailsState&&a.createElement(W.a,{color:"inherit"},e.orchestrationDetailsState.orchestrationId)),a.createElement(W.a,{style:{flex:1}}),a.createElement(ee,{state:e.loginState}))),!!e.orchestrationsState&&(!e.loginState||e.loginState.isLoggedIn)&&a.createElement(zt,{state:e.orchestrationsState}),!!e.orchestrationDetailsState&&(!e.loginState||e.loginState.isLoggedIn)&&a.createElement(Wt,{state:e.orchestrationDetailsState}),a.createElement(Ht,{state:e.purgeHistoryDialogState}))}}]),t}(a.Component))||tt,Kt=n(66),Yt=n.n(Kt),Gt=function(){function e(t){Object(N.a)(this,e),this._getAuthorizationHeaderAsync=t}return Object(I.a)(e,[{key:"isVsCode",get:function(){return!1}}]),Object(I.a)(e,[{key:"call",value:function(e,t,n){var a=this;return new Promise((function(r,i){a._getAuthorizationHeaderAsync().then((function(a){Yt.a.request({url:"/api"+t,method:e,data:n,headers:a}).then((function(e){r(e.data)}),i)}))}))}}]),e}(),$t=n(93),Qt=(nt=ce.d.bound,at=ce.d.bound,rt=ce.d.bound,it=function(e){function t(){var e;return Object(N.a)(this,t),e=Object(F.a)(this,Object(A.a)(t).call(this)),Object(Ve.a)(e,"menuAnchorElement",ot,Object(He.a)(e)),Object(Ve.a)(e,"_isLoggedIn",lt,Object(He.a)(e)),Object(Ve.a)(e,"_userName",st,Object(He.a)(e)),e._aadApp=void 0,e.login(),e}return Object(z.a)(t,e),Object(I.a)(t,[{key:"isLoggedIn",get:function(){return this._isLoggedIn}},{key:"isLoggedInAnonymously",get:function(){return!this._userName}},{key:"userName",get:function(){return this._userName}}]),Object(I.a)(t,[{key:"login",value:function(){var e=this,t="".concat("/api","/easyauth-config");Yt.a.get(t).then(this.loginWithEasyAuthConfig,(function(t){e.errorMessage="".concat(t.message,".").concat(t.response?t.response.data:"")}))}},{key:"logout",value:function(){this.menuAnchorElement=void 0,this._aadApp.logout()}},{key:"getAuthorizationHeaderAsync",value:function(){var e=this;return this._aadApp?new Promise((function(t,n){var a={scopes:[e._aadApp.getCurrentConfiguration().auth.clientId]};e._aadApp.acquireTokenSilent(a).then((function(e){var n=e.accessToken;n||(console.log("DFM: accessToken is null, so using idToken.rawIdToken instead"),n=e.idToken.rawIdToken),t({Authorization:"Bearer ".concat(n)})}),(function(t){console.log("DFM: acquireTokenSilent() failed (".concat(t,"), so calling acquireTokenRedirect()...")),e._aadApp.acquireTokenRedirect(a)}))})):new Promise((function(e,t){return e()}))}},{key:"loginWithEasyAuthConfig",value:function(e){var t=e.data;if(t.clientId){this._aadApp=new $t.a({auth:{clientId:t.clientId,authority:t.authority}}),this._aadApp.handleRedirectCallback((function(){}),this.handleRedirectCallbackFailed);var n=this._aadApp.getAccount();n?(this._userName=n.userName,this._isLoggedIn=!0):(console.log("DFM: redirecting user to AAD for login..."),this._aadApp.loginRedirect())}else this._isLoggedIn=!0}},{key:"handleRedirectCallbackFailed",value:function(e,t){this.errorMessage="Failed to handle login redirect. name: ".concat(e.name,", message: ").concat(e.message,", errorCode: ").concat(e.errorCode,", errorMessage: ").concat(e.errorMessage,", accountState: ").concat(t)}}]),t}(qe),Object(se.a)(it.prototype,"isLoggedIn",[ce.e],Object.getOwnPropertyDescriptor(it.prototype,"isLoggedIn"),it.prototype),Object(se.a)(it.prototype,"isLoggedInAnonymously",[ce.e],Object.getOwnPropertyDescriptor(it.prototype,"isLoggedInAnonymously"),it.prototype),Object(se.a)(it.prototype,"userName",[ce.e],Object.getOwnPropertyDescriptor(it.prototype,"userName"),it.prototype),ot=Object(se.a)(it.prototype,"menuAnchorElement",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),Object(se.a)(it.prototype,"getAuthorizationHeaderAsync",[nt],Object.getOwnPropertyDescriptor(it.prototype,"getAuthorizationHeaderAsync"),it.prototype),lt=Object(se.a)(it.prototype,"_isLoggedIn",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),st=Object(se.a)(it.prototype,"_userName",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),Object(se.a)(it.prototype,"loginWithEasyAuthConfig",[at],Object.getOwnPropertyDescriptor(it.prototype,"loginWithEasyAuthConfig"),it.prototype),Object(se.a)(it.prototype,"handleRedirectCallbackFailed",[rt],Object.getOwnPropertyDescriptor(it.prototype,"handleRedirectCallbackFailed"),it.prototype),it),Zt=(ct=function(e){function t(e,n){var a;return Object(N.a)(this,t),(a=Object(F.a)(this,Object(A.a)(t).call(this)))._backendClient=e,a._purgeHistoryDialogState=n,Object(Ve.a)(a,"menuAnchorElement",ut,Object(He.a)(a)),Object(Ve.a)(a,"hubName",mt,Object(He.a)(a)),Object(Ve.a)(a,"connectionString",pt,Object(He.a)(a)),Object(Ve.a)(a,"connectionParamsDialogOpen",ht,Object(He.a)(a)),Object(Ve.a)(a,"_inProgress",dt,Object(He.a)(a)),Object(Ve.a)(a,"_isReadOnly",gt,Object(He.a)(a)),a._oldConnectionString=void 0,a._oldHubName=void 0,a}return Object(z.a)(t,e),Object(I.a)(t,[{key:"inProgress",get:function(){return this._inProgress}},{key:"isReadonly",get:function(){return this._isReadOnly}},{key:"isDirty",get:function(){return this.connectionString!==this._oldConnectionString||this.hubName!==this._oldHubName}}]),Object(I.a)(t,[{key:"showConnectionParamsDialog",value:function(){var e=this;this.menuAnchorElement=void 0,this.connectionParamsDialogOpen=!0,this._inProgress=!0,this._backendClient.call("GET","/manage-connection").then((function(t){e.connectionString=e._oldConnectionString=t.connectionString,e.hubName=e._oldHubName=t.hubName,e._isReadOnly=t.isReadOnly}),(function(t){e.errorMessage="Load failed: ".concat(t.message,".").concat(t.response?t.response.data:""," ")})).finally((function(){e._inProgress=!1}))}},{key:"saveConnectionParams",value:function(){var e=this;this._inProgress=!0,this._backendClient.call("PUT","/manage-connection",{connectionString:this.connectionString!==this._oldConnectionString?this.connectionString:"",hubName:this.hubName}).then((function(){e.connectionParamsDialogOpen=!1,alert("Your changes were saved to local.settings.json file, but they cannot be picked up automatically. Please, restart the Function Host for them to take effect.")}),(function(t){e.errorMessage="Save failed: ".concat(t.message,".").concat(t.response?t.response.data:""," ")})).finally((function(){e._inProgress=!1}))}},{key:"showPurgeHistoryDialog",value:function(){this.menuAnchorElement=void 0,this._purgeHistoryDialogState.dialogOpen=!0}},{key:"setWindowTitle",value:function(){this._backendClient.call("GET","/about").then((function(e){document.title="Durable Functions Monitor (".concat(e.accountName,"/").concat(e.hubName,") v").concat(e.version)}))}}]),t}(qe),ut=Object(se.a)(ct.prototype,"menuAnchorElement",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),mt=Object(se.a)(ct.prototype,"hubName",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),pt=Object(se.a)(ct.prototype,"connectionString",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),ht=Object(se.a)(ct.prototype,"connectionParamsDialogOpen",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),Object(se.a)(ct.prototype,"inProgress",[ce.e],Object.getOwnPropertyDescriptor(ct.prototype,"inProgress"),ct.prototype),Object(se.a)(ct.prototype,"isReadonly",[ce.e],Object.getOwnPropertyDescriptor(ct.prototype,"isReadonly"),ct.prototype),Object(se.a)(ct.prototype,"isDirty",[ce.e],Object.getOwnPropertyDescriptor(ct.prototype,"isDirty"),ct.prototype),dt=Object(se.a)(ct.prototype,"_inProgress",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),gt=Object(se.a)(ct.prototype,"_isReadOnly",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),ct),Xt=(ft=function(e){function t(e,n,a){var r;Object(N.a)(this,t),(r=Object(F.a)(this,Object(A.a)(t).call(this)))._orchestrationId=e,r._backendClient=n,r._localStorage=a,Object(Ve.a)(r,"details",yt,Object(He.a)(r)),Object(Ve.a)(r,"rewindConfirmationOpen",bt,Object(He.a)(r)),Object(Ve.a)(r,"terminateConfirmationOpen",Ot,Object(He.a)(r)),Object(Ve.a)(r,"purgeConfirmationOpen",Et,Object(He.a)(r)),Object(Ve.a)(r,"eventName",vt,Object(He.a)(r)),Object(Ve.a)(r,"eventData",jt,Object(He.a)(r)),Object(Ve.a)(r,"_inProgress",_t,Object(He.a)(r)),Object(Ve.a)(r,"_dialogOpen",kt,Object(He.a)(r)),Object(Ve.a)(r,"_autoRefresh",wt,Object(He.a)(r)),r._autoRefreshToken=void 0;var i=r._localStorage.getItem("autoRefresh");return i&&(r._autoRefresh=Number(i)),r}return Object(z.a)(t,e),Object(I.a)(t,[{key:"orchestrationId",get:function(){return this._orchestrationId}},{key:"inProgress",get:function(){return this._inProgress}},{key:"autoRefresh",get:function(){return this._autoRefresh},set:function(e){this._autoRefresh=e,this._localStorage.setItem("autoRefresh",this._autoRefresh.toString()),this.loadDetails()}},{key:"dialogOpen",get:function(){return this._dialogOpen},set:function(e){this._dialogOpen=e,this.eventName="",this.eventData=""}}]),Object(I.a)(t,[{key:"rewind",value:function(){var e=this;this.rewindConfirmationOpen=!1;var t="/orchestrations('".concat(this._orchestrationId,"')/rewind");this._inProgress=!0,this._backendClient.call("POST",t).then((function(){e._inProgress=!1,e.loadDetails()}),(function(t){e._inProgress=!1,e.errorMessage="Failed to rewind: ".concat(t.message,".").concat(t.response?t.response.data:""," ")}))}},{key:"terminate",value:function(){var e=this;this.terminateConfirmationOpen=!1;var t="/orchestrations('".concat(this._orchestrationId,"')/terminate");this._inProgress=!0,this._backendClient.call("POST",t).then((function(){e._inProgress=!1,e.loadDetails()}),(function(t){e._inProgress=!1,e.errorMessage="Failed to terminate: ".concat(t.message,".").concat(t.response?t.response.data:""," ")}))}},{key:"purge",value:function(){var e=this;this.purgeConfirmationOpen=!1;var t="/orchestrations('".concat(this._orchestrationId,"')/purge");this._inProgress=!0,this._backendClient.call("POST",t).then((function(){e._inProgress=!1,e.details=new Le}),(function(t){e._inProgress=!1,e.errorMessage="Failed to purge: ".concat(t.message,".").concat(t.response?t.response.data:""," ")}))}},{key:"raiseEvent",value:function(){var e=this,t="/orchestrations('".concat(this._orchestrationId,"')/raise-event"),n={name:this.eventName,data:null};try{n.data=JSON.parse(this.eventData)}catch(a){return void(this.errorMessage="Event Data failed to parse: ".concat(a.message))}finally{this.dialogOpen=!1}this._inProgress=!0,this._backendClient.call("POST",t,n).then((function(){e._inProgress=!1,e.loadDetails()}),(function(t){e._inProgress=!1,e.errorMessage="Failed to raise an event: ".concat(t.message,".").concat(t.response?t.response.data:""," ")}))}},{key:"loadDetails",value:function(){var e=this;if(!this.inProgress){this._inProgress=!0;var t="/orchestrations('".concat(this._orchestrationId,"')");this._backendClient.call("GET",t).then((function(t){if(!t)return e.errorMessage="Orchestration '".concat(e._orchestrationId,"' not found."),void(e._autoRefresh=0);t.history&&(t.historyEvents=t.history),e.details=t,e._autoRefresh&&(e._autoRefreshToken&&clearTimeout(e._autoRefreshToken),e._autoRefreshToken=setTimeout((function(){return e.loadDetails()}),1e3*e._autoRefresh))}),(function(t){e._autoRefresh=0,e.errorMessage="Load failed: ".concat(t.message,".").concat(t.response?t.response.data:""," ")})).finally((function(){e._inProgress=!1}))}}}]),t}(qe),yt=Object(se.a)(ft.prototype,"details",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return new Le}}),Object(se.a)(ft.prototype,"orchestrationId",[ce.e],Object.getOwnPropertyDescriptor(ft.prototype,"orchestrationId"),ft.prototype),Object(se.a)(ft.prototype,"inProgress",[ce.e],Object.getOwnPropertyDescriptor(ft.prototype,"inProgress"),ft.prototype),Object(se.a)(ft.prototype,"autoRefresh",[ce.e],Object.getOwnPropertyDescriptor(ft.prototype,"autoRefresh"),ft.prototype),Object(se.a)(ft.prototype,"dialogOpen",[ce.e],Object.getOwnPropertyDescriptor(ft.prototype,"dialogOpen"),ft.prototype),bt=Object(se.a)(ft.prototype,"rewindConfirmationOpen",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),Ot=Object(se.a)(ft.prototype,"terminateConfirmationOpen",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),Et=Object(se.a)(ft.prototype,"purgeConfirmationOpen",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),vt=Object(se.a)(ft.prototype,"eventName",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),jt=Object(se.a)(ft.prototype,"eventData",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),_t=Object(se.a)(ft.prototype,"_inProgress",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),kt=Object(se.a)(ft.prototype,"_dialogOpen",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),wt=Object(se.a)(ft.prototype,"_autoRefresh",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return 0}}),ft),en=(Ct=function(e){function t(e){var n;return Object(N.a)(this,t),(n=Object(F.a)(this,Object(A.a)(t).call(this)))._backendClient=e,Object(Ve.a)(n,"timeFrom",Pt,Object(He.a)(n)),Object(Ve.a)(n,"timeTill",Tt,Object(He.a)(n)),Object(Ve.a)(n,"entityType",St,Object(He.a)(n)),Object(Ve.a)(n,"_statuses",Dt,Object(He.a)(n)),Object(Ve.a)(n,"_dialogOpen",Nt,Object(He.a)(n)),Object(Ve.a)(n,"_inProgress",It,Object(He.a)(n)),Object(Ve.a)(n,"_instancesDeleted",Ft,Object(He.a)(n)),n}return Object(z.a)(t,e),Object(I.a)(t,[{key:"dialogOpen",get:function(){return this._dialogOpen},set:function(e){if(this._dialogOpen=e,e){this._instancesDeleted=null;var t=new Date;t.setDate(t.getDate()-1),this.timeFrom=t,this.timeTill=new Date,this._statuses=new Set(["Completed","Terminated"]),this.entityType="Orchestration"}}},{key:"instancesDeleted",get:function(){return this._instancesDeleted}},{key:"inProgress",get:function(){return this._inProgress}},{key:"isValid",get:function(){return this._statuses.size>0}}]),Object(I.a)(t,[{key:"purgeHistory",value:function(){var e=this;this._inProgress=!0,this._backendClient.call("POST","/purge-history",{entityType:this.entityType,timeFrom:this.timeFrom,timeTill:this.timeTill,statuses:Array.from(this._statuses.values())}).then((function(t){e._instancesDeleted=t.instancesDeleted}),(function(t){e.errorMessage="Purge history failed: ".concat(t.message,".").concat(t.response?t.response.data:""," ")})).finally((function(){e._inProgress=!1}))}},{key:"getStatusIncluded",value:function(e){return this._statuses.has(e)}},{key:"setStatusIncluded",value:function(e,t){t?this._statuses.add(e):this._statuses.delete(e)}}]),t}(qe),Object(se.a)(Ct.prototype,"dialogOpen",[ce.e],Object.getOwnPropertyDescriptor(Ct.prototype,"dialogOpen"),Ct.prototype),Object(se.a)(Ct.prototype,"instancesDeleted",[ce.e],Object.getOwnPropertyDescriptor(Ct.prototype,"instancesDeleted"),Ct.prototype),Object(se.a)(Ct.prototype,"inProgress",[ce.e],Object.getOwnPropertyDescriptor(Ct.prototype,"inProgress"),Ct.prototype),Object(se.a)(Ct.prototype,"isValid",[ce.e],Object.getOwnPropertyDescriptor(Ct.prototype,"isValid"),Ct.prototype),Pt=Object(se.a)(Ct.prototype,"timeFrom",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return new Date}}),Tt=Object(se.a)(Ct.prototype,"timeTill",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return new Date}}),St=Object(se.a)(Ct.prototype,"entityType",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return"Orchestration"}}),Dt=Object(se.a)(Ct.prototype,"_statuses",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return new Set}}),Nt=Object(se.a)(Ct.prototype,"_dialogOpen",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),It=Object(se.a)(Ct.prototype,"_inProgress",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),Ft=Object(se.a)(Ct.prototype,"_instancesDeleted",[ce.l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return null}}),Ct),tn=function(){function e(t){Object(N.a)(this,e),this._prefix=t}return Object(I.a)(e,[{key:"setItem",value:function(e,t){localStorage.setItem("".concat(this._prefix,"::").concat(e),t)}},{key:"setItems",value:function(e){var t=!0,n=!1,a=void 0;try{for(var r,i=e[Symbol.iterator]();!(t=(r=i.next()).done);t=!0){var o=r.value;null===o.value?localStorage.removeItem("".concat(this._prefix,"::").concat(o.fieldName)):localStorage.setItem("".concat(this._prefix,"::").concat(o.fieldName),o.value)}}catch(l){n=!0,a=l}finally{try{t||null==i.return||i.return()}finally{if(n)throw a}}}},{key:"getItem",value:function(e){return localStorage.getItem("".concat(this._prefix,"::").concat(e))}},{key:"removeItem",value:function(e){localStorage.removeItem("".concat(this._prefix,"::").concat(e))}}]),e}(),nn=function(){function e(t){var n=this;Object(N.a)(this,e),this._vsCodeApi=t,this._handlers={},this._requests={},window.addEventListener("message",(function(e){var t=e.data,a=n._handlers[t.id];if(a)a(t.data);else{var r=n._requests[t.id];r&&(t.data?r.resolve(t.data):r.reject(t.err),delete n._requests[t.id])}}))}return Object(I.a)(e,[{key:"isVsCode",get:function(){return!0}}]),Object(I.a)(e,[{key:"call",value:function(e,t,n){var a=this,r=Math.random().toString();return this._vsCodeApi.postMessage({id:r,method:e,url:t,data:n}),new Promise((function(e,t){a._requests[r]={resolve:e,reject:t}}))}},{key:"setPurgeHistoryHandler",value:function(e){this._handlers.purgeHistory=e,this._vsCodeApi.postMessage({method:"IAmReady"})}}]),e}(),an=function(){function e(t,n){Object(N.a)(this,e),this._prefix=t,this._vsCodeApi=n;var a=this._vsCodeApi.getState();e.State=a||{}}return Object(I.a)(e,[{key:"setItem",value:function(t,n){e.State["".concat(this._prefix,"::").concat(t)]=n,this._vsCodeApi.setState(e.State)}},{key:"setItems",value:function(t){var n=!0,a=!1,r=void 0;try{for(var i,o=t[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var l=i.value;null===l.value?delete e.State["".concat(this._prefix,"::").concat(l.fieldName)]:e.State["".concat(this._prefix,"::").concat(l.fieldName)]=l.value}}catch(s){a=!0,r=s}finally{try{n||null==o.return||o.return()}finally{if(a)throw r}}this._vsCodeApi.setState(e.State)}},{key:"getItem",value:function(t){return e.State["".concat(this._prefix,"::").concat(t)]}},{key:"removeItem",value:function(t){delete e.State["".concat(this._prefix,"::").concat(t)],this._vsCodeApi.setState(e.State)}}]),e}();an.State={};var rn=new(function(){function e(){var t=this;Object(N.a)(this,e),this.loginState=void 0,this.mainMenuState=void 0,this.orchestrationsState=void 0,this.orchestrationDetailsState=void 0,this.purgeHistoryDialogState=void 0;var n=void 0;try{n=acquireVsCodeApi()}catch(i){}if(n){var a=new nn(n);this.purgeHistoryDialogState=new en(a),this.orchestrationId?this.orchestrationDetailsState=new Xt(this.orchestrationId,a,new an("OrchestrationDetailsState",n)):(this.orchestrationsState=new At(a,new an("OrchestrationsState",n)),a.setPurgeHistoryHandler((function(){return t.purgeHistoryDialogState.dialogOpen=!0})))}else{this.loginState=new Qt;var r=new Gt(this.loginState.getAuthorizationHeaderAsync);this.purgeHistoryDialogState=new en(r),this.orchestrationId?this.orchestrationDetailsState=new Xt(this.orchestrationId,r,new tn("OrchestrationDetailsState")):(this.mainMenuState=new Zt(r,this.purgeHistoryDialogState),this.orchestrationsState=new At(r,new tn("OrchestrationsState")))}}return Object(I.a)(e,[{key:"orchestrationId",get:function(){if(OrchestrationIdFromVsCode)return OrchestrationIdFromVsCode;var e="".concat("/api/monitor","/orchestrations/");return window.location.pathname.startsWith(e)?window.location.pathname.substr(e.length):""}}]),e}());r.render(a.createElement(Ut,{state:rn}),document.getElementById("root")),function(){if("serviceWorker"in navigator){if(new URL("/api/monitor",window.location.toString()).origin!==window.location.origin)return;window.addEventListener("load",(function(){var e="".concat("/api/monitor","/service-worker.js");i?(!function(e){fetch(e).then((function(t){404===t.status||-1===t.headers.get("content-type").indexOf("javascript")?navigator.serviceWorker.ready.then((function(e){e.unregister().then((function(){window.location.reload()}))})):o(e)})).catch((function(){console.log("No internet connection found. App is running in offline mode.")}))}(e),navigator.serviceWorker.ready.then((function(){console.log("This web app is being served cache-first by a service worker. To learn more, visit https://goo.gl/SC7cgQ")}))):o(e)}))}}()}},[[108,1,2]]]); -//# sourceMappingURL=main.a0ea1d29.chunk.js.map \ No newline at end of file diff --git a/durablefunctionsmonitor.dotnetbackend/wwwroot/static/js/main.a0ea1d29.chunk.js.map b/durablefunctionsmonitor.dotnetbackend/wwwroot/static/js/main.a0ea1d29.chunk.js.map deleted file mode 100644 index d6223b6..0000000 --- a/durablefunctionsmonitor.dotnetbackend/wwwroot/static/js/main.a0ea1d29.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["logo.svg","registerServiceWorker.ts","states/OrchestrationsState.ts","components/LoginIcon.tsx","components/ErrorMessage.tsx","components/MainMenu.tsx","DateTimeHelpers.ts","states/DurableOrchestrationStatus.ts","components/OrchestrationLink.tsx","states/ErrorMessageState.ts","components/Orchestrations.tsx","components/DurableEntityButtons.tsx","components/DurableEntityFields.tsx","components/OrchestrationButtons.tsx","components/OrchestrationFields.tsx","components/OrchestrationDetails.tsx","components/PurgeHistoryDialog.tsx","components/Main.tsx","services/BackendClient.ts","states/LoginState.ts","states/MainMenuState.ts","states/OrchestrationDetailsState.ts","states/PurgeHistoryDialogState.ts","states/TypedLocalStorage.ts","services/VsCodeBackendClient.ts","states/VsCodeTypedLocalStorage.ts","states/MainState.ts","index.tsx"],"names":["module","exports","isLocalhost","Boolean","window","location","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","state","controller","console","log","catch","error","FilterOperatorEnum","ShowEntityTypeEnum","LoginIcon","observer","this","props","Button","color","isLoggedInAnonymously","onClick","evt","menuAnchorElement","currentTarget","AccountCircle","Box","width","Tooltip","title","Typography","userName","Menu","anchorEl","keepMounted","open","onClose","undefined","MenuItem","logout","Dialog","isLoggedIn","DialogContent","errorMessage","Container","className","CircularProgress","DialogContentText","Error","fontSize","React","ErrorMessage","action","bound","Snackbar","anchorOrigin","vertical","horizontal","autoHideDuration","handleClose","SnackbarContent","message","IconButton","key","aria-label","MainMenu","setWindowTitle","showConnectionParamsDialog","showPurgeHistoryDialog","connectionParamsDialogOpen","DialogTitle","inProgress","LinearProgress","height","isReadonly","TextField","autoFocus","margin","label","fullWidth","disabled","value","hubName","onChange","target","InputLabelProps","shrink","connectionString","DialogActions","saveConnectionParams","isDirty","DateTimeHelpers","dt","Date","slice","toISOString","err","HistoryEventFields","DurableOrchestrationStatus","instanceId","name","entityId","runtimeStatus","entityType","lastEvent","input","customStatus","output","createdTime","lastUpdatedTime","historyEvents","DurableOrchestrationStatusFields","OrchestrationLink","backendClient","isVsCode","Link","href","onLinkClicked","orchestrationId","process","call","ErrorMessageState","observable","OrchestrationsState","_backendClient","_localStorage","timeFrom","_noMorePagesToLoad","_pageSize","_autoRefreshToken","_oldFilterValue","_oldTimeFrom","_oldTimeTill","timeFromString","getItem","setDate","getDate","_timeFrom","timeTillString","_timeTill","filteredColumnString","_filteredColumn","filterOperatorString","_filterOperator","filterValueString","_filterValue","showEntityTypeString","_showEntityType","autoRefreshString","_autoRefresh","Number","orderByString","_orderBy","orderByDirectionString","_orderByDirection","_inProgress","_orchestrations","val","setItem","toString","loadOrchestrations","resetOrderBy","reloadOrchestrations","setItems","fieldName","isAutoRefresh","skip","length","timeTill","filterClause","OrchestrationsOnly","DurableEntitiesOnly","Equals","StartsWith","Contains","orderByClause","orderByDirection","uri","response","push","clearTimeout","setTimeout","data","finally","computed","ShowBoth","Orchestrations","document","addEventListener","scrollingElement","scrollHeight","innerHeight","scrollTop","Toolbar","variant","Grid","container","item","xs","style","marginLeft","type","formatDateTime","getDateTimeValue","onBlur","applyTimeFrom","onKeyPress","handleKeyPress","FormControl","InputLabel","htmlFor","Checkbox","id","checked","timeTillEnabled","placeholder","applyTimeTill","Select","filteredColumn","inputProps","map","col","filterOperator","filterValue","applyFilterValue","RadioGroup","showEntityType","FormControlLabel","control","Radio","flex","autoRefresh","size","FormHelperText","orchestrations","renderTable","renderEmptyTable","Table","TableHead","TableRow","filter","f","showLastEventColumn","TableCell","TableSortLabel","active","orderBy","direction","TableBody","orchestration","cellStyle","verticalAlign","toLowerCase","InputBase","multiline","rowsMax","readOnly","JSON","stringify","event","preventDefault","DurableEntityButtons","renderDialogs","purgeConfirmationOpen","purge","DurableEntityFields","details","sm","md","zeroMinWidth","InputProps","OrchestrationButtons","rewindConfirmationOpen","terminateConfirmationOpen","dialogOpen","rewind","terminate","eventName","rows","eventData","raiseEvent","OrchestrationFields","events","index","Timestamp","EventType","Name","FunctionName","ScheduledTime","Result","Details","OrchestrationDetails","loadDetails","PurgeHistoryDialog","instancesDeleted","FormLabel","row","FormGroup","purgeHistory","isValid","RuntimeStatusCheckbox","getStatusIncluded","setStatusIncluded","logo","require","Main","loginState","AppBar","position","mainMenuState","src","Breadcrumbs","orchestrationDetailsState","orchestrationsState","purgeHistoryDialogState","BackendClient","_getAuthorizationHeaderAsync","method","url","Promise","resolve","reject","headers","axios","request","r","LoginState","_aadApp","login","_isLoggedIn","_userName","get","loginWithEasyAuthConfig","authParams","scopes","getCurrentConfiguration","auth","clientId","acquireTokenSilent","authResponse","accessToken","idToken","rawIdToken","Authorization","acquireTokenRedirect","easyAuthConfigResponse","config","Msal","authority","handleRedirectCallback","handleRedirectCallbackFailed","account","getAccount","loginRedirect","authErr","accountState","errorCode","MainMenuState","_purgeHistoryDialogState","_oldConnectionString","_oldHubName","_isReadOnly","isReadOnly","alert","accountName","version","OrchestrationDetailsState","_orchestrationId","_dialogOpen","requestBody","parse","history","PurgeHistoryDialogState","_instancesDeleted","_statuses","Set","statuses","Array","from","values","status","has","included","add","delete","TypedLocalStorage","_prefix","localStorage","items","removeItem","VsCodeBackendClient","_vsCodeApi","_handlers","_requests","requestHandler","requestPromise","requestId","Math","random","postMessage","handler","VsCodeTypedLocalStorage","oldState","getState","State","setState","appState","vsCodeApi","acquireVsCodeApi","setPurgeHistoryHandler","getAuthorizationHeaderAsync","OrchestrationIdFromVsCode","uriSuffix","pathname","startsWith","substr","ReactDOM","getElementById","URL","origin","fetch","indexOf","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.a0ea1d29.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/logo.9b5d7869.svg\";","// tslint:disable:no-console\n// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the 'N+1' visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport default function register() {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL!,\n window.location.toString()\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://goo.gl/SC7cgQ'\n );\n });\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker) {\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a 'New content is\n // available; please refresh.' message in your web app.\n console.log('New content is available; please refresh.');\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // 'Content is cached for offline use.' message.\n console.log('Content is cached for offline use.');\n }\n }\n };\n }\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type')!.indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import { observable, computed } from 'mobx'\r\n\r\nimport { DurableOrchestrationStatus } from '../states/DurableOrchestrationStatus';\r\nimport { ErrorMessageState } from './ErrorMessageState';\r\nimport { IBackendClient } from '../services/IBackendClient';\r\nimport { ITypedLocalStorage } from './ITypedLocalStorage';\r\n\r\nexport enum FilterOperatorEnum {\r\n Equals = 0,\r\n StartsWith,\r\n Contains\r\n}\r\n\r\nexport enum ShowEntityTypeEnum {\r\n ShowBoth = 0,\r\n OrchestrationsOnly,\r\n DurableEntitiesOnly\r\n}\r\n\r\n// State of Orchestrations view\r\nexport class OrchestrationsState extends ErrorMessageState {\r\n\r\n @computed\r\n get inProgress(): boolean { return this._inProgress; }\r\n\r\n @computed\r\n get orchestrations(): DurableOrchestrationStatus[] { return this._orchestrations; }\r\n\r\n @computed\r\n get autoRefresh(): number { return this._autoRefresh; }\r\n set autoRefresh(val: number) {\r\n this._autoRefresh = val;\r\n this._localStorage.setItem('autoRefresh', this._autoRefresh.toString());\r\n this.loadOrchestrations(true);\r\n }\r\n\r\n @computed\r\n get timeFrom(): Date { return this._timeFrom; }\r\n set timeFrom(val: Date) {\r\n this._timeFrom = val;\r\n this.resetOrderBy();\r\n }\r\n \r\n @computed\r\n get timeTill(): Date { return (!this._timeTill) ? new Date() : this._timeTill!; }\r\n set timeTill(val: Date) {\r\n this._timeTill = val;\r\n this.resetOrderBy();\r\n }\r\n\r\n @computed\r\n get timeTillEnabled(): boolean { return !!this._timeTill; }\r\n set timeTillEnabled(val: boolean) {\r\n\r\n this._timeTill = val ? new Date() : undefined;\r\n \r\n if (!val) {\r\n this.resetOrderBy();\r\n this.reloadOrchestrations();\r\n }\r\n }\r\n \r\n @computed\r\n get orderByDirection(): ('asc' | 'desc') { return this._orderByDirection;}\r\n\r\n @computed\r\n get orderBy() : string { return this._orderBy; }\r\n set orderBy(val: string) {\r\n\r\n if (this._orderBy !== val) {\r\n this._orderBy = val;\r\n }\r\n else {\r\n this._orderByDirection = (this._orderByDirection === 'desc') ? 'asc' : 'desc';\r\n }\r\n\r\n this.reloadOrchestrations();\r\n }\r\n\r\n @computed\r\n get filterValue(): string { return this._filterValue; }\r\n set filterValue(val: string) { this._filterValue = val; }\r\n\r\n @computed\r\n get filterOperator(): FilterOperatorEnum { return this._filterOperator; }\r\n set filterOperator(val: FilterOperatorEnum) {\r\n \r\n this._filterOperator = val;\r\n\r\n if (!!this._filterValue && this._filteredColumn !== '0') {\r\n\r\n this.reloadOrchestrations();\r\n }\r\n }\r\n\r\n @computed\r\n get filteredColumn(): string { return this._filteredColumn; }\r\n set filteredColumn(val: string) {\r\n\r\n this._filteredColumn = val;\r\n\r\n if (!this._filterValue) {\r\n return;\r\n }\r\n\r\n if (this._filteredColumn === '0') {\r\n this._filterValue = '';\r\n }\r\n\r\n this.reloadOrchestrations();\r\n }\r\n\r\n @computed\r\n get showEntityType(): string { return ShowEntityTypeEnum[this._showEntityType]; }\r\n set showEntityType(val: string) {\r\n\r\n this._showEntityType = ShowEntityTypeEnum[val];\r\n\r\n this.reloadOrchestrations();\r\n }\r\n\r\n @computed\r\n get showLastEventColumn(): boolean {\r\n // Only showing lastEvent field when being filtered by it (because otherwise it is not populated on the server)\r\n return this._filteredColumn === 'lastEvent' && (!!this._oldFilterValue);\r\n }\r\n \r\n get backendClient(): IBackendClient { return this._backendClient; }\r\n\r\n constructor(private _backendClient: IBackendClient, private _localStorage: ITypedLocalStorage) {\r\n super();\r\n\r\n var timeFrom: Date;\r\n const timeFromString = this._localStorage.getItem('timeFrom');\r\n if (!!timeFromString) {\r\n timeFrom = new Date(timeFromString);\r\n } else {\r\n // By default setting it to 24 hours ago\r\n timeFrom = new Date();\r\n timeFrom.setDate(timeFrom.getDate() - 1);\r\n }\r\n this._timeFrom = timeFrom;\r\n this._oldTimeFrom = timeFrom;\r\n\r\n const timeTillString = this._localStorage.getItem('timeTill');\r\n if (!!timeTillString) {\r\n this._timeTill = new Date(timeTillString);\r\n this._oldTimeTill = this._timeTill;\r\n }\r\n\r\n const filteredColumnString = this._localStorage.getItem('filteredColumn');\r\n if (!!filteredColumnString) {\r\n this._filteredColumn = filteredColumnString;\r\n }\r\n\r\n const filterOperatorString = this._localStorage.getItem('filterOperator');\r\n if (!!filterOperatorString) {\r\n this._filterOperator = FilterOperatorEnum[filterOperatorString];\r\n }\r\n\r\n const filterValueString = this._localStorage.getItem('filterValue');\r\n if (!!filterValueString) {\r\n this._filterValue = filterValueString;\r\n this._oldFilterValue = filterValueString;\r\n }\r\n\r\n const showEntityTypeString = this._localStorage.getItem('showEntityType');\r\n if (!!showEntityTypeString) {\r\n this._showEntityType = ShowEntityTypeEnum[showEntityTypeString];\r\n }\r\n\r\n const autoRefreshString = this._localStorage.getItem('autoRefresh');\r\n if (!!autoRefreshString) {\r\n this._autoRefresh = Number(autoRefreshString);\r\n }\r\n\r\n const orderByString = this._localStorage.getItem('orderBy');\r\n if (!!orderByString) {\r\n this._orderBy = orderByString;\r\n }\r\n\r\n const orderByDirectionString = this._localStorage.getItem('orderByDirection');\r\n if (!!orderByDirectionString) {\r\n this._orderByDirection = orderByDirectionString as 'asc' | 'desc';\r\n }\r\n }\r\n\r\n applyTimeFrom() {\r\n if (this._oldTimeFrom !== this._timeFrom) {\r\n this.reloadOrchestrations();\r\n }\r\n }\r\n\r\n applyTimeTill() {\r\n if (this._oldTimeTill !== this._timeTill) {\r\n this.reloadOrchestrations();\r\n }\r\n }\r\n\r\n applyFilterValue() {\r\n if (this._oldFilterValue !== this._filterValue) {\r\n this.reloadOrchestrations();\r\n }\r\n }\r\n\r\n reloadOrchestrations() {\r\n this._orchestrations = [];\r\n this._noMorePagesToLoad = false;\r\n\r\n // persisting state as a batch\r\n this._localStorage.setItems([\r\n { fieldName: 'timeFrom', value: this._timeFrom.toISOString() },\r\n { fieldName: 'timeTill', value: !!this._timeTill ? this._timeTill.toISOString() : null },\r\n { fieldName: 'timeFrom', value: this._timeFrom.toISOString() },\r\n { fieldName: 'filteredColumn', value: this._filteredColumn },\r\n { fieldName: 'filterOperator', value: FilterOperatorEnum[this._filterOperator] },\r\n { fieldName: 'filterValue', value: !!this._filterValue ? this._filterValue : null },\r\n { fieldName: 'showEntityType', value: ShowEntityTypeEnum[this._showEntityType] },\r\n { fieldName: 'orderBy', value: this._orderBy },\r\n { fieldName: 'orderByDirection', value: this._orderByDirection },\r\n ]);\r\n\r\n this.loadOrchestrations();\r\n\r\n this._oldFilterValue = this._filterValue;\r\n this._oldTimeFrom = this._timeFrom;\r\n this._oldTimeTill = this._timeTill;\r\n }\r\n\r\n loadOrchestrations(isAutoRefresh: boolean = false) {\r\n\r\n if (!!this.inProgress || (!!this._noMorePagesToLoad && !this._autoRefresh )) {\r\n return; \r\n }\r\n this._inProgress = true;\r\n\r\n // In auto-refresh mode only refreshing the first page\r\n const skip = isAutoRefresh ? 0 : this._orchestrations.length;\r\n\r\n const timeTill = !!this._timeTill ? this._timeTill : new Date();\r\n var filterClause = `&$filter=createdTime ge '${this._timeFrom.toISOString()}' and createdTime le '${timeTill.toISOString()}'`;\r\n\r\n if (this._showEntityType === ShowEntityTypeEnum.OrchestrationsOnly) {\r\n filterClause += ` and entityType eq 'Orchestration'`;\r\n }\r\n else if (this._showEntityType === ShowEntityTypeEnum.DurableEntitiesOnly) {\r\n filterClause += ` and entityType eq 'DurableEntity'`;\r\n }\r\n \r\n if (!!this._filterValue && this._filteredColumn !== '0') {\r\n\r\n filterClause += ' and ';\r\n\r\n switch (this._filterOperator) {\r\n case FilterOperatorEnum.Equals:\r\n filterClause += `${this._filteredColumn} eq '${this._filterValue}'`;\r\n break;\r\n case FilterOperatorEnum.StartsWith:\r\n filterClause += `startswith(${this._filteredColumn}, '${this._filterValue}')`;\r\n break;\r\n case FilterOperatorEnum.Contains:\r\n filterClause += `contains(${this._filteredColumn}, '${this._filterValue}')`;\r\n break;\r\n }\r\n }\r\n\r\n const orderByClause = !!this._orderBy ? `&$orderby=${this._orderBy} ${this.orderByDirection}` : '';\r\n\r\n const uri = `/orchestrations?$top=${this._pageSize}&$skip=${skip}${filterClause}${orderByClause}`;\r\n\r\n this._backendClient.call('GET', uri).then(response => {\r\n\r\n if (!response.length) {\r\n // Stop the infinite scrolling\r\n this._noMorePagesToLoad = true;\r\n } else {\r\n if (isAutoRefresh) {\r\n this._orchestrations = response;\r\n } else {\r\n this._orchestrations.push(...response);\r\n }\r\n }\r\n\r\n // Doing auto-refresh\r\n if (!!this._autoRefresh) {\r\n\r\n if (!!this._autoRefreshToken) {\r\n clearTimeout(this._autoRefreshToken);\r\n }\r\n this._autoRefreshToken = setTimeout(() => this.loadOrchestrations(true), this._autoRefresh * 1000);\r\n }\r\n\r\n }, err => {\r\n\r\n // Cancelling auto-refresh just in case\r\n this._autoRefresh = 0;\r\n\r\n this.errorMessage = `Load failed: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n\r\n }).finally(() => {\r\n this._inProgress = false;\r\n });\r\n }\r\n\r\n @observable\r\n private _inProgress: boolean = false;\r\n @observable\r\n private _orchestrations: DurableOrchestrationStatus[] = [];\r\n @observable\r\n private _orderByDirection: ('asc' | 'desc') = 'asc';\r\n @observable\r\n private _orderBy: string = '';\r\n @observable\r\n private _autoRefresh: number = 0;\r\n @observable\r\n private _timeFrom: Date;\r\n @observable\r\n private _timeTill?: Date;\r\n @observable\r\n private _filterValue: string = '';\r\n @observable\r\n private _filterOperator: FilterOperatorEnum = FilterOperatorEnum.Equals;\r\n @observable\r\n private _filteredColumn: string = '0';\r\n @observable\r\n private _showEntityType: ShowEntityTypeEnum = ShowEntityTypeEnum.ShowBoth;\r\n\r\n private _noMorePagesToLoad: boolean = false;\r\n private readonly _pageSize = 50;\r\n private _autoRefreshToken: NodeJS.Timeout;\r\n private _oldFilterValue: string = '';\r\n private _oldTimeFrom: Date;\r\n private _oldTimeTill?: Date;\r\n\r\n private resetOrderBy() {\r\n this._orderBy = '';\r\n this._orderByDirection = 'asc';\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n Box, Button, Container, CircularProgress, Dialog, DialogContent, DialogContentText,\r\n Menu, MenuItem, Tooltip, Typography\r\n} from '@material-ui/core';\r\n\r\nimport { AccountCircle, Error } from '@material-ui/icons';\r\n\r\nimport './LoginIcon.css';\r\n\r\nimport { LoginState } from '../states/LoginState';\r\n\r\n// Main Menu view\r\n@observer\r\nexport class LoginIcon extends React.Component<{ state: LoginState }> {\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (\r\n
\r\n \r\n\r\n {!state.isLoggedInAnonymously && (\r\n state.menuAnchorElement = undefined}\r\n >\r\n state.logout()}>Login under a different name\r\n \r\n )}\r\n\r\n \r\n \r\n\r\n {!state.errorMessage && (\r\n
\r\n \r\n \r\n \r\n Login in progress...\r\n
)}\r\n\r\n {!!state.errorMessage && (\r\n
\r\n \r\n \r\n \r\n Login failed. {state.errorMessage}\r\n
)}\r\n\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { action } from 'mobx'\r\nimport { observer } from 'mobx-react';\r\n\r\nimport { IconButton, Snackbar, SnackbarContent } from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\n\r\nimport './ErrorMessage.css';\r\n\r\nimport { ErrorMessageState } from '../states/ErrorMessageState';\r\n\r\n// Error Message Snackbar\r\n@observer\r\nexport class ErrorMessage extends React.Component<{ state: ErrorMessageState }> {\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (\r\n\r\n \r\n \r\n \r\n {state.errorMessage}\r\n \r\n }\r\n action={[\r\n \r\n \r\n ,\r\n ]}\r\n />\r\n\r\n \r\n );\r\n }\r\n\r\n @action.bound\r\n private handleClose() {\r\n this.props.state.errorMessage = '';\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n Box, Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, IconButton, LinearProgress,\r\n Menu, MenuItem, TextField\r\n} from '@material-ui/core';\r\n\r\nimport MenuIcon from '@material-ui/icons/Menu';\r\n\r\nimport { ErrorMessage } from './ErrorMessage';\r\nimport { MainMenuState } from '../states/MainMenuState';\r\n\r\n// Main Menu view\r\n@observer\r\nexport class MainMenu extends React.Component<{ state: MainMenuState }> {\r\n\r\n componentDidMount() {\r\n // Querying the backend for connection info and displaying it in window title\r\n this.props.state.setWindowTitle();\r\n }\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (\r\n
\r\n\r\n state.menuAnchorElement = evt.currentTarget}\r\n >\r\n \r\n \r\n\r\n state.menuAnchorElement = undefined}\r\n >\r\n state.showConnectionParamsDialog()}>Manage Storage Connection Settings...\r\n state.showPurgeHistoryDialog()}>Purge Instance History...\r\n \r\n\r\n state.connectionParamsDialogOpen = false}\r\n >\r\n Manage Storage Connection Settings\r\n \r\n\r\n {state.inProgress ? () : ()}\r\n \r\n \r\n {\r\n state.isReadonly ?\r\n \"Change the below values via your application settings ('DFM_HUB_NAME' and 'AzureWebJobsStorage' respectively\" :\r\n \"The below values will be saved to local.settings.json file.\"\r\n }\r\n \r\n\r\n state.hubName = evt.target.value as string}\r\n />\r\n\r\n state.connectionString = evt.target.value as string}\r\n />\r\n\r\n \r\n\r\n \r\n \r\n \r\n state.saveConnectionParams()}\r\n disabled={!state.isDirty || state.isReadonly || !state.hubName || !state.connectionString || state.inProgress}\r\n color=\"secondary\"\r\n >\r\n Save\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}","\r\nexport class DateTimeHelpers\r\n{\r\n public static getDateTimeValue(evt: any): Date {\r\n\r\n var dt = new Date(evt.target.value.slice(0, 16) + ':00Z');\r\n\r\n // If invalid date entered, then setting it to current date\r\n try {\r\n dt.toISOString();\r\n } catch (err) {\r\n dt = new Date();\r\n }\r\n\r\n return dt;\r\n }\r\n\r\n public static formatDateTime(dt: Date) {\r\n return dt.toISOString().slice(0, 16);\r\n }\r\n}","\r\n// A DTO used by DurableOrchestrationStatus.historyEvents\r\nexport class HistoryEvent {\r\n Timestamp: string;\r\n EventType: string;\r\n Name: string;\r\n ScheduledTime: string;\r\n Result: any;\r\n Details: any;\r\n}\r\n\r\n// Could instead just iterate through field names of HistoryEvent, but reflection in TypeScript still looks tricky\r\nexport const HistoryEventFields = [\r\n 'Timestamp',\r\n 'EventType',\r\n 'Name',\r\n 'ScheduledTime',\r\n 'Result',\r\n 'Details',\r\n];\r\n\r\nexport type RuntimeStatus = \"Running\" | \"Completed\" | \"ContinuedAsNew\" | \"Failed\" | \"Canceled\" | \"Terminated\" | \"Pending\";\r\n\r\nexport type EntityType = \"Orchestration\" | \"DurableEntity\";\r\n\r\nexport class EntityId {\r\n name: string;\r\n key: string;\r\n}\r\n\r\n// A DTO returned by DurableOrchestrationClient.getStatusAll()\r\nexport class DurableOrchestrationStatus {\r\n instanceId: string;\r\n name: string;\r\n entityId: EntityId;\r\n runtimeStatus: RuntimeStatus;\r\n entityType: EntityType;\r\n lastEvent: string;\r\n input: any;\r\n customStatus: string;\r\n output: any;\r\n createdTime: string;\r\n lastUpdatedTime: string;\r\n historyEvents?: HistoryEvent[];\r\n}\r\n\r\n// Could instead just iterate through field names of DurableOrchestrationStatus, but reflection in TypeScript still looks tricky\r\nexport const DurableOrchestrationStatusFields = [\r\n 'instanceId',\r\n 'name',\r\n 'createdTime',\r\n 'lastUpdatedTime',\r\n 'runtimeStatus',\r\n 'lastEvent',\r\n 'input',\r\n 'output',\r\n 'customStatus'\r\n];","import * as React from 'react';\r\nimport { action } from 'mobx'\r\nimport { observer } from 'mobx-react';\r\n\r\nimport { Link } from '@material-ui/core';\r\n\r\nimport { IBackendClient } from '../services/IBackendClient';\r\n\r\nexport const UriSuffix = process.env.REACT_APP_URI_SUFFIX as string;\r\n\r\n// Renders a link to be opened either in a new browser tab or in a new VsCode WebView\r\n@observer\r\nexport class OrchestrationLink extends React.Component<{ orchestrationId: string, backendClient: IBackendClient }> {\r\n\r\n render(): JSX.Element {\r\n\r\n if (this.props.backendClient.isVsCode) {\r\n\r\n return (\r\n \r\n {this.props.orchestrationId}\r\n \r\n ); \r\n } else {\r\n\r\n return (\r\n \r\n {this.props.orchestrationId}\r\n \r\n );\r\n }\r\n }\r\n\r\n @action.bound\r\n private onLinkClicked() {\r\n this.props.backendClient.call('OpenInNewWindow', this.props.orchestrationId);\r\n }\r\n}","import { observable } from 'mobx'\r\n\r\n// State of Error Message snackbar\r\nexport class ErrorMessageState {\r\n\r\n @observable\r\n errorMessage: string = '';\r\n}","import * as React from 'react';\r\nimport { action } from 'mobx'\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n Box, Button, Checkbox, FormControl, FormControlLabel, FormHelperText, Grid, InputBase, InputLabel,\r\n LinearProgress, MenuItem, Select,\r\n Table, TableBody, TableCell, TableHead, TableRow, TableSortLabel, TextField, Toolbar, Typography, Radio, RadioGroup\r\n} from '@material-ui/core';\r\n\r\nimport RefreshIcon from '@material-ui/icons/Refresh';\r\n\r\nimport './Orchestrations.css';\r\n\r\nimport { DateTimeHelpers } from '../DateTimeHelpers';\r\nimport { DurableOrchestrationStatusFields } from '../states/DurableOrchestrationStatus';\r\nimport { ErrorMessage } from './ErrorMessage';\r\nimport { OrchestrationLink } from './OrchestrationLink';\r\nimport { OrchestrationsState, ShowEntityTypeEnum } from '../states/OrchestrationsState';\r\n\r\nexport const UriSuffix = process.env.REACT_APP_URI_SUFFIX as string;\r\n\r\n// Orchestrations view\r\n@observer\r\nexport class Orchestrations extends React.Component<{ state: OrchestrationsState }> {\r\n\r\n componentDidMount() {\r\n\r\n // Triggering initial load\r\n this.props.state.loadOrchestrations();\r\n\r\n // Doing a simple infinite scroll\r\n document.addEventListener('scroll', (evt) => {\r\n\r\n const scrollingElement = (evt.target as Document).scrollingElement;\r\n if (!scrollingElement) { \r\n return;\r\n }\r\n\r\n const scrollPos = scrollingElement.scrollHeight - window.innerHeight - scrollingElement.scrollTop;\r\n const scrollPosThreshold = 100;\r\n\r\n if (scrollPos < scrollPosThreshold) {\r\n this.props.state.loadOrchestrations();\r\n }\r\n });\r\n }\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (\r\n
\r\n {state.inProgress ? () : ()}\r\n\r\n \r\n\r\n \r\n \r\n { state.timeFrom = DateTimeHelpers.getDateTimeValue(evt); }}\r\n onBlur={() => state.applyTimeFrom()}\r\n onKeyPress={this.handleKeyPress}\r\n />\r\n \r\n \r\n \r\n Till\r\n state.timeTillEnabled = evt.target.checked}\r\n />\r\n \r\n { state.timeTill = DateTimeHelpers.getDateTimeValue(evt); }}\r\n onBlur={() => state.applyTimeTill()}\r\n onKeyPress={this.handleKeyPress}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n \r\n Filtered Column\r\n state.filteredColumn = evt.target.value as string}\r\n inputProps={{ id: \"filtered-column-select\" }}>\r\n\r\n [Not Selected]\r\n {DurableOrchestrationStatusFields.map(col => {\r\n return ({col});\r\n })}\r\n\r\n \r\n \r\n \r\n Filter Operator\r\n state.filterOperator = evt.target.value as number}\r\n inputProps={{ id: \"filter-operator-select\" }}>\r\n Equals\r\n Starts With\r\n Contains\r\n \r\n \r\n \r\n \r\n state.filterValue = evt.target.value as string}\r\n onBlur={() => state.applyFilterValue()}\r\n onKeyPress={this.handleKeyPress}\r\n />\r\n \r\n \r\n\r\n state.showEntityType = (evt.target as HTMLInputElement).value}\r\n >\r\n }\r\n label={Show both}\r\n />\r\n }\r\n label={Orchestrations only}\r\n />\r\n }\r\n label={Durable Entities only}\r\n />\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n Auto-refresh\r\n state.autoRefresh = evt.target.value as number}\r\n >\r\n Never\r\n Every 1 sec.\r\n Every 5 sec.\r\n Every 10 sec.\r\n \r\n \r\n \r\n \r\n state.reloadOrchestrations()}\r\n >\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n {!!state.orchestrations.length ? `${state.orchestrations.length} items shown`: ''}\r\n \r\n\r\n {!!state.orchestrations.length ? this.renderTable(state) : this.renderEmptyTable()}\r\n\r\n {state.inProgress && !!state.orchestrations.length ? () : ()}\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n private renderEmptyTable(): JSX.Element {\r\n return (\r\n \r\n This list is empty\r\n \r\n );\r\n }\r\n\r\n private renderTable(state: OrchestrationsState): JSX.Element {\r\n\r\n return (\r\n \r\n \r\n \r\n {DurableOrchestrationStatusFields\r\n // hiding artificial 'lastEvent' column, when not used\r\n .filter(f => state.showLastEventColumn ? true : f !== 'lastEvent')\r\n .map(col => {\r\n return (\r\n \r\n state.orderBy = col}\r\n >\r\n {col}\r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n {state.orchestrations.map(orchestration => {\r\n\r\n const cellStyle = { verticalAlign: 'top' };\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {orchestration.name}\r\n \r\n \r\n {orchestration.createdTime}\r\n \r\n \r\n {orchestration.lastUpdatedTime}\r\n \r\n \r\n {orchestration.runtimeStatus}\r\n \r\n {state.showLastEventColumn && (\r\n {orchestration.lastEvent}\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n );\r\n }\r\n\r\n @action.bound\r\n private handleKeyPress(event: React.KeyboardEvent) {\r\n if (event.key === 'Enter') {\r\n // Otherwise the event will bubble up and the form will be submitted\r\n event.preventDefault();\r\n\r\n this.props.state.reloadOrchestrations();\r\n }\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle,\r\n} from '@material-ui/core';\r\n\r\nimport { OrchestrationDetailsState } from '../states/OrchestrationDetailsState';\r\n\r\n// Buttons for detailed durable entity view\r\n@observer\r\nexport class DurableEntityButtons extends React.Component<{ state: OrchestrationDetailsState }> {\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (<>\r\n\r\n {this.renderDialogs(state)}\r\n\r\n \r\n );\r\n }\r\n\r\n private renderDialogs(state: OrchestrationDetailsState): JSX.Element {\r\n return (<>\r\n\r\n state.purgeConfirmationOpen = false}\r\n >\r\n Confirm Purge\r\n \r\n \r\n You're about to purge entity '{state.orchestrationId}'. This operation drops entity state from the underlying storage and cannot be undone. Are you sure?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n Grid, TextField\r\n} from '@material-ui/core';\r\n\r\nimport { DurableOrchestrationStatus } from '../states/DurableOrchestrationStatus';\r\n\r\n// Fields for detailed durable entity view\r\n@observer\r\nexport class DurableEntityFields extends React.Component<{ details: DurableOrchestrationStatus }> {\r\n\r\n render(): JSX.Element {\r\n const details = this.props.details;\r\n\r\n return (<>\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n Box, Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, TextField\r\n} from '@material-ui/core';\r\n\r\nimport { OrchestrationDetailsState } from '../states/OrchestrationDetailsState';\r\n\r\n// Buttons for detailed orchestration view\r\n@observer\r\nexport class OrchestrationButtons extends React.Component<{ state: OrchestrationDetailsState }> {\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (<>\r\n\r\n {this.renderDialogs(state)}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private renderDialogs(state: OrchestrationDetailsState): JSX.Element {\r\n return (<>\r\n\r\n state.rewindConfirmationOpen = false}\r\n >\r\n Confirm Rewind\r\n \r\n \r\n You're about to rewind orchestration '{state.orchestrationId}'. Are you sure?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n state.terminateConfirmationOpen = false}\r\n >\r\n Confirm Terminate\r\n \r\n \r\n You're about to terminate orchestration '{state.orchestrationId}'. This operation cannot be undone. Are you sure?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n state.dialogOpen = false}\r\n >\r\n Raise Event\r\n \r\n \r\n Provide event name and some additional data.\r\n \r\n\r\n state.eventName = evt.target.value as string}\r\n />\r\n\r\n state.eventData = evt.target.value as string}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n state.purgeConfirmationOpen = false}\r\n >\r\n Confirm Purge\r\n \r\n \r\n You're about to purge orchestration '{state.orchestrationId}'. This operation drops orchestration state from the underlying storage and cannot be undone. Are you sure?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n FormHelperText, Grid, InputBase, Table, TableBody, TableCell, TableHead, TableRow, Typography, TextField\r\n} from '@material-ui/core';\r\n\r\nimport { DurableOrchestrationStatus, HistoryEventFields } from '../states/DurableOrchestrationStatus';\r\n\r\n// Fields for detailed orchestration view\r\n@observer\r\nexport class OrchestrationFields extends React.Component<{ details: DurableOrchestrationStatus }> {\r\n\r\n render(): JSX.Element {\r\n const details = this.props.details;\r\n\r\n return (<>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n historyEvents: {!!details.historyEvents ? details.historyEvents.length : 0} items\r\n \r\n\r\n {this.renderTable(details.historyEvents)}\r\n\r\n );\r\n }\r\n\r\n private renderEmptyTable(): JSX.Element {\r\n return (\r\n \r\n This list is empty\r\n \r\n );\r\n }\r\n\r\n private renderTable(events: Array | undefined): JSX.Element {\r\n\r\n if (!events || !events.length) {\r\n return this.renderEmptyTable();\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {HistoryEventFields.map(col => {\r\n return (\r\n {col}\r\n );\r\n })}\r\n \r\n \r\n \r\n {events.map((event: any, index: number) => {\r\n\r\n const cellStyle = { verticalAlign: 'top' };\r\n return (\r\n \r\n \r\n {event.Timestamp}\r\n \r\n \r\n {event.EventType}\r\n \r\n \r\n {!!event.Name ? event.Name : event.FunctionName}\r\n \r\n \r\n {event.ScheduledTime}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n Box, Button, FormControl, InputLabel, LinearProgress, MenuItem, Select, Toolbar, Typography\r\n} from '@material-ui/core';\r\n\r\nimport RefreshIcon from '@material-ui/icons/Refresh';\r\n\r\nimport './OrchestrationDetails.css';\r\n\r\nimport { DurableEntityButtons } from './DurableEntityButtons';\r\nimport { DurableEntityFields } from './DurableEntityFields';\r\nimport { ErrorMessage } from './ErrorMessage';\r\nimport { OrchestrationButtons } from './OrchestrationButtons';\r\nimport { OrchestrationDetailsState } from '../states/OrchestrationDetailsState';\r\nimport { OrchestrationFields } from './OrchestrationFields';\r\n\r\n// Orchestration Details view\r\n@observer\r\nexport class OrchestrationDetails extends React.Component<{ state: OrchestrationDetailsState }> {\r\n\r\n componentDidMount() {\r\n\r\n // Triggering initial load\r\n this.props.state.loadDetails();\r\n }\r\n \r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (
\r\n {state.inProgress ? () : ()}\r\n \r\n \r\n\r\n {state.details.entityType === \"Orchestration\" && (\r\n \r\n )}\r\n {state.details.entityType === \"DurableEntity\" && (\r\n \r\n )}\r\n \r\n \r\n \r\n\r\n \r\n Auto-refresh\r\n state.autoRefresh = evt.target.value as number}\r\n inputProps={{ id: 'auto-refresh-select' }}>\r\n Never\r\n Every 1 sec.\r\n Every 5 sec.\r\n Every 10 sec.\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n {state.details.entityType === \"Orchestration\" && (\r\n \r\n )}\r\n {state.details.entityType === \"DurableEntity\" && (\r\n \r\n )}\r\n\r\n {state.inProgress ? () : ()}\r\n \r\n\r\n \r\n \r\n
);\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport {\r\n Box, Checkbox, Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, FormControl,\r\n FormControlLabel, FormGroup, FormLabel, LinearProgress, Radio, RadioGroup, TextField, Tooltip, Typography\r\n} from '@material-ui/core';\r\n\r\nimport './PurgeHistoryDialog.css';\r\n\r\nimport { DateTimeHelpers } from '../DateTimeHelpers';\r\nimport { ErrorMessage } from './ErrorMessage';\r\nimport { EntityType, RuntimeStatus } from '../states/DurableOrchestrationStatus';\r\nimport { PurgeHistoryDialogState } from '../states/PurgeHistoryDialogState';\r\n\r\n// Dialog with parameters for purging orchestration instance history\r\n@observer\r\nexport class PurgeHistoryDialog extends React.Component<{ state: PurgeHistoryDialogState }> {\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (\r\n { if (!state.inProgress) state.dialogOpen = false; }}>\r\n\r\n Purge Instance History\r\n\r\n {state.instancesDeleted === null && (\r\n
\r\n \r\n\r\n {state.inProgress ? () : ()}\r\n\r\n \r\n WARNING: this operation drops instance states from the underlying storage and cannot be undone.\r\n\r\n {state.entityType === \"DurableEntity\" && (\r\n \r\n It might as well remove Durable Entities, that are still active.\r\n Ensure that you specify the correct time frame!\r\n \r\n )}\r\n\r\n \r\n\r\n \r\n Apply to:\r\n state.entityType = (evt.target as HTMLInputElement).value as EntityType}\r\n >\r\n }\r\n label=\"Orchestrations\"\r\n />\r\n }\r\n label=\"Durable Entities\"\r\n />\r\n \r\n \r\n\r\n { state.timeFrom = DateTimeHelpers.getDateTimeValue(evt); }}\r\n />\r\n\r\n { state.timeTill = DateTimeHelpers.getDateTimeValue(evt); }}\r\n />\r\n\r\n \r\n With the following status:\r\n\r\n {state.entityType === \"Orchestration\" && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {state.entityType === \"DurableEntity\" && (\r\n \r\n \r\n }\r\n label=\"Running\"\r\n disabled={true}\r\n />\r\n \r\n \r\n )}\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n\r\n {state.instancesDeleted !== null && (\r\n
\r\n \r\n \r\n {state.instancesDeleted} instances were deleted.\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\n@observer\r\nclass RuntimeStatusCheckbox extends React.Component<{ state: PurgeHistoryDialogState, runtimeStatus: RuntimeStatus }> {\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n const runtimeStatus = this.props.runtimeStatus;\r\n\r\n return (\r\n state.setStatusIncluded(runtimeStatus, evt.target.checked)} />}\r\n label={runtimeStatus}\r\n />\r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport { AppBar, Breadcrumbs, Box, Link, Toolbar, Typography } from '@material-ui/core';\r\n\r\nimport './Main.css';\r\n\r\nimport { LoginIcon } from './LoginIcon';\r\nimport { MainMenu } from './MainMenu';\r\nimport { MainState } from '../states/MainState';\r\nimport { Orchestrations } from './Orchestrations';\r\nimport { OrchestrationDetails } from './OrchestrationDetails';\r\nimport { PurgeHistoryDialog } from './PurgeHistoryDialog';\r\n\r\nconst logo = require('../logo.svg');\r\n\r\nexport const UriSuffix = process.env.REACT_APP_URI_SUFFIX as string;\r\n\r\n// The main application view\r\n@observer\r\nexport class Main extends React.Component<{ state: MainState }> {\r\n\r\n render(): JSX.Element {\r\n const state = this.props.state;\r\n\r\n return (\r\n
\r\n\r\n {!state.loginState && (\r\n \r\n )}\r\n \r\n {!!state.loginState && (\r\n \r\n \r\n\r\n {state.loginState.isLoggedIn && !!state.mainMenuState && (\r\n \r\n )}\r\n\r\n \r\n \r\n\r\n \r\n Durable Functions Monitor\r\n \r\n\r\n \r\n \r\n / instances\r\n \r\n {!!state.orchestrationDetailsState && (\r\n \r\n {state.orchestrationDetailsState.orchestrationId}\r\n \r\n )}\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n )}\r\n\r\n {!!state.orchestrationsState && (!state.loginState || state.loginState.isLoggedIn) && (\r\n \r\n )}\r\n\r\n {!!state.orchestrationDetailsState && (!state.loginState || state.loginState.isLoggedIn) && (\r\n \r\n )}\r\n\r\n \r\n\r\n
\r\n );\r\n }\r\n}","import axios, { Method } from 'axios';\r\nimport { IBackendClient } from './IBackendClient';\r\n\r\nexport const BackendBaseUri = process.env.REACT_APP_BACKEND_BASE_URI as string;\r\n\r\n// Common IBackendClient implementation, sends HTTP requests directly\r\nexport class BackendClient implements IBackendClient {\r\n\r\n get isVsCode(): boolean { return false; }\r\n\r\n constructor(private _getAuthorizationHeaderAsync: () => Promise<{ Authorization: string }>) {\r\n }\r\n\r\n call(method: Method, url: string, data?: any): Promise {\r\n return new Promise((resolve, reject) => {\r\n\r\n this._getAuthorizationHeaderAsync().then(headers => {\r\n\r\n axios.request({\r\n url: BackendBaseUri + url,\r\n method, data, headers\r\n }).then(r => { resolve(r.data); }, reject);\r\n });\r\n });\r\n }\r\n}","import { action, observable, computed } from 'mobx'\r\nimport axios, { AxiosResponse } from 'axios';\r\nimport * as Msal from 'msal';\r\n\r\nimport { ErrorMessageState } from './ErrorMessageState';\r\n\r\nexport const BackendBaseUri = process.env.REACT_APP_BACKEND_BASE_URI as string;\r\n\r\n// Login State\r\nexport class LoginState extends ErrorMessageState {\r\n\r\n @computed\r\n get isLoggedIn(): boolean { return this._isLoggedIn; };\r\n\r\n @computed\r\n get isLoggedInAnonymously(): boolean { return !this._userName; };\r\n\r\n @computed\r\n get userName(): string { return this._userName; };\r\n\r\n @observable\r\n menuAnchorElement?: Element;\r\n\r\n constructor() {\r\n super();\r\n this.login();\r\n }\r\n\r\n login() {\r\n const uri = `${BackendBaseUri}/easyauth-config`;\r\n axios.get(uri).then(this.loginWithEasyAuthConfig, err => {\r\n this.errorMessage = `${err.message}.${(!!err.response ? err.response.data : '')}`;\r\n });\r\n }\r\n\r\n logout() {\r\n this.menuAnchorElement = undefined;\r\n this._aadApp.logout();\r\n }\r\n\r\n @action.bound\r\n getAuthorizationHeaderAsync() {\r\n\r\n // Let's think we're on localhost and proceed with no auth\r\n if (!this._aadApp) {\r\n return new Promise<{ Authorization: string }>((resolve, reject) => resolve());\r\n }\r\n\r\n return new Promise<{ Authorization: string }>((resolve, reject) => {\r\n // Obtaining a token to access our own AAD app\r\n const authParams: Msal.AuthenticationParameters = {\r\n scopes: [this._aadApp.getCurrentConfiguration().auth.clientId]\r\n };\r\n\r\n this._aadApp.acquireTokenSilent(authParams)\r\n .then((authResponse) => {\r\n\r\n var accessToken = authResponse.accessToken;\r\n if (!accessToken) {\r\n // https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/736\r\n // accessToken might randomly be returned as null, in which case we can probably use id_token\r\n // (which is supposed to be the same)\r\n console.log('DFM: accessToken is null, so using idToken.rawIdToken instead');\r\n accessToken = authResponse.idToken.rawIdToken;\r\n }\r\n\r\n resolve({ Authorization: `Bearer ${accessToken}` });\r\n\r\n }, err => {\r\n // If silent token aquiring failed, then just redirecting the user back to AAD, \r\n // so that the page is reloaded anyway.\r\n // This is supposed to happen very rarely, as default refresh token lifetime is quite long. \r\n console.log(`DFM: acquireTokenSilent() failed (${err}), so calling acquireTokenRedirect()...`);\r\n this._aadApp.acquireTokenRedirect(authParams);\r\n });\r\n });\r\n }\r\n\r\n @observable\r\n private _isLoggedIn: boolean = false;\r\n\r\n @observable\r\n private _userName: string;\r\n\r\n private _aadApp: Msal.UserAgentApplication;\r\n\r\n @action.bound\r\n private loginWithEasyAuthConfig(easyAuthConfigResponse: AxiosResponse) {\r\n\r\n const config = easyAuthConfigResponse.data;\r\n if (!config.clientId) {\r\n // Let's think we're on localhost and proceed with no auth\r\n this._isLoggedIn = true;\r\n return;\r\n }\r\n\r\n // Configuring MSAL with values received from backend\r\n this._aadApp = new Msal.UserAgentApplication({\r\n auth: {\r\n clientId: config.clientId,\r\n authority: config.authority\r\n }\r\n })\r\n\r\n // Checking if it was a redirect from AAD\r\n this._aadApp.handleRedirectCallback(() => { }, this.handleRedirectCallbackFailed);\r\n const account = this._aadApp.getAccount();\r\n\r\n if (!account) {\r\n // Redirecting user to AAD. Redirect flow is more reliable (doesn't need popups enabled)\r\n console.log('DFM: redirecting user to AAD for login...');\r\n this._aadApp.loginRedirect();\r\n } else {\r\n // We've logged in successfully. Setting user name.\r\n this._userName = account.userName;\r\n this._isLoggedIn = true;\r\n }\r\n }\r\n\r\n @action.bound\r\n private handleRedirectCallbackFailed(authErr: Msal.AuthError, accountState: string) {\r\n this.errorMessage = `Failed to handle login redirect. name: ${authErr.name}, message: ${authErr.message}, errorCode: ${authErr.errorCode}, errorMessage: ${authErr.errorMessage}, accountState: ${accountState}`;\r\n }\r\n}","import { observable, computed } from 'mobx'\r\n\r\nimport { ErrorMessageState } from './ErrorMessageState';\r\nimport { IBackendClient } from '../services/IBackendClient';\r\nimport { PurgeHistoryDialogState } from './PurgeHistoryDialogState';\r\n\r\n// State of Main Menu component\r\nexport class MainMenuState extends ErrorMessageState {\r\n\r\n @observable\r\n menuAnchorElement?: Element;\r\n\r\n @observable\r\n hubName: string;\r\n @observable\r\n connectionString: string;\r\n \r\n @observable\r\n connectionParamsDialogOpen: boolean = false;\r\n\r\n @computed\r\n get inProgress(): boolean { return this._inProgress; }\r\n\r\n @computed\r\n get isReadonly(): boolean { return this._isReadOnly; }\r\n\r\n @computed\r\n get isDirty(): boolean {\r\n return (this.connectionString !== this._oldConnectionString) || (this.hubName !== this._oldHubName);\r\n }\r\n\r\n constructor(private _backendClient: IBackendClient, private _purgeHistoryDialogState: PurgeHistoryDialogState) {\r\n super();\r\n }\r\n \r\n showConnectionParamsDialog() {\r\n this.menuAnchorElement = undefined;\r\n\r\n this.connectionParamsDialogOpen = true;\r\n this._inProgress = true;\r\n\r\n this._backendClient.call('GET', '/manage-connection').then(response => {\r\n\r\n this.connectionString = this._oldConnectionString = response.connectionString;\r\n this.hubName = this._oldHubName = response.hubName;\r\n this._isReadOnly = response.isReadOnly;\r\n\r\n }, err => {\r\n this.errorMessage = `Load failed: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n }).finally(() => {\r\n this._inProgress = false;\r\n });\r\n }\r\n\r\n saveConnectionParams() {\r\n\r\n this._inProgress = true;\r\n\r\n this._backendClient.call('PUT', '/manage-connection', {\r\n connectionString: this.connectionString !== this._oldConnectionString ? this.connectionString : '',\r\n hubName: this.hubName\r\n }).then(() => {\r\n \r\n this.connectionParamsDialogOpen = false;\r\n\r\n alert(`Your changes were saved to local.settings.json file, but they cannot be picked up automatically. Please, restart the Function Host for them to take effect.`);\r\n\r\n }, err => {\r\n this.errorMessage = `Save failed: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n }).finally(() => {\r\n this._inProgress = false;\r\n });\r\n }\r\n\r\n showPurgeHistoryDialog() {\r\n this.menuAnchorElement = undefined;\r\n \r\n this._purgeHistoryDialogState.dialogOpen = true;\r\n }\r\n\r\n setWindowTitle() {\r\n \r\n this._backendClient.call('GET', '/about').then(response => {\r\n document.title = `Durable Functions Monitor (${response.accountName}/${response.hubName}) v${response.version}`;\r\n });\r\n }\r\n\r\n @observable\r\n private _inProgress: boolean = false;\r\n\r\n @observable\r\n private _isReadOnly: boolean = false;\r\n \r\n private _oldConnectionString: string;\r\n private _oldHubName: string;\r\n}","import { observable, computed } from 'mobx'\r\n\r\nimport { DurableOrchestrationStatus } from '../states/DurableOrchestrationStatus';\r\nimport { ErrorMessageState } from './ErrorMessageState';\r\nimport { IBackendClient } from '../services/IBackendClient';\r\nimport { ITypedLocalStorage } from './ITypedLocalStorage';\r\n\r\n// State of OrchestrationDetails view\r\nexport class OrchestrationDetailsState extends ErrorMessageState {\r\n\r\n @observable\r\n details: DurableOrchestrationStatus = new DurableOrchestrationStatus();\r\n\r\n @computed\r\n get orchestrationId(): string { return this._orchestrationId; }\r\n\r\n @computed\r\n get inProgress(): boolean { return this._inProgress; };\r\n\r\n @computed\r\n get autoRefresh(): number { return this._autoRefresh; }\r\n set autoRefresh(val: number) {\r\n this._autoRefresh = val;\r\n this._localStorage.setItem('autoRefresh', this._autoRefresh.toString());\r\n this.loadDetails();\r\n }\r\n\r\n @computed\r\n get dialogOpen(): boolean { return this._dialogOpen; }\r\n set dialogOpen(val: boolean) {\r\n this._dialogOpen = val;\r\n this.eventName = '';\r\n this.eventData = '';\r\n }\r\n\r\n @observable\r\n rewindConfirmationOpen: boolean = false;\r\n @observable\r\n terminateConfirmationOpen: boolean = false;\r\n @observable\r\n purgeConfirmationOpen: boolean = false;\r\n @observable\r\n eventName: string;\r\n @observable\r\n eventData: string;\r\n\r\n constructor(private _orchestrationId: string,\r\n private _backendClient: IBackendClient,\r\n private _localStorage: ITypedLocalStorage) {\r\n super();\r\n\r\n const autoRefreshString = this._localStorage.getItem('autoRefresh');\r\n if (!!autoRefreshString) {\r\n this._autoRefresh = Number(autoRefreshString);\r\n }\r\n }\r\n\r\n rewind() {\r\n this.rewindConfirmationOpen = false;\r\n\r\n const uri = `/orchestrations('${this._orchestrationId}')/rewind`;\r\n this._inProgress = true;\r\n\r\n this._backendClient.call('POST', uri).then(() => {\r\n this._inProgress = false;\r\n this.loadDetails();\r\n }, err => {\r\n this._inProgress = false;\r\n this.errorMessage = `Failed to rewind: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n });\r\n }\r\n\r\n terminate() {\r\n this.terminateConfirmationOpen = false;\r\n\r\n const uri = `/orchestrations('${this._orchestrationId}')/terminate`;\r\n this._inProgress = true;\r\n\r\n this._backendClient.call('POST', uri).then(() => {\r\n this._inProgress = false;\r\n this.loadDetails();\r\n }, err => {\r\n this._inProgress = false;\r\n this.errorMessage = `Failed to terminate: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n });\r\n }\r\n\r\n purge() {\r\n this.purgeConfirmationOpen = false;\r\n\r\n const uri = `/orchestrations('${this._orchestrationId}')/purge`;\r\n this._inProgress = true;\r\n\r\n this._backendClient.call('POST', uri).then(() => {\r\n this._inProgress = false;\r\n this.details = new DurableOrchestrationStatus();\r\n }, err => {\r\n this._inProgress = false;\r\n this.errorMessage = `Failed to purge: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n });\r\n }\r\n\r\n raiseEvent() {\r\n\r\n const uri = `/orchestrations('${this._orchestrationId}')/raise-event`;\r\n const requestBody = { name: this.eventName, data: null };\r\n\r\n try {\r\n requestBody.data = JSON.parse(this.eventData);\r\n } catch (err) {\r\n this.errorMessage = `Event Data failed to parse: ${err.message}`;\r\n return;\r\n } finally {\r\n this.dialogOpen = false;\r\n }\r\n\r\n this._inProgress = true;\r\n\r\n this._backendClient.call('POST', uri, requestBody).then(() => {\r\n this._inProgress = false;\r\n this.loadDetails();\r\n }, err => {\r\n this._inProgress = false;\r\n this.errorMessage = `Failed to raise an event: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n });\r\n }\r\n\r\n loadDetails() {\r\n\r\n if (!!this.inProgress) {\r\n return;\r\n }\r\n this._inProgress = true;\r\n\r\n const uri = `/orchestrations('${this._orchestrationId}')`;\r\n\r\n this._backendClient.call('GET', uri).then(response => {\r\n\r\n if (!response) {\r\n this.errorMessage = `Orchestration '${this._orchestrationId}' not found.`;\r\n\r\n // Cancelling auto-refresh just in case\r\n this._autoRefresh = 0;\r\n return;\r\n }\r\n\r\n // Based on backend implementation, this field can appear to be called differently ('historyEvents' vs. 'history')\r\n // Fixing that here\r\n if (!!response.history) {\r\n response.historyEvents = response.history;\r\n }\r\n\r\n this.details = response;\r\n\r\n // Doing auto-refresh\r\n if (!!this._autoRefresh) {\r\n\r\n if (!!this._autoRefreshToken) {\r\n clearTimeout(this._autoRefreshToken);\r\n }\r\n this._autoRefreshToken = setTimeout(() => this.loadDetails(), this._autoRefresh * 1000);\r\n }\r\n\r\n }, err => {\r\n\r\n // Cancelling auto-refresh just in case\r\n this._autoRefresh = 0;\r\n\r\n this.errorMessage = `Load failed: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n\r\n }).finally(() => {\r\n this._inProgress = false;\r\n });\r\n }\r\n\r\n @observable\r\n private _inProgress: boolean = false;\r\n @observable\r\n _dialogOpen: boolean = false;\r\n @observable\r\n private _autoRefresh: number = 0;\r\n\r\n private _autoRefreshToken: NodeJS.Timeout;\r\n}","import { observable, computed } from 'mobx'\r\n\r\nimport { IBackendClient } from '../services/IBackendClient';\r\nimport { RuntimeStatus, EntityType } from './DurableOrchestrationStatus';\r\nimport { ErrorMessageState } from './ErrorMessageState';\r\n\r\n// State of Purge History Dialog\r\nexport class PurgeHistoryDialogState extends ErrorMessageState {\r\n\r\n @computed\r\n get dialogOpen(): boolean { return this._dialogOpen; };\r\n set dialogOpen(value: boolean) {\r\n this._dialogOpen = value;\r\n\r\n if (value) {\r\n\r\n this._instancesDeleted = null;\r\n\r\n var timeFrom: Date = new Date();\r\n timeFrom.setDate(timeFrom.getDate() - 1);\r\n this.timeFrom = timeFrom;\r\n\r\n this.timeTill = new Date();\r\n\r\n this._statuses = new Set([\"Completed\", \"Terminated\"]);\r\n\r\n this.entityType = \"Orchestration\";\r\n }\r\n }\r\n\r\n @computed\r\n get instancesDeleted(): number | null { return this._instancesDeleted; };\r\n\r\n @computed\r\n get inProgress(): boolean { return this._inProgress; };\r\n\r\n @computed\r\n get isValid(): boolean { return this._statuses.size > 0; };\r\n\r\n constructor(private _backendClient: IBackendClient) {\r\n super();\r\n }\r\n\r\n purgeHistory() {\r\n\r\n this._inProgress = true;\r\n\r\n this._backendClient.call('POST', '/purge-history', {\r\n entityType: this.entityType,\r\n timeFrom: this.timeFrom,\r\n timeTill: this.timeTill,\r\n statuses: Array.from(this._statuses.values())\r\n }).then(response => {\r\n\r\n this._instancesDeleted = response.instancesDeleted;\r\n\r\n }, err => {\r\n this.errorMessage = `Purge history failed: ${err.message}.${(!!err.response ? err.response.data : '')} `;\r\n }).finally(() => {\r\n this._inProgress = false;\r\n });\r\n }\r\n\r\n @observable\r\n timeFrom: Date = new Date();\r\n @observable\r\n timeTill: Date = new Date();\r\n\r\n @observable\r\n entityType: EntityType = \"Orchestration\";\r\n\r\n getStatusIncluded(status: RuntimeStatus) {\r\n return this._statuses.has(status);\r\n }\r\n\r\n setStatusIncluded(status: RuntimeStatus, included: boolean) {\r\n if (included) {\r\n this._statuses.add(status);\r\n } else {\r\n this._statuses.delete(status);\r\n }\r\n }\r\n\r\n @observable\r\n private _statuses: Set = new Set();\r\n\r\n @observable\r\n private _dialogOpen: boolean = false;\r\n \r\n @observable\r\n private _inProgress: boolean = false;\r\n\r\n @observable\r\n private _instancesDeleted: number | null = null;\r\n}","import { ITypedLocalStorage } from './ITypedLocalStorage';\r\n\r\n// Stores field values in a localStorage\r\nexport class TypedLocalStorage implements ITypedLocalStorage\r\n{\r\n constructor(private _prefix: string) { }\r\n\r\n setItem(fieldName: Extract, value: string) {\r\n localStorage.setItem(`${this._prefix}::${fieldName}`, value);\r\n }\r\n\r\n setItems(items: { fieldName: Extract, value: string | null }[]) {\r\n for (const item of items) {\r\n if (item.value === null) {\r\n localStorage.removeItem(`${this._prefix}::${item.fieldName}`);\r\n } else {\r\n localStorage.setItem(`${this._prefix}::${item.fieldName}`, item.value);\r\n }\r\n }\r\n }\r\n\r\n getItem(fieldName: Extract): string | null {\r\n return localStorage.getItem(`${this._prefix}::${fieldName}`);\r\n }\r\n\r\n removeItem(fieldName: Extract) {\r\n localStorage.removeItem(`${this._prefix}::${fieldName}`);\r\n }\r\n}\r\n","import { Method } from 'axios';\r\nimport { IBackendClient } from './IBackendClient';\r\n\r\n// IBackendClient implementation for VsCode extension, forwards HTTP requests to VsCode\r\nexport class VsCodeBackendClient implements IBackendClient {\r\n\r\n get isVsCode(): boolean { return true; }\r\n\r\n constructor(private _vsCodeApi: any) {\r\n\r\n // Handling responses from VsCode\r\n window.addEventListener('message', event => {\r\n\r\n const message = event.data;\r\n\r\n // handling menu commands\r\n const requestHandler = this._handlers[message.id];\r\n if (!!requestHandler) {\r\n requestHandler(message.data);\r\n return;\r\n }\r\n\r\n // handling HTTP responses\r\n const requestPromise = this._requests[message.id];\r\n if (!requestPromise) {\r\n return;\r\n }\r\n\r\n if (!!message.data) {\r\n requestPromise.resolve(message.data);\r\n } else {\r\n requestPromise.reject(message.err);\r\n }\r\n\r\n delete this._requests[message.id];\r\n });\r\n }\r\n\r\n call(method: Method | 'OpenInNewWindow', url: string, data?: any): Promise {\r\n\r\n const requestId = Math.random().toString();\r\n\r\n // Sending request to VsCode\r\n this._vsCodeApi.postMessage({ id: requestId, method, url, data });\r\n\r\n return new Promise((resolve, reject) => {\r\n this._requests[requestId] = { resolve, reject };\r\n });\r\n }\r\n\r\n setPurgeHistoryHandler(handler: (data: any) => void) {\r\n this._handlers['purgeHistory'] = handler;\r\n\r\n // Notifying VsCode that we're ready to process messages\r\n // Cannot do this in ctor, because VsCodeBackendClient and PurgeHistoryDialogState depend on each other\r\n this._vsCodeApi.postMessage({ method: 'IAmReady' });\r\n }\r\n\r\n private _handlers: {\r\n [id: string]: (data: any) => void\r\n } = {};\r\n\r\n private _requests: {\r\n [id: string]: {\r\n resolve: (value?: any) => void,\r\n reject: (reason?: any) => void\r\n }\r\n } = {};\r\n}","import { ITypedLocalStorage } from './ITypedLocalStorage';\r\n\r\n// Stores field values in VsCode\r\nexport class VsCodeTypedLocalStorage implements ITypedLocalStorage\r\n{\r\n constructor(private _prefix: string, private _vsCodeApi: any) { \r\n\r\n const oldState = this._vsCodeApi.getState();\r\n VsCodeTypedLocalStorage.State = !oldState ? {} : oldState;\r\n }\r\n\r\n setItem(fieldName: Extract, value: string) {\r\n\r\n VsCodeTypedLocalStorage.State[`${this._prefix}::${fieldName}`] = value;\r\n this._vsCodeApi.setState(VsCodeTypedLocalStorage.State);\r\n }\r\n\r\n setItems(items: { fieldName: Extract, value: string | null }[]) {\r\n\r\n for (const item of items) {\r\n\r\n if (item.value === null) {\r\n delete VsCodeTypedLocalStorage.State[`${this._prefix}::${item.fieldName}`];\r\n } else {\r\n VsCodeTypedLocalStorage.State[`${this._prefix}::${item.fieldName}`] = item.value;\r\n }\r\n }\r\n this._vsCodeApi.setState(VsCodeTypedLocalStorage.State);\r\n }\r\n\r\n getItem(fieldName: Extract): string | null {\r\n return VsCodeTypedLocalStorage.State[`${this._prefix}::${fieldName}`];\r\n }\r\n\r\n removeItem(fieldName: Extract) {\r\n\r\n delete VsCodeTypedLocalStorage.State[`${this._prefix}::${fieldName}`];\r\n this._vsCodeApi.setState(VsCodeTypedLocalStorage.State);\r\n }\r\n\r\n private static State = {};\r\n}\r\n","import { BackendClient } from '../services/BackendClient';\r\nimport { LoginState } from './LoginState';\r\nimport { MainMenuState } from './MainMenuState';\r\nimport { OrchestrationsState } from './OrchestrationsState';\r\nimport { OrchestrationDetailsState } from './OrchestrationDetailsState';\r\nimport { PurgeHistoryDialogState } from './PurgeHistoryDialogState';\r\nimport { TypedLocalStorage } from './TypedLocalStorage';\r\nimport { VsCodeBackendClient } from '../services/VsCodeBackendClient';\r\nimport { VsCodeTypedLocalStorage } from './VsCodeTypedLocalStorage';\r\n\r\n// This method is provided by VsCode, when running inside a WebView\r\ndeclare const acquireVsCodeApi: () => any;\r\n\r\n// A global variable declared in index.html and replaced by VsCode extension\r\ndeclare const OrchestrationIdFromVsCode: string;\r\n\r\nexport const UriSuffix = process.env.REACT_APP_URI_SUFFIX as string;\r\n\r\n// Main Application State\r\nexport class MainState {\r\n \r\n loginState?: LoginState; \r\n mainMenuState?: MainMenuState;\r\n orchestrationsState?: OrchestrationsState;\r\n orchestrationDetailsState?: OrchestrationDetailsState;\r\n purgeHistoryDialogState: PurgeHistoryDialogState;\r\n\r\n constructor() {\r\n\r\n // checking whether we're inside VsCode\r\n var vsCodeApi: any = undefined;\r\n try {\r\n vsCodeApi = acquireVsCodeApi();\r\n } catch { }\r\n\r\n if (!!vsCodeApi) {\r\n\r\n const backendClient = new VsCodeBackendClient(vsCodeApi);\r\n\r\n this.purgeHistoryDialogState = new PurgeHistoryDialogState(backendClient);\r\n\r\n if (!!this.orchestrationId) {\r\n this.orchestrationDetailsState = new OrchestrationDetailsState(this.orchestrationId,\r\n backendClient,\r\n new VsCodeTypedLocalStorage('OrchestrationDetailsState', vsCodeApi));\r\n } else {\r\n this.orchestrationsState = new OrchestrationsState(backendClient,\r\n new VsCodeTypedLocalStorage('OrchestrationsState', vsCodeApi));\r\n\r\n backendClient.setPurgeHistoryHandler(() => this.purgeHistoryDialogState.dialogOpen = true);\r\n }\r\n \r\n } else {\r\n\r\n this.loginState = new LoginState();\r\n\r\n const backendClient = new BackendClient(this.loginState.getAuthorizationHeaderAsync);\r\n\r\n this.purgeHistoryDialogState = new PurgeHistoryDialogState(backendClient);\r\n\r\n if (!!this.orchestrationId) {\r\n this.orchestrationDetailsState = new OrchestrationDetailsState(this.orchestrationId,\r\n backendClient, \r\n new TypedLocalStorage('OrchestrationDetailsState'));\r\n } else {\r\n this.mainMenuState = new MainMenuState(backendClient, this.purgeHistoryDialogState);\r\n this.orchestrationsState = new OrchestrationsState(backendClient,\r\n new TypedLocalStorage('OrchestrationsState'));\r\n }\r\n }\r\n }\r\n\r\n // Extracts orchestrationId from URL or from VsCode\r\n private get orchestrationId(): string {\r\n\r\n if (!!OrchestrationIdFromVsCode) {\r\n return OrchestrationIdFromVsCode;\r\n }\r\n\r\n const uriSuffix = `${UriSuffix}/orchestrations/`;\r\n if (!window.location.pathname.startsWith(uriSuffix)) {\r\n return '';\r\n }\r\n\r\n return window.location.pathname.substr(uriSuffix.length);\r\n }\r\n}","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\n\nimport registerServiceWorker from './registerServiceWorker';\n\n// styles\nimport 'bootstrap/dist/css/bootstrap.css';\nimport './index.css';\n\nimport { Main } from './components/Main';\nimport { MainState } from './states/MainState';\n\n// This is the app's global state. It consists of multiple parts, consumed by multiple nested components\nconst appState = new MainState();\n\nReactDOM.render(\n
,\n document.getElementById('root') as HTMLElement\n);\n\nregisterServiceWorker();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/durablefunctionsmonitor.react/src/components/DurableEntityFields.tsx b/durablefunctionsmonitor.react/src/components/DurableEntityFields.tsx index ade3260..4019f7c 100644 --- a/durablefunctionsmonitor.react/src/components/DurableEntityFields.tsx +++ b/durablefunctionsmonitor.react/src/components/DurableEntityFields.tsx @@ -78,27 +78,27 @@ export class DurableEntityFields extends React.Component<{ details: DurableOrche diff --git a/durablefunctionsmonitor.react/src/components/MainMenu.tsx b/durablefunctionsmonitor.react/src/components/MainMenu.tsx index 658c035..77867be 100644 --- a/durablefunctionsmonitor.react/src/components/MainMenu.tsx +++ b/durablefunctionsmonitor.react/src/components/MainMenu.tsx @@ -64,7 +64,9 @@ export class MainMenu extends React.Component<{ state: MainMenuState }> { margin="dense" label="Hub Name" fullWidth - disabled={state.inProgress || state.isReadonly} + disabled={state.inProgress } + InputProps={{ readOnly: state.isReadonly }} + InputLabelProps={{ shrink: true }} value={state.hubName} onChange={(evt) => state.hubName = evt.target.value as string} /> @@ -74,8 +76,9 @@ export class MainMenu extends React.Component<{ state: MainMenuState }> { margin="dense" label="Azure Storage Connection String" fullWidth + disabled={state.inProgress } + InputProps={{ readOnly: state.isReadonly }} InputLabelProps={{ shrink: true }} - disabled={state.inProgress || state.isReadonly} value={state.connectionString} onChange={(evt) => state.connectionString = evt.target.value as string} /> @@ -87,13 +90,17 @@ export class MainMenu extends React.Component<{ state: MainMenuState }> { - + + {(!state.isReadonly) && ( + + )} + diff --git a/durablefunctionsmonitor.react/src/components/OrchestrationFields.tsx b/durablefunctionsmonitor.react/src/components/OrchestrationFields.tsx index c33f9de..da37094 100644 --- a/durablefunctionsmonitor.react/src/components/OrchestrationFields.tsx +++ b/durablefunctionsmonitor.react/src/components/OrchestrationFields.tsx @@ -75,27 +75,27 @@ export class OrchestrationFields extends React.Component<{ details: DurableOrche @@ -128,9 +128,7 @@ export class OrchestrationFields extends React.Component<{ details: DurableOrche {HistoryEventFields.map(col => { - return ( - {col} - ); + return {col}; })}