@c8y/ngx-components 1010.0.33 → 1010.0.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/c8y-ngx-components-operations-bulk-operations-list.umd.js +18 -10
- package/bundles/c8y-ngx-components-operations-bulk-operations-list.umd.js.map +1 -1
- package/bundles/c8y-ngx-components-operations-bulk-operations-list.umd.min.js +1 -1
- package/bundles/c8y-ngx-components-operations-bulk-operations-list.umd.min.js.map +1 -1
- package/esm2015/operations/bulk-operations-list/bulk-operation-list-item.component.js +4 -3
- package/esm2015/operations/bulk-operations-list/bulk-operation-list-item.model.js +16 -9
- package/esm5/operations/bulk-operations-list/bulk-operation-list-item.component.js +5 -4
- package/esm5/operations/bulk-operations-list/bulk-operation-list-item.model.js +16 -9
- package/fesm2015/c8y-ngx-components-operations-bulk-operations-list.js +17 -9
- package/fesm2015/c8y-ngx-components-operations-bulk-operations-list.js.map +1 -1
- package/fesm5/c8y-ngx-components-operations-bulk-operations-list.js +18 -10
- package/fesm5/c8y-ngx-components-operations-bulk-operations-list.js.map +1 -1
- package/locales/locales.pot +3 -0
- package/operations/bulk-operations-list/bulk-operation-list-item.model.d.ts +2 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@c8y/ngx-components/operations/bulk-operations-list/bulk-operation-wrapper.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/bulk-operation-details.service.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/modals/bulk-operations-modal.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/modals/bulk-operation-modals.service.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/modals/bulk-operations-reschedule-modal.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/bulk-operation-list-item.model.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/bulk-operation-list-item.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/bulk-operations-list.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/bulk-operation-details-tabs.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/bulk-operation-details.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/single-operation-item.model.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/single-operations-list.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/single-operation-item.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/type-list/bulk-operation-type-list.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/bulk-operations-list.module.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__read","o","m","ar","error","BulkOperationWrapperComponent","bulkOperationDetailsService","modalRef","BulkOperationDetailsService","BsModalRef","tslib_1.__decorate","Input","Component","selector","template","bulkOperationsService","modalService","openDetails","bulkOperationId","getBulkOperationById","bulkOperation","_a","data","initialState","show","class","BulkOperationsService","BsModalService","Injectable","BulkOperationsModalComponent","bsModalRef","resolver","showComponent","cancel","hide","createComponent","item","component","factory","resolveComponentFactory","container","ComponentFactoryResolver","ViewChild","static","read","ViewContainerRef","BulkOperationModalsService","bsModalService","showNewBulkOperationModal","backdrop","hideNewBulkOperationModal","BulkOperationsRescheduleModalComponent","alert","closeSubject","Subject","ngOnInit","modalTitle","getTitle","onDateAndDelaySelect","$event","dateAndDelay","isRetryOperation","gettext","onCancel","onSave","startDate","scheduledDate","toISOString","creationRamp","delayInSeconds","createBulkOperation","newBulkOperation","success","addServerFailure","er_1","updateBulkOperation","er_2","AlertService","BULK_OPERATION_STATUS_LABELS","SCHEDULED","EXECUTING","CANCELED","FAILED","SUCCESSFUL","BULK_OPERATION_STATUS_OPTIONS","generalStatus","OperationBulkGeneralStatus","iconClass","EXECUTING_WITH_ERROR","BulkOperationListItemComponent","modal","detailsCollapsed","readOnly","showFailedOperation","EventEmitter","reload","refreshLoading","bulkOperationGeneralStatus","bulkOperationStatusOptions","finishDatePopoverText","progressBarClass","progressBarStatus","getIconClass","finishDate","calculateFinishDateMs","setProgressBar","ngOnChanges","changes","firstChange","_this","find","statusOption","includes","Date","getTime","progress","all","progressBarProgressFn","successful","failed","staticContentOfClass","progressBarState","progressBarColor","editSchedule","modalOptions","cloneDeep","cancelBulkOperation","confirm","Status","DANGER","deleteBulkOperation","id","emit","retryFailedOperation","clonedBulk","groupId","failedParentId","content","subscribe","setToSuccessful","openFailedOperation","isStatusScheduled","isStatusExecutingOrExecutingWithError","allOperationsCreated","executing","pending","isStatusCanceled","isStatusFailed","ModalService","Output","BulkOperationsListComponent","realtime","bulkOperationModalsService","bulkTypes","selectedTypeFilters","getTypeFilters","statusFilter$","BehaviorSubject","typeFilter$","timeFilter$","reload$","bulkOperations$","combineLatest","pipe","tap","switchMap","_b","statusFilters","timeFilters","filter","withLatestFrom","map","typeFilter","filterPipe","filterByType","shareReplay","allFilterFragments","flattenFilterFragments","getBulkTypes","bulkOperations","flattenedFragments","every","fragment","keys","operationPrototype","some","resetFilter","datePicker","clearFilter","statusFilter","reset","isFilterApplied","getValue","timeFilter","status","flatten","time","dateFrom","dateTo","getBulkOperations","addBulkOperation","listItems","forEach","listItem","collapsed","element","nativeElement","scrollIntoView","behavior","block","compareOperations","operationA","operationB","filters","reduce","flattened","current","concat","fragments","OperationBulkRealtimeService","ViewChildren","DatePickerComponent","providers","BulkOperationDetailsTabsComponent","onRetryFailedOperations","tabs","detailsTemplate","path","icon","auditTemplate","BulkOperationDetailsComponent","allFilterIsSelected","scrollToRetriedFromOperation","failedOperationId","SINGLE_OP_STATUS_NAMES","PENDING","ALL","SINGLE_OP_STATUS_PROPERTIES","selected","SingleOperationsListComponent","singleOperationStatusProperties","singleOperationStatusNames","ngAfterViewInit","filterOperationsByType","getFilterTypeOfSingleOperations","preset","setTimeout","bind","getOperationsByStatus","getSingleOperationsByStatus","singleOperations","retryBulkOperation","StatusFilterComponent","SingleOperationItemComponent","alertService","device","showIfTextTruncated","singleOperationsStatusProperties","getDeviceMO","operation","deviceId","isTextTruncated","retrySingleOperation","singleOperation","operationToCreate","omit","createSingleOperation","operationProperties","toUpperCase","getManagedObject","inventoryMO","failureReason","el","failureReasonRef","offsetWidth","scrollWidth","BulkOperationTypeListComponent","router","onCustomType","bulkList","handleClick","navigateByUrl","Router","bulkOperationListRoutes","BulkOperationsListModule","NgModule","imports","CoreModule","PopoverModule","TooltipModule","StatusFilterModule","OperationSummaryModule","BulkOperationSchedulerModule","RouterModule","forChild","declarations","entryComponents","exports"],"mappings":";;;;;;;;;;;;;;oFA6BO,IAAIA,EAAW,WAQlB,OAPAA,EAAWC,OAAOC,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACOJ,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAE9E,OAAON,IAEKU,MAAMC,KAAMP,YAezB,SAASQ,EAAWC,EAAYC,EAAQC,EAAKC,GAChD,IAA2HC,EAAvHC,EAAId,UAAUC,OAAQc,EAAID,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOlB,OAAOsB,yBAAyBN,EAAQC,GAAOC,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAAST,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAId,EAAIW,EAAWR,OAAS,EAAGH,GAAK,EAAGA,KAASe,EAAIJ,EAAWX,MAAIiB,GAAKD,EAAI,EAAID,EAAEE,GAAKD,EAAI,EAAID,EAAEH,EAAQC,EAAKI,GAAKF,EAAEH,EAAQC,KAASI,GAChJ,OAAOD,EAAI,GAAKC,GAAKrB,OAAOyB,eAAeT,EAAQC,EAAKI,GAAIA,EAWzD,SAASK,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOG,GAAKL,EAAOK,IACpF,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,IAAW,MAAOG,GAAKL,EAAOK,IACvF,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,OAITO,KAAKR,EAAWK,GAClGH,GAAMN,EAAYA,EAAUlB,MAAMe,EAASC,GAAc,KAAKS,WAI/D,SAASM,EAAYhB,EAASiB,GACjC,IAAsGC,EAAGC,EAAG5C,EAAG6C,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPhD,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOiD,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BT,EAAES,OAAOC,UAAY,WAAa,OAAO5C,OAAUkC,EACvJ,SAASM,EAAKhD,GAAK,OAAO,SAAUqD,GAAK,OACzC,SAAcC,GACV,GAAId,EAAG,MAAM,IAAIe,UAAU,mCAC3B,KAAOZ,GAAG,IACN,GAAIH,EAAI,EAAGC,IAAM5C,EAAY,EAARyD,EAAG,GAASb,EAAU,OAAIa,EAAG,GAAKb,EAAS,SAAO5C,EAAI4C,EAAU,SAAM5C,EAAES,KAAKmC,GAAI,GAAKA,EAAET,SAAWnC,EAAIA,EAAES,KAAKmC,EAAGa,EAAG,KAAKlB,KAAM,OAAOvC,EAE3J,OADI4C,EAAI,EAAG5C,IAAGyD,EAAK,CAAS,EAARA,EAAG,GAAQzD,EAAEiC,QACzBwB,EAAG,IACP,KAAK,EAAG,KAAK,EAAGzD,EAAIyD,EAAI,MACxB,KAAK,EAAc,OAAXX,EAAEC,QAAgB,CAAEd,MAAOwB,EAAG,GAAIlB,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIa,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKX,EAAEI,IAAIS,MAAOb,EAAEG,KAAKU,MAAO,SACxC,QACI,KAAM3D,EAAI8C,EAAEG,MAAMjD,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,KAAkB,IAAVoD,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEX,EAAI,EAAG,SACjG,GAAc,IAAVW,EAAG,MAAczD,GAAMyD,EAAG,GAAKzD,EAAE,IAAMyD,EAAG,GAAKzD,EAAE,IAAM,CAAE8C,EAAEC,MAAQU,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYX,EAAEC,MAAQ/C,EAAE,GAAI,CAAE8C,EAAEC,MAAQ/C,EAAE,GAAIA,EAAIyD,EAAI,MAC7D,GAAIzD,GAAK8C,EAAEC,MAAQ/C,EAAE,GAAI,CAAE8C,EAAEC,MAAQ/C,EAAE,GAAI8C,EAAEI,IAAIU,KAAKH,GAAK,MACvDzD,EAAE,IAAI8C,EAAEI,IAAIS,MAChBb,EAAEG,KAAKU,MAAO,SAEtBF,EAAKf,EAAKjC,KAAKgB,EAASqB,GAC1B,MAAOV,GAAKqB,EAAK,CAAC,EAAGrB,GAAIQ,EAAI,EAAI,QAAWD,EAAI3C,EAAI,EACtD,GAAY,EAARyD,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAExB,MAAOwB,EAAG,GAAKA,EAAG,QAAK,EAAQlB,MAAM,GArB9BL,CAAK,CAAC/B,EAAGqD,MA8CtD,SAASK,EAAOC,EAAG3D,GACtB,IAAI4D,EAAsB,mBAAXT,QAAyBQ,EAAER,OAAOC,UACjD,IAAKQ,EAAG,OAAOD,EACf,IAAmB3C,EAAYiB,EAA3BlC,EAAI6D,EAAEtD,KAAKqD,GAAOE,EAAK,GAC3B,IACI,WAAc,IAAN7D,GAAgBA,KAAM,MAAQgB,EAAIjB,EAAEiC,QAAQI,MAAMyB,EAAGJ,KAAKzC,EAAEc,OAExE,MAAOgC,GAAS7B,EAAI,CAAE6B,MAAOA,GACjC,QACQ,IACQ9C,IAAMA,EAAEoB,OAASwB,EAAI7D,EAAU,SAAI6D,EAAEtD,KAAKP,GAE1D,QAAkB,GAAIkC,EAAG,MAAMA,EAAE6B,OAE7B,OAAOD,mBChIT,SAAAE,EACSC,EACAC,GADAzD,KAAAwD,4BAAAA,EACAxD,KAAAyD,SAAAA,EAEX,gDAHwCC,SACnBC,EAAAA,cAJVC,EAAAA,CAARC,EAAAA,6CADUN,EAA6BtD,EAAA,CAJzC6D,EAAAA,UAAU,CACTC,SAAU,8BACVC,SAAA,ynBAEWT,mBCDX,SAAAG,EACUO,EACAC,GADAlE,KAAAiE,sBAAAA,EACAjE,KAAAkE,aAAAA,EAaZ,OAVQR,EAAA9D,UAAAuE,YAAN,SAAkBC,qGACuB,MAAA,CAAA,EAAMpE,KAAKiE,sBAAsBI,qBACtED,kBADIE,EAAiCC,EAAAlC,OAEpCmC,KACGC,EAAe,CAAEH,cAAaA,GACpCtE,KAAKkE,aAAaQ,KAAKnB,EAA+B,CACpDkB,aAAYA,EACZE,MAAO,kEAXsBC,EAAAA,6BACTC,EAAAA,kBAHbnB,EAA2BzD,EAAA,CADvC6E,EAAAA,cACYpB,mBCIX,SAAAqB,EAAoBC,EAAgCC,GAAhCjF,KAAAgF,WAAAA,EAAgChF,KAAAiF,SAAAA,EADpDjF,KAAAkF,eAAyB,EAc3B,OAXEH,EAAAnF,UAAAuF,OAAA,WACEnF,KAAKgF,WAAWI,QAGlBL,EAAAnF,UAAAyF,gBAAA,SAAgBC,GACd,GAAIA,GAAQA,EAAKC,UAAW,CAC1BvF,KAAKkF,eAAgB,EACrB,IAAMM,EAAUxF,KAAKiF,SAASQ,wBAAwBH,EAAKC,WAC3DvF,KAAK0F,UAAUL,gBAAgBG,8CAVH7B,EAAAA,kBAA8BgC,EAAAA,4BAFK/B,EAAAA,CAAlEgC,EAAAA,UAAU,YAAa,CAAEC,QAAQ,EAAOC,KAAMC,EAAAA,oDADpChB,EAA4B9E,EAAA,CAJxC6D,EAAAA,UAAU,CACTC,SAAU,4BACVC,SAAA,2jCAEWe,mBCAX,SAAAiB,EAAoBC,GAAAjG,KAAAiG,eAAAA,EActB,OAZED,EAAApG,UAAAsG,0BAAA,WACElG,KAAKgF,WAAahF,KAAKiG,eAAevB,KAAKK,EAA8B,CACvEoB,SAAU,SACVxB,MAAO,cAIXqB,EAAApG,UAAAwG,0BAAA,WACMpG,KAAKgF,YACPhF,KAAKgF,WAAWI,iDAXgBP,EAAAA,kBAHzBmB,EAA0B/F,EAAA,CADtC6E,EAAAA,cACYkB,mBCcX,SAAAK,EACSrB,EACCf,EACAqC,GAFDtG,KAAAgF,WAAAA,EACChF,KAAAiE,sBAAAA,EACAjE,KAAAsG,MAAAA,EATVtG,KAAAuG,aAAwC,IAAIC,EAAAA,QAqD9C,OAzCEH,EAAAzG,UAAA6G,SAAA,WACEzG,KAAK0G,WAAa1G,KAAK2G,YAGzBN,EAAAzG,UAAAgH,qBAAA,SAAqBC,GACnB7G,KAAK8G,aAAeD,GAGtBR,EAAAzG,UAAA+G,SAAA,WACE,OAAO3G,KAAK+G,iBAAmBC,EAAAA,QAAQ,mBAAqBA,EAAAA,QAAQ,kBAGtEX,EAAAzG,UAAAqH,SAAA,WACEjH,KAAKgF,WAAWI,QAGZiB,EAAAzG,UAAAsH,OAAN,kHAEElH,KAAKsE,cAAc6C,UAAYnH,KAAK8G,aAAaM,cAAcC,cAC/DrH,KAAKsE,cAAcgD,aAAetH,KAAK8G,aAAaS,gBAEhDvH,KAAK+G,iBAAL,MAAA,CAAA,EAAA,oBAEmB,6BAAA,CAAA,EAAM/G,KAAKiE,sBAAsBuD,oBAAoBxH,KAAKsE,8BAA7EmD,EAAmBlD,EAAAlC,OACnBrC,KAAKsG,MAAMoB,QAAQV,EAAAA,QAAQ,yEAE3BhH,KAAKsG,MAAMqB,iBAAiBC,mCAIT,6BAAA,CAAA,EAAM5H,KAAKiE,sBAAsB4D,oBAAoB7H,KAAKsE,8BAA7EmD,EAAmBlD,EAAAlC,OACnBrC,KAAKsG,MAAMoB,QAAQV,EAAAA,QAAQ,6DAE3BhH,KAAKsG,MAAMqB,iBAAiBG,uBAKhC9H,KAAKuG,aAAa/E,KAAKiG,EAAiBjD,MACxCxE,KAAKgF,WAAWI,4DA5CGzB,EAAAA,kBACYiB,EAAAA,6BAChBmD,EAAAA,gBAVN1B,EAAsCpG,EAAA,CAJlD6D,EAAAA,UAAU,CACTC,SAAU,uCACVC,SAAA,2pCAEWqC,MCRA2B,EAA+B,CAC1CC,UAAWjB,EAAAA,QAAQ,aACnBkB,UAAWlB,EAAAA,QAAQ,aACnBmB,SAAUnB,EAAAA,QAAQ,YAClBoB,OAAQpB,EAAAA,QAAQ,2BAChBqB,WAAYrB,EAAAA,QAAQ,2BAGTsB,EAAiD,CAC5D,CACElG,MAAO4F,EAA6BC,UACpCM,cAAe,CAACC,EAAAA,2BAA2BP,WAC3CQ,UAAW,mCAEb,CACErG,MAAO4F,EAA6BE,UACpCK,cAAe,CACbC,EAAAA,2BAA2BN,UAC3BM,EAAAA,2BAA2BE,sBAE7BD,UAAW,qCAEb,CACErG,MAAO4F,EAA6BG,SACpCI,cAAe,CAACC,EAAAA,2BAA2BL,UAC3CM,UAAW,+BAEb,CACErG,MAAO4F,EAA6BI,OACpCG,cAAe,CAACC,EAAAA,2BAA2BJ,QAC3CK,UAAW,iDAEb,CACErG,MAAO4F,EAA6BK,WACpCE,cAAe,CAACC,EAAAA,2BAA2BH,YAC3CI,UAAW,wDCab,SAAAE,EACU1E,EACA2E,EACAtC,EACAL,GAHAjG,KAAAiE,sBAAAA,EACAjE,KAAA4I,MAAAA,EACA5I,KAAAsG,MAAAA,EACAtG,KAAAiG,eAAAA,EAvBVjG,KAAA6I,kBAA4B,EAE5B7I,KAAA8I,UAAoB,EACV9I,KAAA+I,oBAAsB,IAAIC,EAAAA,aAC1BhJ,KAAAiJ,OAA4B,IAAID,EAAAA,aAI1ChJ,KAAAkJ,gBAAiB,EACjBlJ,KAAAmJ,2BAA6BX,EAAAA,2BAC7BxI,KAAAoJ,2BAA8Cd,EAE9CtI,KAAAqJ,sBAAgCrC,EAAAA,QAC9B,qEAEFhH,KAAAsJ,iBAA2B,WAE3BtJ,KAAAuJ,kBAA4B,EA8K9B,OArKEZ,EAAA/I,UAAA6G,SAAA,WACEzG,KAAKyI,UAAYzI,KAAKwJ,eACtBxJ,KAAKyJ,WAAazJ,KAAK0J,wBACvB1J,KAAK2J,kBAGPhB,EAAA/I,UAAAgK,YAAA,SAAYC,GACNA,EAAQvF,gBAAkBuF,EAAQvF,cAAcwF,cAClD9J,KAAKyI,UAAYzI,KAAKwJ,eACtBxJ,KAAK2J,mBAIThB,EAAA/I,UAAA4J,aAAA,WAAA,IAAAO,EAAA/J,KACE,OAAOA,KAAKoJ,2BAA2BY,MAAK,SAAAC,GAC1C,OAAAA,EAAa1B,cAAc2B,SAASH,EAAKzF,cAAciE,kBACvDE,WAGJE,EAAA/I,UAAA8J,sBAAA,WAIE,OAH4B,IAAIS,KAAKnK,KAAKsE,cAAc6C,WAAWiD,UACF,IAAlCpK,KAAKsE,cAAcgD,aAEZtH,KAAKsE,cAAc+F,SAASC,KAGpE3B,EAAA/I,UAAA2K,sBAAA,WACE,OACIvK,KAAKsE,cAAc+F,SAASG,WAAaxK,KAAKsE,cAAc+F,SAASI,QACrEzK,KAAKsE,cAAc+F,SAASC,IAC9B,KAIJ3B,EAAA/I,UAAA+J,eAAA,WACE,IAAMe,EAAuB,oDAEvBC,EAAmB,CACvBzC,UAAW,CACToB,iBAAkB,mCAClBsB,iBAAqBF,EAAoB,WACzCnB,kBAAmBvJ,KAAKuK,yBAE1B7B,qBAAsB,CACpBY,iBAAkB,mCAClBsB,iBAAqBF,EAAoB,UACzCnB,kBAAmBvJ,KAAKuK,yBAE1BnC,OAAQ,CACNkB,iBAAkB,WAClBsB,iBAAqBF,EAAoB,UACzCnB,kBAAmB,KAErBlB,WAAY,CACViB,iBAAkB,WAClBsB,iBAAqBF,EAAoB,WACzCnB,kBAAmB,MAIvBnK,EAAAA,OAAOY,KAAM2K,EAAiB3K,KAAKsE,cAAciE,iBAGnDI,EAAA/I,UAAAiL,aAAA,WACE,IAIMC,EAAe,CAAErG,aAHF,CACnBH,cAF2ByG,EAAAA,UAAU/K,KAAKsE,gBAIPK,MAAO,WAAYwB,SAAU,UAClEnG,KAAKgF,WAAahF,KAAKiG,eAAevB,KACpC2B,EACAyE,IAIEnC,EAAA/I,UAAAoL,oBAAN,2GAEI,6BAAA,CAAA,EAAMhL,KAAK4I,MAAMqC,QACfjE,EAAAA,QAAQ,yBACRA,EAAAA,QAAQ,uEACRkE,EAAAA,OAAOC,gBAET,OALA5G,EAAAlC,OAKA,CAAA,EAAMrC,KAAKiE,sBAAsBmH,oBAAoBpL,KAAKsE,cAAc+G,mBAAxE9G,EAAAlC,OACArC,KAAKiJ,OAAOqC,OACZtL,KAAKsG,MAAMoB,QAAQV,EAAAA,QAAQ,uDAE3BhH,KAAKsG,MAAMqB,iBAAiBC,kCAIhCe,EAAA/I,UAAA2L,qBAAA,WAAA,IAAAxB,EAAA/J,KACQwL,EAAaT,EAAAA,UAAU/K,KAAKsE,sBAG3BkH,EAAWC,QAClBD,EAAWE,eAAiB1L,KAAKsE,cAAc+G,GAG/C,IAIMP,EAAe,CAAErG,aAJF,CACnBH,cAAekH,EACfzE,kBAAkB,GAEiBpC,MAAO,WAAYwB,SAAU,UAClEnG,KAAKgF,WAAahF,KAAKiG,eAAevB,KACpC2B,EACAyE,GAEF9K,KAAKgF,WAAW2G,QAAQpF,aAAaqF,WAAU,WAC7C7B,EAAKd,OAAOqC,WAIV3C,EAAA/I,UAAAiM,gBAAN,2GAEI,6BAAA,CAAA,EAAM7L,KAAK4I,MAAMqC,QACfjE,EAAAA,QAAQ,6CACRA,EAAAA,QACE,4FAEFkE,EAAAA,OAAOC,gBAGT,OARA5G,EAAAlC,OAQA,CAAA,EAAMrC,KAAKiE,sBAAsB4D,oBAAoB,CACnDwD,GAAIrL,KAAKsE,cAAc+G,GACvB9C,cAAeC,EAAAA,2BAA2BH,4BAF5C9D,EAAAlC,OAIArC,KAAKiJ,OAAOqC,OACZtL,KAAKsG,MAAMoB,QAAQV,EAAAA,QAAQ,2EAE3BhH,KAAKsG,MAAMqB,iBAAiBG,kCAIhCa,EAAA/I,UAAAkM,oBAAA,SAAoBJ,GAClB1L,KAAK+I,oBAAoBuC,KAAKI,IAGhC/C,EAAA/I,UAAAmM,kBAAA,WACE,OAAO/L,KAAKsE,cAAciE,gBAAkBvI,KAAKmJ,2BAA2BlB,WAG9EU,EAAA/I,UAAAoM,sCAAA,WACE,OACEhM,KAAKsE,cAAciE,gBAAkBvI,KAAKmJ,2BAA2BjB,WACrElI,KAAKsE,cAAciE,gBAAkBvI,KAAKmJ,2BAA2BT,sBAIzEC,EAAA/I,UAAAqM,qBAAA,WACE,OACEjM,KAAKsE,cAAc+F,SAASC,MAC5BtK,KAAKsE,cAAc+F,SAAS6B,UAC1BlM,KAAKsE,cAAc+F,SAASI,OAC5BzK,KAAKsE,cAAc+F,SAAS8B,QAC5BnM,KAAKsE,cAAc+F,SAASG,YAIlC7B,EAAA/I,UAAAwM,iBAAA,WACE,OAAOpM,KAAKsE,cAAciE,gBAAkBvI,KAAKmJ,2BAA2BhB,UAG9EQ,EAAA/I,UAAAyM,eAAA,WACE,OAAOrM,KAAKsE,cAAciE,gBAAkBvI,KAAKmJ,2BAA2Bf,iDAzK7CxD,EAAAA,6BAChB0H,EAAAA,oBACAvE,EAAAA,oBACSlD,EAAAA,kBAzB1BjB,EAAAA,CADCC,EAAAA,6CAGDD,EAAAA,CADCC,EAAAA,gDAGDD,EAAAA,CADCC,EAAAA,wCAESD,EAAAA,CAAT2I,EAAAA,oDACS3I,EAAAA,CAAT2I,EAAAA,uCACwC3I,EAAAA,CAAxCgC,EAAAA,UAAU,WAAY,CAAEC,QAAQ,oCATtB8C,EAA8B1I,EAAA,CAJ1C6D,EAAAA,UAAU,CACTC,SAAU,+BACVC,SAAA,+8JAEW2E,mBC8BX,SAAA6D,EACSC,EACCxI,EACAyI,GAHV,IAAA3C,EAAA/J,KACSA,KAAAyM,SAAAA,EACCzM,KAAAiE,sBAAAA,EACAjE,KAAA0M,2BAAAA,EA1CV1M,KAAA2M,UAA6B,GAC7B3M,KAAA4M,oBAAsB5M,KAAK6M,iBAC3B7M,KAAAoJ,2BAA8Cd,EAG9CtI,KAAAkJ,gBAA0B,EAC1BlJ,KAAA8M,cAAkD,IAAIC,EAAAA,gBAAgB,MACtE/M,KAAAgN,YAAgD,IAAID,EAAAA,gBAAgB,MACpE/M,KAAAiN,YAAoC,IAAIF,EAAAA,gBAAgB,MACxD/M,KAAAkN,QAAiC,IAAIH,EAAAA,gBAAgB,MAOrD/M,KAAAmN,gBAA2DC,EAAAA,cACzDpN,KAAK8M,cACL9M,KAAKiN,YACLjN,KAAKgN,YACLhN,KAAKkN,SACLG,KACAC,EAAAA,KAAI,WACFvD,EAAKb,gBAAiB,KAExBqE,EAAAA,WAAU,SAAChJ,OAAAiJ,EAAAtK,EAAAqB,EAAA,GAACkJ,EAAAD,EAAA,GAAeE,EAAAF,EAAA,GAAiB,OAAAzD,EAAK4D,OAAOF,EAAeC,MACvEE,EAAAA,eAAe5N,KAAKgN,aACpBa,EAAAA,KAAI,SAACtJ,OAAAiJ,EAAAtK,EAAAqB,EAAA,GAAC5C,EAAA6L,EAAA,GAAQM,EAAAN,EAAA,GAEZ,OADAzD,EAAKgE,WAAaV,EAAAA,KAAKQ,EAAAA,KAAI,SAACrJ,GAAa,OAAAuF,EAAKiE,aAAaxJ,EAAMsJ,OACjE5O,EAAA,GAAYyC,EAAM,CAAE6C,KAAMuF,EAAKiE,aAAarM,EAAO6C,KAAMsJ,QAE3DR,EAAAA,KAAI,WACFvD,EAAKb,gBAAiB,KAExB+E,EAAAA,YAAY,IAUZjO,KAAKkO,mBAAqBlO,KAAKmO,uBAAuBnO,KAAK6M,kBA0F/D,OAvFEL,EAAA5M,UAAA6G,SAAA,WACEzG,KAAK2M,UAAY3M,KAAKiE,sBAAsBmK,gBAG9C5B,EAAA5M,UAAAoO,aAAA,SAAaK,EAAkCP,GAC7C,IAAMQ,EAA+BtO,KAAKmO,uBAAuBL,GACjE,OAEGQ,EAAmB5O,QAEpBM,KAAKkO,mBAAmBK,OAAM,SAAAC,GAAY,OAAAF,EAAmBpE,SAASsE,MAE/DH,EAGYA,EAAeV,QAAO,SAAArI,GACzC,OAAOnG,OAAOsP,KAAKnJ,EAAKoJ,oBAAoBC,MAAK,SAAAvO,GAAO,OAAAkO,EAAmBpE,SAAS9J,UAMxFoM,EAAA5M,UAAAgP,YAAA,WACE5O,KAAK8M,cAActL,KAAK,MACxBxB,KAAKiN,YAAYzL,KAAK,MACtBxB,KAAKgN,YAAYxL,KAAK,MAEtBxB,KAAK6O,WAAWC,cAChB9O,KAAK4M,oBAAsB5M,KAAK6M,iBAChC7M,KAAK+O,aAAaC,SAGpBxC,EAAA5M,UAAAqP,gBAAA,WACE,OACEjP,KAAK8M,cAAcoC,YAAclP,KAAKgN,YAAYkC,YAAclP,KAAKiN,YAAYiC,YAIrF1C,EAAA5M,UAAA+N,OAAA,SAAOF,EAAe0B,GACpB,IAAMC,EACJ3B,GAAiBA,EAAc/N,OAAS,EACpC,CACE6I,cAAe8G,EAAAA,QAAQ5B,EAAcI,KAAI,SAAAkB,GAAgB,OAAAA,EAAaxG,mBAExE,GAEA+G,EAAOH,OAEHA,EAAWI,UAAY,CACzBA,SAAUJ,EAAWI,SAASlI,eAE5B8H,EAAWK,QAAU,CACvBA,OAAQL,EAAWK,OAAOnI,gBAG9B,GACJ,OAAOrH,KAAKyP,kBAAiBvQ,EAAA,GAAMkQ,EAAWE,KAGhD9C,EAAA5M,UAAA6P,kBAAA,SAAkB9B,GAChB,OAAO3N,KAAKiE,sBAAsBwL,kBAAkB9B,IAGtDnB,EAAA5M,UAAAiN,eAAA,WACE,OAAO7M,KAAKiE,sBAAsBmK,gBAGpC5B,EAAA5M,UAAA8P,iBAAA,WACE1P,KAAK0M,2BAA2BxG,6BAGlCsG,EAAA5M,UAAAkM,oBAAA,SAAoBJ,GAClB1L,KAAK2P,UAAUC,SAAQ,SAAAtK,GACjBA,EAAKhB,cAAc+G,KAAOK,IAC5BpG,EAAKuK,SAASC,WAAY,EAC1BxK,EAAKuK,SAASE,QAAQC,cAAcC,eAAe,CAAEC,SAAU,SAAUC,MAAO,gBAKtF3D,EAAA5M,UAAAwQ,kBAAA,SAAkBC,EAA4BC,GAC5C,OAAO,IAAInG,KAAKkG,EAAWlJ,WAAWiD,UAAY,IAAID,KAAKmG,EAAWnJ,WAAWiD,WAG3EoC,EAAA5M,UAAAuO,uBAAR,SAA+BoC,GAC7B,OAAQA,GAAW,IAAIC,QAAO,SAACC,EAAWC,GAAY,OAAAD,EAAUE,OAAOD,EAAQE,aAAY,8CA5F1EC,EAAAA,oCACcjM,EAAAA,6BACKoB,KAhCQpC,EAAAA,CAA7CkN,EAAAA,aAAanI,oCAG+B/E,EAAAA,CAA5CgC,EAAAA,UAAU,eAAgB,CAAEC,QAAQ,wCACajC,EAAAA,CAAjDgC,EAAAA,UAAUmL,EAAAA,oBAAqB,CAAElL,QAAQ,sCAf/B2G,EAA2BvM,EAAA,CALvC6D,EAAAA,UAAU,CACTC,SAAU,sBACVC,SAAA,oyIACAgN,UAAW,CAACH,EAAAA,iCAEDrE,mBCPb,SAAAyE,IAQEjR,KAAA8I,UAAoB,EACV9I,KAAAkR,wBAAiE,IAAIlI,EAAAA,aACrEhJ,KAAA+I,oBAA4C,IAAIC,EAAAA,aAK1DhJ,KAAAmR,KAAc,GAqBhB,OAlBEF,EAAArR,UAAA6G,SAAA,WACEzG,KAAKgE,SAAWhE,KAAKoR,gBAErBpR,KAAKmR,KAAO,CACV,CACE/O,MAAO4E,EAAAA,QAAQ,WACfqK,KAAM,KACNC,KAAM,WACNtN,SAAUhE,KAAKoR,iBAEjB,CACEhP,MAAO4E,EAAAA,QAAQ,sBACfqK,KAAM,KACNC,KAAM,UACNtN,SAAUhE,KAAKuR,iBA1BrB3N,EAAAA,CADCC,EAAAA,6CAGDD,EAAAA,CADCC,EAAAA,wCAESD,EAAAA,CAAT2I,EAAAA,wDACS3I,EAAAA,CAAT2I,EAAAA,oDAEuC3I,EAAAA,CAAvCgC,EAAAA,UAAU,UAAW,CAAEC,QAAQ,2CACMjC,EAAAA,CAArCgC,EAAAA,UAAU,QAAS,CAAEC,QAAQ,yCATnBoL,EAAiChR,EAAA,CAJ7C6D,EAAAA,UAAU,CACTC,SAAU,kCACVC,SAAA,ygCAEWiN,mBCbb,SAAAO,IAKExR,KAAAyR,qBAA+B,EAO/BzR,KAAA8I,UAAoB,EACV9I,KAAA+I,oBAA4C,IAAIC,EAAAA,aAK5D,OAHEwI,EAAA5R,UAAA8R,6BAAA,SAA6BC,GAC3B3R,KAAK+I,oBAAoBuC,KAAKqG,IANhC/N,EAAAA,CADCC,EAAAA,6CAGDD,EAAAA,CADCC,EAAAA,wCAESD,EAAAA,CAAT2I,EAAAA,oDATUiF,EAA6BvR,EAAA,CAJzC6D,EAAAA,UAAU,CACTC,SAAU,6BACVC,SAAA,8rIAEWwN,MCLAI,EAAyB,CACpCC,QAAS7K,EAAAA,QAAQ,WACjBkB,UAAWlB,EAAAA,QAAQ,aACnBoB,OAAQpB,EAAAA,QAAQ,UAChBqB,WAAYrB,EAAAA,QAAQ,cACpB8K,IAAK9K,EAAAA,QAAQ,QAGF+K,EAA8B,CACzC,CACE3P,MAAOwP,EAAuBC,QAC9BpJ,UAAW,iCACXuJ,UAAU,GAEZ,CACE5P,MAAOwP,EAAuB1J,UAC9BO,UAAW,iCACXuJ,UAAU,GAEZ,CACE5P,MAAOwP,EAAuBvJ,WAC9BI,UAAW,yCACXuJ,UAAU,GAEZ,CACE5P,MAAOwP,EAAuBxJ,OAC9BK,UAAW,8CACXuJ,UAAU,iBCIZ,SAAAC,EAAoBhO,GAAAjE,KAAAiE,sBAAAA,EAVpBjE,KAAA8I,UAAoB,EACV9I,KAAAkR,wBAAiE,IAAIlI,EAAAA,aAK/EhJ,KAAAkS,gCAAkCH,EAClC/R,KAAAmS,2BAA6BP,EAyD/B,OApDQK,EAAArS,UAAAwS,gBAAN,qFACMpS,KAAK+O,cACP/O,KAAKqS,oCAITJ,EAAArS,UAAAgK,YAAA,SAAYC,GACNA,EAAQvF,gBAAkBuF,EAAQvF,cAAcwF,aAClD9J,KAAKqS,0BAITJ,EAAArS,UAAAyS,uBAAA,WACE,GAAIrS,KAAK+O,aAAc,CACrB,IAAMjB,EAAa9N,KAAKsS,kCAExBtS,KAAK+O,aAAawD,OAChBzE,IAAe9N,KAAKmS,2BAA2BL,IAC3C,GACA,CAAC,CAAE1P,MAAO0L,UAGhB0E,WAAWxS,KAAKqS,uBAAuBI,KAAKzS,QAIhDiS,EAAArS,UAAA0S,gCAAA,WACE,IAAMjI,EAAWrK,KAAKsE,cAAc+F,SAEpC,OAAIA,EAASI,OAAS,EACbzK,KAAKmS,2BAA2B/J,OACV,IAApBiC,EAASI,QAAwC,IAAxBJ,EAASG,YAAyC,IAArBH,EAAS8B,QACjEnM,KAAKmS,2BAA2BjK,UACV,IAApBmC,EAASI,QAAwC,IAAxBJ,EAASG,YAA2C,IAAvBH,EAAS6B,UACjElM,KAAKmS,2BAA2BN,QACV,IAApBxH,EAASI,QAAqC,IAArBJ,EAAS8B,SAAwC,IAAvB9B,EAAS6B,UAC9DlM,KAAKmS,2BAA2B9J,WAGlCrI,KAAKmS,2BAA2BL,KAGnCG,EAAArS,UAAA8S,sBAAN,SAA4B/E,mGACF,OAAxBpJ,EAAAvE,KAAwB,CAAA,EAAMA,KAAKiE,sBAAsB0O,4BACvDhF,EAAO,IAAMA,EAAO,GAAGvL,MACvBpC,KAAKsE,cAAc+G,mBAFrB9G,EAAKqO,iBAAmBpF,EAAAnL,mBAM1B4P,EAAArS,UAAAiT,mBAAA,WACE7S,KAAKkR,wBAAwB5F,KAAKtL,KAAKsE,yDApDEM,EAAAA,yBAZ3ChB,EAAAA,CADCC,EAAAA,6CAGDD,EAAAA,CADCC,EAAAA,wCAESD,EAAAA,CAAT2I,EAAAA,wDAGD3I,EAAAA,CADCgC,EAAAA,UAAUkN,EAAAA,sBAAuB,CAAEjN,QAAQ,wCAPjCoM,EAA6BhS,EAAA,CAJzC6D,EAAAA,UAAU,CACTC,SAAU,6BACVC,SAAA,m1DAEWiO,mBCIX,SAAAc,EACU9O,EACA+O,GADAhT,KAAAiE,sBAAAA,EACAjE,KAAAgT,aAAAA,EAbVhT,KAAAiT,OAAS,GACTjT,KAAAkT,qBAAsB,EACtBlT,KAAAmS,2BAA6BP,EAC7B5R,KAAAmT,iCAAmCpB,EAKnC/R,KAAA8I,UAAoB,EAsDtB,OA9CQiK,EAAAnT,UAAA6G,SAAN,2GAEgB,OADdzG,KAAKyI,UAAYzI,KAAKwJ,eACtBjF,EAAAvE,KAAc,CAAA,EAAMA,KAAKoT,YAAYpT,KAAKqT,UAAUC,yBAApD/O,EAAK0O,OAASzF,EAAAnL,mBAGhB0Q,EAAAnT,UAAAwS,gBAAA,WACEpS,KAAKuT,mBAGDR,EAAAnT,UAAA4T,qBAAN,SAA2BC,qGACnBC,EAAoBC,EAAAA,KAAKF,EAAiB,CAC9C,KACA,OACA,SACA,gBACA,eACA,8BAIA,6BAAA,CAAA,EAAMzT,KAAKiE,sBAAsB2P,sBAAsBF,kBAAvDnP,EAAAlC,OACArC,KAAKgT,aAAatL,QAAQV,EAAAA,QAAQ,sDAElChH,KAAKgT,aAAarL,iBAAiBC,kCAIvCmL,EAAAnT,UAAA4J,aAAA,WAAA,IAAAO,EAAA/J,KACE,OAAOA,KAAKmT,iCAAiCnJ,MAC3C,SAAA6J,GAAuB,OAAAA,EAAoBzR,MAAM0R,gBAAkB/J,EAAKsJ,UAAUjE,UAClF3G,WAGUsK,EAAAnT,UAAAwT,YAAd,SAA0BE,mGACJ,MAAA,CAAA,EAAMtT,KAAKiE,sBAAsB8P,iBAAiBT,WACtE,OADMU,EAAczP,EAAAlC,QAElB,CAAA,EAAO2R,EAAYxP,kBAIfuO,EAAAnT,UAAA2T,gBAAR,WACE,GAAIvT,KAAKqT,UAAUY,cAAe,CAChC,IAAMC,EAAKlU,KAAKmU,iBAAiBnE,cACjChQ,KAAKkT,oBAAsBgB,EAAGE,YAAcF,EAAGG,uDA/ClBzP,EAAAA,6BACTmD,EAAAA,gBAPxBnE,EAAAA,CADCC,EAAAA,yCAGDD,EAAAA,CADCC,EAAAA,wCAE6CD,EAAAA,CAA7CgC,EAAAA,UAAU,gBAAiB,CAAEC,QAAQ,4CAV3BkN,EAA4B9S,EAAA,CAJxC6D,EAAAA,UAAU,CACTC,SAAU,4BACVC,SAAA,yqDAEW+O,mBCKX,SAAAuB,EACUC,EACAtQ,EACAyI,GAFA1M,KAAAuU,OAAAA,EACAvU,KAAAiE,sBAAAA,EACAjE,KAAA0M,2BAAAA,EANA1M,KAAAwU,aAA4C,IAAIxL,EAAAA,aAC1DhJ,KAAAyU,SAA4B,GAoB9B,OAZEH,EAAA1U,UAAA6G,SAAA,WACEzG,KAAKyU,SAAWzU,KAAKiE,sBAAsBmK,gBAG7CkG,EAAA1U,UAAA8U,YAAA,SAAYpP,GACNA,EAAK+L,MACPrR,KAAK0M,2BAA2BtG,4BAChCpG,KAAKuU,OAAOI,cAAcrP,EAAK+L,OACtB/L,EAAKC,WACdvF,KAAKwU,aAAalJ,KAAKhG,6CAdTsP,EAAAA,cACehQ,EAAAA,6BACKoB,KAN5BpC,EAAAA,CAAT2I,EAAAA,6CADU+H,EAA8BrU,EAAA,CAJ1C6D,EAAAA,UAAU,CACTC,SAAU,+BACVC,SAAA,2kBAEWsQ,MCWAO,EAAmC,CAC9C,CACExD,KAAM,qBACN9L,UAAWiH,IAuDfsI,EAAA,WAAA,SAAAA,KAAuC,OAA1BA,EAAwB7U,EAAA,CAhDpC8U,EAAAA,SAAS,CACRC,QAAS,CACPC,EAAAA,WACAC,EAAAA,cACAC,EAAAA,cACAC,EAAAA,mBACAC,EAAAA,uBACAC,EAAAA,6BACAC,EAAAA,aAAaC,SAASX,IAExB7D,UAAW,CAACtN,EAA6BsC,GACzCyP,aAAc,CACZjJ,EACA7D,EACAsI,EACAO,EACAS,EACAc,EACAxP,EACA+Q,EACAvP,EACAsB,GAEFqP,gBAAiB,CACflJ,EACA7D,EACAsI,EACAO,EACAS,EACAc,EACAxP,EACA+Q,EACAvP,EACAsB,GAEFsP,QAAS,CACPnJ,EACA7D,EACAsI,EACAO,EACAS,EACAc,EACAxP,EACA+Q,EACAvP,EACAsB,MAGSyO,GAAb","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Component, Input } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BulkOperationDetailsService } from './bulk-operation-details.service';\n\n@Component({\n selector: 'c8y-bulk-operations-wrapper',\n templateUrl: './bulk-operation-wrapper.component.html'\n})\nexport class BulkOperationWrapperComponent {\n @Input() bulkOperation: Partial<IOperationBulk>;\n\n constructor(\n public bulkOperationDetailsService: BulkOperationDetailsService,\n public modalRef: BsModalRef\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BulkOperationWrapperComponent } from './bulk-operation-wrapper.component';\n\n@Injectable()\nexport class BulkOperationDetailsService {\n constructor(\n private bulkOperationsService: BulkOperationsService,\n private modalService: BsModalService\n ) {}\n\n async openDetails(bulkOperationId) {\n const bulkOperation: IOperationBulk = (await this.bulkOperationsService.getBulkOperationById(\n bulkOperationId\n )).data;\n const initialState = { bulkOperation };\n this.modalService.show(BulkOperationWrapperComponent, {\n initialState,\n class: 'modal-lg'\n });\n }\n}\n","import { Component, ViewContainerRef, ViewChild, ComponentFactoryResolver } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { OperationType } from '@c8y/ngx-components/operations/bulk-operations-service';\n\n@Component({\n selector: 'c8y-bulk-operations-modal',\n templateUrl: 'bulk-operations-modal.component.html'\n})\nexport class BulkOperationsModalComponent {\n @ViewChild('container', { static: false, read: ViewContainerRef }) container;\n showComponent: boolean = false;\n constructor(private bsModalRef: BsModalRef, private resolver: ComponentFactoryResolver) {}\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n createComponent(item: OperationType) {\n if (item && item.component) {\n this.showComponent = true;\n const factory = this.resolver.resolveComponentFactory(item.component);\n this.container.createComponent(factory);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { BulkOperationsModalComponent } from './bulk-operations-modal.component';\n\n@Injectable()\nexport class BulkOperationModalsService {\n private bsModalRef: BsModalRef;\n\n constructor(private bsModalService: BsModalService) {}\n\n showNewBulkOperationModal() {\n this.bsModalRef = this.bsModalService.show(BulkOperationsModalComponent, {\n backdrop: 'static',\n class: 'modal-sm'\n });\n }\n\n hideNewBulkOperationModal() {\n if (this.bsModalRef) {\n this.bsModalRef.hide();\n }\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport { OperationSchedule } from '@c8y/ngx-components/operations/bulk-operation-scheduler';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\n\n@Component({\n selector: 'c8y-bulk-operations-reschedule-modal',\n templateUrl: 'bulk-operations-reschedule-modal.component.html'\n})\nexport class BulkOperationsRescheduleModalComponent implements OnInit {\n closeSubject: Subject<IOperationBulk> = new Subject();\n dateAndDelay: OperationSchedule;\n bulkOperation: Partial<IOperationBulk>;\n isRetryOperation: boolean;\n modalTitle: string;\n\n constructor(\n public bsModalRef: BsModalRef,\n private bulkOperationsService: BulkOperationsService,\n private alert: AlertService\n ) {}\n\n ngOnInit() {\n this.modalTitle = this.getTitle();\n }\n\n onDateAndDelaySelect($event) {\n this.dateAndDelay = $event;\n }\n\n getTitle() {\n return this.isRetryOperation ? gettext('Retry operation') : gettext('Edit schedule');\n }\n\n onCancel() {\n this.bsModalRef.hide();\n }\n\n async onSave() {\n let newBulkOperation;\n this.bulkOperation.startDate = this.dateAndDelay.scheduledDate.toISOString();\n this.bulkOperation.creationRamp = this.dateAndDelay.delayInSeconds;\n\n if (this.isRetryOperation) {\n try {\n newBulkOperation = await this.bulkOperationsService.createBulkOperation(this.bulkOperation);\n this.alert.success(gettext('Successfully rescheduled for a retry.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n } else {\n try {\n newBulkOperation = await this.bulkOperationsService.updateBulkOperation(this.bulkOperation);\n this.alert.success(gettext('Successfully rescheduled.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n // send back to component from which modal was called\n this.closeSubject.next(newBulkOperation.data);\n this.bsModalRef.hide();\n }\n}\n","import { OperationBulkGeneralStatus } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\nimport { IStatusOption } from '@c8y/ngx-components/operations/status-filter';\n\nexport const BULK_OPERATION_STATUS_LABELS = {\n SCHEDULED: gettext('Scheduled'),\n EXECUTING: gettext('Executing'),\n CANCELED: gettext('Canceled'),\n FAILED: gettext('Completed with failures'),\n SUCCESSFUL: gettext('Completed successfully')\n};\n\nexport const BULK_OPERATION_STATUS_OPTIONS: IStatusOption[] = [\n {\n label: BULK_OPERATION_STATUS_LABELS.SCHEDULED,\n generalStatus: [OperationBulkGeneralStatus.SCHEDULED],\n iconClass: 'dlt-c8y-icon-calendar text-info'\n },\n {\n label: BULK_OPERATION_STATUS_LABELS.EXECUTING,\n generalStatus: [\n OperationBulkGeneralStatus.EXECUTING,\n OperationBulkGeneralStatus.EXECUTING_WITH_ERROR\n ],\n iconClass: 'dlt-c8y-icon-refresh text-primary'\n },\n {\n label: BULK_OPERATION_STATUS_LABELS.CANCELED,\n generalStatus: [OperationBulkGeneralStatus.CANCELED],\n iconClass: 'dlt-c8y-icon-ban text-muted'\n },\n {\n label: BULK_OPERATION_STATUS_LABELS.FAILED,\n generalStatus: [OperationBulkGeneralStatus.FAILED],\n iconClass: 'dlt-c8y-icon-exclamation-triangle text-danger'\n },\n {\n label: BULK_OPERATION_STATUS_LABELS.SUCCESSFUL,\n generalStatus: [OperationBulkGeneralStatus.SUCCESSFUL],\n iconClass: 'dlt-c8y-icon-check-circle text-success'\n }\n];\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { IOperationBulk, OperationBulkGeneralStatus } from '@c8y/client';\nimport {\n AlertService,\n gettext,\n ListItemComponent,\n ModalService,\n Status\n} from '@c8y/ngx-components';\nimport { assign, cloneDeep } from 'lodash-es';\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { IStatusOption } from '@c8y/ngx-components/operations/status-filter';\nimport { BulkOperationsRescheduleModalComponent } from './modals/bulk-operations-reschedule-modal.component';\nimport { BULK_OPERATION_STATUS_OPTIONS } from './bulk-operation-list-item.model';\n\n@Component({\n selector: 'c8y-bulk-operation-list-item',\n templateUrl: './bulk-operation-list-item.component.html'\n})\nexport class BulkOperationListItemComponent implements OnInit, OnChanges {\n @Input()\n bulkOperation: Partial<IOperationBulk>;\n @Input()\n detailsCollapsed: boolean = true;\n @Input()\n readOnly: boolean = false;\n @Output() showFailedOperation = new EventEmitter();\n @Output() reload: EventEmitter<any> = new EventEmitter();\n @ViewChild('listItem', { static: true }) listItem: ListItemComponent;\n iconClass: string;\n finishDate: number;\n refreshLoading = false;\n bulkOperationGeneralStatus = OperationBulkGeneralStatus;\n bulkOperationStatusOptions: IStatusOption[] = BULK_OPERATION_STATUS_OPTIONS;\n bsModalRef: BsModalRef;\n finishDatePopoverText: string = gettext(\n 'Approximate date, estimated based on the bulk operation settings.'\n );\n progressBarClass: string = 'progress';\n progressBarColor: string;\n progressBarStatus: number = 0;\n\n constructor(\n private bulkOperationsService: BulkOperationsService,\n private modal: ModalService,\n private alert: AlertService,\n private bsModalService: BsModalService\n ) {}\n\n ngOnInit() {\n this.iconClass = this.getIconClass();\n this.finishDate = this.calculateFinishDateMs();\n this.setProgressBar();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.bulkOperation && !changes.bulkOperation.firstChange) {\n this.iconClass = this.getIconClass();\n this.setProgressBar();\n }\n }\n\n getIconClass() {\n return this.bulkOperationStatusOptions.find(statusOption =>\n statusOption.generalStatus.includes(this.bulkOperation.generalStatus)\n ).iconClass;\n }\n\n calculateFinishDateMs(): number {\n const startDateMs: number = new Date(this.bulkOperation.startDate).getTime();\n const creationRampMs: number = this.bulkOperation.creationRamp * 1000;\n\n return startDateMs + creationRampMs * this.bulkOperation.progress.all;\n }\n\n progressBarProgressFn() {\n return (\n ((this.bulkOperation.progress.successful + this.bulkOperation.progress.failed) /\n this.bulkOperation.progress.all) *\n 100\n );\n }\n\n setProgressBar() {\n const staticContentOfClass = 'progress-bar progress-striped active progress-bar';\n\n const progressBarState = {\n EXECUTING: {\n progressBarClass: 'progress progress-striped active',\n progressBarColor: `${staticContentOfClass}-primary`,\n progressBarStatus: this.progressBarProgressFn()\n },\n EXECUTING_WITH_ERROR: {\n progressBarClass: 'progress progress-striped active',\n progressBarColor: `${staticContentOfClass}-danger`,\n progressBarStatus: this.progressBarProgressFn()\n },\n FAILED: {\n progressBarClass: 'progress',\n progressBarColor: `${staticContentOfClass}-danger`,\n progressBarStatus: 100\n },\n SUCCESSFUL: {\n progressBarClass: 'progress',\n progressBarColor: `${staticContentOfClass}-success`,\n progressBarStatus: 100\n }\n };\n\n assign(this, progressBarState[this.bulkOperation.generalStatus]);\n }\n\n editSchedule() {\n const rescheduledOperation = cloneDeep(this.bulkOperation);\n const initialState = {\n bulkOperation: rescheduledOperation\n };\n const modalOptions = { initialState, class: 'modal-sm', backdrop: 'static' } as ModalOptions;\n this.bsModalRef = this.bsModalService.show(\n BulkOperationsRescheduleModalComponent,\n modalOptions\n );\n }\n\n async cancelBulkOperation() {\n try {\n await this.modal.confirm(\n gettext('Cancel bulk operation'),\n gettext('You are about to cancel the bulk operation. Do you want to proceed?'),\n Status.DANGER\n );\n await this.bulkOperationsService.deleteBulkOperation(this.bulkOperation.id);\n this.reload.emit();\n this.alert.success(gettext('Operation canceled.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n retryFailedOperation() {\n const clonedBulk = cloneDeep(this.bulkOperation);\n\n // change the id to failedparentId similar to the logic in deviceBulkControl.service.js\n delete clonedBulk.groupId;\n clonedBulk.failedParentId = this.bulkOperation.id;\n\n // show reschdedule modal:\n const initialState = {\n bulkOperation: clonedBulk,\n isRetryOperation: true\n };\n const modalOptions = { initialState, class: 'modal-sm', backdrop: 'static' } as ModalOptions;\n this.bsModalRef = this.bsModalService.show(\n BulkOperationsRescheduleModalComponent,\n modalOptions\n );\n this.bsModalRef.content.closeSubject.subscribe(() => {\n this.reload.emit();\n });\n }\n\n async setToSuccessful() {\n try {\n await this.modal.confirm(\n gettext('Set manually bulk operation to SUCCESSFUL'),\n gettext(\n 'You are about to change the bulk operation status to SUCCESSFUL. Do you want to proceed?'\n ),\n Status.DANGER\n );\n\n await this.bulkOperationsService.updateBulkOperation({\n id: this.bulkOperation.id,\n generalStatus: OperationBulkGeneralStatus.SUCCESSFUL\n });\n this.reload.emit();\n this.alert.success(gettext('Operation status changed to SUCCESSFUL.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n openFailedOperation(failedParentId) {\n this.showFailedOperation.emit(failedParentId);\n }\n\n isStatusScheduled() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.SCHEDULED;\n }\n\n isStatusExecutingOrExecutingWithError() {\n return (\n this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.EXECUTING ||\n this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.EXECUTING_WITH_ERROR\n );\n }\n\n allOperationsCreated() {\n return (\n this.bulkOperation.progress.all ===\n this.bulkOperation.progress.executing +\n this.bulkOperation.progress.failed +\n this.bulkOperation.progress.pending +\n this.bulkOperation.progress.successful\n );\n }\n\n isStatusCanceled() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.CANCELED;\n }\n\n isStatusFailed() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.FAILED;\n }\n}\n","import { Component, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { IOperationBulk, IResultList } from '@c8y/client';\nimport { OperationBulkRealtimeService, DatePickerComponent } from '@c8y/ngx-components';\nimport { flatten } from 'lodash-es';\nimport { BehaviorSubject, Observable, combineLatest, pipe } from 'rxjs';\nimport { map, tap, switchMap, withLatestFrom, shareReplay } from 'rxjs/operators';\nimport { StatusFilterComponent, IStatusOption } from '@c8y/ngx-components/operations/status-filter';\nimport {\n BulkOperationsService,\n OperationType\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BulkOperationModalsService } from './modals/bulk-operation-modals.service';\nimport { BulkOperationListItemComponent } from './bulk-operation-list-item.component';\nimport { BULK_OPERATION_STATUS_OPTIONS } from './bulk-operation-list-item.model';\n@Component({\n selector: 'c8y-bulk-operations',\n templateUrl: './bulk-operations-list.component.html',\n providers: [OperationBulkRealtimeService]\n})\nexport class BulkOperationsListComponent implements OnInit {\n bulkTypes: OperationType[] = [];\n selectedTypeFilters = this.getTypeFilters();\n bulkOperationStatusOptions: IStatusOption[] = BULK_OPERATION_STATUS_OPTIONS;\n\n filterPipe;\n refreshLoading: boolean = false;\n statusFilter$: BehaviorSubject<IStatusOption[]> = new BehaviorSubject(null);\n typeFilter$: BehaviorSubject<OperationType[]> = new BehaviorSubject(null);\n timeFilter$: BehaviorSubject<any> = new BehaviorSubject(null);\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n @ViewChildren(BulkOperationListItemComponent) listItems: QueryList<\n BulkOperationListItemComponent\n >;\n @ViewChild('statusFilter', { static: true }) statusFilter: StatusFilterComponent;\n @ViewChild(DatePickerComponent, { static: true }) datePicker: DatePickerComponent;\n\n bulkOperations$: Observable<IResultList<IOperationBulk>> = combineLatest(\n this.statusFilter$,\n this.timeFilter$,\n this.typeFilter$,\n this.reload$\n ).pipe(\n tap(() => {\n this.refreshLoading = true;\n }),\n switchMap(([statusFilters, timeFilters]) => this.filter(statusFilters, timeFilters)),\n withLatestFrom(this.typeFilter$),\n map(([result, typeFilter]: [IResultList<IOperationBulk>, OperationType[]]) => {\n this.filterPipe = pipe(map((data: []) => this.filterByType(data, typeFilter)));\n return { ...result, data: this.filterByType(result.data, typeFilter) };\n }),\n tap(() => {\n this.refreshLoading = false;\n }),\n shareReplay(1)\n );\n\n private allFilterFragments: string[];\n\n constructor(\n public realtime: OperationBulkRealtimeService,\n private bulkOperationsService: BulkOperationsService,\n private bulkOperationModalsService: BulkOperationModalsService\n ) {\n this.allFilterFragments = this.flattenFilterFragments(this.getTypeFilters());\n }\n\n ngOnInit() {\n this.bulkTypes = this.bulkOperationsService.getBulkTypes();\n }\n\n filterByType(bulkOperations: IOperationBulk[], typeFilter) {\n const flattenedFragments: string[] = this.flattenFilterFragments(typeFilter);\n if (\n // return data unfiltered if no filters selected...\n !flattenedFragments.length ||\n // ...or when all filters are selected\n this.allFilterFragments.every(fragment => flattenedFragments.includes(fragment))\n ) {\n return bulkOperations;\n }\n\n const filteredData = bulkOperations.filter(item => {\n return Object.keys(item.operationPrototype).some(key => flattenedFragments.includes(key));\n });\n\n return filteredData;\n }\n\n resetFilter() {\n this.statusFilter$.next(null);\n this.timeFilter$.next(null);\n this.typeFilter$.next(null);\n\n this.datePicker.clearFilter();\n this.selectedTypeFilters = this.getTypeFilters();\n this.statusFilter.reset();\n }\n\n isFilterApplied() {\n return (\n this.statusFilter$.getValue() || this.typeFilter$.getValue() || this.timeFilter$.getValue()\n );\n }\n\n filter(statusFilters, timeFilter) {\n const status =\n statusFilters && statusFilters.length > 0\n ? {\n generalStatus: flatten(statusFilters.map(statusFilter => statusFilter.generalStatus))\n }\n : {};\n\n const time = timeFilter\n ? {\n ...(timeFilter.dateFrom && {\n dateFrom: timeFilter.dateFrom.toISOString()\n }),\n ...(timeFilter.dateTo && {\n dateTo: timeFilter.dateTo.toISOString()\n })\n }\n : {};\n return this.getBulkOperations({ ...status, ...time });\n }\n\n getBulkOperations(filter?) {\n return this.bulkOperationsService.getBulkOperations(filter);\n }\n\n getTypeFilters() {\n return this.bulkOperationsService.getBulkTypes();\n }\n\n addBulkOperation() {\n this.bulkOperationModalsService.showNewBulkOperationModal();\n }\n\n openFailedOperation(failedParentId) {\n this.listItems.forEach(item => {\n if (item.bulkOperation.id === failedParentId) {\n item.listItem.collapsed = false;\n item.listItem.element.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n });\n }\n\n compareOperations(operationA: IOperationBulk, operationB: IOperationBulk): number {\n return new Date(operationA.startDate).getTime() - new Date(operationB.startDate).getTime();\n }\n\n private flattenFilterFragments(filters: OperationType[]): string[] {\n return (filters || []).reduce((flattened, current) => flattened.concat(current.fragments), []);\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { gettext, Tab } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-bulk-operation-details-tabs',\n templateUrl: './bulk-operation-details-tabs.component.html'\n})\nexport class BulkOperationDetailsTabsComponent implements OnInit {\n @Input()\n bulkOperation: Partial<IOperationBulk>;\n @Input()\n readOnly: boolean = false;\n @Output() onRetryFailedOperations: EventEmitter<Partial<IOperationBulk>> = new EventEmitter();\n @Output() showFailedOperation: EventEmitter<number> = new EventEmitter();\n\n @ViewChild('details', { static: true }) detailsTemplate: any;\n @ViewChild('audit', { static: true }) auditTemplate: any;\n\n tabs: Tab[] = [];\n template: ViewContainerRef;\n\n ngOnInit(): void {\n this.template = this.detailsTemplate;\n\n this.tabs = [\n {\n label: gettext('Details'),\n path: null,\n icon: 'asterisk',\n template: this.detailsTemplate\n },\n {\n label: gettext('History of changes'),\n path: null,\n icon: 'archive',\n template: this.auditTemplate\n }\n ];\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IManagedObject, IOperationBulk } from '@c8y/client';\n\n@Component({\n selector: 'c8y-bulk-operation-details',\n templateUrl: './bulk-operation-details.component.html'\n})\nexport class BulkOperationDetailsComponent {\n allFilterIsSelected: boolean = false;\n collapsed: boolean;\n device: IManagedObject;\n\n @Input()\n bulkOperation: Partial<IOperationBulk>;\n @Input()\n readOnly: boolean = false;\n @Output() showFailedOperation: EventEmitter<number> = new EventEmitter();\n\n scrollToRetriedFromOperation(failedOperationId) {\n this.showFailedOperation.emit(failedOperationId);\n }\n}\n","import { gettext } from '@c8y/ngx-components';\n\nexport const SINGLE_OP_STATUS_NAMES = {\n PENDING: gettext('Pending'),\n EXECUTING: gettext('Executing'),\n FAILED: gettext('Failed'),\n SUCCESSFUL: gettext('Successful'),\n ALL: gettext('All')\n};\n\nexport const SINGLE_OP_STATUS_PROPERTIES = [\n {\n label: SINGLE_OP_STATUS_NAMES.PENDING,\n iconClass: 'dlt-c8y-icon-clock-o text-info',\n selected: false\n },\n {\n label: SINGLE_OP_STATUS_NAMES.EXECUTING,\n iconClass: 'dlt-c8y-icon-refresh text-info',\n selected: false\n },\n {\n label: SINGLE_OP_STATUS_NAMES.SUCCESSFUL,\n iconClass: 'dlt-c8y-icon-check-circle text-success',\n selected: false\n },\n {\n label: SINGLE_OP_STATUS_NAMES.FAILED,\n iconClass: 'dlt-c8y-icon-exclamation-circle text-danger',\n selected: false\n }\n];\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { IOperation, IOperationBulk, IResultList } from '@c8y/client';\nimport { StatusFilterComponent, IStatusOption } from '@c8y/ngx-components/operations/status-filter';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { SINGLE_OP_STATUS_NAMES, SINGLE_OP_STATUS_PROPERTIES } from './single-operation-item.model';\n\n@Component({\n selector: 'c8y-single-operations-list',\n templateUrl: './single-operations-list.component.html'\n})\nexport class SingleOperationsListComponent implements AfterViewInit, OnChanges {\n @Input()\n bulkOperation: Partial<IOperationBulk>;\n @Input()\n readOnly: boolean = false;\n @Output() onRetryFailedOperations: EventEmitter<Partial<IOperationBulk>> = new EventEmitter();\n\n @ViewChild(StatusFilterComponent, { static: false })\n statusFilter: StatusFilterComponent;\n\n singleOperationStatusProperties = SINGLE_OP_STATUS_PROPERTIES;\n singleOperationStatusNames = SINGLE_OP_STATUS_NAMES;\n singleOperations: IResultList<IOperation>;\n\n constructor(private bulkOperationsService: BulkOperationsService) {}\n\n async ngAfterViewInit() {\n if (this.statusFilter) {\n this.filterOperationsByType();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.bulkOperation && !changes.bulkOperation.firstChange) {\n this.filterOperationsByType();\n }\n }\n\n filterOperationsByType() {\n if (this.statusFilter) {\n const typeFilter = this.getFilterTypeOfSingleOperations();\n\n this.statusFilter.preset(\n typeFilter === this.singleOperationStatusNames.ALL\n ? []\n : [{ label: typeFilter } as IStatusOption]\n );\n } else {\n setTimeout(this.filterOperationsByType.bind(this));\n }\n }\n\n getFilterTypeOfSingleOperations() {\n const progress = this.bulkOperation.progress;\n\n if (progress.failed > 0) {\n return this.singleOperationStatusNames.FAILED;\n } else if (progress.failed === 0 && progress.successful === 0 && progress.pending === 0) {\n return this.singleOperationStatusNames.EXECUTING;\n } else if (progress.failed === 0 && progress.successful === 0 && progress.executing === 0) {\n return this.singleOperationStatusNames.PENDING;\n } else if (progress.failed === 0 && progress.pending === 0 && progress.executing === 0) {\n return this.singleOperationStatusNames.SUCCESSFUL;\n }\n\n return this.singleOperationStatusNames.ALL;\n }\n\n async getOperationsByStatus(filter: IStatusOption[]) {\n this.singleOperations = await this.bulkOperationsService.getSingleOperationsByStatus(\n filter[0] && filter[0].label,\n this.bulkOperation.id\n );\n }\n\n retryBulkOperation() {\n this.onRetryFailedOperations.emit(this.bulkOperation);\n }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { IOperation } from '@c8y/client';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { omit } from 'lodash-es';\nimport { SINGLE_OP_STATUS_NAMES, SINGLE_OP_STATUS_PROPERTIES } from './single-operation-item.model';\n\n@Component({\n selector: 'c8y-single-operation-item',\n templateUrl: './single-operation-item.component.html'\n})\nexport class SingleOperationItemComponent {\n device = {};\n showIfTextTruncated = false;\n singleOperationStatusNames = SINGLE_OP_STATUS_NAMES;\n singleOperationsStatusProperties = SINGLE_OP_STATUS_PROPERTIES;\n iconClass: string;\n @Input()\n operation: IOperation;\n @Input()\n readOnly: boolean = false;\n @ViewChild('failureReason', { static: true }) failureReasonRef: ElementRef;\n\n constructor(\n private bulkOperationsService: BulkOperationsService,\n private alertService: AlertService\n ) {}\n\n async ngOnInit() {\n this.iconClass = this.getIconClass();\n this.device = await this.getDeviceMO(this.operation.deviceId);\n }\n\n ngAfterViewInit() {\n this.isTextTruncated();\n }\n\n async retrySingleOperation(singleOperation) {\n const operationToCreate = omit(singleOperation, [\n 'id',\n 'self',\n 'status',\n 'failureReason',\n 'creationTime',\n 'delivery'\n ]);\n\n try {\n await this.bulkOperationsService.createSingleOperation(operationToCreate);\n this.alertService.success(gettext('Operation created.'));\n } catch (er) {\n this.alertService.addServerFailure(er);\n }\n }\n\n getIconClass() {\n return this.singleOperationsStatusProperties.find(\n operationProperties => operationProperties.label.toUpperCase() === this.operation.status\n ).iconClass;\n }\n\n private async getDeviceMO(deviceId) {\n const inventoryMO = await this.bulkOperationsService.getManagedObject(deviceId);\n if (inventoryMO) {\n return inventoryMO.data;\n }\n }\n\n private isTextTruncated() {\n if (this.operation.failureReason) {\n const el = this.failureReasonRef.nativeElement;\n this.showIfTextTruncated = el.offsetWidth < el.scrollWidth ? true : false;\n }\n }\n}\n","import { Component, EventEmitter, Output, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n BulkOperationsService,\n OperationType\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BulkOperationModalsService } from '../modals/bulk-operation-modals.service';\n\n@Component({\n selector: 'c8y-bulk-operation-type-list',\n templateUrl: './bulk-operation-type-list.component.html'\n})\nexport class BulkOperationTypeListComponent implements OnInit {\n @Output() onCustomType: EventEmitter<OperationType> = new EventEmitter();\n bulkList: OperationType[] = [];\n\n constructor(\n private router: Router,\n private bulkOperationsService: BulkOperationsService,\n private bulkOperationModalsService: BulkOperationModalsService\n ) {}\n\n ngOnInit() {\n this.bulkList = this.bulkOperationsService.getBulkTypes();\n }\n\n handleClick(item: OperationType) {\n if (item.path) {\n this.bulkOperationModalsService.hideNewBulkOperationModal();\n this.router.navigateByUrl(item.path);\n } else if (item.component) {\n this.onCustomType.emit(item);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\nimport { CoreModule, Route } from '@c8y/ngx-components';\nimport { StatusFilterModule } from '@c8y/ngx-components/operations/status-filter';\nimport { OperationSummaryModule } from '@c8y/ngx-components/operations/operation-summary';\nimport { BulkOperationSchedulerModule } from '@c8y/ngx-components/operations/bulk-operation-scheduler';\n\nimport { BulkOperationDetailsService } from './bulk-operation-details.service';\nimport { BulkOperationsListComponent } from './bulk-operations-list.component';\nimport { BulkOperationListItemComponent } from './bulk-operation-list-item.component';\nimport { BulkOperationDetailsTabsComponent } from './bulk-operation-details-tabs.component';\nimport { BulkOperationDetailsComponent } from './bulk-operation-details.component';\nimport { SingleOperationsListComponent } from './single-operations-list.component';\nimport { SingleOperationItemComponent } from './single-operation-item.component';\nimport { BulkOperationWrapperComponent } from './bulk-operation-wrapper.component';\nimport { BulkOperationTypeListComponent } from './type-list/bulk-operation-type-list.component';\nimport { BulkOperationModalsService } from './modals/bulk-operation-modals.service';\nimport { BulkOperationsModalComponent } from './modals/bulk-operations-modal.component';\nimport { BulkOperationsRescheduleModalComponent } from './modals/bulk-operations-reschedule-modal.component';\n\nexport const bulkOperationListRoutes: Route[] = [\n {\n path: 'devicecontrol/bulk',\n component: BulkOperationsListComponent\n }\n];\n\n/**\n * This module allows for displaying the list of bulk operations and their details.\n */\n@NgModule({\n imports: [\n CoreModule,\n PopoverModule,\n TooltipModule,\n StatusFilterModule,\n OperationSummaryModule,\n BulkOperationSchedulerModule,\n RouterModule.forChild(bulkOperationListRoutes)\n ],\n providers: [BulkOperationDetailsService, BulkOperationModalsService],\n declarations: [\n BulkOperationsListComponent,\n BulkOperationListItemComponent,\n BulkOperationDetailsTabsComponent,\n BulkOperationDetailsComponent,\n SingleOperationsListComponent,\n SingleOperationItemComponent,\n BulkOperationWrapperComponent,\n BulkOperationTypeListComponent,\n BulkOperationsModalComponent,\n BulkOperationsRescheduleModalComponent\n ],\n entryComponents: [\n BulkOperationsListComponent,\n BulkOperationListItemComponent,\n BulkOperationDetailsTabsComponent,\n BulkOperationDetailsComponent,\n SingleOperationsListComponent,\n SingleOperationItemComponent,\n BulkOperationWrapperComponent,\n BulkOperationTypeListComponent,\n BulkOperationsModalComponent,\n BulkOperationsRescheduleModalComponent\n ],\n exports: [\n BulkOperationsListComponent,\n BulkOperationListItemComponent,\n BulkOperationDetailsTabsComponent,\n BulkOperationDetailsComponent,\n SingleOperationsListComponent,\n SingleOperationItemComponent,\n BulkOperationWrapperComponent,\n BulkOperationTypeListComponent,\n BulkOperationsModalComponent,\n BulkOperationsRescheduleModalComponent\n ]\n})\nexport class BulkOperationsListModule {}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@c8y/ngx-components/operations/bulk-operations-list/bulk-operation-wrapper.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/bulk-operation-details.service.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/modals/bulk-operations-modal.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/modals/bulk-operation-modals.service.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/modals/bulk-operations-reschedule-modal.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/bulk-operation-list-item.model.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/bulk-operation-list-item.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/bulk-operations-list.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/bulk-operation-details-tabs.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/bulk-operation-details.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/single-operation-item.model.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/single-operations-list.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/single-operation-item.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/type-list/bulk-operation-type-list.component.ts","ng://@c8y/ngx-components/operations/bulk-operations-list/bulk-operations-list.module.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__read","o","m","ar","error","BulkOperationWrapperComponent","bulkOperationDetailsService","modalRef","BulkOperationDetailsService","BsModalRef","tslib_1.__decorate","Input","Component","selector","template","bulkOperationsService","modalService","openDetails","bulkOperationId","getBulkOperationById","bulkOperation","_a","data","initialState","show","class","BulkOperationsService","BsModalService","Injectable","BulkOperationsModalComponent","bsModalRef","resolver","showComponent","cancel","hide","createComponent","item","component","factory","resolveComponentFactory","container","ComponentFactoryResolver","ViewChild","static","read","ViewContainerRef","BulkOperationModalsService","bsModalService","showNewBulkOperationModal","backdrop","hideNewBulkOperationModal","BulkOperationsRescheduleModalComponent","alert","closeSubject","Subject","ngOnInit","modalTitle","getTitle","onDateAndDelaySelect","$event","dateAndDelay","isRetryOperation","gettext","onCancel","onSave","startDate","scheduledDate","toISOString","creationRamp","delayInSeconds","createBulkOperation","newBulkOperation","success","addServerFailure","er_1","updateBulkOperation","er_2","AlertService","BULK_OPERATION_STATUS_LABELS","SCHEDULED","EXECUTING","CANCELED","FAILED","SUCCESSFUL","DELETED","BULK_OPERATION_STATUS_OPTIONS","generalStatus","OperationBulkGeneralStatus","iconClass","EXECUTING_WITH_ERROR","BulkOperationListItemComponent","modal","detailsCollapsed","readOnly","showFailedOperation","EventEmitter","reload","refreshLoading","bulkOperationGeneralStatus","bulkOperationStatusOptions","finishDatePopoverText","progressBarClass","progressBarStatus","getIconClass","finishDate","calculateFinishDateMs","setProgressBar","ngOnChanges","changes","firstChange","_this","statusOptions","find","statusOption","includes","Date","getTime","progress","all","progressBarProgressFn","successful","failed","staticContentOfClass","progressBarState","progressBarColor","editSchedule","modalOptions","cloneDeep","cancelBulkOperation","confirm","Status","DANGER","deleteBulkOperation","id","emit","retryFailedOperation","clonedBulk","groupId","failedParentId","content","subscribe","setToSuccessful","openFailedOperation","isStatusScheduled","isStatusExecutingOrExecutingWithError","allOperationsCreated","executing","pending","isStatusCanceled","isStatusFailed","ModalService","Output","BulkOperationsListComponent","realtime","bulkOperationModalsService","bulkTypes","selectedTypeFilters","getTypeFilters","statusFilter$","BehaviorSubject","typeFilter$","timeFilter$","reload$","bulkOperations$","combineLatest","pipe","tap","switchMap","_b","statusFilters","timeFilters","filter","withLatestFrom","map","typeFilter","filterPipe","filterByType","shareReplay","allFilterFragments","flattenFilterFragments","getBulkTypes","bulkOperations","flattenedFragments","every","fragment","keys","operationPrototype","some","resetFilter","datePicker","clearFilter","statusFilter","reset","isFilterApplied","getValue","timeFilter","status","flatten","time","dateFrom","dateTo","getBulkOperations","addBulkOperation","listItems","forEach","listItem","collapsed","element","nativeElement","scrollIntoView","behavior","block","compareOperations","operationA","operationB","filters","reduce","flattened","current","concat","fragments","OperationBulkRealtimeService","ViewChildren","DatePickerComponent","providers","BulkOperationDetailsTabsComponent","onRetryFailedOperations","tabs","detailsTemplate","path","icon","auditTemplate","BulkOperationDetailsComponent","allFilterIsSelected","scrollToRetriedFromOperation","failedOperationId","SINGLE_OP_STATUS_NAMES","PENDING","ALL","SINGLE_OP_STATUS_PROPERTIES","selected","SingleOperationsListComponent","singleOperationStatusProperties","singleOperationStatusNames","ngAfterViewInit","filterOperationsByType","getFilterTypeOfSingleOperations","preset","setTimeout","bind","getOperationsByStatus","getSingleOperationsByStatus","singleOperations","retryBulkOperation","StatusFilterComponent","SingleOperationItemComponent","alertService","device","showIfTextTruncated","singleOperationsStatusProperties","getDeviceMO","operation","deviceId","isTextTruncated","retrySingleOperation","singleOperation","operationToCreate","omit","createSingleOperation","operationProperties","toUpperCase","getManagedObject","inventoryMO","failureReason","el","failureReasonRef","offsetWidth","scrollWidth","BulkOperationTypeListComponent","router","onCustomType","bulkList","handleClick","navigateByUrl","Router","bulkOperationListRoutes","BulkOperationsListModule","NgModule","imports","CoreModule","PopoverModule","TooltipModule","StatusFilterModule","OperationSummaryModule","BulkOperationSchedulerModule","RouterModule","forChild","declarations","entryComponents","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Component, Input } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BulkOperationDetailsService } from './bulk-operation-details.service';\n\n@Component({\n selector: 'c8y-bulk-operations-wrapper',\n templateUrl: './bulk-operation-wrapper.component.html'\n})\nexport class BulkOperationWrapperComponent {\n @Input() bulkOperation: Partial<IOperationBulk>;\n\n constructor(\n public bulkOperationDetailsService: BulkOperationDetailsService,\n public modalRef: BsModalRef\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BulkOperationWrapperComponent } from './bulk-operation-wrapper.component';\n\n@Injectable()\nexport class BulkOperationDetailsService {\n constructor(\n private bulkOperationsService: BulkOperationsService,\n private modalService: BsModalService\n ) {}\n\n async openDetails(bulkOperationId) {\n const bulkOperation: IOperationBulk = (await this.bulkOperationsService.getBulkOperationById(\n bulkOperationId\n )).data;\n const initialState = { bulkOperation };\n this.modalService.show(BulkOperationWrapperComponent, {\n initialState,\n class: 'modal-lg'\n });\n }\n}\n","import { Component, ViewContainerRef, ViewChild, ComponentFactoryResolver } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { OperationType } from '@c8y/ngx-components/operations/bulk-operations-service';\n\n@Component({\n selector: 'c8y-bulk-operations-modal',\n templateUrl: 'bulk-operations-modal.component.html'\n})\nexport class BulkOperationsModalComponent {\n @ViewChild('container', { static: false, read: ViewContainerRef }) container;\n showComponent: boolean = false;\n constructor(private bsModalRef: BsModalRef, private resolver: ComponentFactoryResolver) {}\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n createComponent(item: OperationType) {\n if (item && item.component) {\n this.showComponent = true;\n const factory = this.resolver.resolveComponentFactory(item.component);\n this.container.createComponent(factory);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { BulkOperationsModalComponent } from './bulk-operations-modal.component';\n\n@Injectable()\nexport class BulkOperationModalsService {\n private bsModalRef: BsModalRef;\n\n constructor(private bsModalService: BsModalService) {}\n\n showNewBulkOperationModal() {\n this.bsModalRef = this.bsModalService.show(BulkOperationsModalComponent, {\n backdrop: 'static',\n class: 'modal-sm'\n });\n }\n\n hideNewBulkOperationModal() {\n if (this.bsModalRef) {\n this.bsModalRef.hide();\n }\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport { OperationSchedule } from '@c8y/ngx-components/operations/bulk-operation-scheduler';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\n\n@Component({\n selector: 'c8y-bulk-operations-reschedule-modal',\n templateUrl: 'bulk-operations-reschedule-modal.component.html'\n})\nexport class BulkOperationsRescheduleModalComponent implements OnInit {\n closeSubject: Subject<IOperationBulk> = new Subject();\n dateAndDelay: OperationSchedule;\n bulkOperation: Partial<IOperationBulk>;\n isRetryOperation: boolean;\n modalTitle: string;\n\n constructor(\n public bsModalRef: BsModalRef,\n private bulkOperationsService: BulkOperationsService,\n private alert: AlertService\n ) {}\n\n ngOnInit() {\n this.modalTitle = this.getTitle();\n }\n\n onDateAndDelaySelect($event) {\n this.dateAndDelay = $event;\n }\n\n getTitle() {\n return this.isRetryOperation ? gettext('Retry operation') : gettext('Edit schedule');\n }\n\n onCancel() {\n this.bsModalRef.hide();\n }\n\n async onSave() {\n let newBulkOperation;\n this.bulkOperation.startDate = this.dateAndDelay.scheduledDate.toISOString();\n this.bulkOperation.creationRamp = this.dateAndDelay.delayInSeconds;\n\n if (this.isRetryOperation) {\n try {\n newBulkOperation = await this.bulkOperationsService.createBulkOperation(this.bulkOperation);\n this.alert.success(gettext('Successfully rescheduled for a retry.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n } else {\n try {\n newBulkOperation = await this.bulkOperationsService.updateBulkOperation(this.bulkOperation);\n this.alert.success(gettext('Successfully rescheduled.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n // send back to component from which modal was called\n this.closeSubject.next(newBulkOperation.data);\n this.bsModalRef.hide();\n }\n}\n","import { OperationBulkGeneralStatus } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\nimport { IStatusOption } from '@c8y/ngx-components/operations/status-filter';\n\nexport const BULK_OPERATION_STATUS_LABELS = {\n SCHEDULED: gettext('Scheduled'),\n EXECUTING: gettext('Executing'),\n CANCELED: gettext('Canceled'),\n FAILED: gettext('Completed with failures'),\n SUCCESSFUL: gettext('Completed successfully'),\n DELETED: gettext('Deleted'),\n};\n\nexport const BULK_OPERATION_STATUS_OPTIONS: IStatusOption[] = [\n {\n label: BULK_OPERATION_STATUS_LABELS.SCHEDULED,\n generalStatus: [OperationBulkGeneralStatus.SCHEDULED],\n iconClass: 'dlt-c8y-icon-calendar text-info',\n },\n {\n label: BULK_OPERATION_STATUS_LABELS.EXECUTING,\n generalStatus: [\n OperationBulkGeneralStatus.EXECUTING,\n OperationBulkGeneralStatus.EXECUTING_WITH_ERROR,\n ],\n iconClass: 'dlt-c8y-icon-refresh text-primary',\n },\n {\n label: BULK_OPERATION_STATUS_LABELS.DELETED,\n generalStatus: [OperationBulkGeneralStatus.DELETED],\n iconClass: 'dlt-c8y-icon-delete-document text-muted',\n },\n {\n label: BULK_OPERATION_STATUS_LABELS.CANCELED,\n generalStatus: [OperationBulkGeneralStatus.CANCELED],\n iconClass: 'dlt-c8y-icon-ban text-muted',\n },\n {\n label: BULK_OPERATION_STATUS_LABELS.FAILED,\n generalStatus: [OperationBulkGeneralStatus.FAILED],\n iconClass: 'dlt-c8y-icon-exclamation-triangle text-danger',\n },\n {\n label: BULK_OPERATION_STATUS_LABELS.SUCCESSFUL,\n generalStatus: [OperationBulkGeneralStatus.SUCCESSFUL],\n iconClass: 'dlt-c8y-icon-check-circle text-success',\n },\n];\n\nexport const BULK_OPERATION_FALLBACK_STATUS_ICON = 'dlt-c8y-icon-ask-question text-muted';\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { IOperationBulk, OperationBulkGeneralStatus } from '@c8y/client';\nimport {\n AlertService,\n gettext,\n ListItemComponent,\n ModalService,\n Status\n} from '@c8y/ngx-components';\nimport { assign, cloneDeep } from 'lodash-es';\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { IStatusOption } from '@c8y/ngx-components/operations/status-filter';\nimport { BulkOperationsRescheduleModalComponent } from './modals/bulk-operations-reschedule-modal.component';\nimport { BULK_OPERATION_FALLBACK_STATUS_ICON, BULK_OPERATION_STATUS_OPTIONS } from './bulk-operation-list-item.model';\n\n@Component({\n selector: 'c8y-bulk-operation-list-item',\n templateUrl: './bulk-operation-list-item.component.html'\n})\nexport class BulkOperationListItemComponent implements OnInit, OnChanges {\n @Input()\n bulkOperation: Partial<IOperationBulk>;\n @Input()\n detailsCollapsed: boolean = true;\n @Input()\n readOnly: boolean = false;\n @Output() showFailedOperation = new EventEmitter();\n @Output() reload: EventEmitter<any> = new EventEmitter();\n @ViewChild('listItem', { static: true }) listItem: ListItemComponent;\n iconClass: string;\n finishDate: number;\n refreshLoading = false;\n bulkOperationGeneralStatus = OperationBulkGeneralStatus;\n bulkOperationStatusOptions: IStatusOption[] = BULK_OPERATION_STATUS_OPTIONS;\n bsModalRef: BsModalRef;\n finishDatePopoverText: string = gettext(\n 'Approximate date, estimated based on the bulk operation settings.'\n );\n progressBarClass: string = 'progress';\n progressBarColor: string;\n progressBarStatus: number = 0;\n\n constructor(\n private bulkOperationsService: BulkOperationsService,\n private modal: ModalService,\n private alert: AlertService,\n private bsModalService: BsModalService\n ) {}\n\n ngOnInit() {\n this.iconClass = this.getIconClass();\n this.finishDate = this.calculateFinishDateMs();\n this.setProgressBar();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.bulkOperation && !changes.bulkOperation.firstChange) {\n this.iconClass = this.getIconClass();\n this.setProgressBar();\n }\n }\n\n getIconClass() {\n const statusOptions = this.bulkOperationStatusOptions.find(statusOption =>\n statusOption.generalStatus.includes(this.bulkOperation.generalStatus)\n );\n return statusOptions ? statusOptions.iconClass : BULK_OPERATION_FALLBACK_STATUS_ICON;\n }\n\n calculateFinishDateMs(): number {\n const startDateMs: number = new Date(this.bulkOperation.startDate).getTime();\n const creationRampMs: number = this.bulkOperation.creationRamp * 1000;\n\n return startDateMs + creationRampMs * this.bulkOperation.progress.all;\n }\n\n progressBarProgressFn() {\n return (\n ((this.bulkOperation.progress.successful + this.bulkOperation.progress.failed) /\n this.bulkOperation.progress.all) *\n 100\n );\n }\n\n setProgressBar() {\n const staticContentOfClass = 'progress-bar progress-striped active progress-bar';\n\n const progressBarState = {\n EXECUTING: {\n progressBarClass: 'progress progress-striped active',\n progressBarColor: `${staticContentOfClass}-primary`,\n progressBarStatus: this.progressBarProgressFn()\n },\n EXECUTING_WITH_ERROR: {\n progressBarClass: 'progress progress-striped active',\n progressBarColor: `${staticContentOfClass}-danger`,\n progressBarStatus: this.progressBarProgressFn()\n },\n FAILED: {\n progressBarClass: 'progress',\n progressBarColor: `${staticContentOfClass}-danger`,\n progressBarStatus: 100\n },\n SUCCESSFUL: {\n progressBarClass: 'progress',\n progressBarColor: `${staticContentOfClass}-success`,\n progressBarStatus: 100\n }\n };\n\n assign(this, progressBarState[this.bulkOperation.generalStatus]);\n }\n\n editSchedule() {\n const rescheduledOperation = cloneDeep(this.bulkOperation);\n const initialState = {\n bulkOperation: rescheduledOperation\n };\n const modalOptions = { initialState, class: 'modal-sm', backdrop: 'static' } as ModalOptions;\n this.bsModalRef = this.bsModalService.show(\n BulkOperationsRescheduleModalComponent,\n modalOptions\n );\n }\n\n async cancelBulkOperation() {\n try {\n await this.modal.confirm(\n gettext('Cancel bulk operation'),\n gettext('You are about to cancel the bulk operation. Do you want to proceed?'),\n Status.DANGER\n );\n await this.bulkOperationsService.deleteBulkOperation(this.bulkOperation.id);\n this.reload.emit();\n this.alert.success(gettext('Operation canceled.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n retryFailedOperation() {\n const clonedBulk = cloneDeep(this.bulkOperation);\n\n // change the id to failedparentId similar to the logic in deviceBulkControl.service.js\n delete clonedBulk.groupId;\n clonedBulk.failedParentId = this.bulkOperation.id;\n\n // show reschdedule modal:\n const initialState = {\n bulkOperation: clonedBulk,\n isRetryOperation: true\n };\n const modalOptions = { initialState, class: 'modal-sm', backdrop: 'static' } as ModalOptions;\n this.bsModalRef = this.bsModalService.show(\n BulkOperationsRescheduleModalComponent,\n modalOptions\n );\n this.bsModalRef.content.closeSubject.subscribe(() => {\n this.reload.emit();\n });\n }\n\n async setToSuccessful() {\n try {\n await this.modal.confirm(\n gettext('Set manually bulk operation to SUCCESSFUL'),\n gettext(\n 'You are about to change the bulk operation status to SUCCESSFUL. Do you want to proceed?'\n ),\n Status.DANGER\n );\n\n await this.bulkOperationsService.updateBulkOperation({\n id: this.bulkOperation.id,\n generalStatus: OperationBulkGeneralStatus.SUCCESSFUL\n });\n this.reload.emit();\n this.alert.success(gettext('Operation status changed to SUCCESSFUL.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n openFailedOperation(failedParentId) {\n this.showFailedOperation.emit(failedParentId);\n }\n\n isStatusScheduled() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.SCHEDULED;\n }\n\n isStatusExecutingOrExecutingWithError() {\n return (\n this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.EXECUTING ||\n this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.EXECUTING_WITH_ERROR\n );\n }\n\n allOperationsCreated() {\n return (\n this.bulkOperation.progress.all ===\n this.bulkOperation.progress.executing +\n this.bulkOperation.progress.failed +\n this.bulkOperation.progress.pending +\n this.bulkOperation.progress.successful\n );\n }\n\n isStatusCanceled() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.CANCELED;\n }\n\n isStatusFailed() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.FAILED;\n }\n}\n","import { Component, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { IOperationBulk, IResultList } from '@c8y/client';\nimport { OperationBulkRealtimeService, DatePickerComponent } from '@c8y/ngx-components';\nimport { flatten } from 'lodash-es';\nimport { BehaviorSubject, Observable, combineLatest, pipe } from 'rxjs';\nimport { map, tap, switchMap, withLatestFrom, shareReplay } from 'rxjs/operators';\nimport { StatusFilterComponent, IStatusOption } from '@c8y/ngx-components/operations/status-filter';\nimport {\n BulkOperationsService,\n OperationType\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BulkOperationModalsService } from './modals/bulk-operation-modals.service';\nimport { BulkOperationListItemComponent } from './bulk-operation-list-item.component';\nimport { BULK_OPERATION_STATUS_OPTIONS } from './bulk-operation-list-item.model';\n@Component({\n selector: 'c8y-bulk-operations',\n templateUrl: './bulk-operations-list.component.html',\n providers: [OperationBulkRealtimeService]\n})\nexport class BulkOperationsListComponent implements OnInit {\n bulkTypes: OperationType[] = [];\n selectedTypeFilters = this.getTypeFilters();\n bulkOperationStatusOptions: IStatusOption[] = BULK_OPERATION_STATUS_OPTIONS;\n\n filterPipe;\n refreshLoading: boolean = false;\n statusFilter$: BehaviorSubject<IStatusOption[]> = new BehaviorSubject(null);\n typeFilter$: BehaviorSubject<OperationType[]> = new BehaviorSubject(null);\n timeFilter$: BehaviorSubject<any> = new BehaviorSubject(null);\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n @ViewChildren(BulkOperationListItemComponent) listItems: QueryList<\n BulkOperationListItemComponent\n >;\n @ViewChild('statusFilter', { static: true }) statusFilter: StatusFilterComponent;\n @ViewChild(DatePickerComponent, { static: true }) datePicker: DatePickerComponent;\n\n bulkOperations$: Observable<IResultList<IOperationBulk>> = combineLatest(\n this.statusFilter$,\n this.timeFilter$,\n this.typeFilter$,\n this.reload$\n ).pipe(\n tap(() => {\n this.refreshLoading = true;\n }),\n switchMap(([statusFilters, timeFilters]) => this.filter(statusFilters, timeFilters)),\n withLatestFrom(this.typeFilter$),\n map(([result, typeFilter]: [IResultList<IOperationBulk>, OperationType[]]) => {\n this.filterPipe = pipe(map((data: []) => this.filterByType(data, typeFilter)));\n return { ...result, data: this.filterByType(result.data, typeFilter) };\n }),\n tap(() => {\n this.refreshLoading = false;\n }),\n shareReplay(1)\n );\n\n private allFilterFragments: string[];\n\n constructor(\n public realtime: OperationBulkRealtimeService,\n private bulkOperationsService: BulkOperationsService,\n private bulkOperationModalsService: BulkOperationModalsService\n ) {\n this.allFilterFragments = this.flattenFilterFragments(this.getTypeFilters());\n }\n\n ngOnInit() {\n this.bulkTypes = this.bulkOperationsService.getBulkTypes();\n }\n\n filterByType(bulkOperations: IOperationBulk[], typeFilter) {\n const flattenedFragments: string[] = this.flattenFilterFragments(typeFilter);\n if (\n // return data unfiltered if no filters selected...\n !flattenedFragments.length ||\n // ...or when all filters are selected\n this.allFilterFragments.every(fragment => flattenedFragments.includes(fragment))\n ) {\n return bulkOperations;\n }\n\n const filteredData = bulkOperations.filter(item => {\n return Object.keys(item.operationPrototype).some(key => flattenedFragments.includes(key));\n });\n\n return filteredData;\n }\n\n resetFilter() {\n this.statusFilter$.next(null);\n this.timeFilter$.next(null);\n this.typeFilter$.next(null);\n\n this.datePicker.clearFilter();\n this.selectedTypeFilters = this.getTypeFilters();\n this.statusFilter.reset();\n }\n\n isFilterApplied() {\n return (\n this.statusFilter$.getValue() || this.typeFilter$.getValue() || this.timeFilter$.getValue()\n );\n }\n\n filter(statusFilters, timeFilter) {\n const status =\n statusFilters && statusFilters.length > 0\n ? {\n generalStatus: flatten(statusFilters.map(statusFilter => statusFilter.generalStatus))\n }\n : {};\n\n const time = timeFilter\n ? {\n ...(timeFilter.dateFrom && {\n dateFrom: timeFilter.dateFrom.toISOString()\n }),\n ...(timeFilter.dateTo && {\n dateTo: timeFilter.dateTo.toISOString()\n })\n }\n : {};\n return this.getBulkOperations({ ...status, ...time });\n }\n\n getBulkOperations(filter?) {\n return this.bulkOperationsService.getBulkOperations(filter);\n }\n\n getTypeFilters() {\n return this.bulkOperationsService.getBulkTypes();\n }\n\n addBulkOperation() {\n this.bulkOperationModalsService.showNewBulkOperationModal();\n }\n\n openFailedOperation(failedParentId) {\n this.listItems.forEach(item => {\n if (item.bulkOperation.id === failedParentId) {\n item.listItem.collapsed = false;\n item.listItem.element.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n });\n }\n\n compareOperations(operationA: IOperationBulk, operationB: IOperationBulk): number {\n return new Date(operationA.startDate).getTime() - new Date(operationB.startDate).getTime();\n }\n\n private flattenFilterFragments(filters: OperationType[]): string[] {\n return (filters || []).reduce((flattened, current) => flattened.concat(current.fragments), []);\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { gettext, Tab } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-bulk-operation-details-tabs',\n templateUrl: './bulk-operation-details-tabs.component.html'\n})\nexport class BulkOperationDetailsTabsComponent implements OnInit {\n @Input()\n bulkOperation: Partial<IOperationBulk>;\n @Input()\n readOnly: boolean = false;\n @Output() onRetryFailedOperations: EventEmitter<Partial<IOperationBulk>> = new EventEmitter();\n @Output() showFailedOperation: EventEmitter<number> = new EventEmitter();\n\n @ViewChild('details', { static: true }) detailsTemplate: any;\n @ViewChild('audit', { static: true }) auditTemplate: any;\n\n tabs: Tab[] = [];\n template: ViewContainerRef;\n\n ngOnInit(): void {\n this.template = this.detailsTemplate;\n\n this.tabs = [\n {\n label: gettext('Details'),\n path: null,\n icon: 'asterisk',\n template: this.detailsTemplate\n },\n {\n label: gettext('History of changes'),\n path: null,\n icon: 'archive',\n template: this.auditTemplate\n }\n ];\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IManagedObject, IOperationBulk } from '@c8y/client';\n\n@Component({\n selector: 'c8y-bulk-operation-details',\n templateUrl: './bulk-operation-details.component.html'\n})\nexport class BulkOperationDetailsComponent {\n allFilterIsSelected: boolean = false;\n collapsed: boolean;\n device: IManagedObject;\n\n @Input()\n bulkOperation: Partial<IOperationBulk>;\n @Input()\n readOnly: boolean = false;\n @Output() showFailedOperation: EventEmitter<number> = new EventEmitter();\n\n scrollToRetriedFromOperation(failedOperationId) {\n this.showFailedOperation.emit(failedOperationId);\n }\n}\n","import { gettext } from '@c8y/ngx-components';\n\nexport const SINGLE_OP_STATUS_NAMES = {\n PENDING: gettext('Pending'),\n EXECUTING: gettext('Executing'),\n FAILED: gettext('Failed'),\n SUCCESSFUL: gettext('Successful'),\n ALL: gettext('All')\n};\n\nexport const SINGLE_OP_STATUS_PROPERTIES = [\n {\n label: SINGLE_OP_STATUS_NAMES.PENDING,\n iconClass: 'dlt-c8y-icon-clock-o text-info',\n selected: false\n },\n {\n label: SINGLE_OP_STATUS_NAMES.EXECUTING,\n iconClass: 'dlt-c8y-icon-refresh text-info',\n selected: false\n },\n {\n label: SINGLE_OP_STATUS_NAMES.SUCCESSFUL,\n iconClass: 'dlt-c8y-icon-check-circle text-success',\n selected: false\n },\n {\n label: SINGLE_OP_STATUS_NAMES.FAILED,\n iconClass: 'dlt-c8y-icon-exclamation-circle text-danger',\n selected: false\n }\n];\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { IOperation, IOperationBulk, IResultList } from '@c8y/client';\nimport { StatusFilterComponent, IStatusOption } from '@c8y/ngx-components/operations/status-filter';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { SINGLE_OP_STATUS_NAMES, SINGLE_OP_STATUS_PROPERTIES } from './single-operation-item.model';\n\n@Component({\n selector: 'c8y-single-operations-list',\n templateUrl: './single-operations-list.component.html'\n})\nexport class SingleOperationsListComponent implements AfterViewInit, OnChanges {\n @Input()\n bulkOperation: Partial<IOperationBulk>;\n @Input()\n readOnly: boolean = false;\n @Output() onRetryFailedOperations: EventEmitter<Partial<IOperationBulk>> = new EventEmitter();\n\n @ViewChild(StatusFilterComponent, { static: false })\n statusFilter: StatusFilterComponent;\n\n singleOperationStatusProperties = SINGLE_OP_STATUS_PROPERTIES;\n singleOperationStatusNames = SINGLE_OP_STATUS_NAMES;\n singleOperations: IResultList<IOperation>;\n\n constructor(private bulkOperationsService: BulkOperationsService) {}\n\n async ngAfterViewInit() {\n if (this.statusFilter) {\n this.filterOperationsByType();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.bulkOperation && !changes.bulkOperation.firstChange) {\n this.filterOperationsByType();\n }\n }\n\n filterOperationsByType() {\n if (this.statusFilter) {\n const typeFilter = this.getFilterTypeOfSingleOperations();\n\n this.statusFilter.preset(\n typeFilter === this.singleOperationStatusNames.ALL\n ? []\n : [{ label: typeFilter } as IStatusOption]\n );\n } else {\n setTimeout(this.filterOperationsByType.bind(this));\n }\n }\n\n getFilterTypeOfSingleOperations() {\n const progress = this.bulkOperation.progress;\n\n if (progress.failed > 0) {\n return this.singleOperationStatusNames.FAILED;\n } else if (progress.failed === 0 && progress.successful === 0 && progress.pending === 0) {\n return this.singleOperationStatusNames.EXECUTING;\n } else if (progress.failed === 0 && progress.successful === 0 && progress.executing === 0) {\n return this.singleOperationStatusNames.PENDING;\n } else if (progress.failed === 0 && progress.pending === 0 && progress.executing === 0) {\n return this.singleOperationStatusNames.SUCCESSFUL;\n }\n\n return this.singleOperationStatusNames.ALL;\n }\n\n async getOperationsByStatus(filter: IStatusOption[]) {\n this.singleOperations = await this.bulkOperationsService.getSingleOperationsByStatus(\n filter[0] && filter[0].label,\n this.bulkOperation.id\n );\n }\n\n retryBulkOperation() {\n this.onRetryFailedOperations.emit(this.bulkOperation);\n }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { IOperation } from '@c8y/client';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { omit } from 'lodash-es';\nimport { SINGLE_OP_STATUS_NAMES, SINGLE_OP_STATUS_PROPERTIES } from './single-operation-item.model';\n\n@Component({\n selector: 'c8y-single-operation-item',\n templateUrl: './single-operation-item.component.html'\n})\nexport class SingleOperationItemComponent {\n device = {};\n showIfTextTruncated = false;\n singleOperationStatusNames = SINGLE_OP_STATUS_NAMES;\n singleOperationsStatusProperties = SINGLE_OP_STATUS_PROPERTIES;\n iconClass: string;\n @Input()\n operation: IOperation;\n @Input()\n readOnly: boolean = false;\n @ViewChild('failureReason', { static: true }) failureReasonRef: ElementRef;\n\n constructor(\n private bulkOperationsService: BulkOperationsService,\n private alertService: AlertService\n ) {}\n\n async ngOnInit() {\n this.iconClass = this.getIconClass();\n this.device = await this.getDeviceMO(this.operation.deviceId);\n }\n\n ngAfterViewInit() {\n this.isTextTruncated();\n }\n\n async retrySingleOperation(singleOperation) {\n const operationToCreate = omit(singleOperation, [\n 'id',\n 'self',\n 'status',\n 'failureReason',\n 'creationTime',\n 'delivery'\n ]);\n\n try {\n await this.bulkOperationsService.createSingleOperation(operationToCreate);\n this.alertService.success(gettext('Operation created.'));\n } catch (er) {\n this.alertService.addServerFailure(er);\n }\n }\n\n getIconClass() {\n return this.singleOperationsStatusProperties.find(\n operationProperties => operationProperties.label.toUpperCase() === this.operation.status\n ).iconClass;\n }\n\n private async getDeviceMO(deviceId) {\n const inventoryMO = await this.bulkOperationsService.getManagedObject(deviceId);\n if (inventoryMO) {\n return inventoryMO.data;\n }\n }\n\n private isTextTruncated() {\n if (this.operation.failureReason) {\n const el = this.failureReasonRef.nativeElement;\n this.showIfTextTruncated = el.offsetWidth < el.scrollWidth ? true : false;\n }\n }\n}\n","import { Component, EventEmitter, Output, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n BulkOperationsService,\n OperationType\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BulkOperationModalsService } from '../modals/bulk-operation-modals.service';\n\n@Component({\n selector: 'c8y-bulk-operation-type-list',\n templateUrl: './bulk-operation-type-list.component.html'\n})\nexport class BulkOperationTypeListComponent implements OnInit {\n @Output() onCustomType: EventEmitter<OperationType> = new EventEmitter();\n bulkList: OperationType[] = [];\n\n constructor(\n private router: Router,\n private bulkOperationsService: BulkOperationsService,\n private bulkOperationModalsService: BulkOperationModalsService\n ) {}\n\n ngOnInit() {\n this.bulkList = this.bulkOperationsService.getBulkTypes();\n }\n\n handleClick(item: OperationType) {\n if (item.path) {\n this.bulkOperationModalsService.hideNewBulkOperationModal();\n this.router.navigateByUrl(item.path);\n } else if (item.component) {\n this.onCustomType.emit(item);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\nimport { CoreModule, Route } from '@c8y/ngx-components';\nimport { StatusFilterModule } from '@c8y/ngx-components/operations/status-filter';\nimport { OperationSummaryModule } from '@c8y/ngx-components/operations/operation-summary';\nimport { BulkOperationSchedulerModule } from '@c8y/ngx-components/operations/bulk-operation-scheduler';\n\nimport { BulkOperationDetailsService } from './bulk-operation-details.service';\nimport { BulkOperationsListComponent } from './bulk-operations-list.component';\nimport { BulkOperationListItemComponent } from './bulk-operation-list-item.component';\nimport { BulkOperationDetailsTabsComponent } from './bulk-operation-details-tabs.component';\nimport { BulkOperationDetailsComponent } from './bulk-operation-details.component';\nimport { SingleOperationsListComponent } from './single-operations-list.component';\nimport { SingleOperationItemComponent } from './single-operation-item.component';\nimport { BulkOperationWrapperComponent } from './bulk-operation-wrapper.component';\nimport { BulkOperationTypeListComponent } from './type-list/bulk-operation-type-list.component';\nimport { BulkOperationModalsService } from './modals/bulk-operation-modals.service';\nimport { BulkOperationsModalComponent } from './modals/bulk-operations-modal.component';\nimport { BulkOperationsRescheduleModalComponent } from './modals/bulk-operations-reschedule-modal.component';\n\nexport const bulkOperationListRoutes: Route[] = [\n {\n path: 'devicecontrol/bulk',\n component: BulkOperationsListComponent\n }\n];\n\n/**\n * This module allows for displaying the list of bulk operations and their details.\n */\n@NgModule({\n imports: [\n CoreModule,\n PopoverModule,\n TooltipModule,\n StatusFilterModule,\n OperationSummaryModule,\n BulkOperationSchedulerModule,\n RouterModule.forChild(bulkOperationListRoutes)\n ],\n providers: [BulkOperationDetailsService, BulkOperationModalsService],\n declarations: [\n BulkOperationsListComponent,\n BulkOperationListItemComponent,\n BulkOperationDetailsTabsComponent,\n BulkOperationDetailsComponent,\n SingleOperationsListComponent,\n SingleOperationItemComponent,\n BulkOperationWrapperComponent,\n BulkOperationTypeListComponent,\n BulkOperationsModalComponent,\n BulkOperationsRescheduleModalComponent\n ],\n entryComponents: [\n BulkOperationsListComponent,\n BulkOperationListItemComponent,\n BulkOperationDetailsTabsComponent,\n BulkOperationDetailsComponent,\n SingleOperationsListComponent,\n SingleOperationItemComponent,\n BulkOperationWrapperComponent,\n BulkOperationTypeListComponent,\n BulkOperationsModalComponent,\n BulkOperationsRescheduleModalComponent\n ],\n exports: [\n BulkOperationsListComponent,\n BulkOperationListItemComponent,\n BulkOperationDetailsTabsComponent,\n BulkOperationDetailsComponent,\n SingleOperationsListComponent,\n SingleOperationItemComponent,\n BulkOperationWrapperComponent,\n BulkOperationTypeListComponent,\n BulkOperationsModalComponent,\n BulkOperationsRescheduleModalComponent\n ]\n})\nexport class BulkOperationsListModule {}\n"]}
|
|
@@ -6,7 +6,7 @@ import { assign, cloneDeep } from 'lodash-es';
|
|
|
6
6
|
import { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';
|
|
7
7
|
import { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';
|
|
8
8
|
import { BulkOperationsRescheduleModalComponent } from './modals/bulk-operations-reschedule-modal.component';
|
|
9
|
-
import { BULK_OPERATION_STATUS_OPTIONS } from './bulk-operation-list-item.model';
|
|
9
|
+
import { BULK_OPERATION_FALLBACK_STATUS_ICON, BULK_OPERATION_STATUS_OPTIONS } from './bulk-operation-list-item.model';
|
|
10
10
|
let BulkOperationListItemComponent = class BulkOperationListItemComponent {
|
|
11
11
|
constructor(bulkOperationsService, modal, alert, bsModalService) {
|
|
12
12
|
this.bulkOperationsService = bulkOperationsService;
|
|
@@ -36,7 +36,8 @@ let BulkOperationListItemComponent = class BulkOperationListItemComponent {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
getIconClass() {
|
|
39
|
-
|
|
39
|
+
const statusOptions = this.bulkOperationStatusOptions.find(statusOption => statusOption.generalStatus.includes(this.bulkOperation.generalStatus));
|
|
40
|
+
return statusOptions ? statusOptions.iconClass : BULK_OPERATION_FALLBACK_STATUS_ICON;
|
|
40
41
|
}
|
|
41
42
|
calculateFinishDateMs() {
|
|
42
43
|
const startDateMs = new Date(this.bulkOperation.startDate).getTime();
|
|
@@ -182,4 +183,4 @@ BulkOperationListItemComponent = tslib_1.__decorate([
|
|
|
182
183
|
})
|
|
183
184
|
], BulkOperationListItemComponent);
|
|
184
185
|
export { BulkOperationListItemComponent };
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay1vcGVyYXRpb24tbGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9idWxrLW9wZXJhdGlvbnMtbGlzdC8iLCJzb3VyY2VzIjpbImJ1bGstb3BlcmF0aW9uLWxpc3QtaXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsMEJBQTBCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekUsT0FBTyxFQUNMLFlBQVksRUFDWixPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixNQUFNLEVBQ1AsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUUvRixPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU1qRixJQUFhLDhCQUE4QixHQUEzQyxNQUFhLDhCQUE4QjtJQXVCekMsWUFDVSxxQkFBNEMsRUFDNUMsS0FBbUIsRUFDbkIsS0FBbUIsRUFDbkIsY0FBOEI7UUFIOUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBdkJ4QyxxQkFBZ0IsR0FBWSxJQUFJLENBQUM7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OztBQXpCeEM7SUFEQyxLQUFLLEVBQUU7cUVBQytCO0FBRXZDO0lBREMsS0FBSyxFQUFFO3dFQUN5QjtBQUVqQztJQURDLEtBQUssRUFBRTtnRUFDa0I7QUFDaEI7SUFBVCxNQUFNLEVBQUU7MkVBQTBDO0FBQ3pDO0lBQVQsTUFBTSxFQUFFOzhEQUFnRDtBQUNoQjtJQUF4QyxTQUFTLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO2dFQUE2QjtBQVQxRCw4QkFBOEI7SUFKMUMsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLDhCQUE4QjtRQUN4Qyx1bUtBQXdEO0tBQ3pELENBQUM7R0FDVyw4QkFBOEIsQ0FtTTFDO1NBbk1ZLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU9wZXJhdGlvbkJ1bGssIE9wZXJhdGlvbkJ1bGtHZW5lcmFsU3RhdHVzIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWxlcnRTZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBMaXN0SXRlbUNvbXBvbmVudCxcbiAgTW9kYWxTZXJ2aWNlLFxuICBTdGF0dXNcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBhc3NpZ24sIGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCc01vZGFsUmVmLCBCc01vZGFsU2VydmljZSwgTW9kYWxPcHRpb25zIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBCdWxrT3BlcmF0aW9uc1NlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL29wZXJhdGlvbnMvYnVsay1vcGVyYXRpb25zLXNlcnZpY2UnO1xuaW1wb3J0IHsgSVN0YXR1c09wdGlvbiB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9zdGF0dXMtZmlsdGVyJztcbmltcG9ydCB7IEJ1bGtPcGVyYXRpb25zUmVzY2hlZHVsZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbHMvYnVsay1vcGVyYXRpb25zLXJlc2NoZWR1bGUtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEJVTEtfT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TIH0gZnJvbSAnLi9idWxrLW9wZXJhdGlvbi1saXN0LWl0ZW0ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYnVsay1vcGVyYXRpb24tbGlzdC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1bGstb3BlcmF0aW9uLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQnVsa09wZXJhdGlvbkxpc3RJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBidWxrT3BlcmF0aW9uOiBQYXJ0aWFsPElPcGVyYXRpb25CdWxrPjtcbiAgQElucHV0KClcbiAgZGV0YWlsc0NvbGxhcHNlZDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHJlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBzaG93RmFpbGVkT3BlcmF0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmVsb2FkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQFZpZXdDaGlsZCgnbGlzdEl0ZW0nLCB7IHN0YXRpYzogdHJ1ZSB9KSBsaXN0SXRlbTogTGlzdEl0ZW1Db21wb25lbnQ7XG4gIGljb25DbGFzczogc3RyaW5nO1xuICBmaW5pc2hEYXRlOiBudW1iZXI7XG4gIHJlZnJlc2hMb2FkaW5nID0gZmFsc2U7XG4gIGJ1bGtPcGVyYXRpb25HZW5lcmFsU3RhdHVzID0gT3BlcmF0aW9uQnVsa0dlbmVyYWxTdGF0dXM7XG4gIGJ1bGtPcGVyYXRpb25TdGF0dXNPcHRpb25zOiBJU3RhdHVzT3B0aW9uW10gPSBCVUxLX09QRVJBVElPTl9TVEFUVVNfT1BUSU9OUztcbiAgYnNNb2RhbFJlZjogQnNNb2RhbFJlZjtcbiAgZmluaXNoRGF0ZVBvcG92ZXJUZXh0OiBzdHJpbmcgPSBnZXR0ZXh0KFxuICAgICdBcHByb3hpbWF0ZSBkYXRlLCBlc3RpbWF0ZWQgYmFzZWQgb24gdGhlIGJ1bGsgb3BlcmF0aW9uIHNldHRpbmdzLidcbiAgKTtcbiAgcHJvZ3Jlc3NCYXJDbGFzczogc3RyaW5nID0gJ3Byb2dyZXNzJztcbiAgcHJvZ3Jlc3NCYXJDb2xvcjogc3RyaW5nO1xuICBwcm9ncmVzc0JhclN0YXR1czogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJ1bGtPcGVyYXRpb25zU2VydmljZTogQnVsa09wZXJhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBic01vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaWNvbkNsYXNzID0gdGhpcy5nZXRJY29uQ2xhc3MoKTtcbiAgICB0aGlzLmZpbmlzaERhdGUgPSB0aGlzLmNhbGN1bGF0ZUZpbmlzaERhdGVNcygpO1xuICAgIHRoaXMuc2V0UHJvZ3Jlc3NCYXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5idWxrT3BlcmF0aW9uICYmICFjaGFuZ2VzLmJ1bGtPcGVyYXRpb24uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuaWNvbkNsYXNzID0gdGhpcy5nZXRJY29uQ2xhc3MoKTtcbiAgICAgIHRoaXMuc2V0UHJvZ3Jlc3NCYXIoKTtcbiAgICB9XG4gIH1cblxuICBnZXRJY29uQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVsa09wZXJhdGlvblN0YXR1c09wdGlvbnMuZmluZChzdGF0dXNPcHRpb24gPT5cbiAgICAgIHN0YXR1c09wdGlvbi5nZW5lcmFsU3RhdHVzLmluY2x1ZGVzKHRoaXMuYnVsa09wZXJhdGlvbi5nZW5lcmFsU3RhdHVzKVxuICAgICkuaWNvbkNsYXNzO1xuICB9XG5cbiAgY2FsY3VsYXRlRmluaXNoRGF0ZU1zKCk6IG51bWJlciB7XG4gICAgY29uc3Qgc3RhcnREYXRlTXM6IG51bWJlciA9IG5ldyBEYXRlKHRoaXMuYnVsa09wZXJhdGlvbi5zdGFydERhdGUpLmdldFRpbWUoKTtcbiAgICBjb25zdCBjcmVhdGlvblJhbXBNczogbnVtYmVyID0gdGhpcy5idWxrT3BlcmF0aW9uLmNyZWF0aW9uUmFtcCAqIDEwMDA7XG5cbiAgICByZXR1cm4gc3RhcnREYXRlTXMgKyBjcmVhdGlvblJhbXBNcyAqIHRoaXMuYnVsa09wZXJhdGlvbi5wcm9ncmVzcy5hbGw7XG4gIH1cblxuICBwcm9ncmVzc0JhclByb2dyZXNzRm4oKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICgodGhpcy5idWxrT3BlcmF0aW9uLnByb2dyZXNzLnN1Y2Nlc3NmdWwgKyB0aGlzLmJ1bGtPcGVyYXRpb24ucHJvZ3Jlc3MuZmFpbGVkKSAvXG4gICAgICAgIHRoaXMuYnVsa09wZXJhdGlvbi5wcm9ncmVzcy5hbGwpICpcbiAgICAgIDEwMFxuICAgICk7XG4gIH1cblxuICBzZXRQcm9ncmVzc0JhcigpIHtcbiAgICBjb25zdCBzdGF0aWNDb250ZW50T2ZDbGFzcyA9ICdwcm9ncmVzcy1iYXIgcHJvZ3Jlc3Mtc3RyaXBlZCBhY3RpdmUgcHJvZ3Jlc3MtYmFyJztcblxuICAgIGNvbnN0IHByb2dyZXNzQmFyU3RhdGUgPSB7XG4gICAgICBFWEVDVVRJTkc6IHtcbiAgICAgICAgcHJvZ3Jlc3NCYXJDbGFzczogJ3Byb2dyZXNzIHByb2dyZXNzLXN0cmlwZWQgYWN0aXZlJyxcbiAgICAgICAgcHJvZ3Jlc3NCYXJDb2xvcjogYCR7c3RhdGljQ29udGVudE9mQ2xhc3N9LXByaW1hcnlgLFxuICAgICAgICBwcm9ncmVzc0JhclN0YXR1czogdGhpcy5wcm9ncmVzc0JhclByb2dyZXNzRm4oKVxuICAgICAgfSxcbiAgICAgIEVYRUNVVElOR19XSVRIX0VSUk9SOiB7XG4gICAgICAgIHByb2dyZXNzQmFyQ2xhc3M6ICdwcm9ncmVzcyBwcm9ncmVzcy1zdHJpcGVkIGFjdGl2ZScsXG4gICAgICAgIHByb2dyZXNzQmFyQ29sb3I6IGAke3N0YXRpY0NvbnRlbnRPZkNsYXNzfS1kYW5nZXJgLFxuICAgICAgICBwcm9ncmVzc0JhclN0YXR1czogdGhpcy5wcm9ncmVzc0JhclByb2dyZXNzRm4oKVxuICAgICAgfSxcbiAgICAgIEZBSUxFRDoge1xuICAgICAgICBwcm9ncmVzc0JhckNsYXNzOiAncHJvZ3Jlc3MnLFxuICAgICAgICBwcm9ncmVzc0JhckNvbG9yOiBgJHtzdGF0aWNDb250ZW50T2ZDbGFzc30tZGFuZ2VyYCxcbiAgICAgICAgcHJvZ3Jlc3NCYXJTdGF0dXM6IDEwMFxuICAgICAgfSxcbiAgICAgIFNVQ0NFU1NGVUw6IHtcbiAgICAgICAgcHJvZ3Jlc3NCYXJDbGFzczogJ3Byb2dyZXNzJyxcbiAgICAgICAgcHJvZ3Jlc3NCYXJDb2xvcjogYCR7c3RhdGljQ29udGVudE9mQ2xhc3N9LXN1Y2Nlc3NgLFxuICAgICAgICBwcm9ncmVzc0JhclN0YXR1czogMTAwXG4gICAgICB9XG4gICAgfTtcblxuICAgIGFzc2lnbih0aGlzLCBwcm9ncmVzc0JhclN0YXRlW3RoaXMuYnVsa09wZXJhdGlvbi5nZW5lcmFsU3RhdHVzXSk7XG4gIH1cblxuICBlZGl0U2NoZWR1bGUoKSB7XG4gICAgY29uc3QgcmVzY2hlZHVsZWRPcGVyYXRpb24gPSBjbG9uZURlZXAodGhpcy5idWxrT3BlcmF0aW9uKTtcbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gICAgICBidWxrT3BlcmF0aW9uOiByZXNjaGVkdWxlZE9wZXJhdGlvblxuICAgIH07XG4gICAgY29uc3QgbW9kYWxPcHRpb25zID0geyBpbml0aWFsU3RhdGUsIGNsYXNzOiAnbW9kYWwtc20nLCBiYWNrZHJvcDogJ3N0YXRpYycgfSBhcyBNb2RhbE9wdGlvbnM7XG4gICAgdGhpcy5ic01vZGFsUmVmID0gdGhpcy5ic01vZGFsU2VydmljZS5zaG93KFxuICAgICAgQnVsa09wZXJhdGlvbnNSZXNjaGVkdWxlTW9kYWxDb21wb25lbnQsXG4gICAgICBtb2RhbE9wdGlvbnNcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgY2FuY2VsQnVsa09wZXJhdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbC5jb25maXJtKFxuICAgICAgICBnZXR0ZXh0KCdDYW5jZWwgYnVsayBvcGVyYXRpb24nKSxcbiAgICAgICAgZ2V0dGV4dCgnWW91IGFyZSBhYm91dCB0byBjYW5jZWwgdGhlIGJ1bGsgb3BlcmF0aW9uLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycpLFxuICAgICAgICBTdGF0dXMuREFOR0VSXG4gICAgICApO1xuICAgICAgYXdhaXQgdGhpcy5idWxrT3BlcmF0aW9uc1NlcnZpY2UuZGVsZXRlQnVsa09wZXJhdGlvbih0aGlzLmJ1bGtPcGVyYXRpb24uaWQpO1xuICAgICAgdGhpcy5yZWxvYWQuZW1pdCgpO1xuICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKGdldHRleHQoJ09wZXJhdGlvbiBjYW5jZWxlZC4nKSk7XG4gICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlcik7XG4gICAgfVxuICB9XG5cbiAgcmV0cnlGYWlsZWRPcGVyYXRpb24oKSB7XG4gICAgY29uc3QgY2xvbmVkQnVsayA9IGNsb25lRGVlcCh0aGlzLmJ1bGtPcGVyYXRpb24pO1xuXG4gICAgLy8gY2hhbmdlIHRoZSBpZCB0byBmYWlsZWRwYXJlbnRJZCBzaW1pbGFyIHRvIHRoZSBsb2dpYyBpbiBkZXZpY2VCdWxrQ29udHJvbC5zZXJ2aWNlLmpzXG4gICAgZGVsZXRlIGNsb25lZEJ1bGsuZ3JvdXBJZDtcbiAgICBjbG9uZWRCdWxrLmZhaWxlZFBhcmVudElkID0gdGhpcy5idWxrT3BlcmF0aW9uLmlkO1xuXG4gICAgLy8gc2hvdyByZXNjaGRlZHVsZSBtb2RhbDpcbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gICAgICBidWxrT3BlcmF0aW9uOiBjbG9uZWRCdWxrLFxuICAgICAgaXNSZXRyeU9wZXJhdGlvbjogdHJ1ZVxuICAgIH07XG4gICAgY29uc3QgbW9kYWxPcHRpb25zID0geyBpbml0aWFsU3RhdGUsIGNsYXNzOiAnbW9kYWwtc20nLCBiYWNrZHJvcDogJ3N0YXRpYycgfSBhcyBNb2RhbE9wdGlvbnM7XG4gICAgdGhpcy5ic01vZGFsUmVmID0gdGhpcy5ic01vZGFsU2VydmljZS5zaG93KFxuICAgICAgQnVsa09wZXJhdGlvbnNSZXNjaGVkdWxlTW9kYWxDb21wb25lbnQsXG4gICAgICBtb2RhbE9wdGlvbnNcbiAgICApO1xuICAgIHRoaXMuYnNNb2RhbFJlZi5jb250ZW50LmNsb3NlU3ViamVjdC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWxvYWQuZW1pdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2V0VG9TdWNjZXNzZnVsKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oXG4gICAgICAgIGdldHRleHQoJ1NldCBtYW51YWxseSBidWxrIG9wZXJhdGlvbiB0byBTVUNDRVNTRlVMJyksXG4gICAgICAgIGdldHRleHQoXG4gICAgICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gY2hhbmdlIHRoZSBidWxrIG9wZXJhdGlvbiBzdGF0dXMgdG8gU1VDQ0VTU0ZVTC4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nXG4gICAgICAgICksXG4gICAgICAgIFN0YXR1cy5EQU5HRVJcbiAgICAgICk7XG5cbiAgICAgIGF3YWl0IHRoaXMuYnVsa09wZXJhdGlvbnNTZXJ2aWNlLnVwZGF0ZUJ1bGtPcGVyYXRpb24oe1xuICAgICAgICBpZDogdGhpcy5idWxrT3BlcmF0aW9uLmlkLFxuICAgICAgICBnZW5lcmFsU3RhdHVzOiBPcGVyYXRpb25CdWxrR2VuZXJhbFN0YXR1cy5TVUNDRVNTRlVMXG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVsb2FkLmVtaXQoKTtcbiAgICAgIHRoaXMuYWxlcnQuc3VjY2VzcyhnZXR0ZXh0KCdPcGVyYXRpb24gc3RhdHVzIGNoYW5nZWQgdG8gU1VDQ0VTU0ZVTC4nKSk7XG4gICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlcik7XG4gICAgfVxuICB9XG5cbiAgb3BlbkZhaWxlZE9wZXJhdGlvbihmYWlsZWRQYXJlbnRJZCkge1xuICAgIHRoaXMuc2hvd0ZhaWxlZE9wZXJhdGlvbi5lbWl0KGZhaWxlZFBhcmVudElkKTtcbiAgfVxuXG4gIGlzU3RhdHVzU2NoZWR1bGVkKCkge1xuICAgIHJldHVybiB0aGlzLmJ1bGtPcGVyYXRpb24uZ2VuZXJhbFN0YXR1cyA9PT0gdGhpcy5idWxrT3BlcmF0aW9uR2VuZXJhbFN0YXR1cy5TQ0hFRFVMRUQ7XG4gIH1cblxuICBpc1N0YXR1c0V4ZWN1dGluZ09yRXhlY3V0aW5nV2l0aEVycm9yKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmJ1bGtPcGVyYXRpb24uZ2VuZXJhbFN0YXR1cyA9PT0gdGhpcy5idWxrT3BlcmF0aW9uR2VuZXJhbFN0YXR1cy5FWEVDVVRJTkcgfHxcbiAgICAgIHRoaXMuYnVsa09wZXJhdGlvbi5nZW5lcmFsU3RhdHVzID09PSB0aGlzLmJ1bGtPcGVyYXRpb25HZW5lcmFsU3RhdHVzLkVYRUNVVElOR19XSVRIX0VSUk9SXG4gICAgKTtcbiAgfVxuXG4gIGFsbE9wZXJhdGlvbnNDcmVhdGVkKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmJ1bGtPcGVyYXRpb24ucHJvZ3Jlc3MuYWxsID09PVxuICAgICAgdGhpcy5idWxrT3BlcmF0aW9uLnByb2dyZXNzLmV4ZWN1dGluZyArXG4gICAgICAgIHRoaXMuYnVsa09wZXJhdGlvbi5wcm9ncmVzcy5mYWlsZWQgK1xuICAgICAgICB0aGlzLmJ1bGtPcGVyYXRpb24ucHJvZ3Jlc3MucGVuZGluZyArXG4gICAgICAgIHRoaXMuYnVsa09wZXJhdGlvbi5wcm9ncmVzcy5zdWNjZXNzZnVsXG4gICAgKTtcbiAgfVxuXG4gIGlzU3RhdHVzQ2FuY2VsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVsa09wZXJhdGlvbi5nZW5lcmFsU3RhdHVzID09PSB0aGlzLmJ1bGtPcGVyYXRpb25HZW5lcmFsU3RhdHVzLkNBTkNFTEVEO1xuICB9XG5cbiAgaXNTdGF0dXNGYWlsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVsa09wZXJhdGlvbi5nZW5lcmFsU3RhdHVzID09PSB0aGlzLmJ1bGtPcGVyYXRpb25HZW5lcmFsU3RhdHVzLkZBSUxFRDtcbiAgfVxufVxuIl19
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay1vcGVyYXRpb24tbGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9idWxrLW9wZXJhdGlvbnMtbGlzdC8iLCJzb3VyY2VzIjpbImJ1bGstb3BlcmF0aW9uLWxpc3QtaXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsMEJBQTBCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekUsT0FBTyxFQUNMLFlBQVksRUFDWixPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixNQUFNLEVBQ1AsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUUvRixPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU10SCxJQUFhLDhCQUE4QixHQUEzQyxNQUFhLDhCQUE4QjtJQXVCekMsWUFDVSxxQkFBNEMsRUFDNUMsS0FBbUIsRUFDbkIsS0FBbUIsRUFDbkIsY0FBOEI7UUFIOUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBdkJ4QyxxQkFBZ0IsR0FB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QTBCLENBQUMsTUFBTSxDQUFDO0lBQ3JGLENBQUM7Q0FDRixDQUFBOztZQTVLa0MscUJBQXFCO1lBQ3JDLFlBQVk7WUFDWixZQUFZO1lBQ0gsY0FBYzs7QUF6QnhDO0lBREMsS0FBSyxFQUFFO3FFQUMrQjtBQUV2QztJQURDLEtBQUssRUFBRTt3RUFDeUI7QUFFakM7SUFEQyxLQUFLLEVBQUU7Z0VBQ2tCO0FBQ2hCO0lBQVQsTUFBTSxFQUFFOzJFQUEwQztBQUN6QztJQUFULE1BQU0sRUFBRTs4REFBZ0Q7QUFDaEI7SUFBeEMsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztnRUFBNkI7QUFUMUQsOEJBQThCO0lBSjFDLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSw4QkFBOEI7UUFDeEMsdW1LQUF3RDtLQUN6RCxDQUFDO0dBQ1csOEJBQThCLENBb00xQztTQXBNWSw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElPcGVyYXRpb25CdWxrLCBPcGVyYXRpb25CdWxrR2VuZXJhbFN0YXR1cyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgTGlzdEl0ZW1Db21wb25lbnQsXG4gIE1vZGFsU2VydmljZSxcbiAgU3RhdHVzXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgYXNzaWduLCBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiwgQnNNb2RhbFNlcnZpY2UsIE1vZGFsT3B0aW9ucyB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQnVsa09wZXJhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9vcGVyYXRpb25zL2J1bGstb3BlcmF0aW9ucy1zZXJ2aWNlJztcbmltcG9ydCB7IElTdGF0dXNPcHRpb24gfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL29wZXJhdGlvbnMvc3RhdHVzLWZpbHRlcic7XG5pbXBvcnQgeyBCdWxrT3BlcmF0aW9uc1Jlc2NoZWR1bGVNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWxzL2J1bGstb3BlcmF0aW9ucy1yZXNjaGVkdWxlLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCVUxLX09QRVJBVElPTl9GQUxMQkFDS19TVEFUVVNfSUNPTiwgQlVMS19PUEVSQVRJT05fU1RBVFVTX09QVElPTlMgfSBmcm9tICcuL2J1bGstb3BlcmF0aW9uLWxpc3QtaXRlbS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1idWxrLW9wZXJhdGlvbi1saXN0LWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vYnVsay1vcGVyYXRpb24tbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBCdWxrT3BlcmF0aW9uTGlzdEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIGJ1bGtPcGVyYXRpb246IFBhcnRpYWw8SU9wZXJhdGlvbkJ1bGs+O1xuICBASW5wdXQoKVxuICBkZXRhaWxzQ29sbGFwc2VkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgcmVhZE9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHNob3dGYWlsZWRPcGVyYXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByZWxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAVmlld0NoaWxkKCdsaXN0SXRlbScsIHsgc3RhdGljOiB0cnVlIH0pIGxpc3RJdGVtOiBMaXN0SXRlbUNvbXBvbmVudDtcbiAgaWNvbkNsYXNzOiBzdHJpbmc7XG4gIGZpbmlzaERhdGU6IG51bWJlcjtcbiAgcmVmcmVzaExvYWRpbmcgPSBmYWxzZTtcbiAgYnVsa09wZXJhdGlvbkdlbmVyYWxTdGF0dXMgPSBPcGVyYXRpb25CdWxrR2VuZXJhbFN0YXR1cztcbiAgYnVsa09wZXJhdGlvblN0YXR1c09wdGlvbnM6IElTdGF0dXNPcHRpb25bXSA9IEJVTEtfT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TO1xuICBic01vZGFsUmVmOiBCc01vZGFsUmVmO1xuICBmaW5pc2hEYXRlUG9wb3ZlclRleHQ6IHN0cmluZyA9IGdldHRleHQoXG4gICAgJ0FwcHJveGltYXRlIGRhdGUsIGVzdGltYXRlZCBiYXNlZCBvbiB0aGUgYnVsayBvcGVyYXRpb24gc2V0dGluZ3MuJ1xuICApO1xuICBwcm9ncmVzc0JhckNsYXNzOiBzdHJpbmcgPSAncHJvZ3Jlc3MnO1xuICBwcm9ncmVzc0JhckNvbG9yOiBzdHJpbmc7XG4gIHByb2dyZXNzQmFyU3RhdHVzOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYnVsa09wZXJhdGlvbnNTZXJ2aWNlOiBCdWxrT3BlcmF0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbDogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pY29uQ2xhc3MgPSB0aGlzLmdldEljb25DbGFzcygpO1xuICAgIHRoaXMuZmluaXNoRGF0ZSA9IHRoaXMuY2FsY3VsYXRlRmluaXNoRGF0ZU1zKCk7XG4gICAgdGhpcy5zZXRQcm9ncmVzc0JhcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmJ1bGtPcGVyYXRpb24gJiYgIWNoYW5nZXMuYnVsa09wZXJhdGlvbi5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5pY29uQ2xhc3MgPSB0aGlzLmdldEljb25DbGFzcygpO1xuICAgICAgdGhpcy5zZXRQcm9ncmVzc0JhcigpO1xuICAgIH1cbiAgfVxuXG4gIGdldEljb25DbGFzcygpIHtcbiAgICBjb25zdCBzdGF0dXNPcHRpb25zID0gdGhpcy5idWxrT3BlcmF0aW9uU3RhdHVzT3B0aW9ucy5maW5kKHN0YXR1c09wdGlvbiA9PlxuICAgICAgc3RhdHVzT3B0aW9uLmdlbmVyYWxTdGF0dXMuaW5jbHVkZXModGhpcy5idWxrT3BlcmF0aW9uLmdlbmVyYWxTdGF0dXMpXG4gICAgKTtcbiAgICByZXR1cm4gc3RhdHVzT3B0aW9ucyA/IHN0YXR1c09wdGlvbnMuaWNvbkNsYXNzIDogQlVMS19PUEVSQVRJT05fRkFMTEJBQ0tfU1RBVFVTX0lDT047XG4gIH1cblxuICBjYWxjdWxhdGVGaW5pc2hEYXRlTXMoKTogbnVtYmVyIHtcbiAgICBjb25zdCBzdGFydERhdGVNczogbnVtYmVyID0gbmV3IERhdGUodGhpcy5idWxrT3BlcmF0aW9uLnN0YXJ0RGF0ZSkuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGNyZWF0aW9uUmFtcE1zOiBudW1iZXIgPSB0aGlzLmJ1bGtPcGVyYXRpb24uY3JlYXRpb25SYW1wICogMTAwMDtcblxuICAgIHJldHVybiBzdGFydERhdGVNcyArIGNyZWF0aW9uUmFtcE1zICogdGhpcy5idWxrT3BlcmF0aW9uLnByb2dyZXNzLmFsbDtcbiAgfVxuXG4gIHByb2dyZXNzQmFyUHJvZ3Jlc3NGbigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgKCh0aGlzLmJ1bGtPcGVyYXRpb24ucHJvZ3Jlc3Muc3VjY2Vzc2Z1bCArIHRoaXMuYnVsa09wZXJhdGlvbi5wcm9ncmVzcy5mYWlsZWQpIC9cbiAgICAgICAgdGhpcy5idWxrT3BlcmF0aW9uLnByb2dyZXNzLmFsbCkgKlxuICAgICAgMTAwXG4gICAgKTtcbiAgfVxuXG4gIHNldFByb2dyZXNzQmFyKCkge1xuICAgIGNvbnN0IHN0YXRpY0NvbnRlbnRPZkNsYXNzID0gJ3Byb2dyZXNzLWJhciBwcm9ncmVzcy1zdHJpcGVkIGFjdGl2ZSBwcm9ncmVzcy1iYXInO1xuXG4gICAgY29uc3QgcHJvZ3Jlc3NCYXJTdGF0ZSA9IHtcbiAgICAgIEVYRUNVVElORzoge1xuICAgICAgICBwcm9ncmVzc0JhckNsYXNzOiAncHJvZ3Jlc3MgcHJvZ3Jlc3Mtc3RyaXBlZCBhY3RpdmUnLFxuICAgICAgICBwcm9ncmVzc0JhckNvbG9yOiBgJHtzdGF0aWNDb250ZW50T2ZDbGFzc30tcHJpbWFyeWAsXG4gICAgICAgIHByb2dyZXNzQmFyU3RhdHVzOiB0aGlzLnByb2dyZXNzQmFyUHJvZ3Jlc3NGbigpXG4gICAgICB9LFxuICAgICAgRVhFQ1VUSU5HX1dJVEhfRVJST1I6IHtcbiAgICAgICAgcHJvZ3Jlc3NCYXJDbGFzczogJ3Byb2dyZXNzIHByb2dyZXNzLXN0cmlwZWQgYWN0aXZlJyxcbiAgICAgICAgcHJvZ3Jlc3NCYXJDb2xvcjogYCR7c3RhdGljQ29udGVudE9mQ2xhc3N9LWRhbmdlcmAsXG4gICAgICAgIHByb2dyZXNzQmFyU3RhdHVzOiB0aGlzLnByb2dyZXNzQmFyUHJvZ3Jlc3NGbigpXG4gICAgICB9LFxuICAgICAgRkFJTEVEOiB7XG4gICAgICAgIHByb2dyZXNzQmFyQ2xhc3M6ICdwcm9ncmVzcycsXG4gICAgICAgIHByb2dyZXNzQmFyQ29sb3I6IGAke3N0YXRpY0NvbnRlbnRPZkNsYXNzfS1kYW5nZXJgLFxuICAgICAgICBwcm9ncmVzc0JhclN0YXR1czogMTAwXG4gICAgICB9LFxuICAgICAgU1VDQ0VTU0ZVTDoge1xuICAgICAgICBwcm9ncmVzc0JhckNsYXNzOiAncHJvZ3Jlc3MnLFxuICAgICAgICBwcm9ncmVzc0JhckNvbG9yOiBgJHtzdGF0aWNDb250ZW50T2ZDbGFzc30tc3VjY2Vzc2AsXG4gICAgICAgIHByb2dyZXNzQmFyU3RhdHVzOiAxMDBcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgYXNzaWduKHRoaXMsIHByb2dyZXNzQmFyU3RhdGVbdGhpcy5idWxrT3BlcmF0aW9uLmdlbmVyYWxTdGF0dXNdKTtcbiAgfVxuXG4gIGVkaXRTY2hlZHVsZSgpIHtcbiAgICBjb25zdCByZXNjaGVkdWxlZE9wZXJhdGlvbiA9IGNsb25lRGVlcCh0aGlzLmJ1bGtPcGVyYXRpb24pO1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgICAgIGJ1bGtPcGVyYXRpb246IHJlc2NoZWR1bGVkT3BlcmF0aW9uXG4gICAgfTtcbiAgICBjb25zdCBtb2RhbE9wdGlvbnMgPSB7IGluaXRpYWxTdGF0ZSwgY2xhc3M6ICdtb2RhbC1zbScsIGJhY2tkcm9wOiAnc3RhdGljJyB9IGFzIE1vZGFsT3B0aW9ucztcbiAgICB0aGlzLmJzTW9kYWxSZWYgPSB0aGlzLmJzTW9kYWxTZXJ2aWNlLnNob3coXG4gICAgICBCdWxrT3BlcmF0aW9uc1Jlc2NoZWR1bGVNb2RhbENvbXBvbmVudCxcbiAgICAgIG1vZGFsT3B0aW9uc1xuICAgICk7XG4gIH1cblxuICBhc3luYyBjYW5jZWxCdWxrT3BlcmF0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oXG4gICAgICAgIGdldHRleHQoJ0NhbmNlbCBidWxrIG9wZXJhdGlvbicpLFxuICAgICAgICBnZXR0ZXh0KCdZb3UgYXJlIGFib3V0IHRvIGNhbmNlbCB0aGUgYnVsayBvcGVyYXRpb24uIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/JyksXG4gICAgICAgIFN0YXR1cy5EQU5HRVJcbiAgICAgICk7XG4gICAgICBhd2FpdCB0aGlzLmJ1bGtPcGVyYXRpb25zU2VydmljZS5kZWxldGVCdWxrT3BlcmF0aW9uKHRoaXMuYnVsa09wZXJhdGlvbi5pZCk7XG4gICAgICB0aGlzLnJlbG9hZC5lbWl0KCk7XG4gICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MoZ2V0dGV4dCgnT3BlcmF0aW9uIGNhbmNlbGVkLicpKTtcbiAgICB9IGNhdGNoIChlcikge1xuICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGVyKTtcbiAgICB9XG4gIH1cblxuICByZXRyeUZhaWxlZE9wZXJhdGlvbigpIHtcbiAgICBjb25zdCBjbG9uZWRCdWxrID0gY2xvbmVEZWVwKHRoaXMuYnVsa09wZXJhdGlvbik7XG5cbiAgICAvLyBjaGFuZ2UgdGhlIGlkIHRvIGZhaWxlZHBhcmVudElkIHNpbWlsYXIgdG8gdGhlIGxvZ2ljIGluIGRldmljZUJ1bGtDb250cm9sLnNlcnZpY2UuanNcbiAgICBkZWxldGUgY2xvbmVkQnVsay5ncm91cElkO1xuICAgIGNsb25lZEJ1bGsuZmFpbGVkUGFyZW50SWQgPSB0aGlzLmJ1bGtPcGVyYXRpb24uaWQ7XG5cbiAgICAvLyBzaG93IHJlc2NoZGVkdWxlIG1vZGFsOlxuICAgIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgICAgIGJ1bGtPcGVyYXRpb246IGNsb25lZEJ1bGssXG4gICAgICBpc1JldHJ5T3BlcmF0aW9uOiB0cnVlXG4gICAgfTtcbiAgICBjb25zdCBtb2RhbE9wdGlvbnMgPSB7IGluaXRpYWxTdGF0ZSwgY2xhc3M6ICdtb2RhbC1zbScsIGJhY2tkcm9wOiAnc3RhdGljJyB9IGFzIE1vZGFsT3B0aW9ucztcbiAgICB0aGlzLmJzTW9kYWxSZWYgPSB0aGlzLmJzTW9kYWxTZXJ2aWNlLnNob3coXG4gICAgICBCdWxrT3BlcmF0aW9uc1Jlc2NoZWR1bGVNb2RhbENvbXBvbmVudCxcbiAgICAgIG1vZGFsT3B0aW9uc1xuICAgICk7XG4gICAgdGhpcy5ic01vZGFsUmVmLmNvbnRlbnQuY2xvc2VTdWJqZWN0LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlbG9hZC5lbWl0KCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzZXRUb1N1Y2Nlc3NmdWwoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubW9kYWwuY29uZmlybShcbiAgICAgICAgZ2V0dGV4dCgnU2V0IG1hbnVhbGx5IGJ1bGsgb3BlcmF0aW9uIHRvIFNVQ0NFU1NGVUwnKSxcbiAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAnWW91IGFyZSBhYm91dCB0byBjaGFuZ2UgdGhlIGJ1bGsgb3BlcmF0aW9uIHN0YXR1cyB0byBTVUNDRVNTRlVMLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkPydcbiAgICAgICAgKSxcbiAgICAgICAgU3RhdHVzLkRBTkdFUlxuICAgICAgKTtcblxuICAgICAgYXdhaXQgdGhpcy5idWxrT3BlcmF0aW9uc1NlcnZpY2UudXBkYXRlQnVsa09wZXJhdGlvbih7XG4gICAgICAgIGlkOiB0aGlzLmJ1bGtPcGVyYXRpb24uaWQsXG4gICAgICAgIGdlbmVyYWxTdGF0dXM6IE9wZXJhdGlvbkJ1bGtHZW5lcmFsU3RhdHVzLlNVQ0NFU1NGVUxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5yZWxvYWQuZW1pdCgpO1xuICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKGdldHRleHQoJ09wZXJhdGlvbiBzdGF0dXMgY2hhbmdlZCB0byBTVUNDRVNTRlVMLicpKTtcbiAgICB9IGNhdGNoIChlcikge1xuICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGVyKTtcbiAgICB9XG4gIH1cblxuICBvcGVuRmFpbGVkT3BlcmF0aW9uKGZhaWxlZFBhcmVudElkKSB7XG4gICAgdGhpcy5zaG93RmFpbGVkT3BlcmF0aW9uLmVtaXQoZmFpbGVkUGFyZW50SWQpO1xuICB9XG5cbiAgaXNTdGF0dXNTY2hlZHVsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVsa09wZXJhdGlvbi5nZW5lcmFsU3RhdHVzID09PSB0aGlzLmJ1bGtPcGVyYXRpb25HZW5lcmFsU3RhdHVzLlNDSEVEVUxFRDtcbiAgfVxuXG4gIGlzU3RhdHVzRXhlY3V0aW5nT3JFeGVjdXRpbmdXaXRoRXJyb3IoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuYnVsa09wZXJhdGlvbi5nZW5lcmFsU3RhdHVzID09PSB0aGlzLmJ1bGtPcGVyYXRpb25HZW5lcmFsU3RhdHVzLkVYRUNVVElORyB8fFxuICAgICAgdGhpcy5idWxrT3BlcmF0aW9uLmdlbmVyYWxTdGF0dXMgPT09IHRoaXMuYnVsa09wZXJhdGlvbkdlbmVyYWxTdGF0dXMuRVhFQ1VUSU5HX1dJVEhfRVJST1JcbiAgICApO1xuICB9XG5cbiAgYWxsT3BlcmF0aW9uc0NyZWF0ZWQoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuYnVsa09wZXJhdGlvbi5wcm9ncmVzcy5hbGwgPT09XG4gICAgICB0aGlzLmJ1bGtPcGVyYXRpb24ucHJvZ3Jlc3MuZXhlY3V0aW5nICtcbiAgICAgICAgdGhpcy5idWxrT3BlcmF0aW9uLnByb2dyZXNzLmZhaWxlZCArXG4gICAgICAgIHRoaXMuYnVsa09wZXJhdGlvbi5wcm9ncmVzcy5wZW5kaW5nICtcbiAgICAgICAgdGhpcy5idWxrT3BlcmF0aW9uLnByb2dyZXNzLnN1Y2Nlc3NmdWxcbiAgICApO1xuICB9XG5cbiAgaXNTdGF0dXNDYW5jZWxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5idWxrT3BlcmF0aW9uLmdlbmVyYWxTdGF0dXMgPT09IHRoaXMuYnVsa09wZXJhdGlvbkdlbmVyYWxTdGF0dXMuQ0FOQ0VMRUQ7XG4gIH1cblxuICBpc1N0YXR1c0ZhaWxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5idWxrT3BlcmF0aW9uLmdlbmVyYWxTdGF0dXMgPT09IHRoaXMuYnVsa09wZXJhdGlvbkdlbmVyYWxTdGF0dXMuRkFJTEVEO1xuICB9XG59XG4iXX0=
|
|
@@ -5,36 +5,43 @@ export const BULK_OPERATION_STATUS_LABELS = {
|
|
|
5
5
|
EXECUTING: gettext('Executing'),
|
|
6
6
|
CANCELED: gettext('Canceled'),
|
|
7
7
|
FAILED: gettext('Completed with failures'),
|
|
8
|
-
SUCCESSFUL: gettext('Completed successfully')
|
|
8
|
+
SUCCESSFUL: gettext('Completed successfully'),
|
|
9
|
+
DELETED: gettext('Deleted'),
|
|
9
10
|
};
|
|
10
11
|
export const BULK_OPERATION_STATUS_OPTIONS = [
|
|
11
12
|
{
|
|
12
13
|
label: BULK_OPERATION_STATUS_LABELS.SCHEDULED,
|
|
13
14
|
generalStatus: [OperationBulkGeneralStatus.SCHEDULED],
|
|
14
|
-
iconClass: 'dlt-c8y-icon-calendar text-info'
|
|
15
|
+
iconClass: 'dlt-c8y-icon-calendar text-info',
|
|
15
16
|
},
|
|
16
17
|
{
|
|
17
18
|
label: BULK_OPERATION_STATUS_LABELS.EXECUTING,
|
|
18
19
|
generalStatus: [
|
|
19
20
|
OperationBulkGeneralStatus.EXECUTING,
|
|
20
|
-
OperationBulkGeneralStatus.EXECUTING_WITH_ERROR
|
|
21
|
+
OperationBulkGeneralStatus.EXECUTING_WITH_ERROR,
|
|
21
22
|
],
|
|
22
|
-
iconClass: 'dlt-c8y-icon-refresh text-primary'
|
|
23
|
+
iconClass: 'dlt-c8y-icon-refresh text-primary',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
label: BULK_OPERATION_STATUS_LABELS.DELETED,
|
|
27
|
+
generalStatus: [OperationBulkGeneralStatus.DELETED],
|
|
28
|
+
iconClass: 'dlt-c8y-icon-delete-document text-muted',
|
|
23
29
|
},
|
|
24
30
|
{
|
|
25
31
|
label: BULK_OPERATION_STATUS_LABELS.CANCELED,
|
|
26
32
|
generalStatus: [OperationBulkGeneralStatus.CANCELED],
|
|
27
|
-
iconClass: 'dlt-c8y-icon-ban text-muted'
|
|
33
|
+
iconClass: 'dlt-c8y-icon-ban text-muted',
|
|
28
34
|
},
|
|
29
35
|
{
|
|
30
36
|
label: BULK_OPERATION_STATUS_LABELS.FAILED,
|
|
31
37
|
generalStatus: [OperationBulkGeneralStatus.FAILED],
|
|
32
|
-
iconClass: 'dlt-c8y-icon-exclamation-triangle text-danger'
|
|
38
|
+
iconClass: 'dlt-c8y-icon-exclamation-triangle text-danger',
|
|
33
39
|
},
|
|
34
40
|
{
|
|
35
41
|
label: BULK_OPERATION_STATUS_LABELS.SUCCESSFUL,
|
|
36
42
|
generalStatus: [OperationBulkGeneralStatus.SUCCESSFUL],
|
|
37
|
-
iconClass: 'dlt-c8y-icon-check-circle text-success'
|
|
38
|
-
}
|
|
43
|
+
iconClass: 'dlt-c8y-icon-check-circle text-success',
|
|
44
|
+
},
|
|
39
45
|
];
|
|
40
|
-
|
|
46
|
+
export const BULK_OPERATION_FALLBACK_STATUS_ICON = 'dlt-c8y-icon-ask-question text-muted';
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay1vcGVyYXRpb24tbGlzdC1pdGVtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGM4eS9uZ3gtY29tcG9uZW50cy9vcGVyYXRpb25zL2J1bGstb3BlcmF0aW9ucy1saXN0LyIsInNvdXJjZXMiOlsiYnVsay1vcGVyYXRpb24tbGlzdC1pdGVtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHOUMsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUc7SUFDMUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDL0IsU0FBUyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDL0IsUUFBUSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDN0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQztJQUMxQyxVQUFVLEVBQUUsT0FBTyxDQUFDLHdCQUF3QixDQUFDO0lBQzdDLE9BQU8sRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDO0NBQzVCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBb0I7SUFDNUQ7UUFDRSxLQUFLLEVBQUUsNEJBQTRCLENBQUMsU0FBUztRQUM3QyxhQUFhLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLENBQUM7UUFDckQsU0FBUyxFQUFFLGlDQUFpQztLQUM3QztJQUNEO1FBQ0UsS0FBSyxFQUFFLDRCQUE0QixDQUFDLFNBQVM7UUFDN0MsYUFBYSxFQUFFO1lBQ2IsMEJBQTBCLENBQUMsU0FBUztZQUNwQywwQkFBMEIsQ0FBQyxvQkFBb0I7U0FDaEQ7UUFDRCxTQUFTLEVBQUUsbUNBQW1DO0tBQy9DO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsNEJBQTRCLENBQUMsT0FBTztRQUMzQyxhQUFhLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLENBQUM7UUFDbkQsU0FBUyxFQUFFLHlDQUF5QztLQUNyRDtJQUNEO1FBQ0UsS0FBSyxFQUFFLDRCQUE0QixDQUFDLFFBQVE7UUFDNUMsYUFBYSxFQUFFLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDO1FBQ3BELFNBQVMsRUFBRSw2QkFBNkI7S0FDekM7SUFDRDtRQUNFLEtBQUssRUFBRSw0QkFBNEIsQ0FBQyxNQUFNO1FBQzFDLGFBQWEsRUFBRSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sQ0FBQztRQUNsRCxTQUFTLEVBQUUsK0NBQStDO0tBQzNEO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsNEJBQTRCLENBQUMsVUFBVTtRQUM5QyxhQUFhLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUM7UUFDdEQsU0FBUyxFQUFFLHdDQUF3QztLQUNwRDtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wZXJhdGlvbkJ1bGtHZW5lcmFsU3RhdHVzIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgSVN0YXR1c09wdGlvbiB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9zdGF0dXMtZmlsdGVyJztcblxuZXhwb3J0IGNvbnN0IEJVTEtfT1BFUkFUSU9OX1NUQVRVU19MQUJFTFMgPSB7XG4gIFNDSEVEVUxFRDogZ2V0dGV4dCgnU2NoZWR1bGVkJyksXG4gIEVYRUNVVElORzogZ2V0dGV4dCgnRXhlY3V0aW5nJyksXG4gIENBTkNFTEVEOiBnZXR0ZXh0KCdDYW5jZWxlZCcpLFxuICBGQUlMRUQ6IGdldHRleHQoJ0NvbXBsZXRlZCB3aXRoIGZhaWx1cmVzJyksXG4gIFNVQ0NFU1NGVUw6IGdldHRleHQoJ0NvbXBsZXRlZCBzdWNjZXNzZnVsbHknKSxcbiAgREVMRVRFRDogZ2V0dGV4dCgnRGVsZXRlZCcpLFxufTtcblxuZXhwb3J0IGNvbnN0IEJVTEtfT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TOiBJU3RhdHVzT3B0aW9uW10gPSBbXG4gIHtcbiAgICBsYWJlbDogQlVMS19PUEVSQVRJT05fU1RBVFVTX0xBQkVMUy5TQ0hFRFVMRUQsXG4gICAgZ2VuZXJhbFN0YXR1czogW09wZXJhdGlvbkJ1bGtHZW5lcmFsU3RhdHVzLlNDSEVEVUxFRF0sXG4gICAgaWNvbkNsYXNzOiAnZGx0LWM4eS1pY29uLWNhbGVuZGFyIHRleHQtaW5mbycsXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogQlVMS19PUEVSQVRJT05fU1RBVFVTX0xBQkVMUy5FWEVDVVRJTkcsXG4gICAgZ2VuZXJhbFN0YXR1czogW1xuICAgICAgT3BlcmF0aW9uQnVsa0dlbmVyYWxTdGF0dXMuRVhFQ1VUSU5HLFxuICAgICAgT3BlcmF0aW9uQnVsa0dlbmVyYWxTdGF0dXMuRVhFQ1VUSU5HX1dJVEhfRVJST1IsXG4gICAgXSxcbiAgICBpY29uQ2xhc3M6ICdkbHQtYzh5LWljb24tcmVmcmVzaCB0ZXh0LXByaW1hcnknLFxuICB9LFxuICB7XG4gICAgbGFiZWw6IEJVTEtfT1BFUkFUSU9OX1NUQVRVU19MQUJFTFMuREVMRVRFRCxcbiAgICBnZW5lcmFsU3RhdHVzOiBbT3BlcmF0aW9uQnVsa0dlbmVyYWxTdGF0dXMuREVMRVRFRF0sXG4gICAgaWNvbkNsYXNzOiAnZGx0LWM4eS1pY29uLWRlbGV0ZS1kb2N1bWVudCB0ZXh0LW11dGVkJyxcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBCVUxLX09QRVJBVElPTl9TVEFUVVNfTEFCRUxTLkNBTkNFTEVELFxuICAgIGdlbmVyYWxTdGF0dXM6IFtPcGVyYXRpb25CdWxrR2VuZXJhbFN0YXR1cy5DQU5DRUxFRF0sXG4gICAgaWNvbkNsYXNzOiAnZGx0LWM4eS1pY29uLWJhbiB0ZXh0LW11dGVkJyxcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBCVUxLX09QRVJBVElPTl9TVEFUVVNfTEFCRUxTLkZBSUxFRCxcbiAgICBnZW5lcmFsU3RhdHVzOiBbT3BlcmF0aW9uQnVsa0dlbmVyYWxTdGF0dXMuRkFJTEVEXSxcbiAgICBpY29uQ2xhc3M6ICdkbHQtYzh5LWljb24tZXhjbGFtYXRpb24tdHJpYW5nbGUgdGV4dC1kYW5nZXInLFxuICB9LFxuICB7XG4gICAgbGFiZWw6IEJVTEtfT1BFUkFUSU9OX1NUQVRVU19MQUJFTFMuU1VDQ0VTU0ZVTCxcbiAgICBnZW5lcmFsU3RhdHVzOiBbT3BlcmF0aW9uQnVsa0dlbmVyYWxTdGF0dXMuU1VDQ0VTU0ZVTF0sXG4gICAgaWNvbkNsYXNzOiAnZGx0LWM4eS1pY29uLWNoZWNrLWNpcmNsZSB0ZXh0LXN1Y2Nlc3MnLFxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IEJVTEtfT1BFUkFUSU9OX0ZBTExCQUNLX1NUQVRVU19JQ09OID0gJ2RsdC1jOHktaWNvbi1hc2stcXVlc3Rpb24gdGV4dC1tdXRlZCc7XG4iXX0=
|