{"version":3,"mappings":"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","names":["e","webpackEmptyAsyncContext","module","routes","path","component","_tenant_tenant_list_tenant_list_component__WEBPACK_IMPORTED_MODULE_0__","canActivate","_azure_msal_angular__WEBPACK_IMPORTED_MODULE_3__","redirectTo","pathMatch","_jobs_job_home_job_home_component__WEBPACK_IMPORTED_MODULE_1__","_tenant_novi_login_novi_login_component__WEBPACK_IMPORTED_MODULE_2__","AppRoutingModule","_angular_router__WEBPACK_IMPORTED_MODULE_5__","imports","exports","_angular_core__WEBPACK_IMPORTED_MODULE_2__","AppComponent","instanceService","msalService","instances","allInstances","currentInstance","subscribe","selectedInstance","instance","$event","SetCurrentInstance","logout","selectors","decls","vars","consts","template","ctx","loggerCallback","logLevel","message","console","log","MSALInstanceFactory","_azure_msal_browser__WEBPACK_IMPORTED_MODULE_9__","auth","clientId","authority","redirectUri","window","location","origin","postLogoutRedirectUri","cache","cacheLocation","_azure_msal_browser__WEBPACK_IMPORTED_MODULE_10__","system","loggerOptions","_azure_msal_browser__WEBPACK_IMPORTED_MODULE_11__","piiLoggingEnabled","MSALInterceptorConfigFactory","protectedResourceMap","Map","set","interactionType","MSALGuardConfigFactory","authRequest","scopes","loginFailedRoute","AppModule","bootstrap","_app_component__WEBPACK_IMPORTED_MODULE_6__","_instance_instance_service__WEBPACK_IMPORTED_MODULE_7__","ngx_cookie_service__WEBPACK_IMPORTED_MODULE_0__","provide","_angular_common_http__WEBPACK_IMPORTED_MODULE_13__","useClass","_azure_msal_angular__WEBPACK_IMPORTED_MODULE_14__","multi","_http_error_interceptor__WEBPACK_IMPORTED_MODULE_8__","useFactory","_angular_platform_browser__WEBPACK_IMPORTED_MODULE_15__","_app_routing_app_routing_module__WEBPACK_IMPORTED_MODULE_3__","_tenant_tenant_module__WEBPACK_IMPORTED_MODULE_1__","_feature_flag_feature_flag_module__WEBPACK_IMPORTED_MODULE_2__","_jobs_job_module__WEBPACK_IMPORTED_MODULE_5__","_angular_forms__WEBPACK_IMPORTED_MODULE_16__","_shared_shared_module__WEBPACK_IMPORTED_MODULE_4__","ang_jsoneditor__WEBPACK_IMPORTED_MODULE_17__","ngx_toastr__WEBPACK_IMPORTED_MODULE_18__","declarations","FeatureFlagDataService","httpClient","key","get","buildUrl","active","post","flag","apiPath","value","RootUrl","_angular_core__WEBPACK_IMPORTED_MODULE_1__","factory","_angular_core__WEBPACK_IMPORTED_MODULE_4__","flag_r1","FeatureFlagDetailComponent","route","router","featureFlagDataService","tenantDataService","toastrService","highlight","create","persist","labelField","valueField","searchField","editingFeatureFlag$","paramMap","pipe","params","getFeatureFlag","tenants$","getTenants","loadTenants","saveFeature","success","FeatureFlagListFilterPipe","items","searchText","toLowerCase","filter","it","Name","includes","FeatureKey","Description","pure","_angular_core__WEBPACK_IMPORTED_MODULE_3__","FeatureFlagListComponent","loadFeatureFlags","getFeatureFlags","featureFlags","toggleFeature","featureRoutes","_feature_flag_list_feature_flag_list_component__WEBPACK_IMPORTED_MODULE_1__","_azure_msal_angular__WEBPACK_IMPORTED_MODULE_5__","_feature_flag_detail_feature_flag_detail_component__WEBPACK_IMPORTED_MODULE_4__","FeatureFlagModule","_feature_flag_data_service__WEBPACK_IMPORTED_MODULE_2__","_angular_common__WEBPACK_IMPORTED_MODULE_7__","_angular_forms__WEBPACK_IMPORTED_MODULE_8__","angular_switchery_ios__WEBPACK_IMPORTED_MODULE_9__","_ng_select_ng_select__WEBPACK_IMPORTED_MODULE_0__","_angular_router__WEBPACK_IMPORTED_MODULE_10__","_feature_flag_list_feature_flag_list_filter_component__WEBPACK_IMPORTED_MODULE_3__","HttpErrorInterceptor","loadingIndicatorService","request","next","show","handle","error","errorMessage","ErrorEvent","status","hide","_angular_common_http__WEBPACK_IMPORTED_MODULE_5__","_angular_core__WEBPACK_IMPORTED_MODULE_6__","InstanceService","_novi_instance__WEBPACK_IMPORTED_MODULE_0__","rxjs__WEBPACK_IMPORTED_MODULE_1__","newInstance","NoviInstance","HeartbeatListComponent","jobDataService","oneDayAgo","Date","setDate","getDate","loadJobHeartbeats","getJobHeartbeats","jobHeartbeats","JobDataService","getAllQueuesSubject","hbArray","map","hb","LastRunTimeUTC","tenantId","taskName","refresh","getAllQueuesRequest","result","err","asObservable","sourceQueueName","targetQueueName","numberOfMessages","_angular_core__WEBPACK_IMPORTED_MODULE_5__","JobHomeComponent","TenantID","Domain","CssUrl","PageViewMapDefinition","Offline","loadTasks","tenants","push","AllTenants","getAvailableBackgroundTasks","tasks","selectedTenant","warning","selectedTask","confirm","queueBackgroundTaskForAllTenants","queueBackgroundTask","JobModule","_job_data_service__WEBPACK_IMPORTED_MODULE_2__","_angular_common__WEBPACK_IMPORTED_MODULE_6__","_angular_forms__WEBPACK_IMPORTED_MODULE_7__","_heartbeat_list_heartbeat_list_component__WEBPACK_IMPORTED_MODULE_1__","_job_home_job_home_component__WEBPACK_IMPORTED_MODULE_3__","_queue_list_queue_list_component__WEBPACK_IMPORTED_MODULE_4__","QueueListComponent","queues$","getAllQueues","loadQueueList","selectedSourceQueue","selectedTargetQueue","moveQueueMessages","poisonQueueName","substring","lastIndexOf","LoadingIndicatorComponent","subscription","currentState","newState","LoadingIndicatorService","rxjs__WEBPACK_IMPORTED_MODULE_0__","loadingSubject","SharedModule","_loading_service__WEBPACK_IMPORTED_MODULE_1__","_angular_common__WEBPACK_IMPORTED_MODULE_3__","_loading_indicator_loading_indicator_component__WEBPACK_IMPORTED_MODULE_0__","NoviLoginComponent","queryParams","environment","returnUrl","loginRoot","instanceForEnvironment","find","i","matchingTenant","allTenants","t","getNoviAdminAuthCode","href","code","TenantDataService","tenant","ctx_r0","TenantDetailComponent","differs","_differ","editorOptions","ang_jsoneditor__WEBPACK_IMPORTED_MODULE_4__","modes","mode","data","changes","editingTenant","lodash__WEBPACK_IMPORTED_MODULE_0__","currentValue","JSON","parse","diff","isDirty","validationMsg","validateTenant","length","editor","getText","saveTenant","tenantSave","emit","populateSeedData","populateSampleData","copySampleSite","removeSampleData","cancel","viewQuery","TenantListFilterPipe","TenantListComponent","cookieService","undefined","safariWindow","open","url","_tenant_site_context__WEBPACK_IMPORTED_MODULE_0__","TenantSiteContext","TenantModule","_tenant_data_service__WEBPACK_IMPORTED_MODULE_1__","ang_jsoneditor__WEBPACK_IMPORTED_MODULE_8__","_tenant_list_tenant_list_component__WEBPACK_IMPORTED_MODULE_0__","_tenant_detail_tenant_detail_component__WEBPACK_IMPORTED_MODULE_2__","_tenant_list_tenant_list_filter_component__WEBPACK_IMPORTED_MODULE_3__","_novi_login_novi_login_component__WEBPACK_IMPORTED_MODULE_4__","production","environments_environment__WEBPACK_IMPORTED_MODULE_1__","_angular_platform_browser__WEBPACK_IMPORTED_MODULE_3__","bootstrapModule","app_app_module__WEBPACK_IMPORTED_MODULE_0__"],"sources":["webpack:///$_lazy_route_resources|lazy|groupOptions:%20%7B%7D|namespace%20object","webpack:///src/app/app-routing/app-routing.module.ts","webpack:///src/app/app.component.html","webpack:///src/app/app.component.ts","webpack:///src/app/app.module.ts","webpack:///src/app/feature-flag/feature-flag-data.service.ts","webpack:///src/app/feature-flag/feature-flag-detail/feature-flag-detail.component.html","webpack:///src/app/feature-flag/feature-flag-detail/feature-flag-detail.component.ts","webpack:///src/app/feature-flag/feature-flag-list/feature-flag-list-filter.component.ts","webpack:///src/app/feature-flag/feature-flag-list/feature-flag-list.component.html","webpack:///src/app/feature-flag/feature-flag-list/feature-flag-list.component.ts","webpack:///src/app/feature-flag/feature-flag.module.ts","webpack:///src/app/http-error.interceptor.ts","webpack:///src/app/instance/instance.service.ts","webpack:///src/app/instance/novi-instance.ts","webpack:///src/app/jobs/heartbeat-list/heartbeat-list.component.html","webpack:///src/app/jobs/heartbeat-list/heartbeat-list.component.ts","webpack:///src/app/jobs/job-data.service.ts","webpack:///src/app/jobs/job-home/job-home.component.html","webpack:///src/app/jobs/job-home/job-home.component.ts","webpack:///src/app/jobs/job.module.ts","webpack:///src/app/jobs/queue-list/queue-list.component.html","webpack:///src/app/jobs/queue-list/queue-list.component.ts","webpack:///src/app/shared/loading-indicator/loading-indicator.component.ts","webpack:///src/app/shared/loading-indicator/loading-indicator.component.html","webpack:///src/app/shared/loading.service.ts","webpack:///src/app/shared/shared.module.ts","webpack:///src/app/tenant/novi-login/novi-login.component.html","webpack:///src/app/tenant/novi-login/novi-login.component.ts","webpack:///src/app/tenant/tenant-data.service.ts","webpack:///src/app/tenant/tenant-detail/tenant-detail.component.html","webpack:///src/app/tenant/tenant-detail/tenant-detail.component.ts","webpack:///src/app/tenant/tenant-list/tenant-list-filter.component.ts","webpack:///src/app/tenant/tenant-list/tenant-list.component.html","webpack:///src/app/tenant/tenant-list/tenant-list.component.ts","webpack:///src/app/tenant/tenant-site-context.ts","webpack:///src/app/tenant/tenant.module.ts","webpack:///src/environments/environment.ts","webpack:///src/main.ts"],"sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 98255;\nmodule.exports = webpackEmptyAsyncContext;","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { TenantListComponent } from '../tenant/tenant-list/tenant-list.component';\r\nimport { MsalGuard } from '@azure/msal-angular';\r\nimport { JobHomeComponent } from '../jobs/job-home/job-home.component';\r\nimport { NoviLoginComponent } from '../tenant/novi-login/novi-login.component';\r\n//import { FeatureFlagListComponent} from '../feature-flag/feature-flag-list/feature-flag-list.component'\r\nconst routes: Routes = [\r\n {\r\n path: 'sites',\r\n component: TenantListComponent,\r\n canActivate: [MsalGuard]\r\n },\r\n {\r\n path: '',\r\n redirectTo: 'sites',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: 'jobs',\r\n component: JobHomeComponent,\r\n canActivate: [MsalGuard]\r\n },\r\n {\r\n path: 'novi-login',\r\n component: NoviLoginComponent,\r\n canActivate: [MsalGuard]\r\n }\r\n // {\r\n // path: 'features',\r\n // component: FeatureFlagListComponent,\r\n // canActivate: [AuthenticationGuard]\r\n // },\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forRoot(routes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ],\r\n declarations: []\r\n})\r\nexport class AppRoutingModule { }","\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n

\r\n \"Waco, we have a problem\"
\r\n Copyright 2019 Novi AMS

\r\n
\r\n
\r\n\r\n","import { Component } from '@angular/core';\r\nimport { NoviInstance } from './instance/novi-instance'\r\nimport { InstanceService } from './instance/instance.service'\r\nimport { MsalService } from '@azure/msal-angular';\r\n\r\n@Component({\r\n selector: 'mc-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css']\r\n})\r\nexport class AppComponent {\r\n title = 'Mission Control';\r\n instances: NoviInstance[];\r\n selectedInstance: NoviInstance;\r\n\r\n ngOnInit(): void {\r\n this.instances = this.instanceService.allInstances;\r\n this.instanceService.currentInstance.subscribe(instance => this.selectedInstance = instance);\r\n }\r\n\r\n constructor(\r\n private instanceService: InstanceService,\r\n private msalService : MsalService\r\n ) {\r\n \r\n }\r\n\r\n onInstanceChange($event) {\r\n this.instanceService.SetCurrentInstance(this.selectedInstance);\r\n }\r\n\r\n logout() {\r\n this.msalService.logout();\r\n }\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { NgJsonEditorModule } from 'ang-jsoneditor' \r\nimport { TenantModule } from './tenant/tenant.module';\r\nimport { FeatureFlagModule } from './feature-flag/feature-flag.module';\r\nimport { AppRoutingModule } from './app-routing/app-routing.module';\r\nimport { SharedModule } from './shared/shared.module';\r\nimport { JobModule } from './jobs/job.module';\r\nimport { AppComponent } from './app.component';\r\nimport { InstanceService } from './instance/instance.service';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { MsalModule, MsalService, MsalGuard, MsalInterceptor, MsalBroadcastService, MsalRedirectComponent, MsalGuardConfiguration, MsalInterceptorConfiguration, MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG } from \"@azure/msal-angular\";\r\nimport { PublicClientApplication, BrowserCacheLocation, InteractionType, IPublicClientApplication, LogLevel } from '@azure/msal-browser';\r\nimport { HttpErrorInterceptor } from './http-error.interceptor';\r\nimport { ToastrModule } from 'ngx-toastr';\r\n\r\nexport function loggerCallback(logLevel: LogLevel, message: string) {\r\n console.log(message);\r\n}\r\n\r\nexport function MSALInstanceFactory(): IPublicClientApplication {\r\n return new PublicClientApplication({\r\n auth: {\r\n clientId: 'd2574002-4665-4004-8c64-2783bee06f64',\r\n authority: 'https://login.microsoftonline.com/ae9cb7e7-dbbd-4181-905c-bb3a7f5fecc0',\r\n redirectUri: window.location.origin,\r\n postLogoutRedirectUri: ''\r\n },\r\n cache: {\r\n cacheLocation: BrowserCacheLocation.LocalStorage,\r\n },\r\n system: {\r\n loggerOptions: {\r\n loggerCallback,\r\n logLevel: LogLevel.Info,\r\n piiLoggingEnabled: false\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration {\r\n const protectedResourceMap = new Map>();\r\n protectedResourceMap.set('https://localhost:44300', ['https://traffic2revenue.com/2ddce4a8-3e08-4b56-8204-4f5d669f5fd0/user_impersonation']);\r\n protectedResourceMap.set('https://app-novi-test-east-001.azurewebsites.net', ['https://traffic2revenue.com/2ddce4a8-3e08-4b56-8204-4f5d669f5fd0/user_impersonation']);\r\n protectedResourceMap.set('https://app-novi-test-east-feature.azurewebsites.net', ['https://traffic2revenue.com/2ddce4a8-3e08-4b56-8204-4f5d669f5fd0/user_impersonation']);\r\n protectedResourceMap.set('https://noviprod1east.azurewebsites.net', ['https://traffic2revenue.com/f8535f55-fe1f-48e6-b7d9-f5bdebe7c27a/user_impersonation']);\r\n protectedResourceMap.set('https://app-novi-prod-east-002.azurewebsites.net/', ['https://traffic2revenue.com/f8535f55-fe1f-48e6-b7d9-f5bdebe7c27a/user_impersonation']);\r\n protectedResourceMap.set('https://app-novi-prod-east-003.azurewebsites.net/', ['https://traffic2revenue.com/f8535f55-fe1f-48e6-b7d9-f5bdebe7c27a/user_impersonation']);\r\n protectedResourceMap.set('https://app-novi-prod-east-internal.azurewebsites.net/', ['https://traffic2revenue.com/f8535f55-fe1f-48e6-b7d9-f5bdebe7c27a/user_impersonation']);\r\n protectedResourceMap.set('https://app-novi-onboarding-001.azurewebsites.net', ['https://traffic2revenue.com/f8535f55-fe1f-48e6-b7d9-f5bdebe7c27a/user_impersonation']);\r\n\r\n return {\r\n interactionType: InteractionType.Redirect,\r\n protectedResourceMap\r\n };\r\n}\r\n\r\nexport function MSALGuardConfigFactory(): MsalGuardConfiguration {\r\n return { \r\n interactionType: InteractionType.Redirect,\r\n authRequest: {\r\n scopes: ['user.read']\r\n },\r\n loginFailedRoute: '/home'\r\n };\r\n}\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n AppRoutingModule,\r\n TenantModule,\r\n FeatureFlagModule,\r\n JobModule,\r\n FormsModule,\r\n SharedModule,\r\n NgJsonEditorModule,\r\n HttpClientModule,\r\n MsalModule,\r\n ToastrModule.forRoot()\r\n ],\r\n providers: [\r\n InstanceService,\r\n CookieService,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: MsalInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: HttpErrorInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: MSAL_INSTANCE,\r\n useFactory: MSALInstanceFactory\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useFactory: MSALGuardConfigFactory\r\n },\r\n {\r\n provide: MSAL_INTERCEPTOR_CONFIG,\r\n useFactory: MSALInterceptorConfigFactory\r\n },\r\n MsalService,\r\n MsalGuard,\r\n MsalBroadcastService\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { FeatureFlag } from './feature-flag';\r\nimport { InstanceService } from '../instance/instance.service';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n\r\n@Injectable()\r\nexport class FeatureFlagDataService {\r\n constructor(private httpClient: HttpClient,\r\n private instanceService: InstanceService\r\n ) { }\r\n\r\n getFeatureFlag(key: string): Observable {\r\n return this.httpClient.get(this.buildUrl('api/featureflag/GetFeatureFlag?key=' + key));\r\n }\r\n\r\n getFeatureFlags(): Observable {\r\n return this.httpClient.get(this.buildUrl('api/featureflag/GetAllFeatureFlags'));\r\n }\r\n\r\n toggleFeature(key: string, active: boolean): Observable {\r\n return this.httpClient.post(this.buildUrl('api/featureflag/ToggleFeatureActive?key='+ key + '&active=' + active), null);\r\n }\r\n\r\n saveFeature(flag: FeatureFlag): Observable {\r\n return this.httpClient.post(this.buildUrl('api/featureflag/Save'), flag);\r\n }\r\n\r\n private buildUrl(apiPath): string {\r\n return this.instanceService.currentInstance.value.RootUrl + apiPath;\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n

{{ flag.Name }}

\r\n
{{ flag.FeatureKey }}
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { FeatureFlag } from '../feature-flag'\r\nimport { FeatureFlagDataService } from '../feature-flag-data.service'\r\nimport { InstanceService } from '../../instance/instance.service'\r\nimport { TenantSiteContext } from '../../tenant/tenant-site-context';\r\nimport { TenantDataService } from '../../tenant/tenant-data.service';\r\nimport { ToastrIconClasses, ToastrService } from 'ngx-toastr';\r\n\r\n\r\n@Component({\r\n selector: 'app-feature-flag-detail',\r\n templateUrl: './feature-flag-detail.component.html',\r\n styleUrls: ['./feature-flag-detail.component.css']\r\n})\r\nexport class FeatureFlagDetailComponent implements OnInit {\r\n\r\n editingFeatureFlag$: Observable;\r\n tenants$: Observable;\r\n selectedTenants: TenantSiteContext[];\r\n tenantConfig: any = {\r\n highlight: false,\r\n create: false,\r\n persist: true,\r\n labelField: 'Name',\r\n valueField: 'TenantId',\r\n searchField: ['Name', 'TenantId']\r\n };\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private featureFlagDataService: FeatureFlagDataService,\r\n private instanceService: InstanceService,\r\n private tenantDataService : TenantDataService,\r\n private toastrService: ToastrService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.editingFeatureFlag$ = this.route.paramMap.pipe(\r\n switchMap((params: ParamMap) =>\r\n this.featureFlagDataService.getFeatureFlag(params.get('key')))\r\n );\r\n this.tenants$ = this.tenantDataService.getTenants();\r\n\r\n this.instanceService.currentInstance.subscribe(instance => this.loadTenants());\r\n }\r\n \r\n loadTenants() {\r\n \r\n }\r\n\r\n onSubmit(flag: FeatureFlag) {\r\n this.featureFlagDataService.saveFeature(flag).subscribe(tenant => this.toastrService.success(\"Feature flag save complete.\"));;\r\n \r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { FeatureFlag } from '../feature-flag';\r\n@Pipe({\r\n name: 'featureFlagFilter'\r\n})\r\nexport class FeatureFlagListFilterPipe implements PipeTransform {\r\n transform(items: FeatureFlag[], searchText: string): any[] {\r\n if(!items) return [];\r\n if(!searchText) return items;\r\n searchText = searchText.toLowerCase();\r\nreturn items.filter( it => {\r\n return it.Name.toLowerCase().includes(searchText) || it.FeatureKey.toLowerCase().includes(searchText) || it.Description.toLowerCase().includes(searchText);\r\n });\r\n }\r\n}","\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{featureFlag.Name}}
\r\n {{featureFlag.Description}}\r\n
\r\n
\r\n {{featureFlag.FeatureKey}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { FeatureFlag } from '../feature-flag'\r\nimport { FeatureFlagDataService } from '../feature-flag-data.service'\r\nimport { InstanceService } from '../../instance/instance.service'\r\n\r\n@Component({\r\n selector: 'mc-feature-flag-list',\r\n templateUrl: './feature-flag-list.component.html',\r\n styleUrls: ['./feature-flag-list.component.css']\r\n})\r\nexport class FeatureFlagListComponent implements OnInit {\r\n featureFlags: FeatureFlag[];\r\n\r\n constructor(private featureFlagDataService: FeatureFlagDataService,\r\n private instanceService: InstanceService) { }\r\n\r\n ngOnInit() {\r\n this.instanceService.currentInstance.subscribe(instance => this.loadFeatureFlags());\r\n }\r\n\r\n private loadFeatureFlags() {\r\n this.featureFlagDataService.getFeatureFlags().subscribe(\r\n featureFlags => this.featureFlags = featureFlags);\r\n }\r\n\r\n public onToggleChange(key: string, active: boolean) {\r\n this.featureFlagDataService.toggleFeature(key, active).subscribe();\r\n }\r\n}\r\n","//Core\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes, Router } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n//Third Party\r\nimport { NgSwitcheryModule } from 'angular-switchery-ios';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\n\r\n//Novi MC\r\nimport { FeatureFlagListComponent } from './feature-flag-list/feature-flag-list.component';\r\nimport { FeatureFlagDataService } from './feature-flag-data.service'\r\nimport { FeatureFlagListFilterPipe } from './feature-flag-list/feature-flag-list-filter.component';\r\nimport { FeatureFlagDetailComponent } from './feature-flag-detail/feature-flag-detail.component';\r\nimport { MsalGuard } from '@azure/msal-angular';\r\n\r\nconst featureRoutes: Routes = [\r\n { path: 'features', component: FeatureFlagListComponent, canActivate: [MsalGuard] },\r\n { path: 'feature/:key', component: FeatureFlagDetailComponent, canActivate: [MsalGuard] }\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgSwitcheryModule,\r\n NgSelectModule,\r\n RouterModule.forChild(featureRoutes)\r\n ],\r\n exports: [RouterModule],\r\n declarations: [FeatureFlagListComponent, FeatureFlagListFilterPipe, FeatureFlagDetailComponent],\r\n providers: [FeatureFlagDataService]\r\n})\r\nexport class FeatureFlagModule { }\r\n","import {\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpHandler,\r\n HttpRequest,\r\n HttpResponse,\r\n HttpErrorResponse\r\n} from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { bindCallback, Observable, throwError } from 'rxjs';\r\nimport { retry, catchError, tap, map } from 'rxjs/operators';\r\nimport { LoadingIndicatorService } from './shared/loading.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Injectable()\r\nexport class HttpErrorInterceptor implements HttpInterceptor {\r\n constructor(\r\n private loadingIndicatorService: LoadingIndicatorService,\r\n private toastrService: ToastrService\r\n ) { }\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n this.loadingIndicatorService.show();\r\n return next.handle(request)\r\n .pipe(\r\n retry(1),\r\n catchError((error: HttpErrorResponse) => {\r\n let errorMessage = '';\r\n if (error.error instanceof ErrorEvent) {\r\n // client-side error\r\n errorMessage = `Error: ${error.error.message}`;\r\n } else {\r\n // server-side error\r\n errorMessage = `Error Code: ${error.status}\\nMessage: ${error.message}`;\r\n }\r\n \r\n this.toastrService.error(errorMessage);\r\n this.loadingIndicatorService.hide();\r\n return throwError(errorMessage);\r\n }),\r\n tap(e => {\r\n if (e instanceof HttpResponse) {\r\n this.loadingIndicatorService.hide();\r\n }\r\n return e;\r\n })\r\n )\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { NoviInstance } from './novi-instance';\r\n\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n@Injectable()\r\n\r\nexport class InstanceService {\r\n\r\n\r\n allInstances = [\r\n new NoviInstance(\"Local\", \"https://localhost:44300/\"),\r\n new NoviInstance(\"Testing\", \"https://app-novi-test-east-001.azurewebsites.net/\"),\r\n new NoviInstance(\"Testing-Feature\", \"https://app-novi-test-east-feature.azurewebsites.net/\"),\r\n new NoviInstance(\"Production\", \"https://noviprod1east.azurewebsites.net/\"),\r\n new NoviInstance(\"Production-002\", \"https://app-novi-prod-east-002.azurewebsites.net/\"),\r\n new NoviInstance(\"Production-Internal\", \"https://app-novi-prod-east-internal.azurewebsites.net/\"),\r\n new NoviInstance(\"Staging\", \"https://app-novi-onboarding-001.azurewebsites.net/\")\r\n ];\r\n public currentInstance = new BehaviorSubject(this.allInstances[1]);\r\n\r\n // get currentInstance() {\r\n // return this._currentInstance.asObservable().share();\r\n // }\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n\r\n public SetCurrentInstance(newInstance: NoviInstance) {\r\n this.currentInstance.next(newInstance);\r\n }\r\n}\r\n","export class NoviInstance {\r\n constructor(\r\n public Name: string,\r\n public RootUrl: string) { }\r\n}\r\n","

\r\n Heartbeats\r\n \r\n

\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Job NameMachine NameLast Run Time
{{heartbeat.JobName}}{{heartbeat.MachineName}}\r\n {{heartbeat.LastRunTimeUTC | date:'short'}}\r\n \r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\n\r\nimport { JobDataService } from '../job-data.service';\r\nimport { InstanceService } from '../../instance/instance.service';\r\n\r\nimport {JobHeartbeat} from '../job-heartbeat';\r\n\r\n@Component({\r\n selector: 'mc-heartbeat-list',\r\n templateUrl: './heartbeat-list.component.html',\r\n styleUrls: ['./heartbeat-list.component.css']\r\n})\r\nexport class HeartbeatListComponent implements OnInit {\r\n jobHeartbeats: JobHeartbeat[];\r\n oneDayAgo: Date;\r\n\r\n constructor(private jobDataService : JobDataService, private instanceService : InstanceService) { \r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.oneDayAgo = new Date();\r\n this.oneDayAgo.setDate( this.oneDayAgo.getDate() - 1 );\r\n this.instanceService.currentInstance.subscribe(instance => this.loadJobHeartbeats());\r\n }\r\n\r\n loadJobHeartbeats() {\r\n this.jobDataService.getJobHeartbeats().subscribe(\r\n jobHeartbeats => this.jobHeartbeats = jobHeartbeats);\r\n }\r\n\r\n}\r\n","\r\nimport {map} from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, Subject, ReplaySubject } from 'rxjs';\r\nimport { InstanceService } from '../instance/instance.service';\r\nimport { JobHeartbeat } from './job-heartbeat';\r\nimport { Queue } from './queue';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Injectable()\r\nexport class JobDataService {\r\n\r\n private getAllQueuesSubject: Subject;\r\n private getAllQueuesRequest: Observable;\r\n\r\n constructor(private httpClient: HttpClient,\r\n private instanceService: InstanceService\r\n ) { \r\n this.getAllQueuesSubject = new ReplaySubject(1);\r\n }\r\n\r\n getJobHeartbeats(): Observable {\r\n return this.httpClient.get(this.buildUrl('api/job/GetJobHeartbeats')).pipe(map(hbArray => { \r\n return hbArray.map(hb => { \r\n hb.LastRunTimeUTC = new Date(hb.LastRunTimeUTC);\r\n return hb;\r\n });\r\n }));\r\n }\r\n\r\n getAvailableBackgroundTasks(): Observable {\r\n return this.httpClient.get(this.buildUrl('api/job/GetAvailableBackgroundTasks'));\r\n }\r\n\r\n queueBackgroundTask(tenantId: string, taskName: string): Observable {\r\n return this.httpClient.post(this.buildUrl('api/job/QueueBackgroundTask?tenantId='+tenantId+'&taskName='+taskName), null);\r\n } \r\n\r\n queueBackgroundTaskForAllTenants(taskName: string): Observable {\r\n return this.httpClient.post(this.buildUrl('api/job/QueueBackgroundTaskForAllTenants?taskName='+taskName), null);\r\n } \r\n\r\n getAllQueues(refresh: boolean = false): Observable {\r\n if (refresh || !this.getAllQueuesRequest) {\r\n this.getAllQueuesRequest = this.httpClient.post(this.buildUrl('api/job/GetAllQueues'), null);\r\n\r\n this.getAllQueuesRequest.subscribe(\r\n result => this.getAllQueuesSubject.next(result),\r\n err => this.getAllQueuesSubject.error(err)\r\n );\r\n }\r\n\r\n return this.getAllQueuesSubject.asObservable();\r\n } \r\n moveQueueMessages(sourceQueueName: string, targetQueueName: string, numberOfMessages : number): Observable {\r\n return this.httpClient.post(this.buildUrl('api/job/MoveQueueMessages?sourceQueueName='+sourceQueueName+'&targetQueueName='+targetQueueName+'&numberOfMessages='+numberOfMessages), null);\r\n } \r\n\r\n private buildUrl(apiPath): string {\r\n return this.instanceService.currentInstance.value.RootUrl + apiPath;\r\n }\r\n}\r\n","

Queue Tenant Background Task

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { TenantSiteContext } from '../../tenant/tenant-site-context';\r\nimport { TenantDataService } from '../../tenant/tenant-data.service';\r\nimport { JobDataService } from '../job-data.service';\r\nimport { InstanceService } from '../../instance/instance.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-job-home',\r\n templateUrl: './job-home.component.html',\r\n styleUrls: ['./job-home.component.css']\r\n})\r\nexport class JobHomeComponent implements OnInit {\r\n\r\n readonly AllTenants: TenantSiteContext = {\r\n TenantID: \"\",\r\n Name: \"All Tenants\",\r\n Domain: \"\",\r\n CssUrl: \"\",\r\n PageViewMapDefinition: \"\",\r\n Offline: false\r\n }\r\n\r\n tenants: TenantSiteContext[];\r\n tasks: string[];\r\n selectedTenant: TenantSiteContext = null;\r\n selectedTask: string = null;\r\n\r\n constructor(private tenantDataService: TenantDataService,\r\n private jobDataService: JobDataService,\r\n private instanceService: InstanceService,\r\n private toastrService: ToastrService) { }\r\n\r\n ngOnInit() {\r\n this.instanceService.currentInstance.subscribe(instance => this.loadTasks());\r\n this.instanceService.currentInstance.subscribe(instance => this.loadTenants());\r\n }\r\n\r\n loadTenants() {\r\n this.tenantDataService.getTenants().subscribe(\r\n tenants => {\r\n this.tenants = tenants;\r\n this.tenants.push(this.AllTenants);\r\n }\r\n )\r\n }\r\n\r\n loadTasks() {\r\n this.jobDataService.getAvailableBackgroundTasks().subscribe(\r\n tasks => this.tasks = tasks\r\n )\r\n }\r\n\r\n queueTask() {\r\n if (this.selectedTenant == null)\r\n this.toastrService.warning(\"Please select a tenant!\");\r\n if (this.selectedTask == null)\r\n this.toastrService.warning(\"Please select a task!\");\r\n\r\n if (this.selectedTenant.Name == \"All Tenants\") {\r\n if (confirm(\"I confirm that I want to run this job for all tenants.\")) {\r\n this.jobDataService.queueBackgroundTaskForAllTenants(this.selectedTask)\r\n .subscribe(() => this.toastrService.success(\"Task queued for all tenants\"));\r\n }\r\n } else {\r\n this.jobDataService.queueBackgroundTask(this.selectedTenant.TenantID, this.selectedTask)\r\n .subscribe(() => this.toastrService.success(\"Task queued\"));\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\n\r\nimport { HeartbeatListComponent } from './heartbeat-list/heartbeat-list.component';\r\nimport { JobDataService } from './job-data.service';\r\nimport { JobHomeComponent } from './job-home/job-home.component';\r\nimport { QueueListComponent } from './queue-list/queue-list.component'\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgSelectModule\r\n ],\r\n declarations: [HeartbeatListComponent, JobHomeComponent, QueueListComponent],\r\n providers: [JobDataService]\r\n})\r\nexport class JobModule { }\r\n","

\r\n Queues\r\n \r\n

\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Queue NameMessage CountActions
{{queue.Name}}= 10}\">\r\n {{queue.MessageCount}}\r\n = 10\"\r\n class=\"pull-right text-danger glyphicon glyphicon-exclamation-sign\">\r\n \r\n
0 && queue.Name.endsWith('poison')\">\r\n Retry 10 | Retry All\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { Queue } from '../queue';\r\nimport { JobDataService } from '../job-data.service';\r\nimport { InstanceService } from 'app/instance/instance.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'mc-queue-list',\r\n templateUrl: './queue-list.component.html',\r\n styleUrls: ['./queue-list.component.css']\r\n})\r\nexport class QueueListComponent implements OnInit {\r\n queues$: Observable;\r\n selectedSourceQueue: Queue = null;\r\n selectedTargetQueue: Queue = null;\r\n numberOfMessages: number;\r\n\r\n constructor(private jobDataService : JobDataService, \r\n private instanceService : InstanceService,\r\n private toastrService : ToastrService) { \r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.queues$ = this.jobDataService.getAllQueues();\r\n this.instanceService.currentInstance.subscribe(instance => this.loadQueueList());\r\n }\r\n \r\n loadQueueList() {\r\n this.jobDataService.getAllQueues(true);\r\n }\r\n\r\n moveQueueMessagesClicked() {\r\n if (this.selectedSourceQueue == null || this.selectedTargetQueue == null || !this.numberOfMessages) {\r\n this.toastrService.warning (\"Please validate your entries\");\r\n return;\r\n }\r\n\r\n this.jobDataService.moveQueueMessages(this.selectedSourceQueue.Name, this.selectedTargetQueue.Name, this.numberOfMessages).subscribe(tenant => {\r\n this.toastrService.success(\"Message move complete.\");\r\n this.loadQueueList();\r\n });\r\n }\r\n\r\n retryPoisonQueueMessages(poisonQueueName: string, numberOfMessages: number) {\r\n\r\n var sourceQueueName = poisonQueueName;\r\n var targetQueueName = poisonQueueName.substring(0, poisonQueueName.lastIndexOf(\"-poison\"));\r\n this.jobDataService.moveQueueMessages(sourceQueueName, targetQueueName, numberOfMessages).subscribe(tenant => { \r\n this.toastrService.success(\"Poison queue messages sent for retry.\");\r\n this.loadQueueList();\r\n }); \r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LoadingIndicatorService } from '../loading.service';\r\n\r\n@Component({\r\n selector: 'app-loading-indicator',\r\n templateUrl: './loading-indicator.component.html',\r\n styleUrls: ['./loading-indicator.component.css']\r\n})\r\nexport class LoadingIndicatorComponent implements OnInit {\r\n\r\n show : boolean = false;\r\n private subscription:Subscription;\r\n constructor(private loadingIndicatorService: LoadingIndicatorService) { \r\n \r\n }\r\n\r\n ngOnInit() {\r\n this.subscription = this.loadingIndicatorService.currentState\r\n .subscribe(newState => { \r\n this.show = newState\r\n });\r\n }\r\n\r\n}\r\n","
","import { Injectable } from '@angular/core';\r\nimport { Observable , Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class LoadingIndicatorService {\r\n\r\n private loadingSubject = new Subject();\r\n constructor() { }\r\n\r\n currentState = this.loadingSubject.asObservable();\r\n\r\n show() {\r\n this.loadingSubject.next(true);\r\n }\r\n\r\n hide() {\r\n this.loadingSubject.next(false);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LoadingIndicatorComponent } from './loading-indicator/loading-indicator.component';\r\nimport { LoadingIndicatorService } from './loading.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [LoadingIndicatorComponent],\r\n providers: [LoadingIndicatorService],\r\n exports: [LoadingIndicatorComponent]\r\n})\r\nexport class SharedModule { }\r\n","

\r\n Logging you in...\r\n

\r\n

\r\n {{ error }}\r\n

\r\n","import {Router, ActivatedRoute, Params} from '@angular/router';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { TenantSiteContext } from '../tenant-site-context'\r\nimport { TenantDataService } from '../tenant-data.service'\r\nimport { InstanceService } from '../../instance/instance.service'\r\n\r\n@Component({\r\n selector: 'app-novi-login',\r\n templateUrl: './novi-login.component.html',\r\n styleUrls: ['./novi-login.component.css']\r\n})\r\nexport class NoviLoginComponent implements OnInit {\r\n\r\n public error : string;\r\n\r\n constructor(private route: ActivatedRoute, \r\n private instanceService: InstanceService,\r\n private tenantDataService: TenantDataService,\r\n private router : Router) {}\r\n\r\n ngOnInit() {\r\n this.route.queryParams.subscribe(params => {\r\n const tenantId = params['tenantid'];\r\n const environment = params['environment'];\r\n const returnUrl = params['returnurl'];\r\n const loginRoot = params['loginroot'];\r\n \r\n const instanceForEnvironment = this.instanceService.allInstances.find(i => i.Name.toLowerCase() == environment.toLowerCase());\r\n \r\n if (!instanceForEnvironment) {\r\n this.error = \"Cannot find environment. Please double check the request.\";\r\n return;\r\n }\r\n \r\n this.instanceService.SetCurrentInstance(instanceForEnvironment);\r\n\r\n this.tenantDataService.getTenants().subscribe(allTenants => {\r\n const matchingTenant = allTenants.find(t => t.TenantID.toLowerCase() == tenantId.toLowerCase());\r\n\r\n if (!matchingTenant) {\r\n this.error = \"Cannot find tenant. Please double check the request.\";\r\n return;\r\n }\r\n\r\n this.tenantDataService.getNoviAdminAuthCode(matchingTenant.TenantID).subscribe(code => {\r\n\r\n //We use the specified tenantroot here instead of parsing it ourselves from the tenant domain because we might have a cookie override\r\n window.location.href = loginRoot + \"/account/noviadminlogin?code=\" + code + \"&returnurl=\" + returnUrl;\r\n });\r\n });\r\n });\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\r\nimport { TenantSiteContext } from './tenant-site-context';\r\nimport { InstanceService } from '../instance/instance.service';\r\n\r\n\r\n@Injectable()\r\nexport class TenantDataService {\r\n constructor(private instanceService: InstanceService,\r\n private httpClient: HttpClient\r\n ) { }\r\n\r\n getTenants(): Observable {\r\n return this.httpClient.get(this.buildUrl('api/tenant/GetAllTenants'));\r\n }\r\n\r\n saveTenant(tenant: TenantSiteContext): Observable {\r\n return this.httpClient.post(this.buildUrl('api/tenant/SaveTenant'), tenant);\r\n }\r\n\r\n populateSeedData(tenantId: string): Observable {\r\n return this.httpClient.post(this.buildUrl('api/tenant/SeedTenant?tenantId='+tenantId), null);\r\n }\r\n\r\n populateSampleData(tenantId: string): Observable {\r\n return this.httpClient.post(this.buildUrl('api/tenant/PopulateSampleData?tenantId='+tenantId), null);\r\n }\r\n\r\n copySampleSite(tenantId: string): Observable {\r\n return this.httpClient.post(this.buildUrl('api/tenant/CopySampleSite?tenantId=' + tenantId), null);\r\n }\r\n\r\n removeSampleData(tenantId: string): Observable {\r\n return this.httpClient.post(this.buildUrl('api/tenant/RemoveSampleData?tenantId='+tenantId), null);\r\n }\r\n\r\n getNoviAdminAuthCode(tenantId: string): Observable {\r\n return this.httpClient.post(this.buildUrl('account/GenerateNoviAdminAuthCode?tenantId='+tenantId), null);\r\n }\r\n\r\n private buildUrl(apiPath): string {\r\n return this.instanceService.currentInstance.value.RootUrl + apiPath;\r\n }\r\n}\r\n","
\r\n
\r\n \r\n {{tenant.TenantID}}\r\n \r\n
\r\n
\r\n \r\n \r\n

Reminder: Should match the name of the customer in Novi HQ.

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n (Data will only be inserted if it doesn't already exist. You shouldn't run this if this tenant is for a 1.5 migration.)
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n","import { Component, OnInit, Input, Output, EventEmitter, OnChanges, SimpleChanges, ViewChild, KeyValueDiffers } from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport { JsonEditorComponent, JsonEditorOptions } from 'ang-jsoneditor';\r\n\r\nimport { TenantSiteContext } from '../tenant-site-context'\r\nimport { TenantDataService } from '../tenant-data.service'\r\nimport { ToastrService } from 'ngx-toastr';\r\n//import { KeyValueDiffers } from '@angular/core/src/change_detection/differs/keyvalue_differs';\r\n\r\n@Component({\r\n selector: 'mc-tenant-detail',\r\n templateUrl: './tenant-detail.component.html',\r\n styleUrls: ['./tenant-detail.component.css']\r\n})\r\nexport class TenantDetailComponent implements OnInit, OnChanges {\r\n public editorOptions: JsonEditorOptions;\r\n public data: any;\r\n @ViewChild(JsonEditorComponent) editor: JsonEditorComponent;\r\n\r\n @Input() tenant: TenantSiteContext;\r\n editingTenant: TenantSiteContext;\r\n\r\n @Output() tenantSave = new EventEmitter();\r\n @Output() cancel = new EventEmitter();\r\n\r\n private _differ: any;\r\n\r\n constructor(private tenantDataService: TenantDataService, \r\n private toastrService: ToastrService,\r\n private differs: KeyValueDiffers) {\r\n this._differ = differs.find({}).create();\r\n this.editorOptions = new JsonEditorOptions();\r\n this.editorOptions.modes = ['code', 'text', 'tree', 'view'];\r\n this.editorOptions.mode = 'code';\r\n this.data = {};\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.tenant) {\r\n this.editingTenant = _.cloneDeep(changes.tenant.currentValue);\r\n this.data = changes.tenant.currentValue && changes.tenant.currentValue.PageViewMapDefinition ? JSON.parse( changes.tenant.currentValue.PageViewMapDefinition) : {};\r\n }\r\n }\r\n\r\n ngDoCheck(){\r\n const changes = this._differ.diff(this.editingTenant);\r\n \r\n if(changes && changes.isDirty && this.editingTenant && this.editingTenant.TenantID){\r\n this.editingTenant.TenantID = this.editingTenant.TenantID.toLowerCase();\r\n }\r\n }\r\n\r\n onSaveClick() {\r\n const validationMsg = this.validateTenant(this.editingTenant);\r\n if (validationMsg.length > 0) {\r\n this.toastrService.warning(validationMsg);\r\n return;\r\n }\r\n this.editingTenant.PageViewMapDefinition = this.editor.getText();\r\n this.tenantDataService.saveTenant(this.editingTenant)\r\n .subscribe(tenant => {\r\n this.tenantSave.emit(tenant);\r\n this.toastrService.success(\"Tenant saved successfully.\");\r\n });\r\n }\r\n\r\n onSeedDataClick() {\r\n if (!this.editingTenant.TenantID)\r\n return;\r\n\r\n this.tenantDataService.populateSeedData(this.editingTenant.TenantID)\r\n .subscribe(tenant => this.toastrService.success(\"Seed data population complete.\"));\r\n }\r\n\r\n onPopulateSampleDataClick() {\r\n if (!this.editingTenant.TenantID)\r\n return;\r\n\r\n this.tenantDataService.populateSampleData(this.editingTenant.TenantID)\r\n .subscribe(tenant => this.toastrService.success(\"Sample data population complete.\"));\r\n }\r\n\r\n onCopySampleSite() {\r\n if (!this.editingTenant.TenantID)\r\n return;\r\n\r\n this.tenantDataService.copySampleSite(this.editingTenant.TenantID)\r\n .subscribe(tenant => this.toastrService.success(\"Sample site copying queued.\"));\r\n }\r\n\r\n onRemoveSampleDataClick() {\r\n if (!this.editingTenant.TenantID)\r\n return;\r\n\r\n this.tenantDataService.removeSampleData(this.editingTenant.TenantID)\r\n .subscribe(tenant => this.toastrService.success(\"Sample data removal complete.\"));\r\n }\r\n\r\n onCancelClick() {\r\n this.tenant = null;\r\n this.cancel.emit();\r\n }\r\n\r\n private validateTenant(tenant: TenantSiteContext): string {\r\n let result = '';\r\n\r\n if (!tenant.TenantID || tenant.TenantID.length === 0) {\r\n result += 'Please enter a tenant id.';\r\n }\r\n if (!tenant.Name || tenant.Name.length === 0) {\r\n result += 'Please enter a tenant name.';\r\n }\r\n\r\n return result;\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TenantSiteContext } from '../tenant-site-context';\r\n@Pipe({\r\n name: 'tenantFilter'\r\n})\r\nexport class TenantListFilterPipe implements PipeTransform {\r\n transform(items: TenantSiteContext[], searchText: string): any[] {\r\n if(!items) return [];\r\n if(!searchText) return items;\r\n searchText = searchText.toLowerCase();\r\nreturn items.filter( it => {\r\n return it.Name.toLowerCase().includes(searchText) || it.TenantID.toLowerCase().includes(searchText);\r\n });\r\n }\r\n}","
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
AbbreviationNameDomainActions
{{tenant.TenantID}}{{tenant.Name}}{{tenant.Domain}}\r\n \r\n Login\r\n \r\n \r\n Edit\r\n \r\n \r\n Visit\r\n \r\n
\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { TenantSiteContext } from '../tenant-site-context'\r\nimport { TenantDataService } from '../tenant-data.service'\r\nimport { InstanceService } from '../../instance/instance.service'\r\nimport { NoviInstance } from 'app/instance/novi-instance';\r\nimport { CookieService } from 'ngx-cookie-service';\r\n\r\n@Component({\r\n selector: 'mc-tenant-list',\r\n templateUrl: './tenant-list.component.html',\r\n styleUrls: ['./tenant-list.component.css']\r\n})\r\nexport class TenantListComponent implements OnInit {\r\n tenants: TenantSiteContext[];\r\n selectedTenant: TenantSiteContext;\r\n instance : NoviInstance;\r\n\r\n constructor(private tenantDataService: TenantDataService,\r\n private instanceService: InstanceService,\r\n private cookieService: CookieService) { }\r\n\r\n ngOnInit() {\r\n //this.loadTenants();\r\n\r\n this.instanceService.currentInstance.subscribe(instance => {\r\n this.instance = instance;\r\n this.loadTenants()\r\n });\r\n\r\n this.cookieService.set(\"mc-been-there\", \"true\", 7, undefined, undefined, true, \"None\");\r\n }\r\n\r\n onTenantClick(tenant) {\r\n this.selectedTenant = tenant;\r\n }\r\n\r\n onTenantLoginClick(tenant: TenantSiteContext) {\r\n var safariWindow = window.open(\"\", \"_blank\");\r\n this.tenantDataService.getNoviAdminAuthCode(tenant.TenantID).subscribe(code => {\r\n var url = \"https://\" + tenant.Domain + \"/account/noviadminlogin?code=\" + code;\r\n safariWindow.location.href = url;\r\n });\r\n }\r\n\r\n onTenantVisitClick(tenant: TenantSiteContext) {\r\n window.open(\"https://\" + tenant.Domain, \"_blank\");\r\n }\r\n\r\n onAddTenantClick() {\r\n this.selectedTenant = new TenantSiteContext();\r\n }\r\n\r\n onTenantSave() {\r\n this.loadTenants();\r\n this.selectedTenant = null;\r\n }\r\n\r\n onTenantDetailCancel() {\r\n this.selectedTenant = null;\r\n }\r\n\r\n private loadTenants() {\r\n this.tenantDataService.getTenants().subscribe(\r\n tenants => this.tenants = tenants);\r\n }\r\n}\r\n","export class TenantSiteContext {\r\n TenantID: string;\r\n Name: string;\r\n Domain: string;\r\n CssUrl: string;\r\n PageViewMapDefinition: string;\r\n Offline: boolean;\r\n\r\n constructor() {};\r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { TenantListComponent } from './tenant-list/tenant-list.component';\r\nimport { TenantDataService } from './tenant-data.service'\r\nimport { TenantDetailComponent } from './tenant-detail/tenant-detail.component';\r\nimport { TenantListFilterPipe } from './tenant-list/tenant-list-filter.component';\r\nimport { NoviLoginComponent } from './novi-login/novi-login.component';\r\nimport { NgJsonEditorModule } from 'ang-jsoneditor';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgJsonEditorModule\r\n ],\r\n exports: [TenantListComponent],\r\n declarations: [TenantListComponent, TenantDetailComponent, TenantListFilterPipe, NoviLoginComponent],\r\n providers: [TenantDataService]\r\n})\r\nexport class TenantModule { }\r\n","// The file contents for the current environment will overwrite these during build.\r\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\r\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\r\n// The list of which env maps to which file can be found in `.angular-cli.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from 'app/app.module'\r\nimport { environment } from 'environments/environment'\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule);\r\n"]}