{"version":3,"sources":["./$_lazy_route_resource lazy namespace object","./node_modules/@angular/compiler/src sync","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/auth/auth.guard.ts","./src/app/auth/auth.workspace.ts","./src/app/auth/authentication.service.ts","./src/app/auth/index.ts","./src/app/changelog/changelog.component.ts","./src/app/changelog/changelog.component.html","./src/app/documentation/documentation.component.ts","./src/app/documentation/documentation.component.html","./src/app/faqs/faqs.component.ts","./src/app/faqs/faqs.component.html","./src/app/footer/footer.component.ts","./src/app/footer/footer.component.html","./src/app/footer/selection-footer/selection-footer.component.ts","./src/app/footer/selection-footer/selection-footer.component.html","./src/app/header/header-public/header-public.component.ts","./src/app/header/header-public/header-public.component.html","./src/app/help/help.component.ts","./src/app/help/help.component.html","./src/app/home/home.component.ts","./src/app/home/home.component.html","./src/app/legal/legal.component.ts","./src/app/legal/legal.component.html","./src/app/seatingchartviewer/services/api.service.ts","./src/app/seatingchartviewer/services/data.service.ts","./src/app/services/platform.service.ts","./src/app/social-distance-editor/interface/footer/footer.component.ts","./src/app/social-distance-editor/interface/footer/footer.component.html","./src/app/social-distance-editor/interface/interface.module.ts","./src/app/social-distance-editor/interface/map-interface/map-interface.component.ts","./src/app/social-distance-editor/interface/map-interface/map-interface.component.html","./src/app/social-distance-editor/interface/sidebar/selectiondata/selectiondata.component.ts","./src/app/social-distance-editor/interface/sidebar/selectiondata/selectiondata.component.html","./src/app/social-distance-editor/interface/sidebar/sidebar.component.ts","./src/app/social-distance-editor/interface/sidebar/sidebar.component.html","./src/app/social-distance-editor/interface/topbar/topbar.component.ts","./src/app/social-distance-editor/interface/topbar/topbar.component.html","./src/app/social-distance-editor/plugins/allocator/components/modals/confirm-delete-allocation/confirm-delete-allocation.component.ts","./src/app/social-distance-editor/plugins/allocator/components/modals/confirm-delete-allocation/confirm-delete-allocation.component.html","./src/app/social-distance-editor/plugins/allocator/components/modals/laliga-modal/laliga-modal.component.ts","./src/app/social-distance-editor/plugins/allocator/components/modals/laliga-modal/laliga-modal.component.html","./src/app/social-distance-editor/plugins/allocator/components/modals/mlb-modal/mlb-modal.component.ts","./src/app/social-distance-editor/plugins/allocator/components/modals/mlb-modal/mlb-modal.component.html","./src/app/social-distance-editor/plugins/allocator/components/modals/sports-alliance-modal/sports-alliance-modal.component.ts","./src/app/social-distance-editor/plugins/allocator/components/modals/sports-alliance-modal/sports-alliance-modal.component.html","./src/app/social-distance-editor/plugins/allocator/services/allocator-modal.service.ts","./src/app/social-distance-editor/plugins/allocator/services/allocator.service.ts","./src/app/social-distance-editor/plugins/allocator/services/parsers/laliga-parser.service.ts","./src/app/social-distance-editor/plugins/allocator/services/parsers/mlb-parser.service.ts","./src/app/social-distance-editor/plugins/allocator/services/parsers/sports-alliance-parser.service.ts","./src/app/social-distance-editor/plugins/allocator/utils/parse.ts","./src/app/social-distance-editor/plugins/custom-categories/components/custom-categories/custom-categories.component.ts","./src/app/social-distance-editor/plugins/custom-categories/components/custom-categories/custom-categories.component.html","./src/app/social-distance-editor/plugins/custom-categories/configuration/categories.configuration.ts","./src/app/social-distance-editor/plugins/custom-categories/custom-categories.module.ts","./src/app/social-distance-editor/plugins/custom-categories/services/custom-categories.service.ts","./src/app/social-distance-editor/services/categories.service.ts","./src/app/social-distance-editor/services/computedseats.service.ts","./src/app/social-distance-editor/services/data.service.ts","./src/app/social-distance-editor/services/dvm.service.ts","./src/app/social-distance-editor/services/format-number.service.ts","./src/app/social-distance-editor/services/groups.service.ts","./src/app/social-distance-editor/services/handlers/click.handler.ts","./src/app/social-distance-editor/services/handlers/enter.handler.ts","./src/app/social-distance-editor/services/handlers/general.handler.ts","./src/app/social-distance-editor/services/handlers/leave.handler.ts","./src/app/social-distance-editor/services/handlers/load-share-simulation.handler.ts","./src/app/social-distance-editor/services/handlers/popover.handler.ts","./src/app/social-distance-editor/services/inventory.service.ts","./src/app/social-distance-editor/services/modal.service.ts","./src/app/social-distance-editor/services/parameters.service.ts","./src/app/social-distance-editor/services/pricing.service.ts","./src/app/social-distance-editor/services/selection.service.ts","./src/app/social-distance-editor/services/socialdistancing.service.ts","./src/app/social-distance-editor/services/tiers.service.ts","./src/app/social-distance-editor/services/version.service.ts","./src/app/social-distance-editor/share-simulation/share-simulation.component.ts","./src/app/social-distance-editor/share-simulation/share-simulation.component.html","./src/app/social-distance-editor/share-simulation/share-simulation.module.ts","./src/app/social-distance-editor/shared/buttons/button/button.component.ts","./src/app/social-distance-editor/shared/buttons/button/button.component.html","./src/app/social-distance-editor/shared/buttons/downloadbutton/downloadbutton.component.ts","./src/app/social-distance-editor/shared/buttons/downloadbutton/downloadbutton.component.html","./src/app/social-distance-editor/shared/buttons/uploadbutton/uploadbutton.component.ts","./src/app/social-distance-editor/shared/buttons/uploadbutton/uploadbutton.component.html","./src/app/social-distance-editor/shared/interceptors/add-api-url.interceptor.ts","./src/app/social-distance-editor/shared/interceptors/auth.interceptor.ts","./src/app/social-distance-editor/shared/interceptors/csrf-token.interceptor.ts","./src/app/social-distance-editor/shared/modals/category-price-modal/category-price-modal.component.ts","./src/app/social-distance-editor/shared/modals/category-price-modal/category-price-modal.component.html","./src/app/social-distance-editor/shared/modals/change-password-modal/change-password-modal.component.ts","./src/app/social-distance-editor/shared/modals/change-password-modal/change-password-modal.component.html","./src/app/social-distance-editor/shared/modals/compute-results-modal/compute-results-modal.component.ts","./src/app/social-distance-editor/shared/modals/compute-results-modal/compute-results-modal.component.html","./src/app/social-distance-editor/shared/modals/compute-sectionresults-modal/compute-sectionresults-modal.component.ts","./src/app/social-distance-editor/shared/modals/compute-sectionresults-modal/compute-sectionresults-modal.component.html","./src/app/social-distance-editor/shared/modals/confirm-delete-config/confirm-delete-config.component.ts","./src/app/social-distance-editor/shared/modals/confirm-delete-config/confirm-delete-config.component.html","./src/app/social-distance-editor/shared/modals/confirm-delete-simulation/confirm-delete-simulation.component.ts","./src/app/social-distance-editor/shared/modals/confirm-delete-simulation/confirm-delete-simulation.component.html","./src/app/social-distance-editor/shared/modals/confirm-edit-multi-seat/confirm-edit-multi-seat.component.ts","./src/app/social-distance-editor/shared/modals/confirm-edit-multi-seat/confirm-edit-multi-seat.component.html","./src/app/social-distance-editor/shared/modals/confirm-logout-modal/confirm-logout-modal.component.ts","./src/app/social-distance-editor/shared/modals/confirm-logout-modal/confirm-logout-modal.component.html","./src/app/social-distance-editor/shared/modals/copy-simulation-modal/copy-simulation-modal.component.ts","./src/app/social-distance-editor/shared/modals/copy-simulation-modal/copy-simulation-modal.component.html","./src/app/social-distance-editor/shared/modals/edit-sectionsimulation-modal/edit-sectionsimulation-modal.component.ts","./src/app/social-distance-editor/shared/modals/edit-sectionsimulation-modal/edit-sectionsimulation-modal.component.html","./src/app/social-distance-editor/shared/modals/edit-simulation-modal/edit-simulation-modal.component.ts","./src/app/social-distance-editor/shared/modals/edit-simulation-modal/edit-simulation-modal.component.html","./src/app/social-distance-editor/shared/modals/error-modal/error-modal.component.ts","./src/app/social-distance-editor/shared/modals/error-modal/error-modal.component.html","./src/app/social-distance-editor/shared/modals/export-onhold-modal/export-onhold-modal.component.ts","./src/app/social-distance-editor/shared/modals/export-onhold-modal/export-onhold-modal.component.html","./src/app/social-distance-editor/shared/modals/forgot-password-modal/forgot-password-modal.component.ts","./src/app/social-distance-editor/shared/modals/forgot-password-modal/forgot-password-modal.component.html","./src/app/social-distance-editor/shared/modals/laliga-contact-cau-modal/laliga-contact-cau-modal.component.ts","./src/app/social-distance-editor/shared/modals/laliga-contact-cau-modal/laliga-contact-cau-modal.component.html","./src/app/social-distance-editor/shared/modals/login-modal/login-modal.component.ts","./src/app/social-distance-editor/shared/modals/login-modal/login-modal.component.html","./src/app/social-distance-editor/shared/modals/new-config-modal/new-config-modal.component.ts","./src/app/social-distance-editor/shared/modals/new-config-modal/new-config-modal.component.html","./src/app/social-distance-editor/shared/modals/new-simulation-modal/new-simulation-modal.component.ts","./src/app/social-distance-editor/shared/modals/new-simulation-modal/new-simulation-modal.component.html","./src/app/social-distance-editor/shared/modals/pdfsubscriber/pdfsubscriber.component.ts","./src/app/social-distance-editor/shared/modals/pdfsubscriber/pdfsubscriber.component.html","./src/app/social-distance-editor/shared/modals/public-videos/public-videos.component.ts","./src/app/social-distance-editor/shared/modals/public-videos/public-videos.component.html","./src/app/social-distance-editor/shared/modals/share-simulation-modal/share-simulation-modal.component.ts","./src/app/social-distance-editor/shared/modals/share-simulation-modal/share-simulation-modal.component.html","./src/app/social-distance-editor/shared/pipes/date-format.pipe.ts","./src/app/social-distance-editor/shared/pipes/search-table.pipe.ts","./src/app/social-distance-editor/shared/shared.module.ts","./src/assets/configuration/digitalvenue.configuration.ts","./src/assets/data/isolated-groups.configuration.ts","./src/environments/environment.ts","./src/main.ts","stream (ignored)"],"names":[],"mappings":"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","file":"main-es2015.9961b66a7bbdc2f8a878.js","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;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./$$_lazy_route_resource lazy recursive\";","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = \"./node_modules/@angular/compiler/src sync recursive\";","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { LandingComponent } from './social-distance-editor/landing/landing.component';\n//import { LoginComponent } from './login/login.component';\nimport { VenueSetupComponent } from './social-distance-editor/venue-setup/venue-setup.component';\nimport { AuthGuard } from './auth';\nimport { HelpComponent } from './help/help.component';\nimport { SimulationComponent } from './social-distance-editor/simulation/simulation.component';\nimport { ShareSimulationComponent } from './social-distance-editor/share-simulation/share-simulation.component';\nimport { AllocationComponent } from './social-distance-editor/plugins/allocator/components/allocation/allocation.component';\nimport { DocumentationComponent } from './documentation/documentation.component';\nimport { HomeComponent } from './home/home.component';\nimport { LegalComponent } from './legal/legal.component';\n\nconst routes: Routes = [\n\n {\n path: '',\n redirectTo: '',\n pathMatch: 'full',\n component: HomeComponent\n },\n\n {\n path: '',\n // canActivate: [AuthGuard],\n children: [\n {\n path: 'workspace',\n loadChildren: () => import('./workspace/workspace.module').then(m => m.WorkspaceModule),\n },\n {\n path: '',\n canActivate: [AuthGuard],\n loadChildren: () => import('./social-distance-editor/socialdistanceeditor.module').then(m => m.SocialdistanceeditorModule),\n //component: LandingComponent\n },\n/* {\n path: 'help',\n component: HelpComponent\n },\n {\n path: 'setup',\n loadChildren: () => import('./social-distance-editor/socialdistanceeditor.module').then(m => m.SocialdistanceeditorModule),\n redirectTo: ''\n },\n {\n path: 'setup/:id',\n loadChildren: () => import('./social-distance-editor/socialdistanceeditor.module').then(m => m.SocialdistanceeditorModule),\n component: VenueSetupComponent\n },\n {\n path: 'simulation',\n loadChildren: () => import('./social-distance-editor/socialdistanceeditor.module').then(m => m.SocialdistanceeditorModule),\n redirectTo: ''\n },\n {\n path: 'simulation/:id',\n loadChildren: () => import('./social-distance-editor/socialdistanceeditor.module').then(m => m.SocialdistanceeditorModule),\n component: SimulationComponent\n },\n {\n path: 'allocation/:id',\n loadChildren: () => import('./social-distance-editor/socialdistanceeditor.module').then(m => m.SocialdistanceeditorModule),\n component: AllocationComponent\n }, */\n \n ]\n },\n {\n path: 'login',\n redirectTo: ''\n },\n {\n path: 'laliga',\n component: HomeComponent\n },\n {\n path: 'documentation',\n component: DocumentationComponent\n },\n {\n path: 'documentation/:client',\n component: DocumentationComponent\n },\n {\n path: 'legal',\n component: LegalComponent\n },\n {\n path: 'share-simulation/:key',\n component: ShareSimulationComponent\n },\n {\n path: 'share-simulation',\n redirectTo: ''\n },\n {\n path: 'share-simulation/:key',\n component: ShareSimulationComponent\n },\n {path: '**', redirectTo: ''}\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n// import { Router, ActivatedRoute, NavigationEnd } from '@angular/router';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { FormatNumberService } from './social-distance-editor/services/format-number.service';\ndeclare let gtag;\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent implements OnInit {\n\n title = 'social-distancing-manager';\n currentLocation;\n\n get isSimulation() {\n if (this.currentLocation) {\n return this.currentLocation.includes('simulation');\n } else {\n return false;\n }\n }\n\n get isIntegration() {\n if (this.currentLocation && (this.currentLocation.includes('simulation') || this.currentLocation.includes('setup'))){\n return true;\n }\n return false;\n }\n\n constructor(private translate: TranslateService,\n private localeService: FormatNumberService,\n private router: Router) {\n this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n gtag('config', 'UA-63464443-4', {\n page_path: event.urlAfterRedirects\n });\n }\n });\n // this language will be used as a fallback when a translation isn't found in the current language\n this.translate.setDefaultLang('en');\n }\n\n ngOnInit(): void {\n // the lang to use, if the lang isn't available, it will use the current loader to get them\n if (localStorage.getItem('language') !== null) {\n const language = localStorage.getItem('language');\n this.localeService.setCurrentLocale(language);\n this.translate.use(language);\n\n } else {\n this.localeService.setCurrentLocale('en');\n this.translate.use('en');\n }\n\n this.router.events.subscribe( (e) => {\n // tslint:disable-next-line: no-unused-expression\n e instanceof NavigationEnd ? this.currentLocation = '/' + e.url.split('/')[1] : '';\n });\n }\n\n}\n","\n\n","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\n//import { LoginComponent } from './login/login.component';\n/* import { LandingComponent } from './social-distance-editor/landing/landing.component';\nimport { VenueSetupModule } from './social-distance-editor/venue-setup/venue-setup.module'; */\n// import { LegendComponent } from './interface/map-interface/legend/legend.component';\n//import { SimulationModule } from './social-distance-editor/simulation/simulation.module';\n// import { UserOptionsComponent } from './header/user-options/user-options.component';\nimport { SharedModule } from './social-distance-editor/shared/shared.module';\nimport { FormsModule } from '@angular/forms';\nimport { AuthenticationService } from './auth';\nimport { HttpClientModule, HTTP_INTERCEPTORS, HttpClient } from '@angular/common/http';\nimport { DataService } from './social-distance-editor/services/data.service';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { CarouselModule } from 'ngx-bootstrap/carousel';\nimport { AddApiUrlInterceptor } from './social-distance-editor/shared/interceptors/add-api-url.interceptor';\nimport { HttpCsrfInterceptor } from './social-distance-editor/shared/interceptors/csrf-token.interceptor';\nimport { FooterComponent } from './footer/footer.component';\nimport { ModalModule, BsModalRef } from 'ngx-bootstrap/modal';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { HelpComponent } from './help/help.component';\nimport {TranslateModule, TranslateLoader} from '@ngx-translate/core';\nimport {TranslateHttpLoader} from '@ngx-translate/http-loader';\nimport { AuthInterceptor } from './social-distance-editor/shared/interceptors/auth.interceptor';\nimport { SelectionFooterComponent } from './footer/selection-footer/selection-footer.component';\nimport { ToastrModule } from 'ngx-toastr';\nimport { ShareSimulationModule } from './social-distance-editor/share-simulation/share-simulation.module';\nimport { ChangelogComponent } from './changelog/changelog.component';\nimport { FaqsComponent } from './faqs/faqs.component';\nimport { HomeComponent } from './home/home.component';\nimport { LegalComponent } from './legal/legal.component';\nimport { SlickCarouselModule } from 'ngx-slick-carousel';\nimport { ScrollToModule } from 'ng2-scroll-to';\nimport { DocumentationComponent } from './documentation/documentation.component';\nimport { HeaderPublicComponent } from './header/header-public/header-public.component';\nimport { isolatedGroups, ISOLATED_GROUPS } from 'src/assets/data/isolated-groups.configuration';\n\n\n// AoT requires an exported function for factories\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http);\n}\n\n@NgModule({\n declarations: [\n AppComponent,\n FooterComponent,\n HelpComponent,\n SelectionFooterComponent,\n ChangelogComponent,\n FaqsComponent,\n HomeComponent,\n LegalComponent,\n DocumentationComponent,\n HeaderPublicComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n ShareSimulationModule,\n FormsModule,\n HttpClientModule,\n BrowserAnimationsModule,\n CarouselModule.forRoot(),\n ModalModule.forRoot(),\n BsDropdownModule.forRoot(),\n SharedModule,\n SlickCarouselModule,\n ScrollToModule.forRoot(),\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient]\n },\n defaultLanguage: 'en'\n }),\n ToastrModule.forRoot({\n timeOut: 3000,\n positionClass: 'toast-top-left',\n preventDuplicates: true,\n }),\n ],\n exports: [\n TranslateModule,\n BsDropdownModule,\n TranslateModule\n ],\n providers: [\n {provide: HTTP_INTERCEPTORS, useClass: AddApiUrlInterceptor, multi: true},\n {provide: HTTP_INTERCEPTORS, useClass: HttpCsrfInterceptor, multi: true},\n {provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true},\n AuthenticationService,\n DataService,\n BsModalRef,\n {provide: ISOLATED_GROUPS, useValue: isolatedGroups},\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { Injectable } from '@angular/core';\nimport { CanActivate, CanActivateChild, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { PlatformService } from '../services/platform.service';\nimport { AuthenticationService } from './authentication.service';\n\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate, CanActivateChild{\n\n constructor(private authService: AuthenticationService,\n private router: Router,\n private platformService: PlatformService) {\n }\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree {\n let allowed = false;\n if (this.authService.isTokenExpired()) {\n this.router.navigate(['/']);\n allowed = false;\n } else {\n allowed = true;\n this.authService.getUserLogged().then(res=>{\n if(res){\n this.platformService.setAuth(res);\n }\n })\n }\n this.platformService.setConfigurationPrivate(allowed)\n return allowed;\n // if (localStorage.getItem('token') === null) {\n // } else {\n // const token = JSON.parse(localStorage.getItem('token'));\n // const date = Date.now();\n // if (date > token.expires_in) {\n // localStorage.removeItem('token');\n // this.router.navigate(['/login']);\n // return false;\n // }\n // }\n\n // return true;\n }\n\n canActivateChild(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree {\n // if (localStorage.getItem('token') === null) {\n // this.router.navigate(['/login']);\n // return false;\n // } else {\n // const token = JSON.parse(localStorage.getItem('token'));\n // const date = Date.now();\n // if (date > token.expires_in) {\n // console.log('date > token expire time');\n // localStorage.removeItem('token');\n // this.router.navigate(['/login']);\n // return false;\n // }\n // }\n return true;\n let allowed = false;\n if (this.authService.isTokenExpired()) {\n this.router.navigate(['/']);\n allowed = false;\n } else {\n this.authService.getUserLogged().then(res=>{\n if(res){\n this.platformService.setAuth(res);\n }\n })\n allowed = true;\n }\n\n this.platformService.setConfigurationPrivate(allowed)\n \n return allowed;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, CanActivateChild, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { PlatformService } from '../services/platform.service';\nimport { AuthenticationService } from './authentication.service';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AllowWorkspace implements CanActivateChild{\n constructor(\n private authService: AuthenticationService,\n private router: Router,\n private platformService: PlatformService) {\n }\n canActivateChild(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree {\n return this.authService.getUserLogged().then(resp=>{\n let allowed = false;\n if(resp){\n // este if no escala - refactor v2: my venue workspace\n const p = resp.user.plugins.filter(plugin=>plugin.type === 'scv');\n if(!p.length){\n this.router.navigate(['/home']);\n allowed = false;\n }else{\n allowed = true;\n }\n\n this.platformService.setConfigurationWorkspace(allowed);\n\n }\n return allowed\n });\n }\n}","import { Injectable } from '@angular/core';\nimport { AuthorizationData } from '../social-distance-editor/shared/models/authorization-data.model';\nimport { User } from '../social-distance-editor/shared/models/user-data.model';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\n\n\n@Injectable()\nexport class AuthenticationService {\n\n authRoot = '/auth';\n\n private currentUser: any;\n private crsfToken = null;\n private readonly userLogged$: BehaviorSubject;\n\n\n constructor(private http: HttpClient) {\n this.userLogged$ = new BehaviorSubject(undefined);\n }\n\n private tapSetUser = tap((result: User) => {\n const retValue = this.setUser(result);\n this.currentUser = retValue;\n this.userLogged$.next(retValue);\n });\n\n private setUser(result: User): User | false {\n const retValue: User | false = result;\n if (result.token) {\n this.crsfToken = result.token;\n const expiresIn = Math.round(Date.now() + result.expires_in * 1000);\n localStorage.setItem('token', JSON.stringify({ token: result.token, expires_in: expiresIn}));\n }\n return retValue;\n }\n\n private _getUserLogged(): Observable {\n return this.http.get(`${this.authRoot}/user_logged/`).pipe(\n this.tapSetUser, ) as Observable;\n }\n\n public getUserLogged(): Promise {\n const promise = new Promise((resolve, reject) => {\n if (this.currentUser === undefined) {\n this._getUserLogged().toPromise().then(data => {\n resolve(this.setUser(data));\n }).catch(e=>{\n console.log(\"error\")\n });\n } else {\n resolve(this.currentUser);\n }\n });\n return promise;\n }\n\n public getUserLogged$(): Observable {\n return this._getUserLogged();\n // return this.userLogged$.asObservable();\n }\n public getUserLoggedSubject(): Observable {\n return this.userLogged$.asObservable();\n }\n\n public login(loginData: AuthorizationData): Observable {\n const data: AuthorizationData = {\n username: loginData.username,\n password: loginData.password,\n 'grant-type': 'password'\n };\n return this.http.post(`${this.authRoot}/login/`, data).pipe(\n this.tapSetUser,\n ) as Observable;\n }\n\n public logout(): Observable {\n this.userLogged$.next(undefined);\n this.currentUser = undefined;\n return this.http.get(`${this.authRoot}/logout`);\n }\n\n public getCsrfToken() {\n return this.crsfToken;\n }\n\n public isTokenExpired(): boolean {\n if (localStorage.getItem('token') === null) {\n return true;\n } else {\n const token = JSON.parse(localStorage.getItem('token'));\n const date = Date.now();\n if (date > token.expires_in) {\n localStorage.removeItem('token');\n return true;\n }\n return false;\n }\n }\n\n public getUser(){\n return this.currentUser;\n }\n}\n","export { AuthenticationService } from './authentication.service';\nexport { AuthGuard } from './auth.guard';\nexport { AllowWorkspace } from './auth.workspace';\n\n","import { Component, HostListener , OnInit } from '@angular/core';\nimport { BsDropdownConfig } from 'ngx-bootstrap/dropdown';\nimport { PublicVideosComponent } from '../social-distance-editor/shared/modals/public-videos/public-videos.component';\nimport { ModalOptions, BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { youtubeVideo } from '../social-distance-editor/shared/models/video.model';\n\n@Component({\n selector: 'app-changelog',\n templateUrl: './changelog.component.html',\n styleUrls: ['./changelog.component.scss','../documentation/documentation.component.scss'],\n providers: [{ provide: BsDropdownConfig, useValue: { isAnimated: true, autoClose: true } }]\n\n})\n\nexport class ChangelogComponent implements OnInit {\n\n constructor(\n private modalService: BsModalService\n ) { }\n bsModalRef: BsModalRef;\n versions = [\n {version: '2.0'},\n {version: '1.9'},{version: '1.8'},{version: '1.7'},{version: '1.6'},{version: '1.5'},\n {version: '1.4'},{version: '1.3'},{version: '1.2'},{version: '1.1'},{version: '1.0'}\n ];\n\n ngOnInit(): void {\n //add div tags\n for(let i = 0;i\n \n \n
\n

Changelog

\n\n

Version 2.0

\n
    \n
  • Allocator (Coming soon)
  • \n
\n

Version 1.9

\n
    \n
  • Correction of errors in the total results.
  • \n
  • Interface improvements.
  • \n
\n\n

Version 1.8

\n
    \n
  • Correction of calculation errors in sector simulations.
  • \n
  • Added functionality to choose which side to remove aisle seats, at the beginning, end or both sides of the row.\n See video
  • \n
\n

Version 1.7

\n
    \n
  • A new category has been added by default: Limited View, which refers to seats with reduced visibility.\n See video\n
  • \n
  • Correction of errors of the overall results of the simulation.
  • \n
  • New functionality to create simulations by sections, allowing each sector to have individual parameters, social distance, and also eliminate different aisle seats.\n See video\n
  • \n
\n

Version 1.6

\n
    \n
  • Now showing in the results popup the total number of eliminated aisle seats.\n See video
  • \n
  • Improved interface
  • \n
\n
\n

Version 1.5

\n
    \n
  • The functionality of changing categories and prices at seat level is added in the configuration section.
  • \n
  • Correction of errors when downloading the seat manifest.
  • \n
\n
\n

Version 1.4

\n
    \n
  • Bugfixes when moving groups
  • \n
  • Manual editing of the Social Distance algorithm:
  • \n
  • The Edit Single Seats functionality is added, allowing to enable and disable seats that the algorithm has blocked. \n This functionality does not take into account the Social Distance and allows the user to enable and disable seats as they wish. \n In case of breaking the social distance, the affected seats will be highlighted in orange.\n See video\n
  • \n
  • If you edit the groups manually, the tool will not take into account the desired percentages and will start counting the entered groups.
  • \n
\n

Version 1.3

\n
    \n
  • Functionality to duplicate the base configuration.
  • \n
  • The functionality of moving and merging groups of seats in the simulations has been added.\n See video\n
  • \n
  • Added option to limit capacity to two groups per row.\n See video\n
  • \n
  • The Social Distance algorithm now starts calculating from the extremes of the section, providing a visual improvement to group results without affecting maximum availability.
  • \n
\n

Version 1.2

\n
    \n
  • The option to duplicate simulation and rename it is added.\n See video\n
  • \n
  • Added the option to make a public simulation and share it through a URL.\n See video\n
  • \n
  • Possibility of managing more than one venue per customer.
  • \n
  • Interface improvement.
  • \n
\n

Version 1.1

\n
    \n
  • The category and price information is added to the seat or sector when hover is done.
  • \n
  • Optimization of the algorythm. Fastest response time from 20 to 5 seconds.
  • \n
  • Correction of errors on the counting of seats and percentages of availability in the simulations.
  • \n
  • Added information about the percentage of availability in the results screen.
  • \n
\n\n\n

Version 1.0

\n
    \n
  • Configuration of the venue.
  • \n
  • Configure prices for each section, row and seat.
  • \n
  • Configure categories by row and section.
  • \n
  • Sections and rows labeled with the locked category will not be taken into account in the Social Distance simulations.
  • \n
  • Create different simulations based on each venue configuration.
  • \n
  • Configurable parameters for the simulation: Social distance between attendees, eliminate aisle seats, percentage of groups.
  • \n
  • Revenue information based on the available seats.
  • \n
  • Availability information of each category.
  • \n
\n
","import { Component, OnInit,HostListener,Inject } from '@angular/core';\nimport { PublicVideosComponent } from '../social-distance-editor/shared/modals/public-videos/public-videos.component';\nimport { LoginModalComponent } from '../social-distance-editor/shared/modals/login-modal/login-modal.component';\nimport { ModalOptions, BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { youtubeVideo } from '../social-distance-editor/shared/models/video.model';\nimport { DOCUMENT } from '@angular/common';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ActivatedRoute } from \"@angular/router\";\nimport { LaligaContactCauModalComponent } from '../social-distance-editor/shared/modals/laliga-contact-cau-modal/laliga-contact-cau-modal.component';\n\n\n@Component({\n selector: 'app-documentation',\n templateUrl: './documentation.component.html',\n styleUrls: ['./documentation.component.scss','../header/header.component.scss']\n})\nexport class DocumentationComponent implements OnInit {\n\n constructor(\n private modalService: BsModalService,\n private translate: TranslateService,\n private route : ActivatedRoute,\n @Inject(DOCUMENT) private document: Document\n ) { }\n bsModalRef: BsModalRef;\n ua = navigator.userAgent;\n\n versions = [\n {version: '2.0'},\n {version: '1.9'},{version: '1.8'},{version: '1.7'},{version: '1.6'},{version: '1.5'},\n {version: '1.4'},{version: '1.3'},{version: '1.2'},{version: '1.1'},{version: '1.0'}\n ];\n\n faqs = [\n {elementid:'faqs1',title: this.translate.instant('documentation.faqs.faqs1.title')},\n {elementid:'faqs2',title: this.translate.instant('documentation.faqs.faqs2.title')},\n {elementid:'faqs3',title: this.translate.instant('documentation.faqs.faqs3.title')},\n {elementid:'faqs4',title: this.translate.instant('documentation.faqs.faqs4.title')}\n ]\n //@HostListener(\"scroll\", ['$event'])\n @HostListener('window:scroll', ['$event']) onWindowScroll(e){\n\n let offset= document.getElementById('faqs1').offsetTop+2700;\n if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile|CriOS/i.test(this.ua)){\n offset = document.getElementById('faqs1').offsetTop+3500;\n }\n //on scroll set headers btns active\n if (document.documentElement.scrollTop < offset) {\n document.getElementById('faqsbtn').classList.remove('active');\n document.getElementById('changelogbtn').classList.add('active');\n }else{\n document.getElementById('faqsbtn').classList.add('active');\n document.getElementById('changelogbtn').classList.remove('active');\n }\n }\n\n ngAfterViewInit(): void{\n for(let i = 0;i\n \n\n\n\n \n\n
\n\n \n
\n

{{'documentation.changelog.title' | translate}}

\n
\n

{{'documentation.changelog.version' | translate}} 2.0: Allocator {{'documentation.changelog.dates.version20' | translate}}

\n \n
\n \n

{{'documentation.changelog.version' | translate}} 2.0

\n
    \n
  • {{'documentation.changelog.version200_coomingsoon' | translate}}
  • \n
\n
\n

{{'documentation.changelog.version' | translate}} 1.9 {{'documentation.changelog.dates.version19' | translate}}

\n
    \n
  • {{'documentation.changelog.version190' | translate}}
  • \n
  • {{'documentation.changelog.version191' | translate}}
  • \n
  • {{'documentation.changelog.version192' | translate}}
  • \n
  • {{'documentation.changelog.version193' | translate}} {{'documentation.seevideo' | translate}}
  • \n
\n\n

{{'documentation.changelog.version' | translate}} 1.8 {{'documentation.changelog.dates.version18' | translate}}

\n
    \n
  • {{'documentation.changelog.version180' | translate}}
  • \n
  • {{'documentation.changelog.version181' | translate}}\n {{'documentation.seevideo' | translate}}
  • \n
\n

{{'documentation.changelog.version' | translate}} 1.7 {{'documentation.changelog.dates.version17' | translate}}

\n
    \n
  • {{'documentation.changelog.version170' | translate}}\n {{'documentation.seevideo' | translate}}\n
  • \n
  • {{'documentation.changelog.version171' | translate}}
  • \n
  • {{'documentation.changelog.version172' | translate}}\n {{'documentation.seevideo' | translate}}\n
  • \n
\n

{{'documentation.changelog.version' | translate}} 1.6 {{'documentation.changelog.dates.version16' | translate}}

\n
    \n
  • {{'documentation.changelog.version160' | translate}}\n {{'documentation.seevideo' | translate}}
  • \n
  • {{'documentation.changelog.version161' | translate}}
  • \n
\n
\n

{{'documentation.changelog.version' | translate}} 1.5 {{'documentation.changelog.dates.version15' | translate}}

\n
    \n
  • {{'documentation.changelog.version150' | translate}}
  • \n
  • {{'documentation.changelog.version151' | translate}}
  • \n
\n
\n

{{'documentation.changelog.version' | translate}} 1.4 {{'documentation.changelog.dates.version14' | translate}}

\n
    \n
  • {{'documentation.changelog.version140' | translate}}
  • \n
  • {{'documentation.changelog.version141' | translate}}
    \n {{'documentation.changelog.version141-detail' | translate}} \n {{'documentation.seevideo' | translate}}\n
  • \n
  • {{'documentation.changelog.version142' | translate}}
  • \n
\n

{{'documentation.changelog.version' | translate}} 1.3 {{'documentation.changelog.dates.version13' | translate}}

\n
    \n
  • {{'documentation.changelog.version130' | translate}}
  • \n
  • {{'documentation.changelog.version131' | translate}}\n {{'documentation.seevideo' | translate}}\n
  • \n
  • {{'documentation.changelog.version132' | translate}}\n {{'documentation.seevideo' | translate}}\n
  • \n
  • {{'documentation.changelog.version133' | translate}}
  • \n
\n

{{'documentation.changelog.version' | translate}} 1.2 {{'documentation.changelog.dates.version12' | translate}}

\n
    \n
  • {{'documentation.changelog.version120' | translate}}\n {{'documentation.seevideo' | translate}}\n
  • \n
  • {{'documentation.changelog.version121' | translate}}\n {{'documentation.seevideo' | translate}}\n
  • \n
  • {{'documentation.changelog.version122' | translate}}
  • \n
  • {{'documentation.changelog.version123' | translate}}
  • \n
\n

{{'documentation.changelog.version' | translate}} 1.1 {{'documentation.changelog.dates.version11' | translate}}

\n
    \n
  • {{'documentation.changelog.version110' | translate}}
  • \n
  • {{'documentation.changelog.version111' | translate}}
  • \n
  • {{'documentation.changelog.version112' | translate}}
  • \n
  • {{'documentation.changelog.version113' | translate}}
  • \n
\n\n\n

{{'documentation.changelog.version' | translate}} 1.0

\n
    \n
  • {{'documentation.changelog.version100' | translate}}
  • \n
  • {{'documentation.changelog.version101' | translate}}
  • \n
  • {{'documentation.changelog.version102' | translate}}
  • \n
  • {{'documentation.changelog.version103' | translate}}
  • \n
  • {{'documentation.changelog.version104' | translate}}
  • \n
  • {{'documentation.changelog.version105' | translate}}
  • \n
  • {{'documentation.changelog.version106' | translate}}
  • \n
  • {{'documentation.changelog.version107' | translate}}
  • \n
\n
\n
\n

{{'documentation.faqs.title' | translate}}

\n\n

{{'documentation.faqs.faqs1.title' | translate}}

\n \n

{{'documentation.faqs.faqs1.q1' | translate}}

\n

{{'documentation.faqs.faqs1.a1' | translate}}\n video.\n

\n\n
\n

{{'documentation.faqs.faqs1.q2' | translate}}

\n

{{'documentation.faqs.faqs1.a2' | translate}}

\n

{{'documentation.faqs.faqs1.q3' | translate}}

\n

{{'documentation.faqs.faqs1.a3' | translate}} enquiries@3dditigalvenue.com

\n
\n \n

{{'documentation.faqs.faqs1.q4' | translate}}

\n

{{'documentation.faqs.faqs1.a4' | translate}}

\n\n \n\n

{{'documentation.faqs.faqs2.title' | translate}}

\n \n

{{'documentation.faqs.faqs2.q1' | translate}}

\n

{{'documentation.faqs.faqs2.a1' | translate}}\n {{'documentation.faqs.checkthis' | translate}} {{'documentation.video' | translate}} {{'documentation.faqs.faqs2.a11' | translate}}

\n\n

{{'documentation.faqs.faqs2.q2' | translate}}

\n

\n {{'documentation.faqs.faqs2.a2' | translate}}\n

\n

{{'documentation.faqs.faqs2.q3' | translate}}

\n

\n {{'documentation.faqs.faqs2.a3' | translate}}\n {{'documentation.faqs.seehowitworks' | translate}} {{'documentation.faqs.here' | translate}}.\n

\n\n

{{'documentation.faqs.faqs2.q4' | translate}}

\n

{{'documentation.faqs.faqs2.a4' | translate}}

\n\n \n

{{'documentation.faqs.faqs3.title' | translate}}

\n

{{'documentation.faqs.faqs3.q1' | translate}}

\n

{{'documentation.faqs.faqs3.a1' | translate}}

\n

{{'documentation.faqs.faqs3.q2' | translate}}

\n

{{'documentation.faqs.faqs3.a2' | translate}}

\n

{{'documentation.faqs.faqs3.q3' | translate}}

\n

{{'documentation.faqs.faqs3.a3' | translate}}

\n

{{'documentation.faqs.faqs3.q4' | translate}}

\n

{{'documentation.faqs.faqs3.a4' | translate}}

\n

{{'documentation.faqs.faqs3.q5' | translate}}

\n

{{'documentation.faqs.faqs3.a5' | translate}}

\n\n \n
\n

{{'documentation.faqs.faqs4.title' | translate}}

\n

{{'documentation.faqs.faqs4.q1' | translate}}

\n

{{'documentation.faqs.faqs4.a1' | translate}} support@3ddigitalvenue.com {{'documentation.faqs.faqs4.a11' | translate}}

\n

{{'documentation.faqs.faqs4.q2' | translate}}

\n

{{'documentation.faqs.faqs4.a2' | translate}}

\n

{{'documentation.faqs.faqs4.q3' | translate}}

\n

{{'documentation.faqs.faqs4.a3' | translate}}

\n

{{'documentation.faqs.faqs4.q4' | translate}}

\n

{{'documentation.faqs.faqs4.a4' | translate}}

\n

{{'documentation.faqs.faqs4.q5' | translate}}

\n

{{'documentation.faqs.faqs4.a5' | translate}}

\n

{{'documentation.faqs.faqs4.q6' | translate}}

\n

{{'documentation.faqs.faqs4.a6' | translate}}

\n

{{'documentation.faqs.faqs4.q7' | translate}}

\n

{{'documentation.faqs.faqs4.a7' | translate}} support@3ddigitalvenue.com {{'documentation.faqs.faqs4.a71' | translate}}

\n
\n
\n
","import { Component, OnInit } from '@angular/core';\nimport { PublicVideosComponent } from '../social-distance-editor/shared/modals/public-videos/public-videos.component';\nimport { ModalOptions, BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { youtubeVideo } from '../social-distance-editor/shared/models/video.model';\n\n@Component({\n selector: 'app-faqs',\n templateUrl: './faqs.component.html',\n styleUrls: ['./faqs.component.scss','../documentation/documentation.component.scss']\n})\nexport class FaqsComponent implements OnInit {\n\n constructor(\n private modalService: BsModalService\n ) { }\n bsModalRef: BsModalRef;\n\n ngOnInit(): void {\n }\n public openVideo(url, title){\n const videoData : youtubeVideo ={\n raw : url,\n title : title\n }\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered modal-dialog-video',\n backdrop: false,\n ignoreBackdropClick: false,\n initialState: {\n video : videoData\n }\n };\n this.bsModalRef = this.modalService.show(PublicVideosComponent, modalConfig);\n }\n}\n","
\n

Frequently Asked Questions

\n

SOCIAL DISTANCE EDITOR

\n

What is the social distance editor?

\n

The Social Distance Editor is a tool designed to receive fans safely back at the stadiums. To do this, the client enters the social distance parameters into the system and the tool shows the most efficient layout on the map.\n See video\n

\n

Can I use the SOCIAL DISTANCE EDITOR for non-sports venues such as arenas, or theaters, or opera houses?

\n

The SOCIAL DISTANCE EDITOR can be used in any type of venue as long as it has chairs on it.

\n

What’s the cost of using this tool?

\n

The cost of the tool is variable. This can depend on the type of 2D or 2D Pro map, or on the capacity of the stadium. If you want more information, send us a mail here (enquiries@3dditigalvenue.com)

\n

What type of technical information do we require to build a map for the SOCIAL DISTANCE EDITOR?

\n

The 3DDV team uses architectural information to build the map taking into account the different types of seats and the slope differences to obtain simulations with the highest accuracy. Click HERE to see more information about technical materials. (PDF DANI)

\n

PERFORMING SIMULATIONS

\n

How can I adapt my social distance simulations if I have different configurations on my venue?

\n

The SOCIAL DISTANCE EDITOR allows to hold an unlimited number of configurations to perfectly match every kind of event. Also, you can perform as many simulations as you want with each configuration.

\n

Can I change the social distance chosen once i’ve done a simulation

\n

Can I change the social distance chosen once i’ve done a simulation Yes, on your dashboard you will see all your configurations and edit them at any time you want.

\n

Can I edit the layout that the algorithm calculates?

\n

Yes. You are provided with the option to move, add or remove anytype of groups or singles. If the Social Distance you’ve determined is broken by any of these moves, you will be warned in orange. (see video here)

\n

Are the simulations for the whole venue?

\n

By default, the simulations are performed throughout the room, except for the seats that are labeled as locked. However, individual simulations can be performed in one or more sections with the most suitable parameters.

\n

TECHNICAL ISSUES

\n

Why am I having different spaces between groups depending on the area of the venue?

\n

Normally there are different separations between rows and seats along the venue. This is due to several reasons such as different types or size of seats, the distance between them and slope differences.

\n

From which point of the seat is the system calculating the distance?

From which point of the seat is the system calculating the distance?\n

How can I share the layout I want with my ticketing platform?

Once you have performed your simulation, you will be able to download the seat manifest\n

Can I know the new revenue that I will obtain with my new capacity and social distance?

Yes, to do so, you must assign prices to the different sections (or on a row or seat level) and once the simulation is performed, you will see your new revenue and capacity.\n
","import { Component, OnInit, Input } from '@angular/core';\nimport { Router, NavigationEnd, ActivatedRoute } from '@angular/router';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\nexport class FooterComponent implements OnInit {\n\n @Input() isSimulation;\n page;\n client_param;\n currentyear = new Date().getFullYear();\n constructor(\n private router: Router,\n private route : ActivatedRoute\n ) {}\n\n ngOnInit(): void {\n this.router.events.subscribe( (route) => {\n if ( route instanceof NavigationEnd ) {\n const url_splitted = route.url.split('/');\n const url = url_splitted[1];\n this.page = '';\n if ( url === 'setup') {\n this.page = 'setup';\n }\n if ( url === 'simulation') {\n this.page = 'simulation';\n }\n if(url==='laliga'){\n this.client_param = url;\n }else{\n\n this.client_param = url_splitted[2];\n }\n\n }\n });\n }\n}\n","\n","import { Component, OnInit, OnDestroy, Input } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { GroupsService } from 'src/app/social-distance-editor/services/groups.service';\nimport { CategoriesService } from 'src/app/social-distance-editor/services/categories.service';\nimport { SelectionService } from 'src/app/social-distance-editor/services/selection.service';\n\n@Component({\n selector: 'app-selection-footer',\n templateUrl: './selection-footer.component.html',\n styleUrls: ['./selection-footer.component.scss']\n})\nexport class SelectionFooterComponent implements OnInit, OnDestroy {\n\n private subscriptions: Subscription[] = [];\n\n @Input() page: 'setup' | 'simulation';\n\n get isSimulation() {\n return this.page === 'simulation';\n }\n\n nodeType: 'section' | 'seat' = 'section';\n currentCategories: string | string[] = [];\n currentSelection = [];\n currentSelectionRows: number;\n\n get currentSelectionCount() {\n if (this.nodeType === 'section') {\n return this.currentSelection.length;\n } else if (this.nodeType === 'seat') {\n return this.currentSelectionRows;\n }\n return 0;\n }\n\n get groupsNumber() {\n const groupsHash = {};\n this.currentSelection.forEach(element => {\n if (this.groups.groupsHash.nodes[element.id]) {\n groupsHash[this.groups.groupsHash.nodes[element.id]] = true;\n }\n });\n return Object.keys(groupsHash).length;\n }\n\n get categoriesNumber() {\n return this.currentCategories.length;\n }\n\n get currentSelectionType() {\n if (this.nodeType === 'section') {\n return 'section';\n } else if (this.nodeType === 'seat') {\n return 'row';\n }\n return '';\n }\n\n constructor(private groups: GroupsService,\n public categories: CategoriesService,\n private selection: SelectionService\n ) { }\n\n ngOnInit(): void {\n this.subscriptions.push(this.selection.nodeType.subscribe(\n type => {\n this.nodeType = type;\n }\n ));\n this.subscriptions.push(this.selection.selectionSubject.subscribe(\n selection => {\n const categoriesWeights = {\n regular: 1,\n vip: 2,\n disabled: 3,\n locked: 4\n };\n this.currentSelection = selection;\n if (this.nodeType === 'seat') {\n const rowsHash = {};\n selection.forEach(seat => {\n const row = seat.id.split('-')[0] + '-' + [1];\n rowsHash[row] = true;\n });\n this.currentSelectionRows = Object.keys(rowsHash).length;\n }\n const currentCategories = this.categories.getCurrentCategories(this.nodeType, selection);\n currentCategories.sort((a, b) => categoriesWeights[a] - categoriesWeights[b]);\n if (currentCategories) {\n const index = currentCategories.indexOf('none');\n if (index > -1) {\n currentCategories.splice(index, 1);\n }\n if (typeof currentCategories === 'string') {\n this.currentCategories = [currentCategories];\n } else {\n this.currentCategories = currentCategories;\n }\n } else {\n this.currentCategories = [];\n }\n }\n ));\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n}\n","
\n
\n \n {{'setup.footer.currentselection' | translate}}: \n \n
\n
\n\n 0\n \n {{'setup.footer.'+currentSelectionType | translate}}s, \n \n
\n
\n {{currentSelectionCount}}\n 1; else elementsingle\">\n {{'setup.footer.'+currentSelectionType | translate}}s, \n \n \n \n {{'setup.footer.'+currentSelectionType | translate}}, \n \n \n
\n
\n
\n 0\n {{'setup.footer.groups' | translate}}s, \n
\n
\n
\n \n {{groupsNumber}}\n 1; else groupsingle\">\n {{'setup.footer.groups' | translate}}s, \n \n \n \n {{'setup.footer.group' | translate}}, \n \n
\n
\n
\n 0\n {{'setup.footer.categories' | translate}}\n
\n
\n
\n
\n
0\">\n \n {{categoriesNumber}}\n \n {{'setup.footer.category' | translate}}: \n \n \n \n \n {{'setup.footer.categories' | translate}}\n \n \n \n \n
\n
\n
\n
\n
\n
","import { Component, OnInit } from '@angular/core';\nimport { ModalOptions, BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { PdfsubscriberComponent } from '../../social-distance-editor/shared/modals/pdfsubscriber/pdfsubscriber.component';\nimport { LoginModalComponent } from '../../social-distance-editor/shared/modals/login-modal/login-modal.component';\n//import { ActivatedRoute } from '@angular/router';\n\n@Component({\n selector: 'app-header-public',\n templateUrl: './header-public.component.html',\n styleUrls: ['./header-public.component.scss','../../header/header.component.scss']\n})\nexport class HeaderPublicComponent implements OnInit {\n\n constructor(\n private modalService: BsModalService,\n //private activatedRoute: ActivatedRoute\n ) { }\n\n bsModalRef: BsModalRef;\n\n ngOnInit(): void {\n\n }\n\n public onOpenPdfSubscriberModal(): void {\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered',\n backdrop: false,\n ignoreBackdropClick: false,\n initialState: {}\n };\n this.bsModalRef = this.modalService.show(PdfsubscriberComponent, modalConfig);\n }\n\n public onOpenLoginModal(): void {\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered',\n backdrop: false,\n ignoreBackdropClick: false,\n initialState: {}\n };\n this.bsModalRef = this.modalService.show(LoginModalComponent, modalConfig);\n }\n}\n","
\n
\n
\n
\n SOCIAL DISTANCE EDITOR\n Powered by 3D Digital Venue\n
\n
\n\n \n
\n \n
\n
\n
\n \n
\n \n
\n
\n \n
\n
\n
\n
","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-help',\n templateUrl: './help.component.html',\n styleUrls: ['./help.component.scss']\n})\nexport class HelpComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n

LOREM IPSUM

\n

\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras suscipit finibus libero. Maecenas eu ipsum molestie, fermentum orci a, molestie augue. Proin rhoncus tellus et suscipit dapibus. Aliquam feugiat mattis ipsum eget faucibus. Praesent pretium condimentum auctor. Nulla laoreet accumsan rhoncus. Integer sem ipsum, bibendum tincidunt ullamcorper ac, luctus non purus. Aliquam mauris turpis, pretium eget ex vel, vestibulum posuere arcu. Vestibulum fringilla arcu a diam molestie imperdiet. Vestibulum laoreet felis euismod, varius mauris non, lacinia ante. Vestibulum aliquam lacus sed elementum molestie. Praesent varius sapien quis mi interdum, sed feugiat ligula pharetra.\n

\n

\n Vivamus dui quam, hendrerit sit amet arcu vitae, accumsan gravida augue. Cras eu odio sit amet magna sodales vulputate. Nam ultricies vel est sed aliquam. Praesent facilisis commodo turpis, in facilisis augue posuere eget. Pellentesque vulputate vestibulum libero, vitae eleifend ipsum molestie in. Aliquam interdum, risus sit amet eleifend ullamcorper, nisl neque elementum ante, sit amet laoreet nisl ipsum a dui. Aenean volutpat elit nec fermentum mollis. In bibendum sem eros, nec tempor nisi lobortis eu. Nulla in tortor quis elit ullamcorper facilisis vel porttitor enim. Maecenas dictum tortor pellentesque elit rutrum, eu vestibulum odio finibus. Cras dignissim pellentesque ante non tincidunt. Morbi placerat eros sit amet nibh malesuada faucibus. Aliquam at odio pharetra, placerat metus ultrices, fringilla ligula.\n

\n\n

\n Aliquam tempor sollicitudin nulla, quis vulputate enim maximus posuere. Sed pellentesque tristique eros ut porttitor. In gravida pellentesque mattis. Sed maximus justo eu convallis ornare. In hac habitasse platea dictumst. Sed condimentum nec tortor vitae posuere. Mauris egestas felis eros, at rhoncus neque lacinia quis. Ut at imperdiet elit.\n

\n

\n \n Nulla eu tellus vulputate, maximus ante a, tempus purus. Proin hendrerit iaculis sem vel fermentum. Sed tempus, diam sed luctus porta, orci leo accumsan urna, id condimentum urna enim ac mi. Vestibulum nec lacus sed odio ornare venenatis at eu tellus. Vestibulum ut placerat libero. Nunc et bibendum augue, sed cursus metus. Mauris auctor ipsum non arcu ullamcorper scelerisque. Duis ut metus at magna sagittis finibus.\n

\n\n

\n Mauris laoreet lacus non mauris tempor, a volutpat sem ultricies. Aenean imperdiet ligula non lobortis commodo. Aliquam erat volutpat. Donec mattis, nisl non tempus consequat, enim est mattis tellus, vel aliquet nulla ex ac libero. Integer a velit feugiat, maximus arcu sit amet, interdum enim. Nulla facilisi. In libero erat, finibus in lectus vel, eleifend scelerisque ante. Maecenas lobortis libero at sem egestas dignissim. Sed ac ipsum diam. Nam tellus orci, volutpat vitae vehicula nec, malesuada id massa. Aenean et metus vitae est pulvinar blandit. Mauris vitae hendrerit orci.\n

\n\n\n
","import { Component, OnInit,ElementRef, ViewChild,HostListener } from '@angular/core';\nimport { VersionService } from '../social-distance-editor/services/version.service';\nimport { ModalOptions, BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { LoginModalComponent } from '../social-distance-editor/shared/modals/login-modal/login-modal.component';\nimport {PublicVideosComponent} from '../social-distance-editor/shared/modals/public-videos/public-videos.component'\nimport { youtubeVideo } from '../social-distance-editor/shared/models/video.model';\nimport { PdfsubscriberComponent } from '../social-distance-editor/shared/modals/pdfsubscriber/pdfsubscriber.component';\nimport { Router, NavigationEnd, ActivatedRoute } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { LaligaContactCauModalComponent } from '../social-distance-editor/shared/modals/laliga-contact-cau-modal/laliga-contact-cau-modal.component';\n\n@Component({\n selector: 'app-home',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.scss','../header/header.component.scss'],\n providers: [\n\n ]\n})\nexport class HomeComponent implements OnInit {\n @HostListener(\"scroll\", ['$event'])\n\n bsModalRef: BsModalRef;\n version = \"0\";\n slides = [];\n slideConfig = {\n slidesToShow: 8, slidesToScroll: 3,\n dots: false, infinite: true, centerMode: true,\n autoplay: true, speed: 1000, autoplaySpeed: 2000,\n arrows: false,\n responsive: [\n {\n breakpoint: 1024,\n settings: {\n slidesToShow: 4\n }\n },\n {\n breakpoint: 600,\n settings: {\n slidesToShow: 3\n }\n },\n {\n breakpoint: 480,\n settings: {\n slidesToShow: 2\n }\n }\n ]\n };\n\n constructor(\n private versionService:VersionService,\n private modalService: BsModalService,\n private activatedRoute: ActivatedRoute,\n private translate: TranslateService,\n private sanitizer: DomSanitizer\n ) {\n\n }\n\n client;\n documentation_url='/documentation';\n main_video_url = this.sanitizer.bypassSecurityTrustResourceUrl('https://www.youtube.com/embed/rTnsOk8X6hY');\n\n ngOnInit(): void {\n this.version = this.versionService.getVersion();\n\n if (this.activatedRoute.snapshot.routeConfig.path.toLowerCase() === 'laliga'){\n this.client = this.activatedRoute.snapshot.routeConfig.path.toLowerCase();\n this.documentation_url =\"/documentation/\"+this.client;\n this.main_video_url = this.sanitizer.bypassSecurityTrustResourceUrl(\"https://www.youtube.com/embed/iXgCRnqKMDA\");\n this.translate.use('es');\n }\n\n\n this.initSlides();\n\n }\n\n slickInit(e) {\n/* console.log('slick initialized');\n */ }\n \n breakpoint(e) {\n/* console.log('breakpoint');\n */ }\n \n afterChange(e) {\n/* console.log('afterChange');\n */ }\n \n beforeChange(e) {\n/* console.log('beforeChange');\n */ }\n\n private initSlides(){\n let nlogos = 51;\n let exclude = [];\n if(this.client==='laliga'){\n nlogos = 11;\n }\n for(let i = 0;i<=nlogos;i++){\n if(exclude.indexOf(i)==-1){\n if(this.client==='laliga'){\n this.slides.push({img:\"/assets/img/slider/laliga/logo-min-\"+i+\".png\",desc:\"\"});\n }else{\n this.slides.push({img:\"/assets/img/slider/logo-min-\"+i+\".png\",desc:\"\"});\n }\n\n }\n }\n }\n public onOpenLoginModal(): void {\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered',\n backdrop: false,\n ignoreBackdropClick: false,\n initialState: {}\n };\n this.bsModalRef = this.modalService.show(LoginModalComponent, modalConfig);\n }\n\n public onOpenPdfSubscriberModal(): void {\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered',\n backdrop: false,\n ignoreBackdropClick: false,\n initialState: {}\n };\n this.bsModalRef = this.modalService.show(PdfsubscriberComponent, modalConfig);\n }\n\n\n public openVideo(url, title){\n const videoData : youtubeVideo ={\n raw : url,\n title : title\n }\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered modal-dialog-video',\n backdrop: false,\n ignoreBackdropClick: false,\n initialState: {\n video : videoData\n }\n };\n this.bsModalRef = this.modalService.show(PublicVideosComponent, modalConfig);\n }\n\n\n playVideo(event: any) {\n event.target.play();\n }\n stopVideo(event: any) {\n event.target.pause();\n\n }\n\n public onOpenContactCau(): void {\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered',\n backdrop: false,\n ignoreBackdropClick: false,\n initialState: {}\n };\n this.bsModalRef = this.modalService.show(LaligaContactCauModalComponent, modalConfig);\n }\n}\n","\n\n\n\n
\n
\n
\n

{{ 'home.banner.b1' | translate }}

\n

{{ 'home.banner.b2' | translate }}

\n

{{ 'home.banner.b3' | translate }}

\n \n {{ 'home.section1.version' | translate }} {{version}} {{ 'home.section1.available' | translate }}. {{ 'home.section1.seechangelog' | translate }}\n \n
\n
\n
\n\n
\n
\n
\n
\n

{{ 'home.section1.title' | translate }}

\n

\n {{ 'home.section1.content1' | translate }}\n

\n

\n {{ 'home.section1.content2' | translate }} {{ 'home.section1.bold1' | translate }} \n {{ 'home.section1.content3' | translate }} {{ 'home.section1.bold2' | translate }}\n

\n\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n

{{ 'home.section2.title' | translate }}

\n
\n
\n
\n {{ 'home.section2.new' | translate }}\n
\n
\n
\n
\n

{{ 'home.section2.feature5.title' | translate }}

\n

{{ 'home.section2.feature5.content' | translate }}

\n
\n

\n {{ 'home.section2.seefullvideo' | translate }}\n

\n
\n
\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n

{{ 'home.section2.feature1.title' | translate }}

\n

{{ 'home.section2.feature1.content' | translate }}

\n
\n

\n {{ 'home.section2.seefullvideo' | translate }}\n

\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n

{{ 'home.section2.feature2.title' | translate }}

\n

{{ 'home.section2.feature2.content' | translate }}

\n
\n

\n {{ 'home.section2.seefullvideo' | translate }}\n

\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n

{{ 'home.section2.feature3.title' | translate }}

\n

{{ 'home.section2.feature3.content' | translate }}

\n
\n

\n {{ 'home.section2.seefullvideo' | translate }}\n

\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n

{{ 'home.section2.feature4.title' | translate }}

\n

{{ 'home.section2.feature4.content' | translate }}

\n
\n

\n {{ 'home.section2.seefullvideo' | translate }}\n

\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n

{{ 'home.section3.title' | translate }}

\n
\n
\n \n
\n \"{{\n
\n
\n
\n
","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-legal',\n templateUrl: './legal.component.html',\n styleUrls: ['./legal.component.scss']\n})\nexport class LegalComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n\n\n\n
\n
\n

Privacy Policy: Additional information on Data Protection

\n

1. Controller

\n

Who is the controller of the processing of your personal data?

\n

\n Identity: Mobile Media Content, S.L.
\n NIF: B-65799454
\n Address: C\\ Àlaba 61, 6th 1 A-2, 08005 Barcelona (Spain)
\n Email: enquiries@3ddigitalvenue.com\n

\n

2. PURPOSES OF DATA PROCESSING

\n

In compliance with the provisions of the General Data Protection Regulation (EU) 2016/679, \n as well as well as the national data protection applicable law, we inform you \n that Mobile Media Content, S.L. processes the personal data you provide in order \n to send you commercial communications of your interest.

\n

3. DATA STORAGE PERIOD

\n

Your data will be stored until you request their removal, and, where appropriate, \n for the time necessary to fulfil any legal obligations.

\n

4. LEGITIMATION

\n

\n What is the legitimacy for the processing of your personal data?\n

\n

\n The legal basis for the processing of your personal data corresponding to the purposes (1) to (3) included in section 2 above (\"Purposes\") are the following:\n

\n
    \n
  • In relation to the purpose (1) the legal basis is the express consent (clear affirmative action) given to Mobile Media Content, S.L. at the time of collection of your personal data.
  • \n
  • In relation to the purposes (2) and (3) the legal basis are the (i) the express consent (clear affirmative action) given to Mobile Media Content, S.L. at the time of collection of your personal data, as well as, (ii) the intention to enter into a contract.
  • \n
\n\n

5. RECIPIENTS

\n

Your personal data will not be transferred to any third party, except to:

\n
    \n
  • Third parties whose intervention is necessary for the correct management of the service provision.
  • \n
  • Public bodies and authorities (administrative or judicial) in those cases where a legal rule so provides.
  • \n
\n\n

6. RIGHTS

\n

What rights do you have in relation to your personal data and how can you exercise them?

\n

\n You have the right to exercise the following rights:\n

\n
    \n
  • Access to your personal data.
  • \n
  • Request the rectification or modification of inaccurate data.
  • \n
  • Request their deletion when, among other reasons, the data are no longer necessary for the purposes they were collected.
  • \n
  • Request, under certain circumstances, the limitation of the processing of your data, in which case we will only keep them for the exercise or defense of claims.
  • \n
  • Oppose, in certain circumstances and for reasons related to your particular situation, the processing of your data. MOBILE MEDIA CONTENT, S.L. will cease to process the data, except for compelling legitimate reasons, or the exercise or defense of possible claims.
  • \n
  • Request the portability of the data.
  • \n
\n

\n Likewise, you may withdraw the consent given at any time, without this affecting the legality of the processing based on the consent given prior to its withdrawal. If you wish to exercise any of your rights, you may contact us, either in person to the corporate address of MOBILE MEDIA CONTENT, S.L. at the address given above, or by sending an e-mail to enquiries@3ddigitalvenue.com, identifying yourself accordingly.Finally, we inform you that you can address the Spanish Data Protection Agency and other competent public bodies for any claim derived from the processing of your personal data. \n

\n
\n
\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';\nimport { Observable, Subject } from 'rxjs';\n@Injectable({\n providedIn: 'root'\n})\nexport class ApiService {\n apiRoot = '/api';\n \n constructor(private http: HttpClient) {\n \n }\n\n // Este método se tiene que llamar despues de crear la View en BD y así obtener el viewID\n // viewId Creada en BD : De momento pasar un numero fijo\n // data: Objetos de datos JSON que se genera del CSV.\n public postFile(viewId,data: any, type:string): Observable {\n const blob = new Blob([JSON.stringify(data)], {type: 'application/json'});\n const body = new FormData();\n body.append('scvviewfile', blob, type+'.json');\n return this.http.post(`${this.apiRoot}/scv/view/${viewId}/files/${type}`, body);\n }\n\n public postRawFile(viewId, file: File, ticketplan){\n const body = new FormData();\n body.append('scvrawfile', file);\n return this.http.post(`${this.apiRoot}/scv/view/${viewId}/rawfiles?ticketplan=${ticketplan}`, body);\n }\n public createView(body: any): Observable {\n return this.http.post(`${this.apiRoot}/scv/view/`, body);\n }\n public updateView(viewId:number, body: any): Observable {\n return this.http.patch(`${this.apiRoot}/scv/view/${viewId}`, body);\n }\n public getView(id: number): Observable {\n return this.http.get(`${this.apiRoot}/scv/view/${id}`);\n }\n // type: only allowed ticketplans, pricescales, seating\n public getViewFile(id: number,type:string): Observable {\n return this.http.get(`${this.apiRoot}/scv/view/${id}/files/${type}`);\n }\n\n public getTestCDNFile(): Observable {\n return this.http.get(`${this.apiRoot}/scv/filefromcdn`);\n }\n public getCDNFile(id: number,type:string,key?:string): Observable {\n if(key){\n return this.http.get(`${this.apiRoot}/scv/view/${id}/share/${key}/cdn/files/${type}`);\n }else{\n return this.http.get(`${this.apiRoot}/scv/cdn/view/${id}/files/${type}`);\n }\n }\n public getList(): Observable {\n return this.http.get(`${this.apiRoot}/scv/view`);\n }\n\n public deleteView(id: number): Observable {\n return this.http.delete(`${this.apiRoot}/scv/view/${id}`);\n }\n\n public rawGet(endpoint: string): Observable{\n return this.http.get(`${endpoint}`);\n }\n\n public generatePublicKey(id: number): Observable{\n return this.http.get(`${this.apiRoot}/scv/view/${id}/share/`);\n }\n public deletePublicKey(id: number): Observable{\n return this.http.delete(`${this.apiRoot}/scv/view/${id}/share/`);\n }\n public getSharedView(id: number, key: string): Observable{\n return this.http.get(`${this.apiRoot}/scv/view/${id}/share/${key}`);\n }\n \n public loginSharedView(id: number, key: string, username: string, password: string){\n const body = {\n username : username,\n password: password\n }\n return this.http.post(`${this.apiRoot}/scv/view/${id}/share/${key}/login`,body);\n }\n}","import { Injectable} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\nimport { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';\nimport { FormatNumberService } from '../../social-distance-editor/services/format-number.service';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { Seatingchartviewer } from '../models/seatingchartviewer-data.model';\nimport { ApiService} from './api.service';\n@Injectable({ providedIn: 'root' })\n\nexport class SCVDataService extends DataService {\n\n private invokeData: Subject = new Subject();\n private invokeSCVView: Subject = new Subject();\n public data: {\n seating: any;\n pricescales: any;\n plans: any;\n seatstatus: any;\n buyertypesgroups: any;\n holdcodes: any;\n buyertypes: any;\n };\n public scvmapId = ['main_tiers_status'];\n public loadFromUpload = false;\n\n/* public ticketplansDescription= [\n {\"desc\":\"2021 Full Season\",\"color\":\"red1\",\"code\":\"21FULL\"},\n {\"desc\":\"2021 Full Season Broker\",\"color\":\"red2\",\"code\":\"21FULLBRKR\"},\n {\"desc\":\"2021 Full Season Comp\",\"color\":\"red3\",\"code\":\"21FULLCMP\"},\n {\"desc\":\"2021 Half Season A\",\"color\":\"yellow1\",\"code\":\"21HALFA\"},\n {\"desc\":\"2021 Half Season B\",\"color\":\"yellow2\",\"code\":\"21HALFB\"},\n {\"desc\":\"2021 Partial Plan 1\",\"color\":\"blue1\",\"code\":\"21PLAN1\"},\n {\"desc\":\"2021 Partial Plan 2\",\"color\":\"blue2\",\"code\":\"21PLAN2\"},\n {\"desc\":\"2021 Partial Plan 3\",\"color\":\"blue3\",\"code\":\"21PLAN3\"},\n {\"desc\":\"2021 Partial Plan 4\",\"color\":\"blue4\",\"code\":\"21PLAN4\"},\n {\"desc\":\"2021 Pick 10 Pack\",\"color\":\"purple1\",\"code\":\"21PICK10\"},\n ]; */\n/* public pricescalesDescription = {\n \"BATSCC\":\"CommunityAmerica Crown Club\",\n \"DGBOXF\":\"Front Dugout Box\",\n \"DCLUB\":\"Konica Minolta Diamond Club\",\n \"LEXINF\":\"Loge Infield\",\n \"DGBOXR\":\"Dugout Box\",\n \"DGPLZI\":\"Inner Dugout Plaza\",\n \"VWBOX\":\"View Box\",\n \"FDPLZ\":\"Field Plaza\",\n \"DGPLZO\":\"Dugout Plaza\",\n \"FDBOX\":\"Field Box\",\n \"VWRES\":\"View Reserved\",\n \"TRIPLE\":\"Triple Crown Suite\",\n \"DCTBLE\":\"Konica Minolta Diamond Clb Tbl\",\n \"DCMVP\":\"Konica MinoltaDiamond Club MVP\",\n \"OFBOX\":\"Outfield Box\",\n \"DCBOX\":\"Konica MinoltaDiamond Club Box\",\n \"SIGSTE\":\"Signature Suite\",\n \"PRESS\":\"Press Level Suites\",\n \"LEXOUT\":\"Loge Outfield\",\n \"CRAFT\":\"Craft and Draft Seats\",\n \"OUTPLZ\":\"Outfield Plaza\"\n } */\n\n public scvView;\n constructor(protected http: HttpClient,\n protected formatMumber: FormatNumberService,\n protected apiService: ApiService) {\n super(http,formatMumber);\n\n this.data = {\n seating : {},\n pricescales: {},\n plans: {},\n seatstatus: {},\n buyertypesgroups: {},\n buyertypes: {},\n holdcodes: {}\n }\n\n }\n\n public getData(): Observable{\n return this.invokeData.asObservable();\n }\n public nextData(data: any): void{\n this.invokeData.next(data);\n }\n public setData(seating: any, pricescales: any, plans: any, seatstatus: any,buyertypesgroups: any, holdcodes: any, buyertypes: any) {\n this.data= {\n seating : seating,\n pricescales: pricescales,\n plans: plans,\n seatstatus: seatstatus,\n buyertypesgroups: buyertypesgroups,\n holdcodes: holdcodes,\n buyertypes: buyertypes\n }\n \n this.nextData(this.data);\n return this.data;\n }\n\n public setSeating(data){\n this.data.seating = data;\n }\n\n public setPricescales(data){\n this.data.pricescales = data;\n }\n\n public getPricescales(){\n return Object.keys(this.data.pricescales);\n }\n public getSeatInfo(seat_id:string){\n return this.data.seating[seat_id];\n }\n public getSeats(){\n return Object.keys(this.data.seating);\n }\n\n public setPlans(data){\n this.data.plans = data;\n }\n\n public getSeatsByPackageCode(packageCode){\n if(this.data.plans[packageCode]){\n return this.data.plans[packageCode].seats\n }\n return [];\n }\n\n public getSeatsByPricescale(pricescale){\n if(this.data.pricescales[pricescale]){\n return this.data.pricescales[pricescale].seats\n }\n return [];\n }\n public getBuyertypesgroups(){\n return Object.keys(this.data.buyertypesgroups);\n }\n public getBuyertypes(){\n return Object.keys(this.data.buyertypes);\n }\n public getHoldcodes(){\n return Object.keys(this.data.holdcodes);\n }\n public getAvailablePlans(){\n return Object.keys(this.data.plans);\n }\n public getSCVView(): Observable{\n return this.invokeSCVView.asObservable();\n }\n public nextSCVView(data: any): void{\n this.invokeSCVView.next(data);\n }\n public setSCVView(SCVView){\n this.scvView = SCVView;\n this.nextSCVView(SCVView);\n }\n public generatePublicKey(id: number): Observable{\n return this.apiService.generatePublicKey(id);\n }\n\n public stopSharingSCVView(id: number): Observable{\n return this.apiService.deletePublicKey(id);\n }\n\n public updateSCVView(id:number,data: any){\n return this.apiService.updateView(id,data);\n }\n public loginSharedView(id,key,username,password){\n return this.apiService.loginSharedView(id, key, username,password);\n }\n resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable{\n const id = route.params['id'];\n let result = this.apiService.getView(id);\n if(route.params['key']){\n let key = route.params['key'];\n result = this.apiService.getSharedView(id,key);\n }\n return result;\n }\n}","import { Injectable } from \"@angular/core\";\nimport { AsyncSubject, config, Observable, Subject } from \"rxjs\";\nimport { SCVDataService } from \"../seatingchartviewer/services/data.service\";\nimport { DataService } from \"../social-distance-editor/services/data.service\";\nimport { Venue } from \"../social-distance-editor/shared/models/venue-data.model\";\nimport { User } from \"../social-distance-editor/shared/models/user-data.model\";\nimport { NavigationEnd, Router } from \"@angular/router\";\n\nexport interface Platform {\n auth: User | null;\n venues: {\n all: Venue[];\n selectList: Venue[];\n default: Venue | null;\n };\n configuration: Configuration;\n route: any;\n}\ninterface Configuration {\n private: boolean;\n workspace: boolean; // Is v2 : workspace + scv + future new plugins\n onlySDM: boolean; // Flag allow only sdm deprecated version\n}\n@Injectable({ providedIn: \"root\" })\nexport class PlatformService {\n private invokeClientVenue: Subject = new Subject();\n private invokeConfiguration: Subject = new Subject();\n private asyncConfiguration$: AsyncSubject = new AsyncSubject();\n\n private platform: Platform = {\n auth: null,\n venues: {\n all: [],\n selectList: [],\n default: null,\n },\n configuration: {\n private: false,\n workspace: false, // Is v2 : workspace + scv + future new plugins\n onlySDM: false, // Flag allow only sdm deprecated version\n },\n route: {},\n };\n\n constructor(private SCVDataService: SCVDataService, private GeneralDataService: DataService, private router: Router) {\n this.router.events.subscribe((val) => {\n if (val instanceof NavigationEnd) {\n this.platform.route = val;\n }\n });\n }\n // Setting platform config\n public getPlatform$(): Observable {\n return this.invokeConfiguration.asObservable();\n }\n public getPlatform(): Platform {\n return this.platform;\n }\n\n public nextPlatform(platform: Platform): void {\n this.invokeConfiguration.next(platform);\n }\n public setAsyncPlatform(platform: Platform): void {\n this.asyncConfiguration$.next(platform);\n this.asyncConfiguration$.complete();\n }\n public getAsyncPlatform$(): Observable {\n return this.asyncConfiguration$.asObservable();\n }\n public setAuth(auth: User) {\n this.platform.auth = auth;\n this.nextPlatform(this.platform);\n }\n\n public refreshPlatform() {\n this.nextPlatform(this.platform);\n }\n // Setting config\n public setConfiguration(configuration: Configuration) {\n this.platform.configuration = configuration;\n this.nextPlatform(this.platform);\n }\n public setConfigurationPrivate(status: boolean) {\n this.platform.configuration.private = status;\n this.nextPlatform(this.platform);\n }\n public setConfigurationWorkspace(status: boolean) {\n this.platform.configuration.workspace = status;\n if (status) {\n this.platform.configuration.onlySDM = false;\n }\n this.nextPlatform(this.platform);\n }\n public setConfigurationOnlySDM(status: boolean) {\n this.platform.configuration.onlySDM = status;\n if (status) {\n this.platform.configuration.workspace = false;\n }\n this.nextPlatform(this.platform);\n }\n\n // Setting venue management\n public getClientVenues$(): Observable {\n return this.invokeClientVenue.asObservable();\n }\n\n public nextClientVenue(clientVenues: Venue[]): void {\n this.nextPlatform(this.platform);\n this.invokeClientVenue.next(clientVenues);\n }\n\n public removeClientVenues() {\n this.platform.venues.all = [];\n this.platform.venues.selectList = [];\n this.platform.venues.default = null;\n this.nextClientVenue(this.platform.venues.all);\n }\n public setClientVenues(clientVenues: Venue[], defaultVenue?: Venue) {\n if (clientVenues.length) {\n this.platform.venues.all = [];\n this.platform.venues.selectList = [];\n this.platform.venues.default = null;\n this.platform.venues.all = clientVenues;\n this.platform.venues.selectList = clientVenues;\n if (!this.platform.venues.default) {\n this.platform.venues.default = this.platform.venues.selectList[0];\n }\n if (defaultVenue) {\n this.platform.venues.default = defaultVenue;\n }\n this.nextClientVenue(clientVenues);\n }\n return this.platform.venues;\n }\n\n public setClientVenueFiltered(all: Venue[], filteredList: Venue[]) {\n this.platform.venues.all = all;\n this.platform.venues.selectList = [];\n this.platform.venues.default = null;\n if (filteredList.length) {\n this.platform.venues.selectList = filteredList;\n this.platform.venues.default = filteredList[0];\n }\n console.log(this.platform);\n this.nextClientVenue(filteredList);\n }\n\n public setDefaultVenue(venue: Venue) {\n this.platform.venues.default = venue;\n this.nextClientVenue(this.platform.venues.selectList);\n }\n}\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\nimport { GroupsService } from 'src/app/social-distance-editor/services/groups.service';\nimport { Subscription } from 'rxjs';\nimport { CategoriesService } from 'src/app/social-distance-editor/services/categories.service';\nimport { SelectionService } from 'src/app/social-distance-editor/services/selection.service';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\nexport class FooterComponent implements OnInit, OnDestroy {\n\n private subscriptions: Subscription[] = [];\n\n @Input() page: 'setup' | 'simulation' | 'allocation';\n\n get isSimulation() {\n return this.page === 'simulation';\n }\n\n nodeType: 'section' | 'seat' = 'section';\n currentCategories: string | string[] = [];\n currentSelection = [];\n currentSelectionRows: number;\n currentCategoriesWithColors = [];\n\n get currentSelectionCount() {\n if (this.nodeType === 'section') {\n return this.currentSelection.length;\n } else if (this.nodeType === 'seat') {\n return this.currentSelectionRows;\n }\n return 0;\n }\n\n get groupsNumber() {\n const groupsHash = {};\n this.currentSelection.forEach(element => {\n if (this.groups.groupsHash.nodes[element.id]) {\n groupsHash[this.groups.groupsHash.nodes[element.id]] = true;\n }\n });\n return Object.keys(groupsHash).length;\n }\n\n get categoriesNumber() {\n return this.currentCategories.length;\n }\n\n get currentSelectionType() {\n if (this.nodeType === 'section') {\n return 'section';\n } else if (this.nodeType === 'seat') {\n return 'row';\n }\n return '';\n }\n\n constructor(private groups: GroupsService,\n public categories: CategoriesService,\n private selection: SelectionService\n ) { }\n\n ngOnInit(): void {\n this.subscriptions.push(this.selection.nodeType.subscribe(\n type => {\n this.nodeType = type;\n }\n ));\n this.subscriptions.push(this.selection.selectionSubject.subscribe(\n selection => {\n const categoriesWeights = {\n regular: 1,\n vip: 2,\n disabled: 3,\n locked: 4\n };\n this.currentCategoriesWithColors = [];\n\n this.currentSelection = selection;\n if (this.nodeType === 'seat') {\n const rowsHash = {};\n selection.forEach(seat => {\n const split = seat.id.split('_')[1].split('-');\n const section = split[0];\n const row = split[1];\n rowsHash[section + row] = true;\n });\n this.currentSelectionRows = Object.keys(rowsHash).length;\n }\n const currentCategories = this.categories.getCurrentCategories(this.nodeType, selection);\n currentCategories.sort((a, b) => categoriesWeights[a] - categoriesWeights[b]);\n if (currentCategories) {\n const index = currentCategories.indexOf('none');\n if (index > -1) {\n currentCategories.splice(index, 1);\n }\n \n if (typeof currentCategories === 'string') {\n this.currentCategories = [currentCategories];\n } else {\n this.currentCategories = currentCategories;\n }\n } else {\n this.currentCategories = [];\n }\n\n for(let i =0;i subscription.unsubscribe());\n }\n\n}\n","
\n
\n\n
\n \n {{'setup.footer.currentselection' | translate}}: \n \n
\n
\n\n 0\n \n {{'setup.footer.'+currentSelectionType | translate}}s, \n \n
\n
\n {{currentSelectionCount}}\n 1; else elementsingle\">\n {{'setup.footer.'+currentSelectionType | translate}}s, \n \n \n \n {{'setup.footer.'+currentSelectionType | translate}}, \n \n \n
\n
\n
\n 0\n {{'setup.footer.groups' | translate}}, \n
\n
\n
\n \n {{groupsNumber}}\n 1; else groupsingle\">\n {{'setup.footer.groups' | translate}}, \n \n \n \n {{'setup.footer.group' | translate}}, \n \n
\n
\n
\n 0\n {{'setup.footer.categories' | translate}}\n
\n
\n
\n
\n
0\">\n \n {{categoriesNumber}}\n \n {{'setup.footer.category' | translate}}: \n \n \n \n \n {{'setup.footer.categories' | translate}}:\n \n \n \n
\n
\n
\n
\n
\n
\n\n
","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TopbarComponent } from './topbar/topbar.component';\nimport { SidebarComponent } from './sidebar/sidebar.component';\nimport { MapInterfaceComponent } from './map-interface/map-interface.component';\n//import { LegendComponent } from './map-interface/legend/legend.component';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { ToastrModule } from 'ngx-toastr';\nimport { FooterComponent } from './footer/footer.component';\nimport { SelectiondataComponent } from './sidebar/selectiondata/selectiondata.component';\nimport {CustomCategoriesModule} from '../plugins/custom-categories/custom-categories.module';\n\n\n\n@NgModule({\n declarations: [\n TopbarComponent,\n SidebarComponent,\n MapInterfaceComponent,\n FooterComponent,\n SelectiondataComponent\n //LegendComponent\n ],\n imports: [\n CommonModule,\n ToastrModule.forRoot(),\n FormsModule,\n TranslateModule,\n BsDropdownModule,\n CustomCategoriesModule\n ],\n exports: [\n FormsModule,\n TopbarComponent,\n SidebarComponent,\n MapInterfaceComponent,\n FooterComponent\n //LegendComponent\n ]\n})\nexport class InterfaceModule { }\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-map-interface',\n templateUrl: './map-interface.component.html',\n styleUrls: ['./map-interface.component.scss']\n})\nexport class MapInterfaceComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n
\n
\n
\n
\n\n\n\n\n\n
\n
\n

\n
\n
\n\n\n
\n
\n
\n
\n\n
\n
\n
\n
\n\n","import { Component, OnInit, Input } from '@angular/core';\nimport { SelectionService } from 'src/app/social-distance-editor/services/selection.service';\nimport { GroupsService } from 'src/app/social-distance-editor/services/groups.service';\nimport { CategoriesService } from 'src/app/social-distance-editor/services/categories.service';\nimport { PricingService } from 'src/app/social-distance-editor/services/pricing.service';\nimport { InventoryService } from 'src/app/social-distance-editor/services/inventory.service';\n\nimport { FormatNumberService } from 'src/app/social-distance-editor/services/format-number.service';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\nimport { AuthenticationService } from 'src/app/auth/authentication.service';\nimport { User } from 'src/app/social-distance-editor/shared/models/user-data.model';\nimport { formatPercent } from '@angular/common';\n\n@Component({\n selector: 'app-selectiondata',\n templateUrl: './selectiondata.component.html',\n styleUrls: ['./selectiondata.component.scss']\n})\nexport class SelectiondataComponent implements OnInit {\n // @Input()\n // set open(val) {\n // this._open = val;\n // if (val && this.lastSelection) {\n // this.processSelection(this.lastSelection);\n // }\n // }\n @Input() page: 'setup' | 'simulation' | 'shared';\n\n constructor(\n private selection: SelectionService,\n private inventory: InventoryService,\n private numberFormat: FormatNumberService,\n private dataService: DataService,\n private authService: AuthenticationService\n ) { }\n\n nodeType;\n currentSelectionData = {};\n //_open;\n lastSelection;\n currencySymbol;\n totalRevenue;\n totalRevenueString;\n totalSeats;\n totalRows;\n totalSections;\n displayInfo = false;\n\n objectKeysOf(object) {\n return Object.keys(object);\n }\n\n ngOnInit(): void {\n if (this.page !== 'shared') {\n if (this.dataService.getUser()){\n this.currencySymbol = this.dataService.getUser().user.client.currency;\n }else{\n this.authService.getUserLogged$().subscribe(\n response => {\n this.currencySymbol = (response as User).user.client.currency;\n }\n );\n }\n } else {\n if (this.dataService.shareData) {\n this.currencySymbol = this.dataService.shareData.data.currency;\n } else {\n this.dataService.shareDataSubject.subscribe(\n response => {\n this.currencySymbol = this.dataService.shareData.data.currency;\n }\n );\n }\n }\n\n this.selection.selectionSubject.subscribe(\n selection => {\n if (this.displayInfo) {\n this.processSelection(selection);\n }\n this.lastSelection = selection;\n }\n );\n }\n\n processSelection(selection) {\n this.currentSelectionData = {};\n this.totalRevenue = 0;\n this.totalSections = 0;\n this.totalRows = 0;\n this.totalSeats = 0;\n if (selection.length) {\n this.nodeType = selection[0].type;\n if (this.nodeType === 'section') {\n selection.forEach(element => {\n const section = element.id.split('_')[1].split('-')[0];\n this.currentSelectionData[section] = JSON.parse(JSON.stringify(this.inventory.getInventoryData()[section]));\n });\n } else if (this.nodeType === 'seat') {\n selection.forEach(element => {\n const split = element.id.split('_')[1].split('-');\n const section = split[0];\n const row = split[1];\n const seat = split[2];\n if (!this.currentSelectionData[section]) {\n this.currentSelectionData[section] = { elements: {}, data: {} };\n }\n if (!this.currentSelectionData[section].elements[row]) {\n this.currentSelectionData[section].elements[row] = { elements: {}, data: {} };\n }\n this.currentSelectionData[section].elements[row].elements[seat] =\n JSON.parse(JSON.stringify(this.inventory.getInventoryData()[section].elements[row].elements[seat]));\n });\n }\n\n\n for (const key in this.currentSelectionData) {\n if (this.currentSelectionData.hasOwnProperty(key)) {\n const element = this.currentSelectionData[key];\n this.recursiveDeepSearch(element);\n this.totalRevenue += parseFloat(element.data.price);\n this.totalSections += 1;\n this.totalRows += element.data.count;\n this.totalSeats += element.data.subcount;\n\n }\n }\n this.totalSections = this.formatNumber(this.totalSections);\n this.totalRows = this.formatNumber(this.totalRows);\n this.totalSeats = this.formatNumber(this.totalSeats);\n\n this.totalRevenueString = this.formatNumber(this.totalRevenue);\n }\n const selectionMap = selection.map(x => x.id);\n }\n\n /*\n * Joan añadiendo comentarios solo en las cosas nice:\n * Recursive Depth-first Search algorithm that goes through the child elements until it finds the lowest level.\n * It returns the data of the lowest level and computes its totals, and then proceeds to compute the inmediate higher level\n * until all element levels are covered.\n */\n recursiveDeepSearch(element) {\n if (Object.entries(element.elements).length) {\n for (const key in element.elements) {\n if (element.elements.hasOwnProperty(key)) {\n const newElement = element.elements[key];\n const elementData = JSON.parse(JSON.stringify(this.recursiveDeepSearch(newElement)));\n\n if (!element.data.price) {\n element.data.price = 0;\n }\n if (!element.data.unitprice) {\n element.data.unitprice = element.data.price;\n }\n if (!element.data.categories) {\n element.data.categories = {};\n }\n if (!element.data.count) {\n element.data.count = 0;\n }\n if (!element.data.avcount) {\n element.data.avcount = 0;\n }\n if (!element.data.subcount) {\n element.data.subcount = 0;\n }\n if (!element.data.unitprice) {\n element.data.unitprice = {};\n }\n\n if (Object.entries(elementData).length) {\n if (elementData.category) {\n element.data.categories[elementData.category] = true;\n } else if (Object.keys(elementData.categories).length) {\n Object.keys(elementData.categories).forEach(cat => {\n element.data.categories[cat] = true;\n });\n }\n if (typeof elementData.price !== 'undefined') {\n const floatPrice = parseFloat(elementData.price);\n\n if (elementData.unitprice && Object.keys(elementData.unitprice).length) {\n Object.keys(elementData.unitprice).forEach(up => {\n element.data.unitprice[up] = true;\n });\n } else {\n element.data.unitprice[this.formatNumber(floatPrice)] = true;\n }\n element.data.price += floatPrice;\n element.data.priceString = this.formatNumber(element.data.price);\n }\n element.data.count ++;\n element.data.countString = this.formatNumber(element.data.count);\n if (elementData.count) {\n element.data.subcount += elementData.count;\n element.data.subcountString = this.formatNumber(element.data.subcount);\n }\n if (elementData.avcount) {\n element.data.avcount += elementData.avcount;\n element.data.avcountString = this.formatNumber(element.data.avcount);\n } else if (elementData.status && elementData.status === 'available') {\n element.data.avcount ++;\n element.data.avcountString = this.formatNumber(element.data.avcount);\n }\n }\n }\n }\n }\n if (Object.entries(element.data).length) {\n return element.data;\n }\n }\n\n public toggleChildrens(domid,event){\n document.getElementById(\"domid_\"+domid).classList.toggle(\"closed\");\n document.getElementById(\"tetilla_\"+domid).classList.toggle(\"closed\");\n }\n public closeChildrens(domid,event){\n document.getElementById(\"domid_\"+domid).classList.add(\"closed\");\n document.getElementById(\"tetilla_\"+domid).classList.add(\"closed\");\n }\n public toggleSectiondata(domid,event){\n this.closeChildrens(domid,event);\n document.getElementById(\"domid_parent_\"+domid).classList.toggle(\"closed\");\n document.getElementById(\"tetilla_parent_\"+domid).classList.toggle(\"closed\");\n }\n \n public formatNumber(price: number): string {\n return this.numberFormat.formatNumber(price);\n }\n\n public displayInfoTab(){\n this.displayInfo = !this.displayInfo;\n //console.log(this.displayInfo);\n if(this.displayInfo){\n this.processSelection(this.lastSelection);\n }\n return this.displayInfo;\n }\n}\n","
\n
\n
\n
\n {{'setup.sidebar.selectioninfo.selectioninfotitle' | translate}}\n
\n
\n \n Sections\n {{totalSections}}\n \n
\n
\n \n Rows\n {{totalRows}}\n \n
\n
\n \n Seats\n {{totalSeats}}\n \n
\n
\n \n Total Revenue:\n {{totalRevenueString}}\n \n \n
\n
\n \n {{'setup.sidebar.selectioninfo.nothingselected' | translate}}\n \n
\n
\n
\n
\n
\n SECTION {{section.key}}\n
\n
\n
\n Categories\n
\n \n \n \n
\n
\n
\n
\n {{section.value.data.count}} Rows \n
\n
\n\n
\n
\n ROW {{row.key}}\n
\n
\n Categories\n
\n \n \n \n
\n
\n
\n
\n {{row.value.data.count}} Seats\n
\n
\n Seat Price\n
\n \n {{unitprice}}\n \n
\n
\n
\n
\n Row Revenue {{row.value.data.priceString}}\n
\n \n \n \n
\n \n
\n\n
\n {{section.value.data.subcountString}} Seats\n
\n
\n {{section.value.data.avcountString}} Available Seats\n
\n
\n Seat Price\n
\n \n {{unitprice}}\n \n
\n
\n
\n
\n Section Revenue {{section.value.data.priceString}}\n
\n \n\n
\n
\n\n
\n
\n
\n
\n
\n \n
\n
\n","import { Component, OnInit, ViewChild, ElementRef, Input, OnDestroy, DoCheck } from '@angular/core';\nimport { DVMService } from 'src/app/social-distance-editor/services/dvm.service';\nimport { CategoriesService } from 'src/app/social-distance-editor/services/categories.service';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\nimport { saveAs } from 'file-saver';\nimport { GroupsService } from 'src/app/social-distance-editor/services/groups.service';\nimport { PricingService } from 'src/app/social-distance-editor/services/pricing.service';\nimport { InventoryService } from 'src/app/social-distance-editor/services/inventory.service';\nimport { SelectionService } from 'src/app/social-distance-editor/services/selection.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FormatNumberService } from 'src/app/social-distance-editor/services/format-number.service';\nimport { BsModalService, BsModalRef, ModalOptions } from 'ngx-bootstrap/modal';\nimport { EditSimulationModalComponent } from 'src/app/social-distance-editor/shared/modals/edit-simulation-modal/edit-simulation-modal.component';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subscription, Subject } from 'rxjs';\nimport { ConfirmDeleteAllocationComponent } from 'src/app/social-distance-editor/plugins/allocator/components/modals/confirm-delete-allocation/confirm-delete-allocation.component';\nimport { ModalService } from 'src/app/social-distance-editor/services/modal.service';\nimport { SocialdistancingService } from 'src/app/social-distance-editor/services/socialdistancing.service';\nimport { AuthenticationService } from 'src/app/auth';\nimport { CategoryPriceModalComponent } from 'src/app/social-distance-editor/shared/modals/category-price-modal/category-price-modal.component';\nimport { AllocatorService } from '../../plugins/allocator/services/allocator.service';\nimport JSZip from 'jszip';\nimport { TiersService } from 'src/app/social-distance-editor/services/tiers.service';\nimport {AllocatorModalService} from '../../plugins/allocator/services/allocator-modal.service';\nimport {CustomCategoriesService} from '../../plugins/custom-categories/services/custom-categories.service';\nimport * as buffer from 'buffer';\nimport { Console } from 'console';\nimport { escapeRegExp } from '@angular/compiler/src/util';\n(window as any).Buffer = buffer.Buffer;\n\n@Component({\n selector: 'app-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss']\n})\nexport class SidebarComponent implements OnInit, OnDestroy {\n\n // @ViewChild('switcher-section') buttonSection: ElementRef;\n // @ViewChild('switcher-row') buttonRow: ElementRef;\n // @ViewChild('switcher-seat') buttonSeat: ElementRef;\n displayBtnText: boolean;\n\n //cutom categories\n ondownloadCustomcategories = false;\n\n private subscriptions: Subscription[] = [];\n\n @Input() page: 'setup' | 'simulation' | 'shared' | 'allocation';\n @Input() configurationSubject: Subject;\n\n get isSimulation() {\n return this.page === 'simulation' || this.page === 'shared' || this.page === 'allocation';\n }\n\n get isAllocation() {\n return this.page === 'allocation';\n }\n\n get allowAllocation(): boolean {\n return this.allocatorService.allowAllocation;\n }\n\n get hasAllocation(): boolean {\n return this.currentSimulation?.allocation === 1;\n }\n\n get allowCustomCategories(): boolean {\n return this.customCategoriesService.allowCustomCategories;\n }\n\n get configurationHasCustomCategories(): boolean {\n return this.customCategoriesService.configurationHasCustomCategories;\n }\n\n\n get isMultiSelection(): boolean {\n return this.selection.isMultiSelection;\n }\n\n public onNewAllocation(): void {\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered newsimulation-modal med-modal',\n backdrop: true,\n ignoreBackdropClick: true,\n initialState: {\n simulation: this.currentSimulation,\n currentVenue: this.currentVenue,\n configuration: this.configuration\n }\n };\n\n this.bsModalRef = this.allocatorModalService.showModal(modalConfig);\n // this.bsModalRef = this.allocatorService.showModal(modalConfig);\n }\n\n public onViewSimulation(): void {\n this.router.navigate(['/simulation/' + this.currentSimulation.id]);\n }\n\n public onViewAllocation(): void {\n this.router.navigate(['/allocation/' + this.currentSimulation.id]);\n }\n\n\n public onDownloadAllocation(): void {\n const file = this.allocatorService.resultFile;\n const fileName = this.allocatorService.resultFileName;\n if (file) {\n saveAs(file, fileName);\n } else {\n this.dataService.getAllocationResult(this.currentSimulation.id, this.allocatorService.ref).toPromise()\n .then((result) => {\n const zip = new JSZip();\n return zip.loadAsync(result)\n .then(() => {\n if (zip.files) {\n let count = 0;\n let key = null;\n for (const i in zip.files) {\n if (zip.files.hasOwnProperty(i) && zip.files[i].name !== 'undefined') {\n key = i;\n count++;\n }\n }\n if (count > 1) {\n const blob = new Blob([result], { type: 'application/zip'});\n const name = 'result.zip';\n this.allocatorService.resultFile = blob;\n this.allocatorService.resultFileName = name;\n saveAs(blob, name);\n } else {\n zip.file(key).async('blob')\n .then((fileBlob) => {\n this.allocatorService.resultFile = fileBlob;\n this.allocatorService.resultFileName = key;\n saveAs(fileBlob, key);\n });\n }\n }\n });\n });\n }\n }\n\n public confirmDeleteAllocation(){\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered simulation-modal',\n backdrop: true,\n ignoreBackdropClick: true,\n initialState:{\n simulation: this.currentSimulation\n }\n };\n this.bsModalRef = this.modalService.show(ConfirmDeleteAllocationComponent, modalConfig);\n }\n\n currentLayer = 'section';\n isRowsActive = false;\n nodeType: 'section' | 'seat' = 'section';\n uploadSeatmanifest: File;\n isUploadActive = false;\n alerts: Array = [];\n newPricing;\n currentCategories: string | string[] = [];\n currentSelection = [];\n isGroupSelected = false;\n isStrictlyGrouped = false;\n\n\n // currentSelectionRows: number;\n currentVenue;\n @ViewChild('inputFile') inputFile: ElementRef;\n displaySidebar = false;\n bsModalRef: BsModalRef;\n _clientData;\n configId: number;\n currentSimulation;\n configuration;\n currentyear = new Date().getFullYear();\n\n currentAvailability = 0;\n //currentAvailabilityPercentage = '';\n levels: Array = [];\n currentLevelName;\n currentLevelAvailability = 0;\n hasMapChanged = false;\n sharedData;\n\n currentMapId;\n displayAllocationBtn;\n\n get currentSelectionPricing() {\n if (typeof this.pricing.currentSelectionPricing[0] === 'string') {\n return this.pricing.currentSelectionPricing[0];\n } else {\n return '';\n }\n }\n\n get currentSelectionCount() {\n if (this.currentSelection) {\n return this.currentSelection.length;\n }\n return 0;\n }\n\n get currency() {\n return this.numberFormat.getCurrency();\n }\n\n get venueData() {\n if (this.page !== 'shared') {\n if (this.dataService.venueData && this.currentVenue) {\n return this.dataService.venueData[this.currentVenue];\n }\n } else {\n if (this.sharedData) {\n return this.sharedData.simulation.configuration;\n }\n }\n }\n\n get availability() {\n return this.currentAvailability;\n }\n\n // get availabilityPercentage() {\n // return this.currentAvailabilityPercentage;\n // }\n\n get isGroupsSelection() {\n return this.selection.isGroupsSelection;\n }\n\n get isSinglesSelection(){\n return this.selection.isSingleSelection;\n }\n\n constructor(private dvmService: DVMService,\n public categories: CategoriesService,\n private dataService: DataService,\n private groups: GroupsService,\n private inventory: InventoryService,\n private selection: SelectionService,\n private pricing: PricingService,\n private activatedRoute: ActivatedRoute,\n private numberFormat: FormatNumberService,\n private modalService: BsModalService,\n private ownModalService: ModalService,\n private socialDistancing: SocialdistancingService,\n private toastr: ToastrService,\n private authService: AuthenticationService,\n private activateRoute: ActivatedRoute,\n private allocatorService: AllocatorService,\n private allocatorModalService: AllocatorModalService,\n private customCategoriesService: CustomCategoriesService,\n private router: Router,\n private tiersService: TiersService) { }\n\n toggleMoveGroups() {\n if(this.hasAllocation){\n this.toastr.error(\"\",\"Moving groups is not allowed due to the allocation\");\n return;\n }\n this.selection.isGroupsSelection = !this.selection.isGroupsSelection;\n this.selection.isSingleSelection = false;\n this.unselectNodes();\n if (this.selection.isGroupsSelection){\n this.dvmService.viewer.addNodesToGroup(this.dvmService.getLockedseats(), \"lockedborderfilled\");\n this.toastr.success('', 'Enabled group edition. Click any group of seats to move them.',{ timeOut: 4000 });\n }else{\n this.dvmService.viewer.removeNodesFromGroup(this.dvmService.getLockedseats(), \"lockedborderfilled\");\n this.toastr.info('', 'Disabled group edition.');\n }\n\n }\n toggleSingleSelection() {\n if(this.hasAllocation){\n\n this.toastr.error(\"\",\"Editing single seats is not allowed due to the allocation\");\n return;\n }\n this.selection.isSingleSelection = !this.selection.isSingleSelection;\n this.selection.isGroupsSelection = false;\n this.selection.isMultiSelection = false;\n this.unselectNodes();\n if(this.selection.isSingleSelection){\n this.dvmService.viewer.addNodesToGroup(this.dvmService.getLockedseats(), \"lockedborderfilled\");\n this.toastr.success('', 'Enabled single seat edition. Click any seat to switch the availability.',{ timeOut: 5000 });\n }else{\n this.dvmService.viewer.removeNodesFromGroup(this.dvmService.getLockedseats(), \"lockedborderfilled\");\n\n this.toastr.info('', 'Disabled single seat edition.');\n }\n\n }\n\n // ngDoCheck(): void {\n // if (this.buttonSection.nativeElement.classList.contains('active')) {\n\n // }\n // }\n\n ngOnInit(): void {\n if (this.isSimulation){\n this.currentSimulation = this.dataService.simulationData;\n }else{\n this.resetSimulationFlags();\n }\n // this.toastr.info('', 'Price successfully assigned'),{ timeOut: 999999999 };\n this.configurationSubject.subscribe(\n configuration => {\n if (this.page === 'shared') {\n this.sharedData = configuration;\n this.configuration = configuration.simulation.configuration;\n this.currentVenue = configuration.venue.id;\n const venueHash = {\n [configuration.venue.id]: configuration.venue\n };\n this.dataService.venueData = venueHash;\n } else {\n this.configuration = configuration;\n }\n if (this.configuration.tier_list && this.configuration.tier_list.length) {\n this.levels = this.configuration.tier_list;\n const setInitialMap = () => {\n this.currentMapId = this.dvmService.viewer.getMapId();\n if (this.levels.length) {\n this.levels.forEach(level => {\n if (level['map_id'] === this.currentMapId) {\n this.currentLevelName = level['name'];\n }\n });\n }\n };\n // if (this.dvmService.isViewerSubjectInitialized) {\n // setInitialMap();\n // } else {\n const s = this.dvmService.mapSubject.subscribe(\n r => {\n s.unsubscribe();\n setInitialMap();\n }\n );\n // }\n }\n }\n );\n this.subscriptions.push(this.dataService.getCurrentSimulation$().subscribe(\n simulation => {\n //console.log(simulation);\n this.currentSimulation = simulation;\n if (this.currentSimulation.allocation){\n this.displayAllocationBtn = true;\n this.allocatorService.showAllocatedSeats = true;\n }\n this.currentAvailability = simulation.capacity;\n }\n ));\n this.inventory.availabilityLoadedSubject.subscribe(\n r => {\n this.currentLevelAvailability = this.dvmService.viewer.getNodesByState('seat', 'available').length;\n if(this.currentSimulation){\n this.currentAvailability = this.currentSimulation.capacity;\n }\n }\n );\n this.configId = this.activateRoute.snapshot.params.id;\n if (this.page !== 'shared') {\n this.subscriptions.push(this.authService.getUserLogged$().subscribe(\n client => {\n if (typeof client !== 'boolean') {\n this._clientData = client.user;\n this.getClientConfigs(this._clientData.client.id);\n }\n },\n error => {\n console.log('error landing get user logged');\n console.log(error);\n }\n ));\n } else {\n if (this.dataService.shareData) {\n this._clientData = {\n client: this.dataService.shareData.data\n };\n } else {\n this.dataService.shareDataSubject.subscribe(\n response => {\n this._clientData = {\n client: this.dataService.shareData.data\n };\n }\n );\n }\n }\n this.subscriptions.push(this.socialDistancing.calculationFinishedsubject.subscribe(\n result => {\n this.currentAvailability = this.currentSimulation.capacity;\n\n }\n ));\n this.subscriptions.push(this.dataService.getCurrentVenue$().subscribe(\n currentVenue => {\n this.currentVenue = currentVenue;\n }\n ));\n this.subscriptions.push(this.selection.selectionSubject.subscribe(\n selection => {\n this.currentSelection = selection;\n if (document.getElementById(\"btnsaveprice\")) {\n document.getElementById(\"btnsaveprice\").classList.add(\"disabled\");\n }\n if (this.currentSelection) {\n this.isGroupSelected = false;\n this.isStrictlyGrouped = true;\n this.currentSelection.forEach(node => {\n if (this.groups.groupsHash.nodes[node.id]) {\n this.isGroupSelected = true;\n } else {\n this.isStrictlyGrouped = false;\n }\n });\n }\n }\n ));\n\n if (this.isSimulation) {\n const s = this.dvmService.mapSubject.subscribe(\n viewer => {\n s.unsubscribe();\n //this.toggleRows(false);\n this.switchLayers('seat',false);\n this.subscriptions.push(this.dvmService.mapSubject.subscribe(\n mapChanged => {\n this.dvmService.viewer.layers.flags.automatic_control_level = false;\n this.unselectNodes();\n if (this.currentLayer==='section') {\n this.dvmService.viewer.layers.setLayerLevel(0);\n this.nodeType = 'section';\n } else {\n this.dvmService.viewer.layers.setLayerLevel(1);\n this.nodeType = 'seat';\n }\n }\n ));\n }\n );\n }\n }\n\n priceValueChange(value) {\n if (this.selection.lastSelection && this.selection.lastSelection.length) {\n const currentSelectionCategories = this.categories.getCurrentCategories(this.nodeType, this.selection.lastSelection);\n if (currentSelectionCategories.length === 1 && currentSelectionCategories[0] === 'locked') {\n if (typeof value === 'string' && parseFloat(value) < 1000000 && parseFloat(value) >= 0) {\n this.newPricing = value;\n document.getElementById(\"btnsaveprice\").classList.remove(\"disabled\")\n } else {\n this.newPricing = 0;\n document.getElementById(\"btnsaveprice\").classList.add(\"disabled\")\n }\n } else {\n if (typeof value === 'string' && parseFloat(value) < 1000000 && parseFloat(value) > 0) {\n this.newPricing = value;\n document.getElementById(\"btnsaveprice\").classList.remove(\"disabled\")\n } else {\n this.newPricing = 0;\n document.getElementById(\"btnsaveprice\").classList.add(\"disabled\")\n }\n }\n }\n }\n\n restartPricing() {\n if (document.getElementById('priceinput')) {\n (document.getElementById('priceinput') as HTMLInputElement).value = this.pricing.currentSelectionPricing[0];\n document.getElementById(\"btnsaveprice\").classList.add(\"disabled\");\n }\n }\n\n setNewPricing() {\n if (this.dvmService.viewer.getNodesByGroups(this.nodeType, 'selected').length) {\n // console.log(typeof this.newPricing);\n // console.log(parseFloat(this.newPricing));\n // console.log(this.nodeType);\n // console.log(this.currentLayer);\n if (typeof this.newPricing === 'string' && parseFloat(this.newPricing) < 1000000 && parseFloat(this.newPricing) >= 0) {\n if (this.currentLayer === 'seat') {\n const inventory = this.inventory.getInventoryData();\n const selection = this.dvmService.viewer.getNodesByGroups(this.nodeType, 'selected');\n selection.forEach(node => {\n const split = node.id.split('_')[1].split('-');\n const section = split[0];\n const row = split[1];\n const seat = split[2];\n inventory[section].elements[row].elements[seat].data.price = this.newPricing;\n });\n } else {\n this.pricing.setPricing(this.nodeType, this.dvmService.viewer.getNodesByGroups(this.nodeType, 'selected'),\n parseFloat(this.newPricing));\n }\n this.subscriptions.push(this.inventory.sendInventoryData(this.isSimulation).subscribe(\n response => {\n this.toastr.success('', 'Price successfully assigned');\n }\n ));\n // En caso que en el futuro se puedan cambiar precios o categorias por simulación, comprobar si\n // estamos en una simulación y llamar con 'all'.\n this.inventory.updateTotalsHash('configurations');\n document.getElementById(\"btnsaveprice\").classList.add(\"disabled\");\n this.selection.selectionSubject.next(this.selection.lastSelection);\n }\n }\n }\n\n switchLayers(layer: string, quit: boolean){\n const layers_levels = {\n section : 0,\n row: 1,\n seat: 1\n }\n\n if(quit || (layer===this.currentLayer && layers_levels[layer]===this.dvmService.viewer.layers.getLayerLevel())) return null;\n\n this.dvmService.viewer.layers.flags.automatic_control_level = false;\n this.unselectNodes();\n this.restartPricing();\n\n if (layer === 'section') {\n this.dvmService.viewer.layers.setLayerLevel(0);\n this.selection.nodeType.next('section');\n this.nodeType = 'section';\n\n } else {\n this.dvmService.viewer.layers.setLayerLevel(1);\n this.selection.nodeType.next('seat');\n this.nodeType = 'seat';\n }\n if(layer=='row'){\n this.selection.isGroupsSelection = false;\n this.selection.isSingleSelection = false;\n }else if(layer=='seat'){\n this.selection.isMultiSelection = false;\n }\n this.currentLayer = layer;\n this.dvmService.activeVisualizationLayer = this.currentLayer;\n this.toastr.clear();\n this.toastr.success('', 'Select '+layer+'s.');\n\n }\n toggleRows(quit: boolean) {\n if(quit) return null;\n\n this.dvmService.viewer.layers.flags.automatic_control_level = false;\n this.unselectNodes();\n this.restartPricing();\n\n if (this.isRowsActive) {\n this.dvmService.viewer.layers.setLayerLevel(0);\n this.selection.nodeType.next('section');\n this.nodeType = 'section';\n } else {\n this.dvmService.viewer.layers.setLayerLevel(1);\n this.selection.nodeType.next('seat');\n this.nodeType = 'seat';\n }\n this.isRowsActive = !this.isRowsActive;\n }\n\n removeCategories(unselect?: boolean) {\n const selection = this.dvmService.viewer.getNodesByGroups(this.nodeType, 'selected');\n this.categories.getCategoriesList().forEach(\n (category) => {\n this.dvmService.viewer.removeNodesFromGroup(selection, category.group);\n }\n );\n this.categories.setCategory(this.nodeType, selection, 'none');\n if (unselect) {\n this.unselectNodes();\n }\n this.restartPricing();\n }\n\n setCategory(category: string) {\n if (this.dvmService.viewer.getNodesByGroups(this.nodeType, 'selected').length) {\n //this.removeCategories();\n //console.log(this.nodeType);\n const selection = this.dvmService.viewer.getNodesByGroups(this.nodeType, 'selected');\n this.dvmService.viewer.addNodesToGroup(selection, category);\n if (this.nodeType === 'section') {\n selection.forEach(section => {\n const seats = this.dvmService.viewer.getNodesByParent(section);\n this.dvmService.viewer.addNodesToGroup(seats, category);\n });\n }\n //to delete if no errors\n //if (this.currentLayer === 'seat') {\n // const inventory = this.inventory.getInventoryData();\n // const selection = this.dvmService.viewer.getNodesByGroups(this.nodeType, 'selected');\n // selection.forEach(node => {\n // const split = node.id.split('_')[1].split('-');\n // const section = split[0];\n // const row = split[1];\n // const seat = split[2];\n // inventory[section].elements[row].elements[seat].data.category = category;\n // });\n // this.inventory.updateTotalsHash('configurations');\n // this.toastr.success('', 'Category successfully assigned');\n // this.subscriptions.push(this.inventory.sendInventoryData(this.isSimulation).subscribe(\n // response => {\n // console.log(response);\n // }\n // ));\n //} else {\n this.categories.setCategory(this.nodeType, selection, category, (response) => {\n if(response.capacity_updated){\n\n //warning: carga todos los tiers : no abusar\n this.tiersService.setTotalTiersAV(this.configuration.tier_list).then(\n result=>{\n //console.log(result);\n const body = {capacity:result.capacity};\n\n const s1 = this.dataService.editConfiguration(this.configId,body).subscribe(\n response=>{\n this.dataService.setCurrentConfiguration$(response.result);\n this.configurationSubject.next(response.result);\n s1.unsubscribe();\n }\n )\n }\n )\n }\n\n\n\n \n const s2 = this.inventory.sendInventoryData(this.isSimulation).subscribe(\n response => {\n s2.unsubscribe();\n }\n );\n // En caso que en el futuro se puedan cambiar precios o categorias por simulación, comprobar si\n // estamos en una simulación y llamar con 'all'.\n this.inventory.updateTotalsHash('configurations');\n this.toastr.success('', 'Category successfully assigned');\n });\n //}\n this.unselectNodes();\n }else{\n this.toastr.error(\"\",\"Please select a \"+this.nodeType+\" to change its category\");\n }\n this.restartPricing();\n }\n\n public btnUnselectNodes(){\n const selection = this.dvmService.viewer.getNodesByGroups(this.nodeType, 'selected');\n if(!selection.length){\n this.toastr.error(\"\",\"Nothing selected\");\n return;\n }\n this.unselectNodes();\n }\n\n unselectNodes() {\n\n const selection = this.dvmService.viewer.getNodesByGroups(this.nodeType, 'selected');\n\n this.dvmService.viewer.removeNodesFromGroup(selection, 'selected');\n this.selection.selectionSubject.next(this.dvmService.viewer.getNodesByGroups(this.nodeType, 'selected'));\n this.restartPricing();\n }\n\n /**\n * Subscribe to getSeatManifest and dDownloads the CSV file to the client\n */\n public onDownloadManifest(): void {\n if (this.isSimulation) {\n // TODO: Definir como se exportará finalmente las sillas en onhold. Abriendo este modal preguntara al usuario si quiere exportarlo con onhold\n // de momento se exportara por defecto sin onhold.\n // this.ownModalService.openExportOnHold(this.configuration, this.activatedRoute.snapshot.params.id);\n\n // Export normal. Por el momento se dejara este export hasta que se defina cómo se va a descargar el seatmanifest con el status onhold\n const getSSM = () => {\n this.subscriptions.push(this.dataService.getSimulationSeatManifest(this.activatedRoute.snapshot.params.id,\n 'csv').subscribe(\n data => {\n const csv = data.response;\n const date = new Date().toDateString();\n const blob = new Blob([csv], {type: 'text/csv'});\n saveAs(blob, `seatmanifest_${date}.csv`);\n }\n ));\n };\n // if (this.dataService.simulationData.custom_groups && \"dirty\" in this.dataService.simulationData.custom_groups) {\n const maps = [];\n if (this.configuration.tier_list) {\n this.configuration.tier_list.forEach(level => {\n maps.push(level.map_id);\n });\n }\n this.socialDistancing.getGroupsFullExport(this.dvmService.viewer, maps).then(\n response => {\n response['subscribe'](\n data => {\n getSSM();\n }\n );\n }\n );\n // } else {\n // getSSM();\n // }\n } else {\n this.subscriptions.push(this.dataService.getSeatManifest(this.activatedRoute.snapshot.params.id, 'csv').subscribe(\n data => {\n const csv = data.response;\n const date = new Date().toDateString();\n const blob = new Blob([csv], {type: 'text/csv'});\n saveAs(blob, `seatmanifest_${date}.csv`);\n }\n ));\n }\n }\n\n /**\n * Subscribes to uploadSeatManifest and uploads the CSV file to the server\n */\n public onUploadManifest(): void {\n this.subscriptions.push(this.dataService.uploadSeatManifest(this.activatedRoute.snapshot.params.id, this.uploadSeatmanifest).subscribe(\n upload => {\n this.isUploadActive = false;\n console.log(upload);\n // TODO: parsear el contenido de momento sale un null\n },\n error => {\n console.log(error);\n this.isUploadActive = false;\n }\n ));\n }\n\n\n /**\n * Handles the input file and shows the input submit\n * @param event to handle the file\n */\n public handleFileInput(event: any): void {\n if (event.length > 0) {\n this.isUploadActive = true;\n this.uploadSeatmanifest = event[0];\n }\n }\n\n public onCancelUpload(): void {\n this.isUploadActive = false;\n this.uploadSeatmanifest = null;\n this.inputFile.nativeElement.value = '';\n }\n\n public onTriggerUploadManifest(): void {\n document.getElementById('uploadInput').click();\n }\n\n public onDisplaySidebar(): void {\n this.displaySidebar = !this.displaySidebar;\n }\n\n createGroup() {\n if(this.currentLayer==='seat') return;\n\n if (this.dvmService.viewer.getNodesByGroups(this.nodeType, 'selected').length) {\n const selection = this.dvmService.viewer.getNodesByGroups(this.nodeType, 'selected');\n this.groups.createGroup(selection, this.isSimulation);\n this.unselectNodes();\n this.toastr.success('', 'Group successfully created');\n }\n this.restartPricing();\n }\n\n deleteGroup() {\n if(this.currentLayer==='seat') return;\n if (this.dvmService.viewer.getNodesByGroups(this.nodeType, 'selected').length) {\n const selection = this.dvmService.viewer.getNodesByGroups(this.nodeType, 'selected');\n this.groups.deleteGroup(selection, this.isSimulation);\n this.unselectNodes();\n this.toastr.success('', 'Group successfully removed');\n }\n this.restartPricing();\n }\n\n public onComputeSectionResultsSubSimulation(): void{\n let sdParentNodes = this.dvmService.viewer.getNodesByGroups(\"section\",\"selected\");\n if(!sdParentNodes.length){\n this.toastr.error(\"\",\"Please select a section\");\n return;\n }\n let simulationParameters;\n this.socialDistancing.isSectionSocialDistancing = true;\n const inputHash = {};\n this.subscriptions.push(this.dataService.getAllParameters().subscribe(\n parameters => {\n //console.log(parameters);\n simulationParameters = parameters['params'];\n simulationParameters.splice(0, 1);\n simulationParameters.forEach(\n p => {\n inputHash[p.id] = {percentage: 0, computed_per: 0};\n }\n );\n // inputHash[3] = {percentage: 100, computed_per: 0};\n this.dataService.inputHash = inputHash;\n this.dataService.setInputHash$(inputHash);\n }\n ).add(\n success => {\n this.ownModalService.openComputedSectionResultsModal(simulationParameters, inputHash, sdParentNodes);\n }\n ));\n }\n public onEditSimulation(): void {\n let simulationParameters;\n this.socialDistancing.isSectionSocialDistancing = false;\n\n const inputHash = {};\n this.subscriptions.push(this.dataService.getAllParameters().subscribe(\n parameters => {\n //console.log(parameters);\n simulationParameters = parameters['params'];\n simulationParameters.splice(0, 1);\n simulationParameters.forEach(\n p => {\n inputHash[p.id] = {percentage: 0, computed_per: 0};\n }\n );\n // inputHash[3] = {percentage: 100, computed_per: 0};\n this.dataService.inputHash = inputHash;\n this.dataService.setInputHash$(inputHash);\n }\n ).add(\n success => {\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered simulation-modal',\n backdrop: true,\n ignoreBackdropClick: true,\n initialState: {\n simulationParameters,\n inputHash\n }\n };\n this.bsModalRef = this.modalService.show(EditSimulationModalComponent, modalConfig);\n const subscription = this.modalService.onHidden.subscribe(\n reason => {\n subscription.unsubscribe();\n // this.ownModalService.openComputedResultsModal();\n }\n );\n }\n ));\n }\n\n public formatNumber(price: number): string {\n return this.numberFormat.formatNumber(price);\n }\n\n public onCategoriesPrices(): void {\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-start info-modal',\n backdrop: false,\n ignoreBackdropClick: false,\n initialState: {\n currency: this._clientData.client.currency,\n configId: this.configId,\n isSimulation: this.isSimulation,\n simulation: this.currentSimulation\n }\n };\n this.bsModalRef = this.modalService.show(CategoryPriceModalComponent, modalConfig);\n this.categories.setCategorySubject();\n }\n\n private getClientConfigs(clientId: number): void {\n this.subscriptions.push(this.dataService.getClientConfigs(clientId).subscribe(\n configs => {\n //console.log(configs);\n const venueHash = {};\n configs.forEach(config => {\n venueHash[config.id] = config;\n });\n this.dataService.venueData = venueHash;\n //console.log(this.venueData);\n },\n error => {\n console.log(error);\n }\n ));\n }\n\n public loadMap(mapId, levelName) {\n if (mapId !== this.dvmService.viewer.getMapId()) {\n this.toastr.info('', 'Loading '+levelName);\n this.dvmService.changeMapConfiguration(this.configuration['venue_code'], mapId);\n const s = this.dvmService.mapSubject.subscribe(\n r => {\n console.log(this.currentLayer);\n this.toastr.clear();\n s.unsubscribe();\n const availability = this.inventory.getAvailableInventory(this.isSimulation);\n this.dvmService.viewer.setAvailability('seat', availability.seats);\n this.dvmService.viewer.setAvailability('section', availability.sections);\n this.inventory.availabilityLoadedSubject.next();\n this.categories.printInventoryCategories();\n this.currentMapId = mapId;\n this.currentLevelName = levelName;\n this.hasMapChanged = true;\n //this.toggleRows(false);\n this.switchLayers(this.currentLayer,false);\n this.toastr.success('', 'Now watching: '+levelName);\n }\n );\n }else{\n this.toastr.info('', levelName+\" already loaded\");\n }\n }\n\n isCurrentMap(mapId) {\n if (mapId && this.currentMapId) {\n return mapId === this.currentMapId;\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n this.isGroupSelected = false;\n this.selection.isSingleSelection = false;\n this.selection.isGroupsSelection = false;\n }\n\n public onComputeResults(frompage?:any) {\n // const modalConfig: ModalOptions = {\n // animated: true,\n // class: 'modal-dialog-centered simulation-modal',\n // backdrop: true,\n // ignoreBackdropClick: true,\n // initialState: {\n // }\n // };\n // this.bsModalRef = this.modalService.show(ComputeResultsModalComponent, modalConfig);\n console.log(\"Opening Computed Results Modal, with this configuration:\", this.configuration, frompage);\n this.ownModalService.openComputedResultsModal(frompage,this.configuration);\n }\n\n public toggleAllocatedSeats(){\n this.allocatorService.showAllocatedSeats = !this.allocatorService.showAllocatedSeats;\n this.displayAllocationBtn = this.allocatorService.showAllocatedSeats;\n if(this.displayAllocationBtn){\n this.toastr.success(\"\",\"Showing allocated seats\");\n }else{\n this.toastr.success(\"\",\"Showing seats by categories only\");\n }\n }\n\n mouseOverFunction(event: MouseEvent): void {\n if (event.type === 'mouseover') {\n (event.target as HTMLElement).firstElementChild.classList.add('none');\n console.log((event.target as HTMLElement).firstElementChild) ;\n // event.target.firstElementChild;\n }\n if (event.type === 'mouseout') {\n\n }\n console.log(event);\n }\n\n public selectToEnable(){\n this.selection.isSingleSelection = false;\n this.selection.isGroupsSelection = false;\n this.dvmService.viewer.removeNodesFromGroup(this.dvmService.viewer.getNodesByGroups(\"section\",\"selected\"),\"selected\");\n this.dvmService.viewer.removeNodesFromGroup(this.dvmService.viewer.getNodesByGroups(\"seat\",\"selected\"),\"selected\");\n if (this.currentLayer==='seat'){\n this.selection.isMultiSelection = false;\n this.toastr.success(\"\",\"To set seats as available, use edit single seat button\");\n }else{\n this.selection.isMultiSelection = !this.selection.isMultiSelection;\n this.dvmService.viewer.removeNodesFromGroup(this.dvmService.getLockedseats(), \"lockedborderfilled\");\n if(this.selection.isMultiSelection){\n\n if (this.currentLayer==='row'){\n this.dvmService.viewer.addNodesToGroup(this.dvmService.getLockedseats(), \"lockedborderfilled\");\n this.toastr.success(\"\",\"Select rows to set as available\");\n }else if(this.currentLayer==='section'){\n this.toastr.success(\"\",\"Select sections to set as available\");\n }\n\n }\n }\n if(!this.selection.isMultiSelection){\n this.toastr.info('', 'Disabled edit multi seat.');\n }\n }\n\n private resetSimulationFlags(){\n this.selection.isMultiSelection = false;\n this.selection.isSingleSelection = false;\n }\n\n public downloadCustomCategoriesVenueData(){\n this.ondownloadCustomcategories = true;\n\n let model = \"configuration\";\n let id = this.configId;\n if(this.isSimulation){\n id = this.currentSimulation.configuration.id;\n }\n\n this.customCategoriesService.getVenueDataFile(model,id,'raw').toPromise().then(file=>{\n let config = JSON.parse(file['CustomData']);\n let rawcsv = Buffer.from(file['Body'], 'utf8').toString();\n let filename = config.ids+'_'+config.club.toUpperCase()+'EXPORT_DATA.csv';\n if(!this.isSimulation){\n this.createDownloadFile(rawcsv,filename);\n this.ondownloadCustomcategories = false;\n }else{\n let csv = rawcsv.split('\\n');\n /* \n 0 IDZONA;\n 1 ZONA;\n 2 ZONA_ABREVIADO;\n 3 PUERTA;\n 4 IDASIENTO;\n 5 POS_FILA;\n 6 POS_ASIENTO;\n 7 FILA;\n 8 ASIENTO;\n 9 SLOT;\n 10 ESTADO_AVET;\n 11 PATH_DESC;\n 12 IDEVENT;\n 13 IDGRUPOZONA;\n 14 GRUPOZONA\n */\n const inventory = this.inventory.getInventoryData();\n\n let parsed_csv = \"\";\n parsed_csv+=csv[0];\n\n\n //Get un available nodes\n //let test = [];\n for(let i = 1;i{\n console.log(e);\n });\n }\n\n private replaceAll(str, find, replace) {\n return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);\n }\n\n private createDownloadFile(data, fileName) {\n const a = document.createElement(\"a\");\n document.body.appendChild(a);\n const blob = new Blob([data], { type: 'text/csv' });\n const url = window.URL.createObjectURL(blob);\n\n a.href = url;\n a.download = fileName; \n a.click();\n window.URL.revokeObjectURL(url);\n a.remove();\n\n };\n}\n","
\n
\n
\n \n
\n
\n\n
\n
\n\n \n {{'setup.sidebar.venueinformation' | translate}}\n \n
\n
\n
{{venueData?.name}}\n
\n
\n {{'setup.sidebar.venuecapacity' | translate}}:\n \n {{formatNumber(configuration?.capacity)}}\n
\n
\n {{'setup.sidebar.newcapacity' | translate}}: \n {{formatNumber(availability)}}
\n
{{currentLevelName}}:\n {{formatNumber(currentLevelAvailability)}} seats\n
\n
\n\n
\n \n
\n
\n
\n
\n
\n {{'setup.sidebar.visualizationMode' | translate}}\n
\n
\n \n
    \n \n
\n
\n
\n \n \n \n \n
\n
\n
\n\n
\n {{'setup.sidebar.categories' | translate}}\n \n
\n \n
\n \n \n
\n
\n
\n\n
\n {{'setup.sidebar.categories' | translate}}\n \n
\n\n\n\n
\n {{'setup.sidebar.groupOptions' | translate}}\n \n
\n \n \n
\n
\n
\n \n {{'setup.sidebar.selectoptions' | translate}}\n \n
\n \n \n
\n
\n
\n \n {{'setup.sidebar.socialdistancing' | translate}}\n \n
\n \n \n \n\n \n\n \n \n \n\n
\n
\n
\n \n {{'setup.sidebar.availabilityoptions' | translate}}\n \n
\n \n \n \n \n
\n
\n
\n \n {{'setup.sidebar.membersallocation' | translate}}\n \n
\n \n \n \n \n \n\n \n
\n \n
\n
\n \n
\n
\n \n
\n \n {{'setup.sidebar.viewresults' | translate}}\n \n
\n \n
\n
\n\n
\n
\n {{'setup.sidebar.assignPrice' | translate}} {{currency}}\n
\n
\n
\n
\n
\n \n
\n
\n\n \n \n
\n
\n
\n
\n
\n
\n\n\n \n\n \n \n
\n
\n\n\n\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\nimport { AuthenticationService } from 'src/app/auth';\nimport { BsModalService, BsModalRef, ModalOptions } from 'ngx-bootstrap/modal';\nimport { BsDropdownConfig } from 'ngx-bootstrap/dropdown';\nimport { CategoryPriceModalComponent } from 'src/app/social-distance-editor/shared/modals/category-price-modal/category-price-modal.component';\nimport { GroupsService } from 'src/app/social-distance-editor/services/groups.service';\nimport { SelectionService } from 'src/app/social-distance-editor/services/selection.service';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { CategoriesService } from 'src/app/social-distance-editor/services/categories.service';\nimport { FormatNumberService } from 'src/app/social-distance-editor/services/format-number.service';\nimport { DVMService } from 'src/app/social-distance-editor/services/dvm.service';\nimport { SocialdistancingService } from 'src/app/social-distance-editor/services/socialdistancing.service';\nimport { Subscription, Subject } from 'rxjs';\nimport { ComputeResultsModalComponent } from 'src/app/social-distance-editor/shared/modals/compute-results-modal/compute-results-modal.component';\nimport { InventoryService } from 'src/app/social-distance-editor/services/inventory.service';\n\n\n@Component({\n selector: 'app-topbar',\n templateUrl: './topbar.component.html',\n styleUrls: ['./topbar.component.scss'],\n providers: [{ provide: BsDropdownConfig, useValue: { isAnimated: true, autoClose: true } }]\n})\n\nexport class TopbarComponent implements OnInit, OnDestroy {\n\n private subscriptions: Subscription[] = [];\n\n @Input() page: 'setup' | 'simulation';\n @Input() configurationSubject: Subject;\n\n get isSimulation() {\n return this.page === 'simulation';\n }\n\n // tslint:disable-next-line: variable-name\n _clientData;\n currentVenue;\n bsModalRef: BsModalRef;\n configId: number;\n levels: Array = [];\n currentSimulation = null;\n configuration;\n\n currentAvailability = 0;\n currentAvailabilityPercentage = '';\n currentMapId;\n\n get availability() {\n return this.currentAvailability;\n }\n\n get availabilityPercentage() {\n return this.currentAvailabilityPercentage;\n }\n\n constructor(private dataService: DataService,\n private authService: AuthenticationService,\n private modalService: BsModalService,\n private router: Router,\n private activateRoute: ActivatedRoute,\n private categories: CategoriesService,\n private dvmService: DVMService,\n private inventoryService: InventoryService,\n private socialDistancing: SocialdistancingService,\n private numberFormatService: FormatNumberService) { }\n\n ngOnInit(): void {\n const s = this.dvmService.mapSubject.subscribe(\n response => {\n s.unsubscribe();\n this.currentMapId = this.dvmService.viewer.getMapId();\n }\n );\n this.currentSimulation = this.dataService.simulationData;\n this.configurationSubject.subscribe(\n configuration => {\n console.log(configuration);\n this.configuration = configuration;\n if (configuration.tier_list && configuration.tier_list.length) {\n this.levels = configuration.tier_list;\n }\n }\n );\n if (this.currentSimulation == null) {\n this.subscriptions.push(this.dataService.getCurrentSimulation$().subscribe(\n simulation => {\n this.currentSimulation = simulation;\n console.log(this.currentSimulation);\n }\n ));\n }\n this.configId = this.activateRoute.snapshot.params.id;\n this.subscriptions.push(this.dataService.getCurrentVenue$().subscribe(\n currentVenue => {\n this.currentVenue = currentVenue;\n console.log(currentVenue);\n }\n ));\n this.subscriptions.push(this.authService.getUserLogged$().subscribe(\n client => {\n if (typeof client !== 'boolean') {\n this._clientData = client.user;\n this.getClientConfigs(this._clientData.client.id);\n }\n },\n error => {\n console.log('error landing get user logged');\n console.log(error);\n }\n ));\n this.subscriptions.push(this.socialDistancing.calculationFinishedsubject.subscribe(\n result => {\n const availability = this.dvmService.viewer.getNodesByState('seat', 'available');\n if (availability.length) {\n const totalSeats = this.dvmService.viewer.getNodesByType('seat');\n this.currentAvailability = availability.length;\n this.currentAvailabilityPercentage = (100 * availability.length / totalSeats.length).toFixed(2);\n } else {\n this.currentAvailability = 0,\n this.currentAvailabilityPercentage = '';\n }\n }\n ));\n }\n\n private getClientConfigs(clientId: number) {\n return this.dataService.getClientConfigs(clientId).subscribe(\n configs => {\n const venueHash = {};\n configs.forEach(config => {\n venueHash[config.id] = config;\n });\n this.dataService.venueData = venueHash;\n console.log(venueHash);\n },\n error => {\n console.log(error);\n }\n );\n }\n\n public onCategoriesPrices(): void {\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-start info-modal',\n backdrop: false,\n ignoreBackdropClick: false,\n initialState: {\n currency: this._clientData.client.currency,\n configId: this.configId,\n isSimulation: this.isSimulation,\n simulation: this.currentSimulation\n }\n };\n this.bsModalRef = this.modalService.show(CategoryPriceModalComponent, modalConfig);\n this.categories.setCategorySubject();\n }\n\n get clientData() {\n if (this._clientData) {\n return this._clientData;\n }\n }\n\n get venueData() {\n if (this.dataService.venueData && this.currentVenue) {\n return this.dataService.venueData[this.currentVenue];\n }\n }\n\n get units() {\n if (this.dataService.getUser()) {\n return this.dataService.getUnits(this.dataService.getUser().user.client.metric_system);\n }\n }\n\n public onBack(): void {\n this.router.navigate(['/home']);\n }\n\n public formatNumber(price: number): string {\n return this.numberFormatService.formatNumber(price);\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n public onComputeResults(): void {\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered',\n backdrop: true,\n ignoreBackdropClick: true,\n initialState: {\n }\n };\n this.bsModalRef = this.modalService.show(ComputeResultsModalComponent, modalConfig);\n }\n\n public loadMap(mapId,level_name) {\n if (mapId !== this.dvmService.viewer.getMapId()) {\n this.dvmService.changeMapConfiguration(this.configuration['venue_code'], mapId);\n this.dvmService.mapSubject.subscribe(\n r => {\n const availability = this.inventoryService.getAvailableInventory(this.isSimulation);\n this.dvmService.viewer.setAvailability('seat', availability.seats);\n this.dvmService.viewer.setAvailability('section', availability.sections);\n this.categories.printInventoryCategories();\n this.currentMapId = mapId;\n document.getElementById(\"currentlevel\").textContent = level_name;\n }\n );\n }\n }\n\n isCurrentMap(mapId) {\n if (mapId && this.currentMapId) {\n return mapId === this.currentMapId;\n }\n }\n}\n","\n
\n
\n

{{venueData?.name | titlecase}}

\n
\n \n
\n {{'setup.topbar.capacity' | translate}}: {{formatNumber(venueData?.capacity)}}\n \n {{'setup.topbar.capacity' | translate}}: {{formatNumber(venueData?.capacity)}} / {{formatNumber(availability)}} ( {{(availabilityPercentage)}}% )\n \n
\n \n \n
\n \n \n \n\n
\n \n
","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\nimport {AllocatorService} from '../../../services/allocator.service';\nimport { Router } from '@angular/router';\nimport { ToastrService } from 'ngx-toastr';\nimport {TiersService} from \"../../../../../services/tiers.service\";\nimport {PlatformLocation} from \"@angular/common\";\n\n@Component({\n selector: 'app-confirm-delete-allocation',\n templateUrl: './confirm-delete-allocation.component.html',\n styleUrls: ['./confirm-delete-allocation.component.scss']\n})\n\nexport class ConfirmDeleteAllocationComponent implements OnInit {\n simulation;\n closeReason;\n constructor(private bsModalRef: BsModalRef,\n private dataService: DataService,\n private allocatorService: AllocatorService,\n private router: Router,\n private toastr: ToastrService,\n private location: PlatformLocation) {\n this.location.onPopState(()=> {\n this.onDismiss('cancel');\n });\n }\n\n ngOnInit(): void { }\n\n public onDismiss(reason: 'success' | 'cancel'): void {\n this.closeReason = reason;\n this.bsModalRef.hide();\n }\n\n public onDeleteAllocation(): void {\n this.allocatorService.clearAllocationFromSimulation().then(res=>{\n this.bsModalRef.hide();\n this.toastr.success('','Allocation deleted');\n this.router.navigate(['/simulation/'+this.simulation.id]);\n }).catch(err=>{\n this.toastr.error('',\"Allocation not deleted, please try again.\");\n this.bsModalRef.hide();\n });\n }\n\n}\n","
\n \n \n \n \n
","import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from \"@angular/core\";\nimport { BsModalRef } from \"ngx-bootstrap/modal\";\nimport { FormatNumberService } from \"../../../../../services/format-number.service\";\nimport { DataService } from \"../../../../../services/data.service\";\nimport { Form, NgForm } from \"@angular/forms\";\nimport { UploadbuttonComponent } from \"../../../../../shared/buttons/uploadbutton/uploadbutton.component\";\nimport { DVMService } from \"../../../../../services/dvm.service\";\nimport { AllocatorService } from \"../../../services/allocator.service\";\nimport { InventoryService } from \"../../../../../services/inventory.service\";\nimport { Router } from \"@angular/router\";\nimport { LaligaRepeatedError, LaligaParserService } from \"../../../services/parsers/laliga-parser.service\";\nimport { SocialdistancingService } from \"../../../../../services/socialdistancing.service\";\nimport { PlatformLocation } from \"@angular/common\";\nimport { MapViewer } from \"@3ddv/dvm-internal\";\n\ninterface Result {\n membersAssigned: number;\n membersLeft: number;\n computedPercentage: number;\n}\n\n// XXX_YY_AAASUBSCRIBER_DATA.csv\nconst subscriberFileNameExp =\n /^(?\\d{3})_(?\\d+)_(?\\w{3})SUBSCRIBER_DATA\\.(?csv$)/i;\n// XXX_YY_AAAVENUE_DATA.csv\nconst venueDataFileNameExp =\n /^(?\\d{3})_(?\\d+)_(?\\w{3})VENUE_DATA\\.(?csv$)/i;\n\n@Component({\n selector: \"app-laliga-modal\",\n templateUrl: \"./laliga-modal.component.html\",\n styleUrls: [\"./laliga-modal.component.scss\"],\n})\nexport class LaligaModalComponent implements OnInit, OnDestroy {\n @ViewChild(\"uploadClientsCsv\") clientsCsv!: UploadbuttonComponent;\n @ViewChild(\"uploadCategoriesCsv\") categoriesCsv!: UploadbuttonComponent;\n\n @ViewChild(\"step1\") modalStep1!: ElementRef;\n @ViewChild(\"step2\") modalStep2!: ElementRef;\n @ViewChild(\"step3\") modalStep3!: ElementRef;\n @ViewChild(\"stepError\") modalStepError!: ElementRef;\n @ViewChild(\"stepErrorRepeated\") modalStepErrorRepeated!: ElementRef;\n @ViewChild(\"repeatedFile\") repeatedFile!: ElementRef;\n\n simulation;\n currentAvailability: number;\n currentVenue: string;\n configuration;\n aisleSeats = 0;\n socialDistancing = 1.5;\n\n maxClientsEnabled = false;\n upgradeOrDowngrade = true;\n maxClientsAllowed = 0;\n result: Result | undefined;\n\n toCurrent = true;\n\n errorMsg = \"\";\n error = false;\n errorFile: Blob | null = null;\n errorFileName: string | null = null;\n\n get venueName() {\n if (this.simulation) {\n return this.dataService.venueData[this.simulation.configuration.venueId].name;\n }\n }\n\n get availability() {\n return this.currentAvailability;\n }\n get availabilityPercentage() {\n if (this.simulation) {\n return ((this.simulation.capacity / this.simulation.configuration.capacity) * 100).toFixed(2);\n }\n }\n\n constructor(\n private bsModalRef: BsModalRef,\n private dataService: DataService,\n private numberFormatService: FormatNumberService,\n private dvmService: DVMService,\n private allocatorService: AllocatorService,\n private csvParserService: LaligaParserService,\n private inventoryService: InventoryService,\n private socialdistancingService: SocialdistancingService,\n private router: Router,\n private location: PlatformLocation\n ) {\n this.location.onPopState(() => {\n this.onClose();\n });\n }\n\n ngOnInit(): void {\n this.socialDistancing = this.socialdistancingService.securityDistance ?? 1.5;\n this.aisleSeats = this.socialdistancingService.isleSeats ?? 0;\n }\n\n ngOnDestroy() {}\n\n public onClose(): void {\n this.bsModalRef.hide();\n }\n\n public hasAllocation() {\n return this.simulation.allocation;\n }\n public formatNumber(price: number): string {\n return this.numberFormatService.formatNumber(price);\n }\n\n get units() {\n if (this.dataService.getUser()) {\n return this.dataService.getUnits(this.dataService.getUser().user.client.metric_system);\n }\n }\n\n public onSetDistancing(action: \"minus\" | \"sum\"): void {\n if (this.numberFormatService.getUnits() === \"ft\") {\n if (action === \"minus\" && this.socialDistancing > 0.5) {\n this.socialDistancing -= 0.0305;\n }\n if (action === \"sum\") {\n this.socialDistancing += 0.0305;\n }\n } else {\n if (action === \"minus\" && this.socialDistancing > 0.5) {\n this.socialDistancing -= 0.1;\n }\n if (action === \"sum\") {\n this.socialDistancing += 0.1;\n }\n }\n }\n\n public formatSocialDistancing(num: number): number {\n return Number(num.toFixed(2));\n }\n\n public onChangeAisleSeat(action: \"minus\" | \"sum\") {\n if (action === \"minus\" && this.aisleSeats > 0) {\n this.aisleSeats -= 1;\n }\n if (action === \"sum\" && this.aisleSeats < 4) {\n this.aisleSeats += 1;\n }\n }\n\n public onSubmit(form: NgForm): void {\n if (!this.isDisabled()) {\n this.hideError();\n\n const csvSubscribersFile = this.clientsCsv.getFile();\n const csvVenueDataFile = this.categoriesCsv.getFile();\n const viewer = this.dvmService.viewer;\n const checkUpdagreDowngrade: boolean = form.value.upgradeOrDowngradeCheckbox;\n\n if (csvSubscribersFile && csvVenueDataFile && viewer) {\n const subscriberResult = csvSubscribersFile.name.match(subscriberFileNameExp);\n const venueDataResult = csvVenueDataFile.name.match(venueDataFileNameExp);\n\n if (subscriberResult == null) {\n this.showError(`Subscribers file does not match name template: 'XXX_Y_AAASUBSCRIBER_DATA.csv'`);\n return;\n }\n\n if (venueDataResult == null) {\n this.showError(`Venue data file does not match name template: 'XXX_Y_AAAVENUE_DATA.csv'`);\n return;\n }\n\n const obj1 = subscriberResult.groups;\n const obj2 = subscriberResult.groups;\n\n const { clubId, eventId, clubInitials } = obj1;\n const { clubId: clubId2, eventId: eventId2, clubInitials: clubInitials2 } = obj2;\n\n if (clubId !== clubId2) {\n this.showError(` File names club ID do not match`);\n return;\n }\n\n if (eventId !== eventId2) {\n this.showError(` File names event ID do not match`);\n return;\n }\n\n if (clubInitials !== clubInitials2) {\n this.showError(` File names club initials do not match`);\n return;\n }\n\n const outputPrefix = `${clubId}_${eventId}_${clubInitials}`;\n\n this.showStep2();\n\n function readText(file: Blob, encoding?: string): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n if (typeof reader.result === \"string\") {\n resolve(reader.result);\n } else {\n reject(new Error(\"Cannot read file\"));\n }\n };\n reader.onerror = () => reject(new Error(\"Cannot read file\"));\n\n reader.readAsText(file, encoding);\n });\n }\n\n Promise.all([\n readText(csvSubscribersFile, \"iso-8859-1\"),\n readText(csvVenueDataFile, \"iso-8859-1\"),\n this.delay(100),\n ])\n .then((results) => {\n const [csvClients, csvCategories] = results;\n\n const maps = [];\n if (this.configuration.tier_list) {\n this.configuration.tier_list.forEach((level) => {\n maps.push(level.map_id);\n });\n }\n\n const p: Promise = this.toCurrent\n ? this.assignToCurrent(\n viewer,\n csvClients,\n csvCategories,\n outputPrefix,\n checkUpdagreDowngrade,\n checkUpdagreDowngrade,\n maps\n )\n : this.assign(\n viewer,\n csvClients,\n csvCategories,\n outputPrefix,\n checkUpdagreDowngrade,\n checkUpdagreDowngrade,\n maps\n );\n\n // return Promise.all([p, this.delay(1000)]);\n return p;\n })\n .then(() => {\n this.showStep3(false);\n })\n .catch((err) => {\n this.showError(err.message);\n if (err instanceof LaligaRepeatedError) {\n this.errorFile = err.file;\n this.errorFileName = err.filename;\n this.repeatedFile.nativeElement.href = URL.createObjectURL(this.errorFile);\n this.repeatedFile.nativeElement.download = this.errorFileName;\n this.repeatedFile.nativeElement.innerText = \"Download repeated subscribers.\";\n }\n this.allocatorService.clearAllocationFromSimulation().finally(() => {\n this.showStep3(true);\n });\n });\n }\n }\n }\n\n private showError(errorMessage: string) {\n // TODO\n this.errorMsg = errorMessage;\n this.error = true;\n console.error(errorMessage);\n }\n\n private hideError() {\n this.errorMsg = \"\";\n this.error = false;\n this.errorFile = null;\n this.errorFileName = null;\n }\n\n // private startAssign(viewer: MapViewer, csvSubscribers: string, csvVenueData: string, outputPrefix: string) {\n // const maps = [];\n // if (this.configuration.tier_list) {\n // this.configuration.tier_list.forEach(level => {\n // maps.push(level.map_id);\n // });\n // }\n //\n // const p = this.toCurrent ?\n // this.assignToCurrent(viewer, csvSubscribers, csvVenueData, outputPrefix, maps) :\n // this.assign(viewer, csvSubscribers, csvVenueData, outputPrefix, maps);\n //\n // return Promise.all([p, this.delay(1000)])\n // .then(() => {\n // this.showStep3(false);\n // })\n // .catch((err) => {\n // console.error(err);\n // this.allocatorService.clearAllocationFromSimulation()\n // .finally(() => {\n // this.showStep3(true);\n // });\n // });\n // }\n\n private assign(\n viewer: MapViewer,\n csvClients: string,\n csvCategories: string,\n outputPrefix: string,\n upgrade: boolean,\n downgrade: boolean,\n maps?: string[]\n ) {\n return this.csvParserService\n .fullAssign(\n viewer,\n csvClients,\n csvCategories,\n this.socialDistancing,\n this.aisleSeats,\n outputPrefix,\n upgrade,\n downgrade,\n maps\n )\n .then((result) => {\n const assignedClients =\n result.groups.length > 0 ? result.groups.map((g) => g.members.length).reduce((acc, curr) => acc + curr) : 0;\n const unassignedClients =\n result.unassigned.length > 0\n ? result.unassigned.map((g) => g.members.length).reduce((acc, curr) => acc + curr)\n : 0;\n const percentage = assignedClients ? (assignedClients / (assignedClients + unassignedClients)) * 100 : 0;\n this.result = {\n computedPercentage: percentage,\n membersLeft: unassignedClients,\n membersAssigned: assignedClients,\n };\n if (!percentage && !assignedClients && !unassignedClients) {\n return Promise.reject(new Error(\"Computation could not be done\"));\n }\n return result;\n });\n }\n private assignToCurrent(\n viewer: MapViewer,\n csvClients: string,\n csvCategories: string,\n outputPrefix: string,\n upgrade: boolean,\n downgrade: boolean,\n maps?: string[]\n ) {\n const maxAssignedClients: number | undefined = this.maxClientsEnabled\n ? this.maxClientsAllowed ?? undefined\n : undefined;\n return this.csvParserService\n .fullAssignToCurrent(\n viewer,\n csvClients,\n csvCategories,\n outputPrefix,\n upgrade,\n downgrade,\n maps,\n maxAssignedClients\n )\n .then((result) => {\n let membersAssigned = 0;\n let membersLeft = 0;\n result.assigned.forEach((group) => (membersAssigned += group.assigned.length));\n result.unassigned.forEach((group) => (membersLeft += group.members.length));\n const percentage = (membersAssigned / (membersAssigned + membersLeft)) * 100;\n this.result = { computedPercentage: percentage, membersLeft, membersAssigned };\n if (!percentage && !result.unassigned.size) {\n this.result = { computedPercentage: 100, membersLeft: 0, membersAssigned: 0 };\n }\n return result;\n });\n }\n\n private delay(time: number): Promise {\n return new Promise((resolve) => setTimeout(resolve, time));\n }\n\n public isDisabled(): boolean {\n return (!this.clientsCsv?.hasFile() ?? true) || (!this.categoriesCsv?.hasFile() ?? true);\n }\n\n public onViewAllocation() {\n this.onClose();\n this.router.navigate([\"/allocation/\" + this.dataService.currentSimulationId]);\n }\n\n private showStep1() {\n this.modalStep1.nativeElement.classList.remove(\"d-none\");\n this.modalStep2.nativeElement.classList.add(\"d-none\");\n this.modalStep3.nativeElement.classList.add(\"d-none\");\n this.modalStepError.nativeElement.classList.add(\"d-none\");\n this.modalStepErrorRepeated.nativeElement.classList.add(\"d-none\");\n }\n\n private showStep2() {\n this.modalStep1.nativeElement.classList.add(\"d-none\");\n this.modalStep2.nativeElement.classList.remove(\"d-none\");\n this.modalStep3.nativeElement.classList.add(\"d-none\");\n this.modalStepError.nativeElement.classList.add(\"d-none\");\n this.modalStepErrorRepeated.nativeElement.classList.add(\"d-none\");\n }\n\n private showStep3(error: boolean) {\n this.modalStep1.nativeElement.classList.add(\"d-none\");\n this.modalStep2.nativeElement.classList.add(\"d-none\");\n if (!error) {\n this.modalStep3.nativeElement.classList.remove(\"d-none\");\n } else {\n this.modalStep3.nativeElement.classList.add(\"d-none\");\n if (this.errorFile) {\n this.modalStepErrorRepeated.nativeElement.classList.remove(\"d-none\");\n } else {\n this.modalStepError.nativeElement.classList.remove(\"d-none\");\n }\n }\n }\n}\n","\n","import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from \"@angular/core\";\nimport { BsModalRef } from \"ngx-bootstrap/modal\";\nimport { FormatNumberService } from \"../../../../../services/format-number.service\";\nimport { DataService } from \"../../../../../services/data.service\";\nimport { Form } from \"@angular/forms\";\nimport { UploadbuttonComponent } from \"../../../../../shared/buttons/uploadbutton/uploadbutton.component\";\nimport { DVMService } from \"../../../../../services/dvm.service\";\nimport { AllocatorService } from \"../../../services/allocator.service\";\nimport { InventoryService } from \"../../../../../services/inventory.service\";\nimport { Router } from \"@angular/router\";\nimport { MlbParserService } from \"../../../services/parsers/mlb-parser.service\";\nimport { TiersService } from \"../../../../../services/tiers.service\";\nimport { PlatformLocation } from \"@angular/common\";\n\ninterface Result {\n membersAssigned: number;\n membersLeft: number;\n computedPercentage: number;\n}\n\n@Component({\n selector: \"app-mlb-modal\",\n templateUrl: \"./mlb-modal.component.html\",\n styleUrls: [\"./mlb-modal.component.scss\"],\n})\nexport class MlbModalComponent implements OnInit, OnDestroy {\n @ViewChild(\"uploadClientsCsv\") clientsCsv!: UploadbuttonComponent;\n @ViewChild(\"uploadCategoriesCsv\") categoriesCsv!: UploadbuttonComponent;\n\n @ViewChild(\"step1\") modalStep1!: ElementRef;\n @ViewChild(\"step2\") modalStep2!: ElementRef;\n @ViewChild(\"step3\") modalStep3!: ElementRef;\n @ViewChild(\"step4\") modalStep4!: ElementRef;\n\n @ViewChild(\"upgradeCheckbox\") upgradeCheckbox!: ElementRef;\n @ViewChild(\"downgradeCheckbox\") downgradeCheckbox!: ElementRef;\n\n simulation;\n currentAvailability: number;\n currentVenue: string;\n configuration;\n\n upgrade = false;\n downgrade = false;\n\n result: Result | undefined;\n\n get venueName() {\n if (this.simulation) {\n return this.dataService.venueData[this.simulation.configuration.venueId].name;\n }\n }\n\n get availability() {\n return this.currentAvailability;\n }\n get availabilityPercentage() {\n if (this.simulation) {\n return ((this.simulation.capacity / this.simulation.configuration.capacity) * 100).toFixed(2);\n }\n }\n\n constructor(\n private bsModalRef: BsModalRef,\n private dataService: DataService,\n private numberFormatService: FormatNumberService,\n private dvmService: DVMService,\n private allocatorService: AllocatorService,\n private csvParserService: MlbParserService,\n private inventoryService: InventoryService,\n private router: Router,\n private location: PlatformLocation\n ) {\n this.location.onPopState(() => {\n this.onClose();\n });\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy() {}\n\n public onClose(): void {\n this.bsModalRef.hide();\n }\n\n public hasAllocation() {\n return this.simulation.allocation;\n }\n public formatNumber(price: number): string {\n return this.numberFormatService.formatNumber(price);\n }\n\n public onSubmit(ngForm: Form): void {\n if (!this.isDisabled()) {\n const csvClientsFile = this.clientsCsv.getFile();\n const csvCategoriesFile = this.categoriesCsv.getFile();\n const viewer = this.dvmService.viewer;\n\n this.showStep2();\n\n if (csvClientsFile && csvCategoriesFile && viewer) {\n // TODO: file validator\n\n Promise.all([csvClientsFile.text(), csvCategoriesFile.text(), this.delay(100)]).then((results) => {\n const [csvClients, csvCategories] = results;\n\n const maps = [];\n if (this.configuration.tier_list) {\n this.configuration.tier_list.forEach((level) => {\n maps.push(level.map_id);\n });\n }\n\n // TODO: upgrade y downgrade debería de venir del popover\n const p = this.csvParserService.full(viewer, csvClients, csvCategories, this.upgrade, this.downgrade, maps);\n return Promise.all([p, this.delay(1000)]).then((r) => {\n const result = r[0];\n let error = false;\n let assignedClients = 0;\n let unassignedClients = 0;\n Array.from(result.assigned).forEach((group: any) => (assignedClients += group.assigned.length));\n Array.from(result.unassigned).forEach((group: any) => (unassignedClients += group.members.length));\n const percentage = assignedClients ? (assignedClients / (assignedClients + unassignedClients)) * 100 : 0;\n this.result = {\n computedPercentage: percentage,\n membersLeft: unassignedClients,\n membersAssigned: assignedClients,\n };\n if (!percentage && !result.unassigned.size) {\n error = true;\n this.allocatorService.clearAllocationFromSimulation().then((success) => {\n this.showStep3(error);\n });\n } else {\n this.showStep3(error);\n }\n });\n });\n }\n }\n }\n\n private delay(time: number): Promise {\n return new Promise((resolve) => setTimeout(resolve, time));\n }\n\n public isDisabled(): boolean {\n return (!this.clientsCsv?.hasFile() ?? true) || (!this.categoriesCsv?.hasFile() ?? true);\n }\n\n public onViewAllocation() {\n this.onClose();\n this.router.navigate([\"/allocation/\" + this.dataService.currentSimulationId]);\n }\n\n private showStep1() {\n this.modalStep1.nativeElement.classList.remove(\"d-none\");\n this.modalStep2.nativeElement.classList.add(\"d-none\");\n this.modalStep3.nativeElement.classList.add(\"d-none\");\n this.modalStep4.nativeElement.classList.add(\"d-none\");\n }\n\n private showStep2() {\n this.modalStep1.nativeElement.classList.add(\"d-none\");\n this.modalStep2.nativeElement.classList.remove(\"d-none\");\n this.modalStep3.nativeElement.classList.add(\"d-none\");\n this.modalStep4.nativeElement.classList.add(\"d-none\");\n }\n\n private showStep3(error: boolean) {\n this.modalStep1.nativeElement.classList.add(\"d-none\");\n this.modalStep2.nativeElement.classList.add(\"d-none\");\n if (!error) {\n this.modalStep3.nativeElement.classList.remove(\"d-none\");\n } else {\n this.modalStep4.nativeElement.classList.remove(\"d-none\");\n }\n }\n}\n","\n","import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from \"@angular/core\";\nimport { BsModalRef } from \"ngx-bootstrap/modal\";\nimport { FormatNumberService } from \"../../../../../services/format-number.service\";\nimport { DataService } from \"../../../../../services/data.service\";\nimport { Form } from \"@angular/forms\";\nimport { UploadbuttonComponent } from \"../../../../../shared/buttons/uploadbutton/uploadbutton.component\";\nimport { DVMService } from \"../../../../../services/dvm.service\";\nimport { AllocatorService } from \"../../../services/allocator.service\";\nimport { SportsAllianceParserService } from \"../../../services/parsers/sports-alliance-parser.service\";\nimport { InventoryService } from \"../../../../../services/inventory.service\";\nimport { Router } from \"@angular/router\";\nimport { TiersService } from \"../../../../../services/tiers.service\";\nimport { PlatformLocation } from \"@angular/common\";\n\ninterface Result {\n membersAssigned: number;\n membersLeft: number;\n computedPercentage: number;\n}\n\n@Component({\n selector: \"app-sports-alliance-modal\",\n templateUrl: \"./sports-alliance-modal.component.html\",\n styleUrls: [\"./sports-alliance-modal.component.scss\"],\n})\nexport class SportsAllianceModalComponent implements OnInit, OnDestroy {\n @ViewChild(\"uploadClientsCsv\") clientsCsv!: UploadbuttonComponent;\n @ViewChild(\"uploadCategoriesCsv\") categoriesCsv!: UploadbuttonComponent;\n\n @ViewChild(\"step1\") modalStep1!: ElementRef;\n @ViewChild(\"step2\") modalStep2!: ElementRef;\n @ViewChild(\"step3\") modalStep3!: ElementRef;\n @ViewChild(\"step4\") modalStep4!: ElementRef;\n\n @ViewChild(\"upgradeCheckbox\") upgradeCheckbox!: ElementRef;\n @ViewChild(\"downgradeCheckbox\") downgradeCheckbox!: ElementRef;\n\n simulation;\n currentAvailability: number;\n currentVenue: string;\n configuration;\n\n upgrade = false;\n downgrade = false;\n\n result: Result | undefined;\n\n get venueName() {\n if (this.simulation) {\n return this.dataService.venueData[this.simulation.configuration.venueId].name;\n }\n }\n\n get availability() {\n return this.currentAvailability;\n }\n get availabilityPercentage() {\n if (this.simulation) {\n return ((this.simulation.capacity / this.simulation.configuration.capacity) * 100).toFixed(2);\n }\n }\n\n constructor(\n private bsModalRef: BsModalRef,\n private dataService: DataService,\n private numberFormatService: FormatNumberService,\n private dvmService: DVMService,\n private allocatorService: AllocatorService,\n private csvParserService: SportsAllianceParserService,\n private inventoryService: InventoryService,\n private router: Router,\n private location: PlatformLocation\n ) {\n this.location.onPopState(() => {\n this.onClose();\n });\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy() {}\n\n public onClose(): void {\n this.bsModalRef.hide();\n }\n\n public hasAllocation() {\n return this.simulation.allocation;\n }\n public formatNumber(price: number): string {\n return this.numberFormatService.formatNumber(price);\n }\n\n public onSubmit(ngForm: Form): void {\n if (!this.isDisabled()) {\n const csvClientsFile = this.clientsCsv.getFile();\n const csvCategoriesFile = this.categoriesCsv.getFile();\n const viewer = this.dvmService.viewer;\n\n this.showStep2();\n\n if (csvClientsFile && csvCategoriesFile && viewer) {\n // TODO: file validator\n\n Promise.all([csvClientsFile.text(), csvCategoriesFile.text(), this.delay(100)]).then((results) => {\n const [csvClients, csvCategories] = results;\n\n const maps = [];\n if (this.configuration.tier_list) {\n this.configuration.tier_list.forEach((level) => {\n maps.push(level.map_id);\n });\n }\n\n // TODO: upgrade y downgrade debería de venir del popover\n const p = this.csvParserService.full(viewer, csvClients, csvCategories, this.upgrade, this.downgrade, maps);\n return Promise.all([p, this.delay(1000)]).then((r) => {\n const result = r[0];\n let error = false;\n let assignedClients = 0;\n let unassignedClients = 0;\n Array.from(result.assigned).forEach((group: any) => (assignedClients += group.assigned.length));\n Array.from(result.unassigned).forEach((group: any) => (unassignedClients += group.members.length));\n const percentage = assignedClients ? (assignedClients / (assignedClients + unassignedClients)) * 100 : 0;\n this.result = {\n computedPercentage: percentage,\n membersLeft: unassignedClients,\n membersAssigned: assignedClients,\n };\n if (!percentage && !result.unassigned.size) {\n error = true;\n this.allocatorService.clearAllocationFromSimulation().then((success) => {\n this.showStep3(error);\n });\n } else {\n this.showStep3(error);\n }\n });\n });\n }\n }\n }\n\n private delay(time: number): Promise {\n return new Promise((resolve) => setTimeout(resolve, time));\n }\n\n public isDisabled(): boolean {\n return (!this.clientsCsv?.hasFile() ?? true) || (!this.categoriesCsv?.hasFile() ?? true);\n }\n\n public onViewAllocation() {\n this.onClose();\n this.router.navigate([\"/allocation/\" + this.dataService.currentSimulationId]);\n }\n\n private showStep1() {\n this.modalStep1.nativeElement.classList.remove(\"d-none\");\n this.modalStep2.nativeElement.classList.add(\"d-none\");\n this.modalStep3.nativeElement.classList.add(\"d-none\");\n this.modalStep4.nativeElement.classList.add(\"d-none\");\n }\n\n private showStep2() {\n this.modalStep1.nativeElement.classList.add(\"d-none\");\n this.modalStep2.nativeElement.classList.remove(\"d-none\");\n this.modalStep3.nativeElement.classList.add(\"d-none\");\n this.modalStep4.nativeElement.classList.add(\"d-none\");\n }\n\n private showStep3(error: boolean) {\n this.modalStep1.nativeElement.classList.add(\"d-none\");\n this.modalStep2.nativeElement.classList.add(\"d-none\");\n if (!error) {\n this.modalStep3.nativeElement.classList.remove(\"d-none\");\n } else {\n this.modalStep4.nativeElement.classList.remove(\"d-none\");\n }\n }\n}\n","\n","import {Injectable} from '@angular/core';\nimport {InventoryService} from '../../../services/inventory.service';\nimport {AuthenticationService} from '../../../../auth';\nimport {Subscription} from 'rxjs';\nimport {SDEPlugin} from '../../../shared/models/user-data.model';\nimport {ModalOptions} from 'ngx-bootstrap/modal/modal-options.class';\nimport {BsModalRef} from 'ngx-bootstrap/modal/bs-modal-ref.service';\nimport {BsModalService} from 'ngx-bootstrap/modal';\nimport {SportsAllianceModalComponent} from '../components/modals/sports-alliance-modal/sports-alliance-modal.component';\nimport {LaligaModalComponent} from '../components/modals/laliga-modal/laliga-modal.component';\nimport {MlbModalComponent} from '../components/modals/mlb-modal/mlb-modal.component';\nimport {AllocatorRefs} from '../allocator.module';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AllocatorModalService {\n\n public allowAllocation = false;\n public ref: AllocatorRefs = '';\n public resultFile: Blob | null = null;\n private userSubscription: Subscription;\n\n\n constructor(private inventoryService: InventoryService,\n private authService: AuthenticationService,\n private modalService: BsModalService)\n {\n this.userSubscription = this.authService.getUserLoggedSubject()\n .subscribe((user) => {\n if (user) {\n // TODO: plugin debería tener un nombre génerico (allocator?) o ser dos plugins (allocator + parser)\n const plugin = user.user.plugins.find((pl) => pl.type === 'allocation') as SDEPlugin | null;\n if (plugin) {\n this.allowAllocation = true;\n this.ref = (plugin.ref ?? '').toLowerCase() as AllocatorRefs;\n return;\n }\n }\n this.allowAllocation = false;\n this.ref = '';\n });\n }\n\n public showModal(modalConfig?: ModalOptions): BsModalRef {\n switch (this.ref) {\n case 'sportsallianceallocator':\n return this.modalService.show(SportsAllianceModalComponent, modalConfig);\n case 'laligaallocator':\n return this.modalService.show(LaligaModalComponent, modalConfig);\n case 'mlballocator':\n return this.modalService.show(MlbModalComponent, modalConfig);\n }\n\n throw new Error('Invalid allocator ref');\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { InventoryService } from \"../../../services/inventory.service\";\nimport { DataService } from \"../../../services/data.service\";\nimport { SocialdistancingService } from \"../../../services/socialdistancing.service\";\nimport { DVMService } from \"../../../services/dvm.service\";\nimport { AuthenticationService } from \"../../../../auth\";\nimport { Subscription } from \"rxjs\";\nimport { SDEPlugin } from \"../../../shared/models/user-data.model\";\nimport { CategoriesService } from \"../../../services/categories.service\";\nimport { AllocatorRefs } from \"../allocator.module\";\nimport { GroupsService } from \"../../../services/groups.service\";\nimport {\n MapViewer,\n MapViewerInitializerOptions,\n MapViewerLoadMapOptions,\n MapViewerNode,\n SocialDistancingAssignGroup,\n SocialDistancingAssignGroupResult,\n SocialDistancingAssignInput,\n SocialDistancingAssignOutput,\n SocialDistancingAssignToCurrentResult,\n} from \"@3ddv/dvm-internal\";\n\ninterface AssignGroupsInput {\n groups: SocialDistancingAssignGroup[];\n maps?: string[];\n}\n\ninterface AssignGroupsFromCurrentInput {\n groups: SocialDistancingAssignGroup[];\n // getGroupsInput?: SocialDistancingGetGroupsInput;\n maps?: string[];\n}\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class AllocatorService {\n get allowAllocation(): boolean {\n return this._allowAllocation;\n }\n\n private _allowAllocation = false;\n public ref: AllocatorRefs = \"\";\n public resultFile: Blob | null = null;\n public resultFileName: string | null = null;\n private userSubscription: Subscription;\n\n private showAllocatedSeatsFlag = false;\n\n get showAllocatedSeats(): boolean {\n return this.showAllocatedSeatsFlag;\n }\n\n set showAllocatedSeats(value: boolean) {\n const old = this.showAllocatedSeatsFlag;\n this.showAllocatedSeatsFlag = value;\n\n if (old !== value) {\n const inventory = this.inventoryService.getInventoryData();\n const viewer = this.dvmService.viewer;\n if (inventory && viewer) {\n this.setAllocatedGroup(viewer, inventory);\n }\n }\n }\n\n constructor(\n private dvmService: DVMService,\n private inventoryService: InventoryService,\n private socialdistancingService: SocialdistancingService,\n private dataService: DataService,\n private authService: AuthenticationService,\n private categoriesService: CategoriesService,\n private groupsService: GroupsService\n ) {\n this.userSubscription = this.authService.getUserLoggedSubject().subscribe((user) => {\n if (user) {\n // TODO: plugin debería tener un nombre génerico (allocator?) o ser dos plugins (allocator + parser)\n const plugin = user.user.plugins.find((pl) => pl.type === \"allocation\") as SDEPlugin | null;\n if (plugin) {\n this._allowAllocation = true;\n this.ref = (plugin.ref ?? \"\").toLowerCase() as AllocatorRefs;\n return;\n }\n }\n this._allowAllocation = false;\n this.ref = \"\";\n });\n this.categoriesService.printCategoriesObservable$.subscribe((viewer) => {\n const inventory = this.inventoryService.getInventoryData();\n this.setAllocatedGroup(viewer, inventory);\n });\n this.inventoryService.inventoryObservable$.subscribe((inventory) => {\n const viewer = this.dvmService.viewer;\n this.setAllocatedGroup(viewer, inventory);\n });\n }\n\n // public showModal(modalConfig?: ModalOptions): BsModalRef {\n // switch (this.ref) {\n // case 'sportsallianceallocator':\n // return this.modalService.show(SportsAllianceModalComponent, modalConfig);\n // case 'laligaallocator':\n // return this.modalService.show(LaligaModalComponent, modalConfig);\n // case 'mlballocator':\n // return this.modalService.show(MlbModalComponent, modalConfig);\n // }\n //\n // throw new Error('Invalid allocator ref');\n // }\n\n public reset() {\n this.resultFile = null;\n this.resultFileName = null;\n }\n\n public assignGroups(\n viewer: MapViewer,\n input: AssignGroupsInput,\n socialDistancing?: number,\n aisleSeats?: number\n ): Promise {\n if (!viewer.social_distancing) {\n return Promise.reject(new Error(`Missing 'social_distancing' plugin`));\n }\n\n if (!this._allowAllocation) {\n return Promise.reject(new Error(\"Allocations not allowed\"));\n }\n\n const { groups, maps } = input;\n\n groupsReport(groups);\n\n const currentMapId = viewer.getMapId();\n const venueId = viewer.getVenueId();\n\n const mainPromise = this.assignGroups2(viewer, groups, socialDistancing, aisleSeats).then((result) => {\n // TODO: do stuff only for main viewer\n return result;\n });\n const promiseArray: Promise[] = [mainPromise];\n\n if (maps) {\n const index = maps.indexOf(currentMapId);\n if (index > -1) {\n maps.splice(index, 1);\n }\n\n maps.forEach((mapId) => {\n const viewerConfig = this.dvmService.getDVMConfig() as MapViewerInitializerOptions & MapViewerLoadMapOptions;\n viewerConfig.venue_id = this.dvmService.viewer.getVenueId();\n viewerConfig.map_id = mapId;\n viewerConfig.container = \"dummy-viewer-container\";\n\n const promise = (window as any).DVM.loadModule(\"map_viewer\", viewerConfig).then((localViewer) => {\n return localViewer\n .loadMap(viewerConfig)\n .then((response) => {\n const availableInventory = this.inventoryService.getAvailableInventory(true).seats;\n localViewer.setAvailability(\"seat\", availableInventory);\n return this.assignGroups2(localViewer, groups, aisleSeats);\n })\n .then((result) => {\n // TODO: do stuff only for secondary viewers\n localViewer.reset();\n localViewer.close();\n\n return result;\n });\n });\n\n promiseArray.push(promise);\n });\n }\n\n return Promise.all(promiseArray).then((resultArray) => {\n this.reset();\n const merge = this.mergeAssignResults(resultArray);\n return merge;\n });\n }\n\n public assignGroupsToCurrent(\n viewer: MapViewer,\n input: AssignGroupsFromCurrentInput,\n maxAssignedClients?: number\n ): Promise {\n if (!viewer.social_distancing) {\n return Promise.reject(new Error(`Missing 'social_distancing' plugin`));\n }\n\n if (!this._allowAllocation) {\n return Promise.reject(new Error(\"Allocations not allowed\"));\n }\n\n const { groups, maps } = input;\n\n groupsReport(groups);\n\n const currentMapId = viewer.getMapId();\n const venueId = viewer.getVenueId();\n\n const inventoryMapMissmatches: string[] = [];\n const inventory = this.inventoryService.getInventoryData();\n\n let total = 0;\n const s1 = viewer.getNodesByType(\"seat\");\n s1.forEach(checkMissmatch);\n total += s1.length;\n\n function checkMissmatch(node: MapViewerNode) {\n const id: string = node.id;\n const split: string[] | null = id.split(\"S_\")?.[1]?.split(\"-\") ?? null;\n let success = false;\n if (split) {\n const [sectionId, rowId, seatId] = split;\n const data = inventory[sectionId]?.elements[rowId]?.elements[seatId]?.data;\n if (data) {\n success = true;\n }\n }\n if (!success) {\n inventoryMapMissmatches.push(node.id);\n }\n }\n const mainPromise = this.assignGroupsToCurrent2(viewer, groups, maxAssignedClients).then((result) => {\n // TODO: do stuff only for main viewer\n return result;\n });\n const promiseArray: Promise[] = [mainPromise];\n\n if (maps) {\n const index = maps.indexOf(currentMapId);\n if (index > -1) {\n maps.splice(index, 1);\n }\n\n maps.forEach((mapId) => {\n const viewerConfig = this.dvmService.getDVMConfig() as MapViewerInitializerOptions & MapViewerLoadMapOptions;\n viewerConfig.venue_id = this.dvmService.viewer.getVenueId();\n viewerConfig.map_id = mapId;\n viewerConfig.container = \"dummy-viewer-container\";\n\n const promise = (window as any).DVM.loadModule(\"map_viewer\", viewerConfig).then((localViewer) => {\n return localViewer\n .loadMap(viewerConfig)\n .then((response) => {\n const availableInventory = this.inventoryService.getAvailableInventory(true).seats;\n localViewer.setAvailability(\"seat\", availableInventory);\n const s2 = localViewer.getNodesByType(\"seat\");\n s2.forEach(checkMissmatch);\n total += s2.length;\n return this.assignGroupsToCurrent2(localViewer, groups, maxAssignedClients);\n })\n .then((result) => {\n // TODO: do stuff only for secondary viewers\n localViewer.reset();\n localViewer.close();\n\n return result;\n });\n });\n\n promiseArray.push(promise);\n });\n }\n\n return Promise.all(promiseArray).then((resultArray) => {\n // console.log(`TOTAL SEATS: ${total}`);\n if (inventoryMapMissmatches.length) {\n console.warn(`INVENTORY - MAP MISSMATCHES:\\n${inventoryMapMissmatches.join(\", \")}`);\n }\n this.reset();\n const merge = this.mergeAssignToCurrentResults(resultArray, maxAssignedClients);\n return merge;\n });\n }\n\n private assignGroups2(\n viewer: MapViewer,\n groups: SocialDistancingAssignGroup[],\n socialDistancing?: number,\n aisleSeats?: number\n ): Promise {\n if (!viewer.social_distancing) {\n return Promise.reject(`Missing 'social_distancing' plugin`);\n }\n\n const obj: SocialDistancingAssignInput = {\n groups: filterOwnParents(viewer, groups),\n neighbor_distance: this.socialdistancingService.neighborDistance,\n security_distance: socialDistancing ?? this.socialdistancingService.securityDistance,\n from_edges: true,\n only_from_edges: this.socialdistancingService.limit2groups,\n kill_edges: aisleSeats ?? this.socialdistancingService.isleSeats,\n invalidated: viewer\n .getNodesByGroups(\"seat\", this.groupsService.getGroupBehaviors(\"invalidated\"))\n .map((n) => n.id),\n validated: viewer.getNodesByGroups(\"seat\", this.groupsService.getGroupBehaviors(\"validated\")).map((n) => n.id),\n isolated_groups: this.socialdistancingService.buildIsolatedGroups(viewer),\n };\n\n return viewer.social_distancing.assignGroups(obj);\n }\n private assignGroupsToCurrent2(\n viewer: MapViewer,\n groups: SocialDistancingAssignGroup[],\n maxAssignedClients?: number\n ): Promise {\n if (!viewer.social_distancing) {\n return Promise.reject(`Missing 'social_distancing' plugin`);\n }\n\n // assignGroupsToCurrent asigna sillas sobre la disponibilidad actual (se asume que ya se ha hecho la simulación)\n // - No se ponen validated porque matarían sillas, y en este caso no intersa.\n // - En invalidated se ponen los nodos que forman parte del behavior 'validated' porque representa que en esa silla ya una persona,\n // por lo que no se debe hacer un allocation en esa silla, y sin embargo NO debe matar sillas (por eso no se pone en 'validated')\n const obj = {\n neighbor_distance: this.socialdistancingService.neighborDistance,\n invalidated: viewer\n .getNodesByGroups(\"seat\", this.groupsService.getGroupBehaviors(\"validated\" /* NO es una errata! */))\n .map((n) => n.id),\n isolated_groups: this.socialdistancingService.buildIsolatedGroups(viewer),\n };\n\n return viewer.social_distancing.assignGroupsToCurrent(obj, filterOwnParents(viewer, groups), maxAssignedClients);\n }\n\n private mergeAssignResults(resultArray: SocialDistancingAssignOutput[]): SocialDistancingAssignOutput {\n // const output: SocialDistancingAssignToCurrentResult = {\n // total_nodes\n // groups: [],\n // unassigned: [],\n // }\n\n return resultArray.reduce((acc, curr) => {\n acc.total_nodes += curr.total_nodes;\n acc.computed_nodes += curr.computed_nodes;\n acc.total_searches += curr.total_searches;\n acc.build_time += curr.build_time;\n acc.compute_time += curr.compute_time;\n acc.availability = acc.availability.concat(curr.availability);\n acc.groups = acc.groups.concat(curr.groups);\n acc.unassigned = acc.unassigned.concat(curr.unassigned);\n acc.unavailable.killed_edges = acc.unavailable.killed_edges.concat(curr.unavailable.killed_edges);\n acc.unavailable.security = acc.unavailable.security.concat(curr.unavailable.security);\n // TODO: acc.grouped\n return acc;\n });\n }\n\n private mergeAssignToCurrentResults(\n resultArray: SocialDistancingAssignToCurrentResult[],\n maxAssignedClients: number = Infinity\n ): SocialDistancingAssignToCurrentResult {\n const assigned: Set = new Set();\n const unassigned: Set = new Set();\n const surplus: string[] = [];\n const available: string[] = [];\n\n const assignedMap: Map = new Map();\n const unassignedMap: Map = new Map();\n\n for (const r of resultArray) {\n r.assigned.forEach((g) => {\n if (!assignedMap.has(g.group_id)) {\n assignedMap.set(g.group_id, g);\n // Asumimos que esto es correcto porque estamos asumiendo que un grupo solo se ha asignado una vez\n available.push(...g.assigned);\n } else {\n // TODO: borrar/comentar\n console.warn(`Group assigned more than once: ${g.group_id}`);\n }\n });\n\n // Asumimos que esto es correcto porque estamos asumiendo que un grupo solo se ha asignado una vez\n surplus.push(...r.surplus);\n }\n\n for (const r of resultArray) {\n r.unassigned.forEach((g) => {\n if (!assignedMap.has(g.group_id) && !unassignedMap.has(g.group_id)) {\n unassignedMap.set(g.group_id, g);\n } else {\n // TODO: borrar/comentar\n // console.warn(`Group unassigned more than once: ${g.group_id}`);\n }\n });\n }\n\n assignedMap.forEach((group, groupId) => {\n available.push(...group.assigned);\n });\n\n let total = 0;\n\n const assignedArr: Array = Array.from(assignedMap.values());\n const unassignedArr: Array = Array.from(unassignedMap.values());\n\n assignedArr\n .sort((a, b) => a.priority - b.priority)\n .forEach((a) => {\n if (total < maxAssignedClients) {\n total += a.assigned.length;\n assigned.add(a);\n } else {\n a.assigned.length = 0;\n unassignedArr.push(a);\n }\n });\n\n unassignedArr.sort((a, b) => a.priority - b.priority).forEach((x) => unassigned.add(x));\n\n const result: SocialDistancingAssignToCurrentResult = {\n assigned,\n unassigned,\n surplus,\n available,\n };\n\n return result;\n }\n\n /*private _mergeAssignToCurrentResults(\n resultArray: SocialDistancingAssignToCurrentResult[],\n maxAssignedClients: number = Infinity\n ): SocialDistancingAssignToCurrentResult {\n const assigned: Set = new Set();\n const unassigned: Set = new Set();\n const surplus: string[] = [];\n const available: string[] = [];\n\n const assignedArr: SocialDistancingAssignGroupResult[] = [];\n const unassignedArr: SocialDistancingAssignGroupResult[] = [];\n for (const r of resultArray) {\n // r.assigned.forEach(x => assigned.add(x));\n // r.unassigned.forEach(x => unassigned.add(x));\n r.assigned.forEach(x => assignedArr.push(x));\n r.unassigned.forEach(x => unassignedArr.push(x));\n surplus.push(...r.surplus);\n available.push(...r.available);\n }\n\n let total = 0;\n assignedArr\n .sort((a, b) => a.priority - b.priority)\n .forEach((a) => {\n if (total < maxAssignedClients) {\n total += a.assigned.length;\n assigned.add(a);\n } else {\n a.assigned.length = 0;\n unassignedArr.push(a);\n }\n });\n\n unassignedArr\n .sort((a, b) => a.priority - b.priority)\n .forEach(x => unassigned.add(x));\n\n const result: SocialDistancingAssignToCurrentResult = {\n assigned,\n unassigned,\n surplus,\n available,\n };\n\n return result;\n }*/\n\n public clearAllocationInventoryAndResult(): Promise {\n const inventory = this.inventoryService.getInventoryData();\n this.clearInventoryAllocation(inventory);\n this.inventoryService.setInventoryData(inventory);\n const p1 = this.inventoryService.sendInventoryData(true).toPromise();\n const p2 = this.dataService.deleteAllocationResult(this.dataService.currentSimulationId, this.ref).toPromise();\n\n return Promise.all([p1, p2]).then((success2) => {\n return Promise.resolve();\n });\n }\n\n public setSimulationAsAllocation(inventory): Promise {\n this.inventoryService.setInventoryData(inventory);\n // TODO: hacer next para que el resto de componentes sepan que ha cambiado\n // this.inventoryService.availabilityLoadedSubject.next();\n\n const body = { allocation: true };\n const p1 = this.inventoryService.sendInventoryData(true).toPromise();\n const p2 = this.dataService.editSimulation(this.dataService.currentSimulationId, body).toPromise();\n return Promise.all([p1, p2]).then((r) => {\n this.dataService.simulationData = r[1].result;\n this.dataService.setCurrentSimulation$(r[1].result);\n return Promise.resolve();\n });\n }\n\n public clearAllocationFromSimulation(): Promise {\n const inventory = this.inventoryService.getInventoryData();\n this.clearInventoryAllocation(inventory);\n this.inventoryService.setInventoryData(inventory);\n const p1 = this.inventoryService.sendInventoryData(true).toPromise();\n\n const body = { allocation: false };\n // console.log(this.dataService.currentSimulationId);\n const p2 = this.dataService\n .editSimulation(this.dataService.currentSimulationId, body)\n .toPromise()\n .then((success) => {\n this.dataService.setCurrentSimulation$(success.result);\n return this.dataService.deleteAllocationResult(this.dataService.currentSimulationId, this.ref).toPromise();\n });\n return Promise.all([p1, p2]).then((success2) => {\n return Promise.resolve();\n });\n }\n\n public clearInventoryAllocation(inventory) {\n for (const sectionKey in inventory) {\n if (inventory.hasOwnProperty(sectionKey)) {\n const sectionObj = inventory[sectionKey];\n for (const rowKey in sectionObj.elements) {\n if (sectionObj.elements.hasOwnProperty(rowKey)) {\n const rowObj = sectionObj.elements[rowKey];\n for (const seatKey in rowObj.elements) {\n if (rowObj.elements.hasOwnProperty(seatKey)) {\n const seatObj = rowObj.elements[seatKey];\n const data = seatObj.data;\n if (data && data.allocation) {\n delete data.allocation;\n }\n }\n }\n }\n }\n }\n }\n }\n\n /**\n * Añade el grupo 'allocation' a todas las sillas con datos de allocation en el inventory, de forma\n * que se pueda pintar con estilo propio\n */\n public setAllocatedGroup(viewer: MapViewer, inventory) {\n const old = viewer.getNodesByGroups(\"seat\", \"allocation\");\n viewer.removeNodesFromGroup(old, \"allocation\");\n if (this.showAllocatedSeats) {\n for (const sectionKey in inventory) {\n if (inventory.hasOwnProperty(sectionKey)) {\n const sectionObj = inventory[sectionKey];\n for (const rowKey in sectionObj.elements) {\n if (sectionObj.elements.hasOwnProperty(rowKey)) {\n const rowObj = sectionObj.elements[rowKey];\n for (const seatKey in rowObj.elements) {\n if (rowObj.elements.hasOwnProperty(seatKey)) {\n const seatObj = rowObj.elements[seatKey];\n const data = seatObj.data;\n if (data && data.allocation && data.allocation.allocated) {\n const seatId = `S_${sectionKey}-${rowKey}-${seatKey}`;\n viewer.addNodesToGroup(seatId, \"allocation\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}\n\nfunction groupsReport(groups: SocialDistancingAssignGroup[]): void {\n let total = 0;\n const groupsObj = {};\n groups.forEach((g) => {\n const len = g.members.length;\n if (groupsObj[len] == null) {\n groupsObj[len] = 0;\n }\n groupsObj[len]++;\n total++;\n });\n\n console.log(\"----------------------\");\n console.log(\"File groups report:\");\n for (const i in groupsObj) {\n if (groupsObj.hasOwnProperty(i)) {\n console.log(`Groups of ${i}: ${groupsObj[i]} (${((groupsObj[i] / total) * 100).toFixed(2)}%)`);\n }\n }\n console.log(\"----------------------\");\n}\n\nfunction filterOwnParents(viewer: MapViewer, groups: SocialDistancingAssignGroup[]): SocialDistancingAssignGroup[] {\n const groupsCopy = JSON.parse(JSON.stringify(groups)) as SocialDistancingAssignGroup[];\n return groupsCopy.filter((group) => {\n const preferred = group.preferred[0];\n if (preferred) {\n // If the first preferred is not in this map, the entire group is removed\n if (viewer.getNodeById(preferred)) {\n // If the first preferred is in the map, we clean the preferred ids with only the ones that are in this map\n group.preferred = group.preferred.filter((nodeId) => !!viewer.getNodeById(nodeId));\n return true;\n }\n }\n return false;\n });\n}\n","import { Injectable } from \"@angular/core\";\nimport { InventoryService } from \"../../../../services/inventory.service\";\nimport { AllocatorService } from \"../allocator.service\";\nimport { DataService } from \"../../../../services/data.service\";\nimport JSZip from \"jszip\";\nimport { SocialdistancingService } from \"../../../../services/socialdistancing.service\";\nimport { parseCSVToJSON } from \"../../utils/parse\";\nimport iconv from \"iconv-lite\";\nimport {\n MapViewer,\n SocialDistancingAssignGroup,\n SocialDistancingAssignGroupResult,\n SocialDistancingAssignOutput,\n SocialDistancingAssignToCurrentResult,\n} from \"@3ddv/dvm-internal\";\n\nexport interface LaligaVenueDataRow {\n IDZONA: number; // int\n ZONA: string; // string(100)\n ZONA_ABREVIADO: string; // string(50)\n PUERTA: string; // string(50)\n IDASIENTO: number; // int\n POS_FILA: number; // int\n POS_ASIENTO: number; // int\n FILA: string; // string(50)\n ASIENTO: string; // string(50)\n SLOT: string | null; // string(50)\n ESTADO_AVET: TEstadoAvet; // string(1)\n PATH_DESC: string | null; // string(25)\n IDEVENT: number; // int\n IDGRUPOZONA: number | null; // int\n GRUPOZONA: string | null; // string(50)\n}\n\ntype TReservas = \"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"9\" | \"F\" | \"G\" | \"H\" | \"I\" | \"J\" | \"K\" | \"R\" | null;\ntype TEstadoAvet = TReservas | \"L\" | \"O\";\ntype TEstadoAsiento = TEstadoAvet | \"B\";\n\nexport interface LaligaSubscriberDataRow {\n IDPERSONA: number | null; // int\n DNI: string | null; // string(25)\n APELLIDO_1: string | null; // string(100)\n APELLIDO_2: string | null; // string(35)\n NOMBRE: string | null; // string(25)\n EMPRESA: string | null; // string(100)\n EMAIL: string | null; // string(100)\n IDZONA: number | null; // int\n IDASIENTO: number | null; // int\n IDZONA2: number | null; // int\n IDGRUPOZONA: number | null; // int\n GROUP_PERSON: string | null; // string(50)\n GROUP_ADMIN: 0 | 1 | null; // int\n PRIORIDAD: number | null; // int\n PRICE: number | null; // money\n IDEVENT: number; // int\n}\n\nexport interface LaligaOutputRow {\n IDEVENT: number; // int\n IDASIENTO: number; // int\n ESTADO_ASIENTO: TEstadoAsiento; // string(1)\n IDPERSONA: number | null; // int\n DNI: string | null; // string(25)\n APELLIDO_1: string | null; // string(100)\n APELLIDO_2: string | null; // string(35)\n NOMBRE: string | null; // string(25)\n EMPRESA: string | null; // string(100)\n EMAIL: string | null; // string(100)\n GROUP_PERSON: string | null; // string(50)\n GROUP_ADMIN: 0 | 1 | null;\n SLOT: string | null; // string(50)\n PRICE: number | null; // money\n internalState: \"available\" | \"reserved\" | \"surplus\" | \"blocked\" | \"unused\" | \"unknown\";\n allocated: boolean;\n}\n\nexport interface LaligaUnassignedOutputRow {\n IDEVENT: number; // int\n IDPERSONA: number | null; // int\n DNI: string | null; // string(25)\n APELLIDO_1: string | null; // string(100)\n APELLIDO_2: string | null; // string(35)\n NOMBRE: string | null; // string(25)\n EMPRESA: string | null; // string(100)\n EMAIL: string | null; // string(100)\n GROUP_PERSON: string | null; // string(50)\n GROUP_ADMIN: 0 | 1 | null;\n PRICE: number | null; // money\n allocated: boolean;\n}\n\ninterface CUSTOM {\n abonados: LaligaSubscriberDataRow[];\n preferred: string[];\n}\n\nexport class LaligaRepeatedError extends Error {\n constructor(\n message: string,\n public repeatedRows: LaligaSubscriberDataRow[],\n public file: Blob,\n public filename: string\n ) {\n super(message);\n }\n}\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class LaligaParserService {\n constructor(\n private inventoryService: InventoryService,\n private allocatorService: AllocatorService,\n private dataService: DataService,\n private socialdistancingService: SocialdistancingService\n ) {}\n\n public fullAssign(\n viewer: MapViewer,\n csvAbonados: string,\n csvAforo: string,\n socialDistancing: number,\n aisleSeats: number,\n outputPrefix: string,\n upgrade: boolean,\n downgrade: boolean,\n maps?: string[]\n ): Promise {\n const { aforoByAsientoId, aforoBySeatId, zonasByLocalidad } = this.parseVenueData(viewer, csvAforo);\n const { groups, subscribersByUniqueId, repeatedRows } = this.parseSubscribersData(\n viewer,\n csvAbonados,\n zonasByLocalidad,\n upgrade,\n downgrade\n );\n\n if (repeatedRows.length > 0) {\n return Promise.reject(this.generateRepeatedError(repeatedRows, outputPrefix));\n }\n\n return this.allocatorService.assignGroups(viewer, { groups, maps }, socialDistancing, aisleSeats).then((result) => {\n const assignResult = new Set(result.groups);\n const unavailable = new Set(result.unavailable.killed_edges.concat(result.unavailable.security));\n const output = this.generateOutputCsvFromCurrent(\n aforoBySeatId,\n subscribersByUniqueId,\n assignResult,\n undefined,\n unavailable\n );\n const outputUnassigned = this.generateOutputUnassignedCsv(subscribersByUniqueId, new Set(result.unassigned));\n return this.endAssign(viewer, output, outputUnassigned, aforoByAsientoId, outputPrefix, result);\n });\n }\n\n private generateRepeatedError(repeatedRows: LaligaSubscriberDataRow[], outputPrefix: string): LaligaRepeatedError {\n const buffer = iconv.encode(this.stringifyRepeatedRows(repeatedRows), \"ISO-8859-1\");\n const blob = new Blob([buffer], { type: \"text/csv\" });\n const filename = `${outputPrefix}REPEATED.csv`;\n const message = `${repeatedRows.length} repeated subscribers have been found.`;\n return new LaligaRepeatedError(message, repeatedRows, blob, filename);\n }\n\n public fullAssignToCurrent(\n viewer: MapViewer,\n csvAbonados: string,\n csvAforo: string,\n outputPrefix: string,\n upgrade: boolean,\n downgrade: boolean,\n maps?: string[],\n maxAssignedClients?: number\n ): Promise {\n const { aforoByAsientoId, aforoBySeatId, zonasByLocalidad } = this.parseVenueData(viewer, csvAforo);\n const { groups, subscribersByUniqueId, repeatedRows } = this.parseSubscribersData(\n viewer,\n csvAbonados,\n zonasByLocalidad,\n upgrade,\n downgrade\n );\n\n if (repeatedRows.length > 0) {\n return Promise.reject(this.generateRepeatedError(repeatedRows, outputPrefix));\n }\n\n if (groups.length > 0) {\n return this.allocatorService\n .assignGroupsToCurrent(viewer, { groups, maps }, maxAssignedClients)\n .then((result) => {\n const surplus: Set = new Set(result.surplus);\n const resultAssigned = result.assigned;\n const resultUnassigned = result.unassigned;\n const output = this.generateOutputCsvFromCurrent(\n aforoBySeatId,\n subscribersByUniqueId,\n resultAssigned,\n surplus\n );\n const outputUnassigned = this.generateOutputUnassignedCsv(subscribersByUniqueId, resultUnassigned);\n return this.endAssign(viewer, output, outputUnassigned, aforoByAsientoId, outputPrefix, result);\n });\n } else {\n const output = this.generateOutputCsvFromCurrent(aforoBySeatId, subscribersByUniqueId, new Set());\n const outputUnassigned = this.generateOutputUnassignedCsv(subscribersByUniqueId, new Set());\n const fakeResult: SocialDistancingAssignToCurrentResult = {\n assigned: new Set(),\n unassigned: new Set(),\n surplus: [],\n available: [],\n };\n return this.endAssign(viewer, output, outputUnassigned, aforoByAsientoId, outputPrefix, fakeResult);\n }\n }\n\n private endAssign(\n viewer: MapViewer,\n outputAssigned: LaligaOutputRow[],\n outputUnassigned: LaligaUnassignedOutputRow[],\n aforoByAsientoId: Map,\n outputPrefix: string,\n result: T\n ): Promise {\n const inventory = this.inventoryService.getInventoryData();\n this.allocatorService.clearInventoryAllocation(inventory);\n return this.fillInventoryAllocation(inventory, outputAssigned, aforoByAsientoId, true).then(() => {\n const zip = new JSZip();\n const buffer1 = iconv.encode(this.stringifyOutputCsv(outputAssigned), \"ISO-8859-1\");\n const buffer2 = iconv.encode(this.stringifyUnassignedOutputCsv(outputUnassigned), \"ISO-8859-1\");\n const blob1 = new Blob([buffer1], { type: \"text/csv\" });\n const blob2 = new Blob([buffer2], { type: \"text/csv\" });\n zip.file(`${outputPrefix}EXPORT_DATA.csv`, blob1);\n zip.file(`${outputPrefix}UNASSIGNED_DATA.csv`, blob2);\n\n return zip\n .generateAsync({ type: \"blob\", mimeType: \"application/zip\" })\n .then((zipFile) => {\n this.allocatorService.resultFile = zipFile;\n this.allocatorService.resultFileName = \"result.zip\";\n return this.dataService\n .sendAllocationResult(this.dataService.currentSimulationId, this.allocatorService.ref, zipFile)\n .toPromise();\n })\n .then(() => {\n const inv = this.inventoryService.getAvailableInventory(true);\n this.inventoryService.updateTotalsHash();\n viewer.setAvailability(\"section\", inv.sections);\n viewer.setAvailability(\"seat\", inv.seats);\n this.inventoryService.availabilityLoadedSubject.next();\n\n return result;\n });\n });\n }\n\n private stringifyOutputCsv(output: LaligaOutputRow[]): string {\n const str1 =\n \"IDEVENT;IDASIENTO;ESTADO_ASIENTO;IDPERSONA;DNI;APELLIDO_1;APELLIDO_2;NOMBRE;EMPRESA;EMAIL;GROUP_PERSON;GROUP_ADMIN;SLOT;PRICE\\n\";\n const str2 = output\n .map((row) => {\n const str =\n (row.IDEVENT ?? \"\") +\n \";\" +\n (row.IDASIENTO ?? \"\") +\n \";\" +\n (row.ESTADO_ASIENTO ?? \"\") +\n \";\" +\n (row.IDPERSONA ?? \"\") +\n \";\" +\n (row.DNI ?? \"\") +\n \";\" +\n (row.APELLIDO_1 ?? \"\") +\n \";\" +\n (row.APELLIDO_2 ?? \"\") +\n \";\" +\n (row.NOMBRE ?? \"\") +\n \";\" +\n (row.EMPRESA ?? \"\") +\n \";\" +\n (row.EMAIL ?? \"\") +\n \";\" +\n (row.GROUP_PERSON ?? \"\") +\n \";\" +\n (row.GROUP_ADMIN ?? \"\") +\n \";\" +\n (row.SLOT ?? \"\") +\n \";\" +\n (row.PRICE ?? \"\");\n return str;\n })\n .join(\"\\n\");\n return str1 + str2;\n }\n\n private stringifyRepeatedRows(repeated: LaligaSubscriberDataRow[]): string {\n const str1 =\n \"IDPERSONA;DNI;APELLIDO_1;APELLIDO_2;NOMBRE;EMPRESA;EMAIL;IDZONA;IDASIENTO;IDZONA2;IDGRUPOZONA;GROUP_PERSON;GROUP_ADMIN;PRIORIDAD;PRICE;IDEVENT\\n\";\n const str2 = repeated\n .map((row) => {\n const str =\n (row.IDPERSONA ?? \"\") +\n \";\" +\n (row.DNI ?? \"\") +\n \";\" +\n (row.APELLIDO_1 ?? \"\") +\n \";\" +\n (row.APELLIDO_2 ?? \"\") +\n \";\" +\n (row.NOMBRE ?? \"\") +\n \";\" +\n (row.EMPRESA ?? \"\") +\n \";\" +\n (row.EMAIL ?? \"\") +\n \";\" +\n (row.IDZONA ?? \"\") +\n \";\" +\n (row.IDASIENTO ?? \"\") +\n \";\" +\n (row.IDZONA2 ?? \"\") +\n \";\" +\n (row.IDGRUPOZONA ?? \"\") +\n \";\" +\n (row.GROUP_PERSON ?? \"\") +\n \";\" +\n (row.GROUP_ADMIN ?? \"\") +\n \";\" +\n (row.PRIORIDAD ?? \"\") +\n \";\" +\n (row.PRICE ?? \"\") +\n \";\" +\n (row.IDEVENT ?? \"\");\n return str;\n })\n .join(\"\\n\");\n return str1 + str2;\n }\n\n private stringifyUnassignedOutputCsv(output: LaligaUnassignedOutputRow[]): string {\n const str1 = \"IDEVENT;IDPERSONA;DNI;APELLIDO_1;APELLIDO_2;NOMBRE;EMPRESA;EMAIL;GROUP_PERSON;GROUP_ADMIN;PRICE\\n\";\n const str2 = output\n .map((row) => {\n const str =\n (row.IDEVENT ?? \"\") +\n \";\" +\n (row.IDPERSONA ?? \"\") +\n \";\" +\n (row.DNI ?? \"\") +\n \";\" +\n (row.APELLIDO_1 ?? \"\") +\n \";\" +\n (row.APELLIDO_2 ?? \"\") +\n \";\" +\n (row.NOMBRE ?? \"\") +\n \";\" +\n (row.EMPRESA ?? \"\") +\n \";\" +\n (row.EMAIL ?? \"\") +\n \";\" +\n (row.GROUP_PERSON ?? \"\") +\n \";\" +\n (row.GROUP_ADMIN ?? \"\") +\n \";\" +\n (row.PRICE ?? \"\");\n return str;\n })\n .join(\"\\n\");\n return str1 + str2;\n }\n\n private generateOutputUnassignedCsv(\n subscribersByUniqueId: Map,\n resultUnassigned: Set\n ): LaligaUnassignedOutputRow[] {\n const output: LaligaUnassignedOutputRow[] = [];\n for (const group of resultUnassigned) {\n const { members } = group;\n for (const uniqueId of members) {\n const subscriberRow = subscribersByUniqueId.get(uniqueId);\n if (subscriberRow) {\n const outputRow: LaligaUnassignedOutputRow = {\n IDEVENT: subscriberRow.IDEVENT,\n IDPERSONA: subscriberRow.IDPERSONA,\n DNI: subscriberRow.DNI,\n APELLIDO_1: subscriberRow.APELLIDO_1,\n APELLIDO_2: subscriberRow.APELLIDO_2,\n NOMBRE: subscriberRow.NOMBRE,\n EMPRESA: subscriberRow.EMPRESA,\n EMAIL: subscriberRow.EMAIL,\n GROUP_PERSON: subscriberRow.GROUP_PERSON,\n GROUP_ADMIN: subscriberRow.GROUP_ADMIN,\n PRICE: subscriberRow.PRICE,\n allocated: false,\n };\n output.push(outputRow);\n }\n }\n }\n return output;\n }\n\n private generateOutputCsvFromCurrent(\n aforoBySeatId: Map,\n subscribersByUniqueId: Map,\n resultAssigned: Set,\n resultSurplus?: Set,\n unavailable?: Set\n ): LaligaOutputRow[] {\n const inventory = this.inventoryService.getInventoryData();\n\n const output: LaligaOutputRow[] = [];\n const rowsByAsientoId: Map = new Map();\n\n const missingVenueRows: string[] = [];\n const missingSubscriberRows: string[] = [];\n\n for (const group of resultAssigned) {\n const { members, assigned } = group;\n if (members.length === assigned.length) {\n for (let i = 0; i < members.length; ++i) {\n const uniqueId = members[i];\n const seatId = assigned[i];\n const venueRow = aforoBySeatId.get(seatId);\n const subscriberRow = subscribersByUniqueId.get(uniqueId);\n\n if (!venueRow) {\n // console.warn(`Missing venue data row`);\n missingVenueRows.push(seatId);\n }\n\n if (!subscriberRow) {\n // console.warn(`Missing subscriber row (fake ids!)`);\n missingSubscriberRows.push(uniqueId);\n }\n\n if (venueRow && subscriberRow) {\n const outputRow: LaligaOutputRow = {\n IDEVENT: venueRow.IDEVENT,\n IDASIENTO: venueRow.IDASIENTO,\n ESTADO_ASIENTO: \"O\",\n IDPERSONA: subscriberRow.IDPERSONA,\n DNI: subscriberRow.DNI,\n APELLIDO_1: subscriberRow.APELLIDO_1,\n APELLIDO_2: subscriberRow.APELLIDO_2,\n NOMBRE: subscriberRow.NOMBRE,\n EMPRESA: subscriberRow.EMPRESA,\n EMAIL: subscriberRow.EMAIL,\n GROUP_PERSON: subscriberRow.GROUP_PERSON,\n GROUP_ADMIN: subscriberRow.GROUP_ADMIN,\n SLOT: venueRow.SLOT,\n PRICE: subscriberRow.PRICE,\n internalState: \"reserved\",\n allocated: true,\n };\n rowsByAsientoId.set(venueRow.IDASIENTO, outputRow);\n }\n }\n }\n }\n\n if (missingVenueRows.length) {\n console.warn(`Missing venue data row:\\n${missingVenueRows.join(\", \")}`);\n console.warn(`Total: ${missingVenueRows.length}\\n`);\n }\n\n if (missingSubscriberRows.length) {\n console.warn(`Missing subscriber row (fake ids!):\\n${missingSubscriberRows.join(\", \")}`);\n console.warn(`Total: ${missingSubscriberRows.length}\\n`);\n }\n\n for (const [seatId, venueRow] of aforoBySeatId) {\n const { IDASIENTO } = venueRow;\n let outputRow: LaligaOutputRow | null = rowsByAsientoId.get(IDASIENTO);\n if (outputRow == null) {\n const _sectionId = venueRow.IDZONA.toString();\n const _rowId = cleanId(venueRow.FILA);\n const _seatId = cleanId(venueRow.ASIENTO);\n const data = inventory[_sectionId]?.elements[_rowId]?.elements[_seatId]?.data;\n outputRow = {\n IDEVENT: venueRow.IDEVENT,\n IDASIENTO: venueRow.IDASIENTO,\n ESTADO_ASIENTO: data?.status === \"onhold\" ? \"O\" : \"B\", // venueRow.ESTADO_AVET,\n IDPERSONA: null, // abonadoRow?.IDPERSONA ?? null, // TODO: debería ser null? (desasignar asiento original)\n DNI: null,\n APELLIDO_1: null, // abonadoRow?.APELLIDO_1 ?? null, // TODO: debería ser null? (desasignar asiento original)\n APELLIDO_2: null, // abonadoRow?.APELLIDO_2 ?? null, // TODO: debería ser null? (desasignar asiento original)\n NOMBRE: null, // abonadoRow?.NOMBRE ?? null, // TODO: debería ser null? (desasignar asiento original)\n EMPRESA: null,\n EMAIL: null,\n GROUP_PERSON: null, // abonadoRow?.GROUP_PERSON ?? null, // TODO: debería ser null? (desasignar asiento original)\n GROUP_ADMIN: null,\n SLOT: venueRow.SLOT,\n PRICE: null, // abonadoRow?.PRICE ?? null, // TODO: debería ser null? (desasignar asiento original)\n internalState: \"unused\",\n allocated: false,\n };\n\n if (resultSurplus) {\n if (resultSurplus.has(seatId)) {\n outputRow.ESTADO_ASIENTO = \"L\";\n // outputRow.ESTADO_ASIENTO = 'B';\n outputRow.internalState = \"surplus\";\n }\n }\n\n if (unavailable) {\n if (unavailable.has(seatId)) {\n outputRow.ESTADO_ASIENTO = \"B\";\n outputRow.internalState = \"blocked\";\n } else {\n // arr.push(seatId);\n // outputRow.ESTADO_ASIENTO = 'B';\n // outputRow.internalState = 'unknown';\n }\n }\n }\n\n output.push(outputRow);\n }\n\n return output;\n }\n\n private fillInventoryAllocation(\n inventory,\n result: LaligaOutputRow[],\n aforoByAsientoId: Map,\n assignToCurrent: boolean\n ) {\n for (const resultRow of result) {\n const { IDASIENTO, IDPERSONA, GROUP_PERSON, EMPRESA } = resultRow;\n\n const aforoRow = aforoByAsientoId.get(IDASIENTO);\n if (aforoRow) {\n const { IDZONA, FILA, ASIENTO } = aforoRow;\n const sectionId = IDZONA.toString();\n const rowId = cleanId(FILA);\n const seatId = cleanId(ASIENTO);\n if (sectionId && rowId && seatId) {\n const data = inventory[sectionId]?.elements[rowId]?.elements[seatId]?.data;\n if (data) {\n if (data.category === \"locked\" && resultRow.IDPERSONA != null) {\n console.warn(`locked seat has been assigned: ${data.code}`);\n }\n\n if (data.allocation) {\n console.warn(\"ALREADY ASSIGNED\");\n }\n data.allocation = Object.assign({}, resultRow);\n\n // TODO: Revisar si se quiere esto\n if (assignToCurrent) {\n if (data.status === \"available\" && resultRow.internalState === \"unused\") {\n resultRow.ESTADO_ASIENTO = \"L\";\n }\n }\n\n // preserve status 'onhold'\n if (data.status !== \"onhold\") {\n data.status =\n resultRow.ESTADO_ASIENTO === \"B\" || data.category === \"locked\" ? \"unavailable\" : \"available\";\n }\n\n data.price = resultRow.PRICE?.toFixed(2) ?? \"1\"; // TODO: asegurarse de que hay que setear precio\n\n if (IDPERSONA) {\n addPopupProperty(data.allocation, \"Client ID\", IDPERSONA);\n }\n\n /*if (EMPRESA) {\n addPopupProperty(data.allocation, 'Company', EMPRESA);\n }*/\n\n if (GROUP_PERSON) {\n addPopupProperty(data.allocation, \"Group ID\", GROUP_PERSON);\n }\n } else {\n console.warn(`seatId do not match with inventory: ${sectionId} - ${rowId} - ${seatId}`);\n }\n }\n }\n }\n\n function addPopupProperty(allocObj, property, value) {\n if (!allocObj.popup) {\n allocObj.popup = {};\n }\n allocObj.popup[property] = value;\n }\n\n return this.allocatorService.setSimulationAsAllocation(inventory);\n }\n\n private _getPreferredZones(\n zonasByLocalidad: Map>,\n preferred: Set,\n IDGRUPOZONA: number,\n upgrade: boolean,\n downgrade: boolean\n ): Set {\n addZone(IDGRUPOZONA);\n\n if (upgrade || downgrade) {\n const ids = Array.from(zonasByLocalidad.keys()).sort((a, b) => b - a);\n\n if (upgrade) {\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < ids.length; ++i) {\n const id = ids[i];\n if (id > IDGRUPOZONA) {\n addZone(id);\n }\n }\n }\n\n if (downgrade) {\n for (let i = ids.length - 1; i >= 0; --i) {\n const id = ids[i];\n if (id < IDGRUPOZONA) {\n addZone(id);\n }\n }\n }\n }\n\n return preferred;\n\n function addZone(id) {\n const zonas = zonasByLocalidad.get(id);\n if (zonas) {\n zonas.forEach((zona) => preferred.add(`S_${zona}`));\n }\n }\n }\n\n private parseSubscribersData(\n viewer: MapViewer,\n csvAbonados: string,\n zonasByLocalidad: Map>,\n upgrade: boolean,\n downgrade: boolean\n ) {\n let UNIQUEID = 1;\n let subscriberRows;\n try {\n subscriberRows = parseCSVToJSON(\n csvAbonados,\n \";\",\n mapSubscriberData,\n isSubscriberValidKey,\n areSubscriberValidKeys\n );\n } catch (err) {\n // throw new Error('Invalid subscribers file: there are invalid or missing keys.');\n throw err;\n }\n // const subscriberRows = csvSubscribersGenerator(viewer, 10000, { 1: 1, 2: 1, 3: 1, 4: 1 });\n\n const abonadosByZone: Map> = new Map();\n const abonadosByPersonId: Map = new Map();\n const abonadosByAsientoId: Map = new Map();\n const groupsMap: Map = new Map();\n const subscribersByUniqueId: Map = new Map();\n const repeatedRows: LaligaSubscriberDataRow[] = [];\n for (const row of subscriberRows) {\n const { GROUP_ADMIN, GROUP_PERSON, IDPERSONA, PRIORIDAD, IDZONA, IDZONA2, IDGRUPOZONA, IDASIENTO, EMPRESA } = row;\n\n if (IDASIENTO) {\n abonadosByAsientoId.set(IDASIENTO, row);\n }\n\n let ok = false;\n if (IDPERSONA) {\n if (abonadosByPersonId.has(IDPERSONA)) {\n repeatedRows.push(row);\n } else {\n ok = true;\n abonadosByPersonId.set(IDPERSONA, row);\n }\n } else if (EMPRESA) {\n ok = true;\n }\n\n if (ok) {\n const uniqueId = `${UNIQUEID++}`;\n subscribersByUniqueId.set(uniqueId, row);\n\n const preferred: Set = new Set();\n if (IDZONA) {\n preferred.add(`S_${IDZONA}`);\n }\n if (IDZONA2) {\n preferred.add(`S_${IDZONA2}`);\n }\n if (IDGRUPOZONA) {\n this._getPreferredZones(zonasByLocalidad, preferred, IDGRUPOZONA, upgrade, downgrade);\n }\n if (!GROUP_PERSON) {\n // NO GROUP\n const groupId = `nogroup_${uniqueId}_`;\n const group: SocialDistancingAssignGroup = {\n group_id: groupId,\n members: [uniqueId],\n priority: PRIORIDAD ?? Infinity,\n preferred: Array.from(preferred),\n };\n groupsMap.set(groupId, group);\n } else {\n // TODO: GROUP\n let group = groupsMap.get(GROUP_PERSON);\n if (group) {\n group.members.push(uniqueId);\n } else {\n group = {\n group_id: GROUP_PERSON,\n members: [uniqueId],\n priority: PRIORIDAD,\n preferred: Array.from(preferred),\n };\n groupsMap.set(GROUP_PERSON, group);\n }\n }\n } else {\n console.warn(\"Problem with CSV row\");\n }\n }\n\n const groups = Array.from(groupsMap.values());\n\n return { subscriberRows, groups, subscribersByUniqueId, repeatedRows };\n }\n\n private parseVenueData(viewer: MapViewer, csvAforo) {\n let aforoRows;\n try {\n aforoRows = parseCSVToJSON(csvAforo, \";\", mapVenueData, isAforoValidKey, areVenueValidKeys);\n } catch (err) {\n // throw new Error('Invalid venue data file: there are invalid or missing keys.');\n throw err;\n }\n // const aforoRows = csvVenueGenerator(viewer);\n // console.log(aforoRows);\n\n const aforoByZone: Map> = new Map();\n const aforoBySlot: Map> = new Map();\n const aforoBySeatId: Map = new Map();\n const aforoByAsientoId: Map = new Map();\n const aforoBySection: Map> = new Map();\n const zonasByLocalidad: Map> = new Map();\n\n const missingInventory: string[] = [];\n for (const row of aforoRows) {\n const { IDGRUPOZONA, SLOT, IDZONA, FILA, ASIENTO, IDASIENTO } = row;\n\n const sectionId = IDZONA.toString();\n const rowId = cleanId(FILA);\n const seatId = cleanId(ASIENTO);\n const fullSectionId = `S_${sectionId}`;\n\n if (IDGRUPOZONA) {\n let set = zonasByLocalidad.get(IDGRUPOZONA);\n if (!set) {\n set = new Set();\n zonasByLocalidad.set(IDGRUPOZONA, set);\n }\n set.add(IDZONA);\n }\n\n aforoByAsientoId.set(IDASIENTO, row);\n\n if (IDZONA && FILA && ASIENTO) {\n const fullSeatId = `${fullSectionId}-${rowId}-${seatId}`;\n aforoBySeatId.set(fullSeatId, row);\n } else {\n console.warn(\"Missing IDZONA or FILA or ASIENTO\");\n }\n\n const inventory = this.inventoryService.getInventoryData();\n const data = inventory[sectionId]?.elements[rowId]?.elements[seatId]?.data;\n\n if (!data) {\n missingInventory.push(`S_${sectionId}-${rowId}-${seatId}`);\n }\n\n if (SLOT) {\n let set = aforoBySlot.get(SLOT);\n if (!set) {\n set = new Set();\n aforoBySlot.set(SLOT, set);\n }\n set.add(row);\n }\n\n {\n let set = aforoBySection.get(fullSectionId);\n if (!set) {\n set = new Set();\n aforoBySection.set(fullSectionId, set);\n }\n set.add(row);\n }\n\n {\n let set = aforoByZone.get(IDZONA);\n if (!set) {\n set = new Set();\n aforoByZone.set(IDZONA, set);\n }\n set.add(row);\n }\n }\n\n if (missingInventory.length) {\n console.warn(`INVENTORY AND VENUE DATA MISSMATCH:\\n${missingInventory.join(\", \")}`);\n }\n return { aforoRows, aforoBySeatId, aforoByAsientoId, zonasByLocalidad };\n }\n}\n\nexport function cleanId(id: string): string {\n for (let i = 0; i < id.length; ++i) {\n const char = id[i];\n if (char !== \"0\") {\n return id.slice(i);\n }\n }\n return \"0\";\n}\n\n// ----- VALIDATION HELPERS -----\n\nfunction mapVenueData(key: keyof LaligaVenueDataRow, value: string): any {\n value = value.trim();\n switch (key) {\n case \"IDZONA\":\n case \"IDASIENTO\":\n case \"POS_FILA\":\n case \"POS_ASIENTO\":\n case \"IDEVENT\": {\n if (!value) {\n throw new Error(`Invalid venue data csv: value of '${key}' cannot be null (value found: '${value}').`);\n }\n const result = parseInt(value, 10);\n if (isNaN(result)) {\n throw new Error(`Invalid venue data csv: value of '${key}' must be a number (value found: '${value}').`);\n }\n return result;\n }\n case \"ZONA\":\n case \"ZONA_ABREVIADO\":\n case \"PUERTA\":\n case \"FILA\":\n case \"ASIENTO\":\n if (!value) {\n throw new Error(`Invalid venue data csv: value of '${key}' cannot be null (value found: '${value}').`);\n }\n return value;\n\n case \"SLOT\":\n case \"PATH_DESC\":\n case \"GRUPOZONA\":\n return valueIsNull(value) ? null : value;\n case \"IDGRUPOZONA\": {\n if (valueIsNull(value)) {\n return null;\n } else {\n const result = parseInt(value, 10);\n if (isNaN(result)) {\n throw new Error(`Invalid venue data csv: value of '${key}' must be a number ( value found: '${value}').`);\n }\n return result;\n }\n }\n\n case \"ESTADO_AVET\":\n if (!validateEstadoAvet(value)) {\n throw new Error(`Invalid venue data csv: value of '${key}' is not valid (value found: '${value}').`);\n }\n }\n return value;\n}\nconst subscriberValidKeys = new Set([\n \"IDPERSONA\",\n \"DNI\",\n \"APELLIDO_1\",\n \"APELLIDO_2\",\n \"NOMBRE\",\n \"EMPRESA\",\n \"EMAIL\",\n \"IDZONA\",\n \"IDASIENTO\",\n \"IDZONA2\",\n \"IDGRUPOZONA\",\n \"GROUP_PERSON\",\n \"GROUP_ADMIN\",\n \"PRIORIDAD\",\n \"PRICE\",\n \"IDEVENT\",\n]);\nfunction isSubscriberValidKey(key: string): boolean {\n const result = subscriberValidKeys.has(key);\n if (!result) {\n const errmsg = `Invalid subscribers file: '${key}' is not a valid key.`;\n console.warn(errmsg);\n throw new Error(errmsg);\n }\n return result;\n}\n\nfunction areSubscriberValidKeys(keys: string[]): boolean {\n const set = new Set(keys);\n let result = true;\n for (const key of subscriberValidKeys) {\n if (!set.has(key)) {\n result = false;\n const errmsg = `Invalid subscribers file: key '${key}' is missing.`;\n console.warn(errmsg);\n throw new Error(errmsg);\n }\n }\n return result;\n}\n\nconst venueValidKeys = new Set([\n \"IDZONA\",\n \"ZONA\",\n \"ZONA_ABREVIADO\",\n \"PUERTA\",\n \"IDASIENTO\",\n \"POS_FILA\",\n \"POS_ASIENTO\",\n \"FILA\",\n \"ASIENTO\",\n \"SLOT\",\n \"ESTADO_AVET\",\n \"PATH_DESC\",\n \"IDEVENT\",\n \"IDGRUPOZONA\",\n \"GRUPOZONA\",\n]);\nfunction isAforoValidKey(key: string): boolean {\n const result = venueValidKeys.has(key);\n if (!result) {\n const errmsg = `Invalid venue data file: '${key}' is not a valid key.`;\n console.warn(errmsg);\n throw new Error(errmsg);\n }\n return result;\n}\n\nfunction areVenueValidKeys(keys: string[]): boolean {\n const set = new Set(keys);\n let result = true;\n for (const key of venueValidKeys) {\n if (!set.has(key)) {\n result = false;\n const errmsg = `Invalid venue data file: key '${key}' is missing.`;\n console.warn(errmsg);\n throw new Error(errmsg);\n }\n }\n return result;\n}\n\nfunction mapSubscriberData(key: keyof LaligaSubscriberDataRow, value: string): any {\n value = value.trim();\n switch (key) {\n // case 'DNI':\n // case 'APELLIDO_1':\n // case 'APELLIDO_2':\n // case 'NOMBRE':\n // if (!value || valueIsNull(value)) {\n // throw new Error(`Invalid subscribers csv: value of '${key}' cannot be null (value found: '${value}').`);\n // }\n // return value;\n\n // case 'IDPERSONA':\n case \"IDEVENT\": {\n if (!value) {\n throw new Error(`Invalid venue data csv: value of '${key}' cannot be null (value found: '${value}').`);\n }\n const result = parseInt(value, 10);\n if (isNaN(result)) {\n throw new Error(`Invalid subscribers csv: value of '${key}' must be a number (value found: '${value}').`);\n }\n return result;\n }\n\n case \"IDPERSONA\":\n case \"IDASIENTO\":\n case \"IDZONA\":\n case \"IDZONA2\":\n case \"GROUP_ADMIN\":\n case \"PRIORIDAD\":\n case \"IDGRUPOZONA\": {\n if (valueIsNull(value)) {\n return null;\n } else {\n const result = parseInt(value, 10);\n if (isNaN(result)) {\n throw new Error(`Invalid subscribers csv: value of '${key}' must be a number (value found: '${value}').`);\n }\n return result;\n }\n }\n\n case \"DNI\":\n case \"APELLIDO_1\":\n case \"APELLIDO_2\":\n case \"NOMBRE\":\n case \"EMPRESA\":\n case \"EMAIL\":\n case \"GROUP_PERSON\":\n return valueIsNull(value) ? null : value;\n\n case \"PRICE\": {\n if (valueIsNull(value)) {\n return null;\n } else {\n const result = parseFloat(value);\n if (isNaN(result)) {\n throw new Error(`Invalid subscribers csv: value of '${key}' must be a number (value found: '${value}').`);\n }\n return result;\n }\n }\n }\n return value;\n}\n\nconst ReservasIds: Set = new Set([\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"R\",\n]);\nconst EstadoAvetIds: Set = new Set([\"L\", \"O\"]);\nconst EstadoAsientoIds: Set = new Set([\"B\"]);\n\nfunction validateReservas(input: any): boolean {\n return ReservasIds.has(input);\n}\nfunction validateEstadoAvet(input: any): boolean {\n return EstadoAvetIds.has(input) || validateReservas(input);\n}\nfunction ValidateEstadoAsiento(input: any): boolean {\n return EstadoAsientoIds.has(input) || validateEstadoAvet(input) || validateReservas(input);\n}\n\nfunction valueIsNull(v: string) {\n if (v == null) {\n throw new Error(\"Value should be a string\");\n }\n\n return v === \"NULL\" || v === \"\";\n}\n\nfunction csvGenerator(viewer: MapViewer, maxGroups: number, groupsProbability: { [key: number]: number }) {\n const subscribers = csvSubscribersGenerator(viewer, maxGroups, groupsProbability);\n const venue = csvVenueGenerator(viewer);\n\n return { subscribers, venue };\n}\n\nfunction csvVenueGenerator(viewer: MapViewer) {\n const seats = viewer.getNodesByType(\"seat\");\n\n const rows: LaligaVenueDataRow[] = [];\n let idasiento = 1;\n for (const seat of seats) {\n const split = seat.id.split(\"S_\")[1].split(\"-\");\n const IDZONA = split[0];\n const FILA = split[1];\n const ASIENTO = split[2];\n\n const row: LaligaVenueDataRow = {\n IDZONA: parseInt(IDZONA, 10),\n ZONA: IDZONA,\n ZONA_ABREVIADO: IDZONA,\n PUERTA: \"A\",\n IDASIENTO: idasiento++,\n POS_FILA: 1, // TODO\n POS_ASIENTO: seat.row.indexOf(seat.id) + 1,\n FILA,\n ASIENTO,\n SLOT: null,\n ESTADO_AVET: \"L\",\n PATH_DESC: null,\n IDEVENT: 1,\n IDGRUPOZONA: null,\n GRUPOZONA: null,\n };\n\n rows.push(row);\n }\n\n return rows;\n}\n\nfunction csvSubscribersGenerator(viewer: MapViewer, maxGroups: number, groupsProbability: { [key: number]: number }) {\n const entries = Object.entries(groupsProbability);\n // const sum = Object.values(porcentajes).reduce((acc, curr) => acc + curr);\n\n const zones = viewer.getNodesByType(\"section\").map((n) => parseInt(n.id.split(\"S_\")[1], 10));\n let nextGroup = 1;\n let nextClient = 10000;\n let nextPriority = 1000;\n const groups: LaligaSubscriberDataRow[] = [];\n for (let i = 0; i < maxGroups; ++i) {\n const groupId = nextGroup++;\n const numGroup = getRandomGroup(entries);\n const priority = nextPriority++;\n for (let j = 0; j < numGroup; ++j) {\n const clientId = nextClient++;\n const row: LaligaSubscriberDataRow = {\n IDPERSONA: clientId,\n DNI: rand(10000000, 99999999) + \"A\",\n APELLIDO_1: \"A\",\n APELLIDO_2: \"B\",\n NOMBRE: \"C\",\n EMPRESA: null,\n EMAIL: null,\n IDZONA: zones[rand(0, zones.length - 1)],\n IDASIENTO: null,\n IDZONA2: null,\n IDGRUPOZONA: 1,\n GROUP_PERSON: numGroup > 1 ? `${groupId}` : null,\n GROUP_ADMIN: numGroup > 1 && j === 0 ? 1 : 0,\n PRIORIDAD: priority,\n PRICE: 1,\n IDEVENT: 1,\n };\n groups.push(row);\n }\n }\n\n return groups;\n}\n\nfunction getRandomGroup(probabilities: [string, number][]): number {\n const probs: number[] = [];\n let total = 0;\n\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < probabilities.length; ++i) {\n const value = probabilities[i][1];\n probs.push(total + value);\n total += value;\n }\n\n const r = Math.random() * total;\n\n for (let i = 0; i < probs.length; ++i) {\n if (r < probs[i]) {\n return parseInt(probabilities[i][0], 10);\n }\n }\n\n return -1;\n}\n\nfunction rand(min, max) {\n return Math.floor(Math.random() * (max - min + 1) + min);\n}\n","import { Injectable } from \"@angular/core\";\nimport { InventoryService } from \"../../../../services/inventory.service\";\nimport { AllocatorService } from \"../allocator.service\";\nimport { DataService } from \"../../../../services/data.service\";\nimport JSZip from \"jszip\";\nimport { parseCSVToJSON } from \"../../utils/parse\";\nimport { SocialdistancingService } from \"../../../../services/socialdistancing.service\";\nimport {\n MapViewer,\n SocialDistancingAssignGroup,\n SocialDistancingAssignGroupResult,\n SocialDistancingAssignToCurrentResult,\n SocialDistancingGetGroupsInput,\n} from \"@3ddv/dvm-internal\";\n\n/* GENERIC */\nexport interface CsvParserGetGroupsInput {\n csvClients: string;\n csvCategories: string;\n upgrade: boolean;\n downgrade: boolean;\n}\nexport interface CsvParserGetGroupsOutput {\n groups: SocialDistancingAssignGroup[];\n}\n\nexport interface CsvParser {\n getGroups(input: CsvParserGetGroupsInput): CsvParserGetGroupsOutput;\n}\n\ninterface CsvJson {\n [key: string]: string;\n}\n\ninterface HashAreas {\n [key: string]: string[];\n}\n\nexport interface ParsedCsvs {\n groups: SocialDistancingAssignGroup[];\n hashAreas: HashAreas;\n sortedAreas: SortedAreas;\n}\n\nexport interface MlbClientsRow {\n FINANCIAL_ACCOUNT_ID: string;\n FINANCIAL_ACCOUNT_NAME: string;\n FINANCIAL_FIRST_NAME: string;\n FINANCIAL_LAST_NAME: string;\n FINANCIAL_ADDRESS_1: string;\n FINANCIAL_ADDRESS_2: string;\n FINANCIAL_CITY: string;\n FINANCIAL_POSTAL_CODE: string;\n FINANCIAL_SUBCOUNTRY_CODE: string;\n FINANCIAL_EMAIL: string;\n FINANCIAL_PRI_PHONE_DISPLAY: string;\n PACKAGE_DESC: string;\n PRICE_SCALE_DESC: string;\n BUYER_TYPE_CODE: string;\n BUYER_TYPE_DESC: string;\n SECTION_DESC: string;\n ROW: string;\n SEAT_NUMBER: string;\n SEAT_ID: string;\n\n TICKET_PRICE: string;\n TENURE: string;\n Concat: string;\n \"Sec Priority\": string;\n \"Row Priority\": string;\n \"Tenure Priority\": string;\n \"Spend Priority\": string;\n Priority: string;\n\n UniqueID: string;\n}\n\nconst HEADER = [\n \"FINANCIAL_ACCOUNT_ID\",\n \"FINANCIAL_ACCOUNT_NAME\",\n \"FINANCIAL_FIRST_NAME\",\n \"FINANCIAL_LAST_NAME\",\n \"FINANCIAL_ADDRESS_1\",\n \"FINANCIAL_ADDRESS_2\",\n \"FINANCIAL_CITY\",\n \"FINANCIAL_POSTAL_CODE\",\n \"FINANCIAL_SUBCOUNTRY_CODE\",\n \"FINANCIAL_EMAIL\",\n \"FINANCIAL_PRI_PHONE_DISPLAY\",\n \"PACKAGE_DESC\",\n \"PRICE_SCALE_DESC\",\n \"BUYER_TYPE_CODE\",\n \"BUYER_TYPE_DESC\",\n \"SECTION_DESC\",\n \"ROW\",\n \"SEAT_NUMBER\",\n \"SEAT_ID\",\n \"TICKET_PRICE\",\n \"TENURE\",\n \"Concat\",\n \"Sec Priority\",\n \"Row Priority\",\n \"Tenure Priority\",\n \"Spend Priority\",\n \"Priority\",\n];\n\nexport interface MlbAssignedClientsRow extends MlbClientsRow {\n \"Assigned Area\": string;\n \"Assigned Row\": string;\n \"Assigned Seat\": string;\n fullId: string;\n}\n\ninterface MlbAreasRow {\n SectionName: string;\n Category: string;\n}\n\ninterface ParseOutput {\n groups: SocialDistancingAssignGroup[];\n parsedClients: MlbClientsRow[];\n sortedAreas: SortedAreas;\n}\n\ntype SortedAreas = string[];\n\ninterface CsvParserMlbGetGroupsOutput extends CsvParserGetGroupsOutput {\n parsedClients: MlbClientsRow[];\n}\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class MlbParserService {\n constructor(\n private inventoryService: InventoryService,\n private allocatorService: AllocatorService,\n private dataService: DataService,\n private socialdistancingService: SocialdistancingService\n ) {}\n\n public full(\n viewer: MapViewer,\n csvClients: string,\n csvCategories: string,\n upgrade: boolean,\n downgrade: boolean,\n maps?: string[]\n ): Promise {\n const obj: CsvParserGetGroupsInput = {\n csvClients,\n csvCategories,\n upgrade,\n downgrade,\n };\n const { groups, parsedClients } = this.getGroups(obj);\n\n const getGroupsInput: SocialDistancingGetGroupsInput = {\n neighbor_distance: this.socialdistancingService.neighborDistance,\n };\n\n return this.allocatorService.assignGroupsToCurrent(viewer, { groups, maps }).then((result) => {\n const filledClients = this.fillClientRows(parsedClients, result.assigned);\n const bySeatId = this.getRowsBySeat(filledClients);\n\n const [csvResultAssigned, csvResultUnassigned] = this.parseJSONToCSV(filledClients);\n\n const inventory = this.inventoryService.getInventoryData();\n this.allocatorService.clearInventoryAllocation(inventory);\n\n return this.fillInventoryAllocation(inventory, bySeatId).then(() => {\n const zip = new JSZip();\n const blob1 = new Blob([csvResultAssigned], { type: \"text/csv\" });\n const blob2 = new Blob([csvResultUnassigned], { type: \"text/csv\" });\n zip.file(\"assigned.csv\", blob1);\n zip.file(\"unassigned.csv\", blob2);\n\n return zip\n .generateAsync({ type: \"blob\", mimeType: \"application/zip\" })\n .then((zipFile) => {\n this.allocatorService.resultFile = zipFile;\n return this.dataService\n .sendAllocationResult(this.dataService.currentSimulationId, this.allocatorService.ref, zipFile)\n .toPromise();\n })\n .then(() => {\n return result;\n });\n });\n });\n }\n\n public getGroups(input: CsvParserGetGroupsInput): CsvParserMlbGetGroupsOutput {\n const { csvClients, csvCategories, upgrade, downgrade } = input;\n const parsedClients = parseCSVToJSON(csvClients);\n\n // assign fake id\n let uniqueId = 1;\n parsedClients.forEach((r) => (r.UniqueID = `${uniqueId++}`));\n const { groups } = this.parseCSVs(parsedClients, csvCategories, upgrade, downgrade);\n return { groups, parsedClients };\n }\n\n public getRowsBySeat(parsedClients: Iterable): Map {\n const map = new Map();\n for (const client of parsedClients) {\n const seatId = `S_${client[\"Assigned Area\"]}-${client[\"Assigned Row\"]}-${client[\"Assigned Seat\"]}`;\n map.set(seatId, client);\n }\n return map;\n }\n\n public getRowsByClient(parsedClients: Iterable): Map {\n const map = new Map();\n for (const client of parsedClients) {\n map.set(client.UniqueID, client);\n }\n return map;\n }\n\n public fillClientRows(\n parsedClients: Iterable,\n groups: Iterable\n ): MlbAssignedClientsRow[] {\n // Primero, creamos los grupos por cliente\n const clientsStruct = new Map();\n const seatsStruct = new Map();\n const clientsMap = new Map();\n\n for (const group of groups) {\n if (group.assigned.length) {\n for (let i = 0; i < group.assigned.length; ++i) {\n const seatId = group.assigned[i];\n const clientId = group.members[i];\n seatsStruct.set(seatId, group);\n clientsStruct.set(clientId, group);\n clientsMap.set(clientId, seatId);\n }\n }\n }\n\n const assignedRows: MlbAssignedClientsRow[] = [];\n // Segundo, añadimos los datos a las rows\n for (const row of parsedClients) {\n const { UniqueID } = row;\n const group = clientsStruct.get(UniqueID);\n const seatId = clientsMap.get(UniqueID);\n const obj1 = {\n \"Assigned Area\": \"\",\n \"Assigned Row\": \"\",\n \"Assigned Seat\": \"\",\n fullId: \"\",\n };\n\n const obj: MlbAssignedClientsRow = Object.assign(obj1, row);\n\n if (seatId) {\n const split = seatId.split(\"-\");\n const partialSectionId = split[0].split(\"S_\")[1];\n const partialRowId = split[1];\n const partialSeatId = split[2];\n obj.fullId = seatId;\n obj[\"Assigned Area\"] = partialSectionId;\n obj[\"Assigned Row\"] = partialRowId;\n obj[\"Assigned Seat\"] = partialSeatId;\n }\n assignedRows.push(obj);\n }\n\n return assignedRows.sort((a, b) => parseInt(a.Priority, 10) - parseInt(b.Priority, 10));\n }\n\n public parseJSONToCSV(assignedRows: MlbAssignedClientsRow[]): [string, string] {\n assignedRows.sort((r1, r2) => parseInt(r1.Priority, 10) - parseInt(r2.Priority, 10));\n\n const first = HEADER.slice();\n first.push(\"Assigned Area\", \"Assigned Row\", \"Assigned Seat\");\n const outputAssigned: string[][] = [first.slice()];\n const outputUnassigned: string[][] = [first.slice()];\n\n for (const row of assignedRows) {\n const outputRow = [];\n for (const prop of HEADER) {\n outputRow.push(row[prop]);\n }\n const areaId = row[\"Assigned Area\"];\n const rowId = row[\"Assigned Row\"];\n const seatId = row[\"Assigned Seat\"];\n const output = areaId && rowId && seatId ? outputAssigned : outputUnassigned;\n outputRow.push(areaId, rowId, seatId);\n output.push(outputRow);\n }\n\n return [\n outputAssigned.map((arr) => arr.join(\";\")).join(\"\\n\"),\n outputUnassigned.map((arr) => arr.join(\";\")).join(\"\\n\"),\n ];\n }\n\n private parseCSVs(\n parsedClients: MlbClientsRow[],\n inputAreas: string,\n upgrade: boolean,\n downgrade: boolean\n ): ParsedCsvs {\n const { hash: parsedAreas, sorted: sortedAreas } = this.parseCSVAreas(inputAreas);\n\n let UNIQUEID = 1;\n const rowsByUniqueId: Map = new Map();\n const hash: { [key: string]: SocialDistancingAssignGroup } = {};\n for (const row of parsedClients) {\n const groupId: string = row.FINANCIAL_ACCOUNT_ID;\n const clientId = `${UNIQUEID++}`;\n const preferredArea: string = row[\"Sec Priority\"];\n const priority: number = parseInt(row.Priority, 10);\n\n rowsByUniqueId.set(clientId, row);\n\n if (groupId == null || clientId == null) {\n continue;\n }\n\n if (hash[groupId] == null) {\n const sdmGroupInput: SocialDistancingAssignGroup = hash[groupId] || {\n group_id: groupId,\n priority,\n members: [],\n preferred: this.parsePreferredAreas(preferredArea, parsedAreas, upgrade, downgrade),\n };\n hash[groupId] = sdmGroupInput;\n }\n const obj = hash[groupId] as SocialDistancingAssignGroup;\n obj.members.push(clientId);\n }\n\n const result = {\n groups: Object.values(hash).sort((a, b) => a.priority - b.priority),\n hashAreas: parsedAreas,\n sortedAreas,\n };\n\n return result;\n }\n\n private parseCSVAreas(input: string): { hash: HashAreas; sorted: string[] } {\n const parsed = parseCSVToJSON(input);\n const hash: HashAreas = {};\n const sorted: string[] = [];\n for (const row of parsed) {\n const { SectionName, Category } = row;\n if (hash[Category] == null) {\n hash[Category] = [];\n }\n const sectionId = \"S_\" + SectionName;\n hash[Category].push(sectionId);\n sorted.push(sectionId);\n }\n return { hash, sorted };\n }\n\n private parsePreferredAreas(category: string, areas: HashAreas, upgrade: boolean, downgrade: boolean): string[] {\n const set = new Set(areas[category]);\n\n if (downgrade) {\n const keys = Object.keys(areas).sort((a, b) => parseInt(a, 10) - parseInt(b, 10));\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < keys.length; ++i) {\n const cat = keys[i];\n if (cat > category) {\n areas[cat].forEach((n) => set.add(n));\n }\n }\n }\n\n if (upgrade) {\n const keys = Object.keys(areas).sort((a, b) => parseInt(b, 10) - parseInt(a, 10));\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < keys.length; ++i) {\n const cat = keys[i];\n if (cat < category) {\n areas[cat].forEach((n) => set.add(n));\n }\n }\n }\n\n return Array.from(set);\n }\n\n protected fillInventoryAllocation(inventory, bySeatId: Map) {\n for (const [fullId, row] of bySeatId) {\n const sectionId = row[\"Assigned Area\"];\n const rowId = row[\"Assigned Row\"];\n const seatId = row[\"Assigned Seat\"];\n if (sectionId && rowId && seatId) {\n const data = inventory[sectionId]?.elements[rowId]?.elements[seatId]?.data;\n if (data) {\n data.allocation = Object.assign({}, row);\n data.allocation.allocated = true;\n // TODO\n data.allocation.popup = {\n \"Account ID\": row.FINANCIAL_ACCOUNT_ID,\n // Client: row.FINANCIAL_ACCOUNT_NAME,\n };\n }\n }\n }\n\n return this.allocatorService.setSimulationAsAllocation(inventory);\n }\n}\n\n// *** Test funcs ***\n\nfunction countGroups(hash: { [p: string]: SocialDistancingAssignGroup }) {\n let total = 0;\n const countHash: any = {};\n const percentHash: any = {};\n for (const i in hash) {\n if (hash.hasOwnProperty(i)) {\n const group = hash[i];\n total++;\n countHash[group.members.length] != null\n ? countHash[group.members.length]++\n : (countHash[group.members.length] = 1);\n }\n }\n for (const i in countHash) {\n if (countHash.hasOwnProperty(i)) {\n percentHash[i] = ((countHash[i] / total) * 100).toFixed(2) + \"%\";\n }\n }\n\n return [countHash, percentHash];\n}\n","import { Injectable } from \"@angular/core\";\nimport { InventoryService } from \"../../../../services/inventory.service\";\nimport { AllocatorService } from \"../allocator.service\";\nimport { DataService } from \"../../../../services/data.service\";\nimport JSZip from \"jszip\";\nimport { parseCSVToJSON } from \"../../utils/parse\";\nimport { SocialdistancingService } from \"../../../../services/socialdistancing.service\";\nimport {\n MapViewer,\n SocialDistancingAssignGroup,\n SocialDistancingAssignGroupResult,\n SocialDistancingAssignToCurrentResult,\n SocialDistancingGetGroupsInput,\n} from \"@3ddv/dvm-internal\";\n\n/* GENERIC */\nexport interface CsvParserGetGroupsInput {\n csvClients: string;\n csvCategories: string;\n upgrade: boolean;\n downgrade: boolean;\n}\nexport interface CsvParserGetGroupsOutput {\n groups: SocialDistancingAssignGroup[];\n}\n\nexport interface CsvParser {\n getGroups(input: CsvParserGetGroupsInput): CsvParserGetGroupsOutput;\n}\n\n/* SPORTS ALLIANCE */\ninterface CsvJson {\n [key: string]: string;\n}\n\ninterface HashAreas {\n [key: string]: string[];\n}\n\nexport interface ParsedCsvs {\n groups: SocialDistancingAssignGroup[];\n hashAreas: HashAreas;\n sortedAreas: SortedAreas;\n}\n\nexport interface SportsAllianceClientsRow {\n ClusterID: string; // ClusterID - in popover (group ID)\n UniqueID: string; // UniqueID - in popover (client ID)\n CustomerID: string; // CustomerID\n Category: string; // Category\n Priority: string;\n SecondaryCategory?: string;\n}\n\nexport interface SportsAllianceAssignedClientsRow extends SportsAllianceClientsRow {\n \"Assigned Area\": string;\n \"Assigned Row\": string;\n \"Assigned Seat\": string;\n fullId: string;\n}\n\ninterface SportsAllianceAreasRow {\n SectionName: string;\n Category: string;\n Section: string;\n SecondaryCategory?: string;\n}\n\ninterface ParseOutput {\n groups: SocialDistancingAssignGroup[];\n parsedClients: SportsAllianceClientsRow[];\n sortedAreas: SortedAreas;\n}\n\ntype SortedAreas = string[];\n\ninterface CsvParserSportsAllianceGetGroupsOutput extends CsvParserGetGroupsOutput {\n parsedClients: SportsAllianceClientsRow[];\n}\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class SportsAllianceParserService {\n constructor(\n private inventoryService: InventoryService,\n private allocatorService: AllocatorService,\n private dataService: DataService,\n private socialdistancingService: SocialdistancingService\n ) {}\n\n public full(\n viewer: MapViewer,\n csvClients: string,\n csvCategories: string,\n upgrade: boolean,\n downgrade: boolean,\n maps?: string[]\n ): Promise {\n const obj: CsvParserGetGroupsInput = {\n csvClients,\n csvCategories,\n upgrade,\n downgrade,\n };\n const { groups, parsedClients } = this.getGroups(obj);\n\n const getGroupsInput: SocialDistancingGetGroupsInput = {\n neighbor_distance: this.socialdistancingService.neighborDistance,\n };\n\n return this.allocatorService.assignGroupsToCurrent(viewer, { groups, maps }).then((result) => {\n const filledClients = this.fillClientRows(parsedClients, result.assigned);\n const bySeatId = this.getRowsBySeat(filledClients);\n\n const [csvResultAssigned, csvResultUnassigned] = this.parseJSONToCSV(filledClients);\n\n const inventory = this.inventoryService.getInventoryData();\n this.allocatorService.clearInventoryAllocation(inventory);\n\n return this.fillInventoryAllocation(inventory, bySeatId).then(() => {\n const zip = new JSZip();\n const blob1 = new Blob([csvResultAssigned], { type: \"text/csv\" });\n const blob2 = new Blob([csvResultUnassigned], { type: \"text/csv\" });\n zip.file(\"assigned.csv\", blob1);\n zip.file(\"unassigned.csv\", blob2);\n\n return zip\n .generateAsync({ type: \"blob\", mimeType: \"application/zip\" })\n .then((zipFile) => {\n this.allocatorService.resultFile = zipFile;\n return this.dataService\n .sendAllocationResult(this.dataService.currentSimulationId, this.allocatorService.ref, zipFile)\n .toPromise();\n })\n .then(() => {\n return result;\n });\n });\n });\n }\n\n public getGroups(input: CsvParserGetGroupsInput): CsvParserSportsAllianceGetGroupsOutput {\n const { csvClients, csvCategories, upgrade, downgrade } = input;\n const parsedClients = parseCSVToJSON(csvClients);\n const { groups } = this.parseCSVs(parsedClients, csvCategories, upgrade, downgrade);\n return { groups, parsedClients };\n }\n\n public getRowsBySeat(\n parsedClients: Iterable\n ): Map {\n const map = new Map();\n for (const client of parsedClients) {\n const seatId = `S_${client[\"Assigned Area\"]}-${client[\"Assigned Row\"]}-${client[\"Assigned Seat\"]}`;\n map.set(seatId, client);\n }\n return map;\n }\n\n public getRowsByClient(\n parsedClients: Iterable\n ): Map {\n const map = new Map();\n for (const client of parsedClients) {\n map.set(client.UniqueID, client);\n }\n return map;\n }\n\n public fillClientRows(\n parsedClients: Iterable,\n groups: Iterable\n ): SportsAllianceAssignedClientsRow[] {\n // Primero, creamos los grupos por cliente\n const clientsStruct = new Map();\n const seatsStruct = new Map();\n const clientsMap = new Map();\n\n for (const group of groups) {\n if (group.assigned.length) {\n for (let i = 0; i < group.assigned.length; ++i) {\n const seatId = group.assigned[i];\n const clientId = group.members[i];\n seatsStruct.set(seatId, group);\n clientsStruct.set(clientId, group);\n clientsMap.set(clientId, seatId);\n }\n }\n }\n\n const assignedRows: SportsAllianceAssignedClientsRow[] = [];\n // Segundo, añadimos los datos a las rows\n for (const row of parsedClients) {\n const { ClusterID, UniqueID, CustomerID, Category, Priority } = row;\n const group = clientsStruct.get(UniqueID);\n const seatId = clientsMap.get(UniqueID);\n const obj: SportsAllianceAssignedClientsRow = {\n ClusterID,\n UniqueID,\n CustomerID,\n Category,\n Priority,\n \"Assigned Area\": \"\",\n \"Assigned Row\": \"\",\n \"Assigned Seat\": \"\",\n fullId: \"\",\n };\n\n if (seatId) {\n const split = seatId.split(\"-\");\n const partialSectionId = split[0].split(\"S_\")[1];\n const partialRowId = split[1];\n const partialSeatId = split[2];\n obj.fullId = seatId;\n obj[\"Assigned Area\"] = partialSectionId;\n obj[\"Assigned Row\"] = partialRowId;\n obj[\"Assigned Seat\"] = partialSeatId;\n }\n assignedRows.push(obj);\n }\n\n return assignedRows.sort((a, b) => parseInt(a.Priority, 10) - parseInt(b.Priority, 10));\n }\n\n public parseJSONToCSV(assignedRows: SportsAllianceAssignedClientsRow[]): [string, string] {\n assignedRows.sort((r1, r2) => parseInt(r1.Priority, 10) - parseInt(r2.Priority, 10));\n\n const outputAssigned: string[][] = [\n [\"ClusterID\", \"UniqueID\", \"CustomerID\", \"Category\", \"Priority\", \"Assigned Area\", \"Assigned Row\", \"Assigned Seat\"],\n ];\n const outputUnassigned: string[][] = [\n [\"ClusterID\", \"UniqueID\", \"CustomerID\", \"Category\", \"Priority\", \"Assigned Area\", \"Assigned Row\", \"Assigned Seat\"],\n ];\n\n for (const row of assignedRows) {\n const areaId = row[\"Assigned Area\"];\n const rowId = row[\"Assigned Row\"];\n const seatId = row[\"Assigned Seat\"];\n const outut = areaId && rowId && seatId ? outputAssigned : outputUnassigned;\n outut.push([row.ClusterID, row.UniqueID, row.CustomerID, row.Category, row.Priority, areaId, rowId, seatId]);\n }\n\n return [\n outputAssigned.map((arr) => arr.join(\";\")).join(\"\\n\"),\n outputUnassigned.map((arr) => arr.join(\";\")).join(\"\\n\"),\n ];\n }\n\n private parseCSVs(\n parsedClients: SportsAllianceClientsRow[],\n inputAreas: string,\n upgrade: boolean,\n downgrade: boolean\n ): ParsedCsvs {\n const { hash: parsedAreas, sorted: sortedAreas } = this.parseCSVAreas(inputAreas);\n\n const hash: { [key: string]: SocialDistancingAssignGroup } = {};\n for (const row of parsedClients) {\n const groupId: string = row.ClusterID;\n const clientId: string = row.UniqueID;\n const preferredArea: string = row.Category;\n const secondaryArea: string | null = row.SecondaryCategory || null;\n const priority: number = parseInt(row.Priority, 10);\n\n if (groupId == null || clientId == null) {\n continue;\n }\n\n if (hash[groupId] == null) {\n const sdmGroupInput: SocialDistancingAssignGroup = hash[groupId] || {\n group_id: groupId,\n priority,\n members: [],\n preferred: this.parsePreferredAreas(preferredArea, secondaryArea, parsedAreas, upgrade, downgrade),\n };\n hash[groupId] = sdmGroupInput;\n }\n const obj = hash[groupId] as SocialDistancingAssignGroup;\n obj.members.push(clientId);\n }\n\n return {\n groups: Object.values(hash).sort((a, b) => a.priority - b.priority),\n hashAreas: parsedAreas,\n sortedAreas,\n };\n }\n\n private parseCSVAreas(input: string): { hash: HashAreas; sorted: string[] } {\n const parsed = parseCSVToJSON(input);\n const hash: HashAreas = {};\n const sorted: string[] = [];\n for (const row of parsed) {\n const SectionName = row.SectionName || row.Section;\n const Category = row.Category;\n const SecondaryCategory = row.SecondaryCategory || null;\n const sectionId = \"S_\" + SectionName;\n\n if (hash[Category] == null) {\n hash[Category] = [];\n }\n hash[Category].push(sectionId);\n\n if (hash[SecondaryCategory] == null) {\n hash[SecondaryCategory] = [];\n }\n hash[SecondaryCategory].push(sectionId);\n\n sorted.push(sectionId);\n }\n return { hash, sorted };\n }\n\n private parsePreferredAreas(\n category1: string,\n category2: string | null,\n areas: HashAreas,\n upgrade: boolean,\n downgrade: boolean\n ): string[] {\n const set = new Set(areas[category1]);\n\n if (category2) {\n areas[category2]?.forEach((n) => set.add(n));\n }\n\n if (downgrade) {\n const keys = Object.keys(areas).sort((a, b) => parseInt(a, 10) - parseInt(b, 10));\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < keys.length; ++i) {\n const cat = keys[i];\n if (cat > category1) {\n areas[cat].forEach((n) => set.add(n));\n }\n }\n }\n\n if (upgrade) {\n const keys = Object.keys(areas).sort((a, b) => parseInt(b, 10) - parseInt(a, 10));\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < keys.length; ++i) {\n const cat = keys[i];\n if (cat < category1) {\n areas[cat].forEach((n) => set.add(n));\n }\n }\n }\n\n return Array.from(set);\n }\n\n protected fillInventoryAllocation(inventory, bySeatId: Map) {\n for (const [fullId, row] of bySeatId) {\n const sectionId = row[\"Assigned Area\"];\n const rowId = row[\"Assigned Row\"];\n const seatId = row[\"Assigned Seat\"];\n if (sectionId && rowId && seatId) {\n const data = inventory[sectionId]?.elements[rowId]?.elements[seatId]?.data;\n if (data) {\n data.allocation = Object.assign({}, row);\n data.allocation.allocated = true;\n data.allocation.popup = {\n \"Group ID\": row.ClusterID,\n \"Client ID\": row.UniqueID,\n };\n }\n }\n }\n\n return this.allocatorService.setSimulationAsAllocation(inventory);\n }\n}\n\n// *** Test funcs ***\n\nfunction countGroups(hash: { [p: string]: SocialDistancingAssignGroup }) {\n let total = 0;\n const countHash: any = {};\n const percentHash: any = {};\n for (const i in hash) {\n if (hash.hasOwnProperty(i)) {\n const group = hash[i];\n total++;\n countHash[group.members.length] != null\n ? countHash[group.members.length]++\n : (countHash[group.members.length] = 1);\n }\n }\n for (const i in countHash) {\n if (countHash.hasOwnProperty(i)) {\n percentHash[i] = ((countHash[i] / total) * 100).toFixed(2) + \"%\";\n }\n }\n\n return [countHash, percentHash];\n}\n\nfunction generateGroups(maxGroups: number, groupsProbability: { [key: number]: number }) {\n const entries = Object.entries(groupsProbability);\n // const sum = Object.values(porcentajes).reduce((acc, curr) => acc + curr);\n let nextGroup = 1;\n let nextClient = 10000;\n let nextPriority = 1000;\n const groups: SportsAllianceClientsRow[] = [];\n for (let i = 0; i < maxGroups; ++i) {\n const groupId = nextGroup++;\n const numGroup = getRandomGroup(entries);\n const priority = nextPriority++;\n for (let j = 0; j < numGroup; ++j) {\n const clientId = nextClient++;\n const row: SportsAllianceClientsRow = {\n ClusterID: groupId.toString(),\n UniqueID: clientId.toString(),\n CustomerID: clientId.toString(),\n Category: \"1\",\n Priority: priority.toString(),\n };\n groups.push(row);\n }\n }\n\n const result: string[][] = [[\"ClusterID\", \"UniqueID\", \"CustomerID\", \"Category\", \"Priority\"]];\n for (const group of groups) {\n result.push([group.ClusterID, group.UniqueID, group.CustomerID, group.Category, group.Priority]);\n }\n\n return result.map((arr) => arr.join(\";\")).join(\"\\n\");\n\n function getRandomGroup(probabilities: [string, number][]): number {\n const probs: number[] = [];\n let total = 0;\n\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < probabilities.length; ++i) {\n const value = probabilities[i][1];\n probs.push(total + value);\n total += value;\n }\n\n const r = Math.random() * total;\n\n for (let i = 0; i < probs.length; ++i) {\n if (r < probs[i]) {\n return parseInt(probabilities[i][0], 10);\n }\n }\n\n return -1;\n }\n}\n","import Papa from 'papaparse';\n\nexport function parseCSVToJSON(input: string,\n separator = ';',\n mapFunc?: (key: string, value: string) => any,\n keyValidator?: (key: string) => boolean,\n keysValidator?: (keys: string[]) => boolean): T[]\n{\n mapFunc = mapFunc || ((key: string, value: string) => value.trim());\n\n const parsed = Papa.parse(input);\n const rows = parsed.data;\n const first = rows[0];\n\n if (keyValidator) {\n if (!first.every(keyValidator)) {\n throw new Error('Invalid key found');\n }\n }\n\n if (keysValidator) {\n if (!keysValidator(first)) {\n throw new Error('Missing keys');\n }\n }\n\n const result: T[] = [];\n for (let i = 1; i < rows.length; ++i) {\n const row = rows[i];\n if (row && row.length === first.length) {\n const obj: T = {} as T;\n for (let j = 0; j < first.length; ++j) {\n const key = first[j];\n const value = row[j];\n obj[key] = mapFunc(key, value);\n }\n result.push(obj);\n }\n }\n return result;\n}\n","import {Component, Input, OnDestroy, OnInit} from '@angular/core';\nimport {CustomCategoriesService, CustomCategory} from '../../services/custom-categories.service';\nimport {Observable, Subject} from 'rxjs';\n\n@Component({\n selector: 'app-custom-categories',\n templateUrl: './custom-categories.component.html',\n styleUrls: ['./custom-categories.component.scss']\n})\nexport class CustomCategoriesComponent implements OnInit, OnDestroy {\n\n @Input() public interactive = true;\n @Input() public hoverString = 'setup.sidebar.assign';\n private categoryClickSubject$ = new Subject();\n\n public get categoryClickObservable$(): Observable {\n return this.categoryClickSubject$.asObservable();\n }\n\n constructor(public categories: CustomCategoriesService) {}\n\n ngOnInit(): void {\n }\n\n getCategories() {\n return Array.from(this.categories.customCategories.values());\n }\n\n triggerCategoryClick(category: CustomCategory): void {\n this.categoryClickSubject$.next(category);\n }\n\n ngOnDestroy(): void {\n this.categoryClickSubject$.next();\n this.categoryClickSubject$.complete();\n }\n}\n","
\n
\n \n
\n
\n","import {InjectionToken} from '@angular/core';\nimport {CustomCategoriesByVenue} from '../models/custom-categories.model';\n\nexport const CUSTOM_CATEGORIES_BY_VENUE = new InjectionToken('Custom Categories By Venue');\nexport const customCategoriesbyVenue: CustomCategoriesByVenue = {\n 'eu-es-00001-fcbarcelona': {\n 1: {title: '1', color: '#608000'},\n 2: {title: '2', color: '#e0e0d1'},\n 3: {title: '3', color: '#99004d'},\n 4: {title: '4', color: '#ffb3d9'},\n 5: {title: '5', color: '#4d0026'},\n 6: {title: '6', color: '#c61aff'},\n 7: {title: '7', color: '#003300'},\n 8: {title: '8', color: '#ff66ff'},\n 9: {title: '9', color: '#806000'},\n E: {title: '9', color: '#fff0b3'},\n F: {title: 'F', color: '#ffc299'},\n G: {title: 'G', color: '#e65c00'},\n H: {title: 'H', color: '#e6e600'},\n J: {title: 'J', color: '#400080'},\n K: {title: 'K', color: '#009999'},\n L: {title: 'L', color: '#33cc33'},\n O: {title: 'O', color: '#e60000'},\n P: {title: 'P', color: '#004d00'},\n S: {title: 'S', color: '#009900'}\n }\n};\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CustomCategoriesComponent } from './components/custom-categories/custom-categories.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport {DVM_CONFIG, DVMConfig} from '../../../../assets/configuration/digitalvenue.configuration';\nimport {CUSTOM_CATEGORIES_BY_VENUE, customCategoriesbyVenue} from './configuration/categories.configuration';\nimport {SDEPlugin} from '../../shared/models/user-data.model';\n\nexport interface CustomCategoriesPlugin extends SDEPlugin {\n type: 'customcategories';\n}\n\nexport interface CustomCategoriesConfigurationObject {\n custom_categories?: string[];\n}\n\nexport interface CustomCategoriesSimulationObject {\n selected_custom_categories?: string[];\n statistics?: {\n [key: string]: number;\n };\n}\n\n\ndeclare module '../../services/data.service' {\n interface CloneConfigurationBody {\n custom_categories?: CustomCategoriesConfigurationObject;\n }\n}\n\ndeclare module '../../services/inventory.service' {\n // MERGE\n interface InventoryElementData {\n customcategory?: string;\n }\n}\n\ndeclare module '../../shared/models/configuration-data.model' {\n // MERGE\n interface Configuration {\n custom_categories?: CustomCategoriesConfigurationObject;\n }\n}\n\ndeclare module '../../shared/models/simulation-data.model' {\n interface Simulation {\n custom_categories?: CustomCategoriesSimulationObject;\n }\n}\n\ndeclare module '../../shared/models/user-data.model' {\n // MERGE\n export interface Plugins {\n customcategories: CustomCategoriesPlugin;\n }\n}\n\n@NgModule({\n declarations: [CustomCategoriesComponent],\n exports: [\n CustomCategoriesComponent\n ],\n imports: [\n CommonModule,\n TranslateModule,\n ],\n providers: [\n {provide: DVM_CONFIG, useValue: DVMConfig},\n {provide: CUSTOM_CATEGORIES_BY_VENUE, useValue: customCategoriesbyVenue},\n ]\n})\nexport class CustomCategoriesModule { }\n","import { Inject, Injectable, OnDestroy } from \"@angular/core\";\nimport { parseCSVToJSON } from \"../../allocator/utils/parse\";\nimport { CategoriesService } from \"../../../services/categories.service\";\nimport { cleanId, LaligaVenueDataRow } from \"../../allocator/services/parsers/laliga-parser.service\";\nimport { Inventory, InventoryService } from \"../../../services/inventory.service\";\nimport { Subscription } from \"rxjs\";\nimport { DVMService } from \"../../../services/dvm.service\";\nimport { CUSTOM_CATEGORIES_BY_VENUE } from \"../configuration/categories.configuration\";\nimport { AuthenticationService } from \"../../../../auth\";\nimport { CustomCategoriesPlugin } from \"../custom-categories.module\";\nimport { DataService } from \"../../../services/data.service\";\nimport { Configuration } from \"../../../shared/models/configuration-data.model\";\nimport { CustomCategoriesByVenue } from \"../models/custom-categories.model\";\nimport { Simulation } from \"../../../shared/models/simulation-data.model\";\nimport { GroupsService } from \"../../../services/groups.service\";\nimport { MapViewer, MapViewerStylesState } from \"@3ddv/dvm-internal\";\n\nexport interface CustomCategory {\n name: string;\n group: string;\n color: string;\n}\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class CustomCategoriesService implements OnDestroy {\n public get allowCustomCategories(): boolean {\n return this._allowCustomCategories;\n }\n\n public get configurationHasCustomCategories(): boolean {\n return this._configurationHasCustomCategories;\n }\n\n public customCategories: Map = new Map();\n\n private _allowCustomCategories = false;\n private _configurationHasCustomCategories = false;\n private readonly subscriptions: Subscription[] = [];\n\n constructor(\n @Inject(CUSTOM_CATEGORIES_BY_VENUE) private customCategoriesByVenue: CustomCategoriesByVenue,\n private categoriesService: CategoriesService,\n private inventoryService: InventoryService,\n private authService: AuthenticationService,\n private dvmService: DVMService,\n private dataService: DataService,\n private groupsService: GroupsService\n ) {\n this.subscriptions.push(\n this.authService.getUserLoggedSubject().subscribe((user) => {\n if (user) {\n const plugin = user.user.plugins.find(\n (pl) => pl.type === \"customcategories\"\n ) as CustomCategoriesPlugin | null;\n if (plugin) {\n this._allowCustomCategories = true;\n return;\n }\n }\n this._allowCustomCategories = false;\n })\n );\n\n this.subscriptions.push(\n this.dataService.getCurrentConfiguration$().subscribe((configuration: Configuration) => {\n this.setConfigurationHasCustomCategories(configuration);\n })\n );\n\n this.subscriptions.push(\n this.inventoryService.inventoryObservable$.subscribe((inventory) => {\n this.parseCustomCategoriesFromInventory();\n })\n );\n\n this.subscriptions.push(\n this.categoriesService.printCategoriesObservable$.subscribe((viewer) => {\n this.setCustomCategoriesNodeGroups(viewer);\n this.setCustomCategoriesStyles(viewer);\n })\n );\n\n this.subscriptions.push(\n this.inventoryService.preInventoryObservable$.subscribe((inventory) => {\n if (this.dvmService.isSimulation) {\n this.cleanCustomCategoriesFromInventory(inventory);\n }\n })\n );\n\n this.subscriptions.push(\n this.inventoryService.preComparativeInventoryObservable$.subscribe((inventory) => {\n if (this.dvmService.isSimulation) {\n this.cleanCustomCategoriesFromInventory(inventory);\n }\n })\n );\n\n this.subscriptions.push(\n this.groupsService.resetGroupBehaviors$.subscribe((inventory) => {\n if (this.dvmService.isSimulation) {\n this.parseSimulationCustomCategories();\n }\n })\n );\n\n this.subscriptions.push(\n this.dataService.editSimulation$.subscribe((body: any) => {\n if (this.allowCustomCategories) {\n const sim = this.dataService.simulationData;\n if (sim && sim.configuration) {\n const obj = this.dataService.simulationData?.custom_categories;\n if (obj && obj.selected_custom_categories) {\n obj.statistics = {};\n body.custom_categories = obj;\n this.inventoryService.iterateInventoryElements((element) => {\n const customcategory = element.customcategory;\n if (customcategory) {\n const value = obj.statistics[customcategory];\n obj.statistics[customcategory] = value ? value + 1 : 1;\n }\n });\n }\n }\n }\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((s) => s.unsubscribe());\n }\n\n getCustomCategories(): string[] {\n const set: Set = new Set();\n this.inventoryService.iterateInventoryElements((elementData) => {\n const customcategory = elementData.customcategory;\n if (customcategory) {\n set.add(customcategory);\n }\n });\n return Array.from(set);\n }\n\n addCustomCategory(groupId: string, name: string, color: string): boolean {\n if (!this.customCategories.has(groupId)) {\n this.customCategories.set(groupId, { group: groupId, name, color });\n return true;\n }\n return false;\n }\n\n getCategoriesList(): CustomCategory[] {\n return Array.from(this.customCategories.values());\n }\n\n getCategory(categoryId: string): CustomCategory | null {\n return this.customCategories.get(categoryId) ?? null;\n }\n\n // Recibe seatmanifest con custom categories y el manifest actual\n // devuelve un seatmanifest resultante de la union\n buildManiestWithCustomCategories(\n csvUser: string,\n oldManifestObject: Inventory\n ): { inventory: Inventory; categories: string[] } {\n const missingSeats = [];\n const csvUserRows = parseCSVToJSON(csvUser, \";\");\n const categories = new Set();\n\n for (const row of csvUserRows) {\n const { ESTADO_AVET } = row;\n const sectionId = row.IDZONA.toString();\n const rowId = cleanId(row.FILA);\n const seatId = cleanId(row.ASIENTO);\n const data = oldManifestObject[sectionId]?.elements[rowId]?.elements[seatId];\n if (data) {\n const seatData = data.data;\n seatData.category = \"regular\";\n seatData.customcategory = ESTADO_AVET;\n data.data = seatData;\n categories.add(ESTADO_AVET);\n } else {\n // si la silla no existe la guardamos en la lista de sillas perdidas\n missingSeats.push(`S_${sectionId}-${rowId}-${seatId}`);\n }\n }\n\n this.setDefaultLockedCategoryToInventory(oldManifestObject, \"locked\");\n\n if (missingSeats.length > 0) {\n console.warn(\"Seats with errors\", missingSeats);\n }\n return { inventory: oldManifestObject, categories: Array.from(categories) };\n }\n\n public parseSimulationCustomCategories(): void {\n const sim: Simulation = this.dataService.simulationData as Simulation;\n const conf = sim.configuration;\n this.setConfigurationHasCustomCategories(conf);\n if (this._configurationHasCustomCategories) {\n const selectedCustomCategories = sim.custom_categories?.selected_custom_categories ?? [];\n const set = new Set(selectedCustomCategories);\n conf.custom_categories?.custom_categories?.forEach((c) => {\n if (!set.has(c)) {\n this.groupsService.addGroupsToBehaviors(\"validated\", c);\n }\n });\n }\n }\n\n public cleanCustomCategoriesFromInventory(inventory: Inventory): void {\n const sim = this.dataService.simulationData;\n if (sim && this._configurationHasCustomCategories) {\n const selectedCustomCategories = sim.custom_categories?.selected_custom_categories ?? [];\n const set = new Set(selectedCustomCategories);\n this.inventoryService.iterateInventoryElements((elementData) => {\n const customcategory = elementData.customcategory;\n if (set.has(customcategory)) {\n elementData.customcategory = null;\n }\n }, inventory);\n }\n }\n\n public setDefaultLockedCategoryToInventory(inventory: Inventory, category: string): void {\n this.inventoryService.iterateInventoryElements((elementData) => {\n if (!elementData.customcategory) {\n elementData.category = category;\n }\n }, inventory);\n }\n\n private setConfigurationHasCustomCategories(configuration: Configuration): void {\n this._configurationHasCustomCategories =\n this.allowCustomCategories && !!configuration.custom_categories?.custom_categories?.length;\n }\n\n private parseCustomCategoriesFromInventory(): void {\n this.customCategories.clear();\n\n if (!this.allowCustomCategories) {\n return;\n }\n\n const viewer = this.dvmService.viewer as MapViewer;\n const venue = viewer.getVenueId();\n const cats = this.customCategoriesByVenue?.[venue];\n this.getCustomCategories().forEach((customcategory) => {\n const color = cats?.[customcategory]?.color ?? \"white\";\n const title = cats?.[customcategory]?.title ?? customcategory;\n this.addCustomCategory(customcategory, title, color);\n });\n }\n\n private setCustomCategoriesNodeGroups(viewer: MapViewer): void {\n if (!this.allowCustomCategories) {\n return;\n }\n\n this.inventoryService.iterateInventoryElements((elementData) => {\n const customcategory = elementData.customcategory;\n if (customcategory) {\n viewer.addNodesToGroup(elementData.code, customcategory);\n }\n });\n }\n\n private setCustomCategoriesStyles(viewer: MapViewer): void {\n if (!this.allowCustomCategories) {\n return;\n }\n\n const styles = viewer.getStyles();\n for (const category of this.customCategories.values()) {\n const { color, group } = category;\n (styles[1].seat.available as MapViewerStylesState).normal[group] = { fillStyle: color };\n (styles[1].seat.unavailable as MapViewerStylesState).normal[group] = { fillStyle: color };\n }\n viewer.setStyles(styles);\n }\n\n public getCutomCategoriesByVenue(venueId: string) {\n return this.customCategoriesByVenue?.[venueId];\n }\n\n /**\n * Same endpoint simulations / configurations\n * Status : raw or parsed\n * - POST | GET /customcategories/configuration/:id/venuedata/:status`\n * - POST | GET /customcategories/simulation/:id/venuedata/:status`\n */\n public postVenueDataFile(model: string, id: number, status: \"raw\" | \"parsed\", csv: string, filename?: string) {\n let mime = \"application/vnd.ms-excel\";\n let extension = \"csv\";\n if (status === \"parsed\") {\n mime = \"application/json\";\n extension = \"json\";\n }\n const blob = new Blob([csv], { type: mime });\n const body = new FormData();\n if (!filename) {\n body.append(\"venuedata\", blob, `venuedata.${extension}`);\n } else {\n filename = filename.split(\".csv\")[0] + \".\" + extension;\n body.append(\"venuedata\", blob, filename);\n }\n const api = this.dataService.getHttp();\n return api.http.post(`${api.apiRoot}/customcategories/${model}/${id}/venuedata/${status}`, body);\n }\n\n public getVenueDataFile(model: string, id: number, type: \"raw\" | \"parsed\") {\n const api = this.dataService.getHttp();\n return api.http.get(`${api.apiRoot}/customcategories/${model}/${id}/venuedata/${type}`);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { InventoryService } from \"./inventory.service\";\nimport { DVMService } from \"./dvm.service\";\nimport { Subject, Observable } from \"rxjs\";\nimport { MapViewer } from \"@3ddv/dvm-internal\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class CategoriesService {\n constructor(private inventory: InventoryService, private dvmService: DVMService) {}\n\n private categorySuject$ = new Subject();\n\n /** Se emite cuando se hace un printInventoryCategories */\n public printCategoriesSubject$ = new Subject();\n\n /** Se emite cuando se hace un printInventoryCategories */\n get printCategoriesObservable$(): Observable {\n return this.printCategoriesSubject$.asObservable();\n }\n\n private categoriesList = [\n {\n name: \"General\",\n group: \"regular\",\n color: \"rgb(0, 255, 69)\",\n },\n {\n name: \"VIP\",\n group: \"vip\",\n color: \"rgb(255, 202, 13)\",\n },\n {\n name: \"Disabled\",\n group: \"disabled\",\n color: \"#32B9FF\",\n },\n {\n name: \"Locked\",\n group: \"locked\",\n color: \"rgb(0, 0, 0)\",\n },\n {\n name: \"Limited view\",\n group: \"restricted\",\n color: \"#C34DFF\",\n },\n ];\n\n // categories de menos a más importante\n private priorities = [\"selected\", \"locked\", \"regular\", \"restricted\", \"disabled\", \"vip\"];\n\n currentSelectionCategories = [];\n\n public getCategorySubject(): Observable {\n return this.categorySuject$.asObservable();\n }\n\n public setCategorySubject(): void {\n this.categorySuject$.next(null);\n }\n\n public getCatPriority(category: string) {\n return this.priorities.indexOf(category);\n }\n\n public getMostImportantCat(categories: string[]) {\n let cat_val = -1;\n let cat_name = \"\";\n for (let i = 0; i < categories.length; i++) {\n let aux_cat_val = this.priorities.indexOf(categories[i]);\n if (aux_cat_val > cat_val) {\n cat_val = aux_cat_val;\n cat_name = categories[i];\n }\n }\n return { priority: cat_val, category: cat_name };\n }\n\n getCurrentCategories(nodeType: string, nodes: any[], update?: boolean) {\n const categoriesHash = {};\n if (nodeType === \"seat\") {\n nodes.forEach((node) => {\n const split = node.id.split(\"-\");\n const areaId = split[0].split(\"_\")[1];\n const rowId = split[1];\n const invProps = this.inventory.getInventoryProperty(\"category\", areaId, rowId);\n invProps.forEach((price) => {\n categoriesHash[price] = true;\n });\n });\n } else if (nodeType === \"section\") {\n nodes.forEach((node) => {\n const split = node.id.split(\"-\");\n const areaId = split[0].split(\"_\")[1];\n const invProps = this.inventory.getInventoryProperty(\"category\", areaId);\n invProps.forEach((price) => {\n categoriesHash[price] = true;\n });\n });\n }\n if (update) {\n this.currentSelectionCategories = Object.keys(categoriesHash);\n }\n\n const keys = Object.keys(categoriesHash);\n if (keys && keys.length) {\n return Object.keys(categoriesHash);\n } else {\n return [];\n }\n }\n\n getCategoriesList(): Array<{ name: string; group: string; color: string }> {\n return this.categoriesList;\n }\n private removeSelectionCategoryOnViewer(section_id) {\n this.getCategoriesList().forEach((category) => {\n this.dvmService.viewer.removeNodesFromGroup(section_id, category.group);\n });\n }\n private getSectionCategoryPriority(section: string) {\n let section_id = \"S_\" + section;\n let all_seats = this.dvmService.viewer.getNodesByParent(section_id);\n let all_seats_groups = [];\n for (let i = 0; i < all_seats.length; i++) {\n let groups = all_seats[i].groups;\n for (let j = 0; j < groups.length; j++) {\n let g = groups[j];\n if (g && this.getCatPriority(g) > -1 && all_seats_groups.indexOf(g) == -1) {\n all_seats_groups.push(g);\n }\n }\n }\n //most_priorized_category_value_already_existing\n let mpcae_value = -1;\n let mpcae_name;\n\n for (let i = 0; i < all_seats_groups.length; i++) {\n let aux = this.getCatPriority(all_seats_groups[i]);\n if (aux > mpcae_value) {\n mpcae_value = aux;\n mpcae_name = all_seats_groups[i];\n }\n }\n\n return {\n priority: mpcae_value,\n category: mpcae_name,\n section: section,\n section_id: section_id,\n };\n }\n getCategoryColor(group: string) {\n for (let i = 0; i < this.categoriesList.length; i++) {\n const category = this.categoriesList[i];\n if (category.group === group) {\n //console.log('RETURN', category.color);\n return category.color;\n }\n }\n // this.categoriesList.forEach(\n // (category) => {\n // if (category.group === group) {\n // console.log('RETURN', category.color);\n // return category.color;\n // }\n // }\n // );\n }\n\n setCategory(nodeType: \"section\" | \"seat\", nodes: any[], category: string, callback?) {\n let flags = {\n capacity_updated: false,\n };\n const setCategoryPromise = new Promise((s, r) => {\n let section;\n let sections_cats;\n let sections_parsed;\n\n if (nodeType === \"seat\") {\n let row, seat;\n if (this.dvmService.activeVisualizationLayer === \"row\") {\n const rowsHash = {};\n sections_cats = [];\n sections_parsed = [];\n let add_row_hash = false;\n nodes.forEach((node) => {\n let split = node.id.split(\"_\")[1].split(\"-\");\n let aux_section = split[0];\n let aux_row = split[1];\n let aux_seat = split[2];\n if (sections_parsed.indexOf(section) == -1) {\n sections_cats.push(this.getSectionCategoryPriority(aux_section));\n sections_parsed.push(aux_section);\n }\n if (!rowsHash[aux_section + aux_row]) {\n rowsHash[section + row] = true;\n }\n if (!this.inventory.getInventoryBySeat(aux_section, aux_row, aux_seat).length) {\n this.inventory.createInventoryItem(node.id);\n this.dvmService.viewer.setAvailable(\"seat\", node.id);\n }\n this.inventory.setInventoryProperty(\"category\", category, aux_section, aux_row);\n });\n } else if (this.dvmService.activeVisualizationLayer === \"seat\") {\n sections_cats = [];\n sections_parsed = [];\n nodes.forEach((node) => {\n const split = node.id.split(\"_\")[1].split(\"-\");\n section = split[0];\n row = split[1];\n seat = split[2];\n\n if (sections_parsed.indexOf(section) == -1) {\n sections_cats.push(this.getSectionCategoryPriority(section));\n sections_parsed.push(section);\n }\n if (!this.inventory.getInventoryBySeat(section, row, seat).length) {\n this.inventory.createInventoryItem(node.id);\n this.dvmService.viewer.setAvailable(\"seat\", node.id);\n }\n this.inventory.setInventoryProperty(\"category\", category, section, row, null, seat);\n });\n }\n\n let current_priority = this.getCatPriority(category);\n\n if (category != \"none\" && current_priority > -1) {\n for (let i = 0; i < sections_cats.length; i++) {\n if (current_priority >= sections_cats[i].priority) {\n this.removeSelectionCategoryOnViewer(sections_cats[i].section_id);\n this.dvmService.viewer.addNodesToGroup(sections_cats[i].section_id, category);\n } else {\n this.dvmService.viewer.addNodesToGroup(sections_cats[i].section_id, sections_cats[i].category);\n }\n }\n }\n } else if (nodeType === \"section\") {\n nodes.forEach((node) => {\n const split = node.id.split(\"_\")[1].split(\"-\");\n let section = split[0];\n //create seats if not exists (last flag on create inventory item)\n let new_nodes = this.dvmService.viewer.getNodesByParent(\"S_\" + section);\n for (let i = 0; i < new_nodes.length; i++) {\n let [aux_sect, aux_row, aux_seat] = new_nodes[i].id.split(\"_\")[1].split(\"-\");\n if (!this.inventory.getInventoryBySeat(aux_sect, aux_row, aux_seat).length) {\n this.inventory.createInventoryItem(new_nodes[i].id);\n flags.capacity_updated = true;\n }\n }\n\n this.inventory.setInventoryProperty(\"category\", category, section, null);\n this.dvmService.viewer.setAvailable(\"section\", \"S_\" + section);\n this.dvmService.viewer.setAvailable(\"seat\", this.dvmService.viewer.getNodesByParent(\"S_\" + section));\n });\n }\n s(flags);\n }).then(() => {\n if (callback) {\n callback(flags);\n }\n });\n }\n\n printInventoryCategories(viewer?: MapViewer) {\n viewer = viewer ?? this.dvmService.viewer;\n const sections = viewer.getNodesByType(\"section\");\n const inventoryData = this.inventory.getInventoryData();\n\n sections.forEach((section) => {\n const sectionCategories = this.getCurrentCategories(\"section\", [section]);\n const seats = viewer.getNodesByParent(section);\n if (sectionCategories.length > 1) {\n const category = this.getMostImportantCat(sectionCategories);\n //viewer.addNodesToGroup(section, 'none');\n //viewer.addNodesToGroup(section, sectionCategories[0]);\n viewer.addNodesToGroup(section, category.category);\n seats.forEach((seat) => {\n //const seatCategories = this.getCurrentCategories('seat', [seat]);\n // viewer.addNodesToGroup(seat, seatCategories[0]);\n const split = seat.id.split(\"-\");\n const areaId = split[0].split(\"_\")[1];\n const rowId = split[1];\n const seatId = split[2];\n if (\n inventoryData[areaId] &&\n inventoryData[areaId].elements[rowId] &&\n inventoryData[areaId].elements[rowId].elements[seatId]\n ) {\n viewer.addNodesToGroup(seat, inventoryData[areaId].elements[rowId].elements[seatId].data.category);\n }\n });\n } else if (sectionCategories.length === 1) {\n viewer.addNodesToGroup(section, sectionCategories[0]);\n viewer.addNodesToGroup(seats, sectionCategories[0]);\n }\n\n // Guarda las sillas con status onhold en el grupo de onhold\n seats.forEach((seat) => {\n const split = seat.id.split(\"-\");\n const areaId = split[0].split(\"_\")[1];\n const rowId = split[1];\n const seatId = split[2];\n if (\n inventoryData[areaId] &&\n inventoryData[areaId].elements[rowId] &&\n inventoryData[areaId].elements[rowId].elements[seatId]\n ) {\n // Comprobar si el estado de la silla esta en onhold\n const seatStatus = inventoryData[areaId].elements[rowId].elements[seatId].data.status;\n // console.log(seatStatus);\n if (seatStatus && seatStatus === \"onhold\") {\n viewer.addNodesToGroup(seat, \"onhold\");\n }\n }\n });\n });\n this.printCategoriesSubject$.next(viewer);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { DataService} from './data.service';\nimport { DVMService} from './dvm.service';\nimport { SocialdistancingService} from './socialdistancing.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ComputedseatsService {\n\n paramsListBD;\n hashedParamsListBD;\n constructor(private dataService: DataService,\n private dvmService : DVMService,\n private socialdistancingService: SocialdistancingService) {\n this.resetBdParams();\n }\n \n private hashArray(data,key,newkey?){\n let res = {};\n for(let i =0;i{\n this.resetBdParams();\n let total_affected_seats = 0;\n for (let i =0;i (parseInt(a.result.group_size) > parseInt(b.result.group_size)) ? 1 : -1);\n const half = Math.ceil(params_toshow_inmodal.length / 2);\n \n let ret = [];\n ret[0] = params_toshow_inmodal.splice(0,half);\n ret[1] = params_toshow_inmodal;\n return ret;\n }\n );\n }\n\n \n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';\nimport { FormatNumberService } from './format-number.service';\nimport { Observable, Subject } from 'rxjs';\nimport { User } from '../shared/models/user-data.model';\nimport { Simulation } from '../shared/models/simulation-data.model';\nimport { Venue } from '../shared/models/venue-data.model';\nimport { Configuration } from '../shared/models/configuration-data.model';\nimport { ConfigurationCategory } from '../shared/models/configuration-category-data.model';\nimport { Parameter } from '../shared/models/parameter-data.model';\nimport { ConfigurationCategoryInput } from '../shared/models/configuration-category-input-data.model';\nimport { SimulationCategoryInput } from '../shared/models/simulation-category-input-data.model';\nimport {map} from 'rxjs/operators';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\n\nexport interface CloneConfigurationBody {\n original: string;\n name: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataService {\n\n apiRoot = '/api';\n publicRoot = '/public';\n \n user: User;\n currentConfigurationId: number;\n currentSimulationId: number;\n currentShareKey: string;\n configHash: { [key: number]: Configuration } = {};\n configCategoriesHash: { [key: number]: ConfigurationCategory } = {};\n configCategories: Array = [];\n\n parameters: Array = [];\n // tslint:disable-next-line: variable-name\n unitsHash = {\n m: {\n es: 'Metros',\n en: 'Meters'\n },\n ft: {\n es: 'Pies',\n en: 'Feet'\n }\n };\n\n venueData;\n private currentVenue$ = new Subject();\n public clientVenuesList: Venue[];\n currentVenue;\n simulationData: Simulation;\n subsimulationData;\n affectedSubsimulation;\n\n private currentSimulation$ = new Subject();\n private currentConfiguration$ = new Subject();\n inputHash = {};\n private inputHash$ = new Subject();\n listParams;\n listParamsHashed;\n\n get editSimulation$() {\n return this.editSimulationSubject$.asObservable();\n }\n private readonly editSimulationSubject$ = new Subject();\n\n constructor(protected http: HttpClient,\n protected formatMumber: FormatNumberService) {\n this.currentVenue$.next(0);\n }\n\n shareData;\n shareDataSubject = new Subject();\n shareDataAllParams = [];\n\n \n // USER / CLIENT\n /**\n * Sets this.client\n * @param client to set\n */\n setUser(user): void {\n this.user = user;\n this.formatMumber.setCurrency(user.user.client.currency);\n this.formatMumber.setUnits(user.user.client.metric_system);\n }\n\n /**\n * Gets this.client\n * @returns Client\n */\n getUser(): User {\n return this.user;\n }\n\n public getHttp(){\n return {'http': this.http,'apiRoot':this.apiRoot};\n }\n\n public getClientConfigs(clientId: number): Observable {\n return this.http.get(`${this.apiRoot}/clients/${clientId}/venues`) as Observable;\n }\n\n public setClientVenues(venues: Venue[]){\n this.clientVenuesList = venues;\n }\n\n // ¿Está en desuso?, eliminar en un futuro\n public getClientSimulations(clientId: number, page?: number): Observable> {\n if (page) {\n return this.http.get(`${this.apiRoot}/clients/${clientId}/simulations/${page}`) as Observable>;\n } else {\n return this.http.get(`${this.apiRoot}/clients/${clientId}/simulations`) as Observable>;\n }\n }\n\n\n // VENUE DATA\n\n public getCurrentVenue$(): Observable {\n return this.currentVenue$.asObservable();\n }\n\n public setCurrentVenue$(venueId: number): void {\n this.currentVenue$.next(venueId);\n }\n\n public getVenueSimulations(venueId: number, page?: number): Observable> {\n if (page) {\n return this.http.get(`${this.apiRoot}/venues/${venueId}/simulations/${page}`) as Observable>;\n } else {\n return this.http.get(`${this.apiRoot}/venues/${venueId}/simulations`) as Observable>;\n }\n }\n\n public getUnits(unit: string): string {\n let language = 'en';\n if (localStorage.getItem('language') !== null) {\n language = localStorage.getItem('language');\n }\n return this.unitsHash[unit][language];\n }\n\n public getCategories() {\n return this.http.get(`${this.apiRoot}/categories`) as Observable;\n }\n\n // CONFIGURATIONS\n\n public setGroups(configId, data): Observable {\n const body = {\n content: JSON.stringify(data)\n };\n return this.http.post(`${this.apiRoot}/configurations/${configId}/groups`, body);\n }\n\n public getGroups(configId): Observable {\n return this.http.get(`${this.apiRoot}/configurations/${configId}/groups`);\n }\n\n /**\n * Gets the seatmanifest from the API and returns an observable\n * @param venueId to attach the file\n * @param param optional param, by default API sends json\n */\n public getSeatManifest(configId, param?: 'csv' | 'json'): Observable {\n const httpOptions = {\n headers: new HttpHeaders(),\n params: new HttpParams()\n };\n if (param === 'csv') {\n httpOptions.headers = httpOptions.headers.append('Accept', 'text/csv');\n httpOptions.params = httpOptions.params.append('mime', 'csv');\n } else {\n httpOptions.params = httpOptions.params.append('mime', 'json');\n }\n return this.http.get(`${this.apiRoot}/configurations/${configId}/seatmanifest`, httpOptions)\n .pipe(map((s) => {\n let code = 200;\n if ((s as any).statusCode) {\n code = (s as any).statusCode;\n }\n return {statusCode: code, response: s};\n }));\n }\n\n public editConfiguration(configurationId: number, body): Observable {\n return this.http.patch(`${this.apiRoot}/configurations/${configurationId}`, body);\n }\n\n /**\n * Uploads the seatmanifest to the API and returns an observable\n * @param venueId to attach the file\n * @param file to send\n */\n public uploadSeatManifest(configId, file: File): Observable {\n const csvData: FormData = new FormData();\n csvData.append('content', file, file.name);\n return this.http.post(`${this.apiRoot}/configurations/${configId}/seatmanifest`, csvData);\n }\n\n public sendSeatManifestData(configId, data): Observable {\n // console.log(data);\n const blob = new Blob([JSON.stringify(data)], {type: 'application/json'});\n const body = new FormData();\n body.append('seatmanifest', blob, 'manifest.json');\n // console.log(configId, data);\n return this.http.post(`${this.apiRoot}/configurations/${configId}/seatmanifest`, body);\n }\n\n public getConfig(configId: number): Observable {\n return this.http.get(`${this.apiRoot}/configurations/${configId}/`) as Observable;\n }\n\n public getConfigurationsCategories(configId: number): Observable {\n return this.http.get(`${this.apiRoot}/configurations/${configId}/categories`) as Observable;\n }\n\n public setConfigHash(config: Array): void {\n for (const c of config) {\n this.configHash[c.id] = c;\n }\n }\n\n public getConfigHash(): { [key: number]: Configuration } {\n return this.configHash;\n }\n\n public getConfigById(id: number): Configuration | undefined {\n return this.configHash[id];\n }\n\n // public setConfigCategoriesHash(config: Array): void {\n // for (const c of config) {\n // this.configCategoriesHash[c.id] = c;\n // }\n // }\n\n // public getConfigCategories(): { [key: number]: ConfigurationCategory } {\n // return this.configCategoriesHash;\n // }\n\n // public getConfigCategoryByConfigId(id: number): ConfigurationCategory | undefined {\n // return this.configCategoriesHash[id];\n // }\n public postConfigurationCategories(configurationCategories: ConfigurationCategoryInput) {\n return this.http.post(`${this.apiRoot}/configuration_categories/create`, configurationCategories);\n }\n\n public getConfigurationCategories(configId) {\n return this.http.get(`${this.apiRoot}/configurations/${configId}/categories`);\n }\n // PARAMETERS\n public getParameterOrCreate(nseats): any {\n return this.http.get(`${this.apiRoot}/parameters/get_or_create?nseats=` + nseats);\n }\n\n public getParameters(): any {\n return this.http.get(`${this.apiRoot}/parameters`);\n }\n public getCurrentConfiguration$(): Observable {\n return this.currentConfiguration$.asObservable();\n }\n public setCurrentConfiguration$(configuration: Configuration): void {\n this.currentConfiguration$.next(configuration);\n }\n\n // SIMULATIONS\n\n // POST simulations/:id/social_groups\n public setSocialGroups(simulationId, data): Observable {\n const body = {\n content: JSON.stringify(data)\n };\n return this.http.post(`${this.apiRoot}/simulations/${simulationId}/social_groups`, body);\n }\n\n // Si queremos que la simulacion nos traiga tambien la subsimulacion y\n // a su vez los parametros de esta ultima, debemos añadir un query param. ejemplo:\n // GET - /api/simulations/:id?subsimulation=true\n\n public getCurrentSimulation$(): Observable {\n return this.currentSimulation$.asObservable();\n }\n\n public setCurrentSimulation$(simulation: Simulation): void {\n this.currentSimulation$.next(simulation);\n }\n\n public getInputHash$(): Observable {\n return this.inputHash$.asObservable();\n }\n\n public setInputHash$(inputHash: any): void {\n this.inputHash$.next(inputHash);\n }\n\n public deleteSimulation(simulationId: number): Observable {\n return this.http.delete(`${this.apiRoot}/simulations/${simulationId}`);\n }\n\n public deleteConfiguration(configurationId: number): Observable {\n return this.http.delete(`${this.apiRoot}/configurations/${configurationId}`);\n }\n\n public createSimulation(data: Simulation): Observable {\n return this.http.post(`${this.apiRoot}/simulations`, data);\n }\n public cloneConfiguration(data: CloneConfigurationBody): Observable {\n return this.http.post(`${this.apiRoot}/configurations/clone`, data);\n }\n // public cloneConfiguration(data: Simulation): Observable {\n // return this.http.post(`${this.apiRoot}/simulations`, data);\n // }\n public copySimulation(data: any): Observable {\n return this.http.post(`${this.apiRoot}/simulations/clone`, data);\n }\n public getSimulation(simulationId: number): Observable {\n return this.http.get(`${this.apiRoot}/simulations/${simulationId}/?subsimulation=true`) as Observable;\n }\n public getSimulationParameters(simulationId: number): Observable {\n return this.http.get(`${this.apiRoot}/simulations/${simulationId}/parameters?subsimulation=true`) as Observable;\n }\n\n /**\n * Gets the seatmanifest from the API and returns an observable\n * @param venueId to attach the file\n * @param param optional param, by default API sends json\n */\n public getSimulationSeatManifest(simulationId, param?: 'csv' | 'json'): Observable {\n const httpOptions = {\n headers: new HttpHeaders(),\n params: new HttpParams()\n };\n if (param === 'csv') {\n httpOptions.headers = httpOptions.headers.append('Accept', 'text/csv');\n httpOptions.params = httpOptions.params.append('mime', 'csv');\n } else {\n httpOptions.params = httpOptions.params.append('mime', 'json');\n }\n return this.http.get(`${this.apiRoot}/simulations/${simulationId}/seatmanifest`, httpOptions)\n .pipe(map((s) => {\n let code = 200;\n if ((s as any).statusCode) {\n code = (s as any).statusCode;\n }\n return {statusCode: code, response: s};\n }));\n\n }\n\n /**\n * Gets the seatmanifest-hold from the API and returns an observable\n * @param venueId to attach the file\n * @param param optional param, by default API sends json\n */\n public getSimulationSeatManifestHold(simulationId, param?: 'csv' | 'json'): Observable {\n const httpOptions = {\n headers: new HttpHeaders(),\n params: new HttpParams()\n };\n if (param === 'csv') {\n httpOptions.headers = httpOptions.headers.append('Accept', 'text/csv');\n httpOptions.params = httpOptions.params.append('mime', 'csv');\n } else {\n httpOptions.params = httpOptions.params.append('mime', 'json');\n }\n return this.http.get(`${this.apiRoot}/simulations/${simulationId}/seatmanifest-hold`, httpOptions)\n .pipe(map((s) => {\n let code = 200;\n if ((s as any).statusCode) {\n code = (s as any).statusCode;\n }\n return {statusCode: code, response: s};\n }));\n\n }\n\n public sendSimulationSeatManifestData(simulationId, data): Observable {\n // const content = JSON.stringify(data);\n // const body = {\n // content: content\n // };\n const blob = new Blob([JSON.stringify(data)], {type: 'application/json'});\n const body = new FormData();\n body.append('seatmanifest', blob, 'manifest.json');\n return this.http.post(`${this.apiRoot}/simulations/${simulationId}/seatmanifest`, body);\n }\n\n public getAllParameters(): Observable {\n return this.http.get(`${this.apiRoot}/parameters`);\n }\n\n public editSimulation(simulationId: number, body): Observable {\n this.editSimulationSubject$.next(body);\n return this.http.patch(`${this.apiRoot}/simulations/${simulationId}`, body);\n }\n public editSubSimulation(subsimulationId: number, body): Observable {\n return this.http.patch(`${this.apiRoot}/subsimulations/${subsimulationId}`, body);\n }\n public setSimulationGroups(simulationId, data): Observable {\n const body = {\n content: JSON.stringify(data)\n };\n return this.http.post(`${this.apiRoot}/simulations/${simulationId}/groups`, body);\n }\n\n public getSimulationGroups(simulationId): Observable {\n return this.http.get(`${this.apiRoot}/simulations/${simulationId}/groups`);\n }\n\n public createSimulationParameters(body: any): Observable {\n return this.http.post(`${this.apiRoot}/simulations_parameters/create`, body);\n }\n\n public editSimulationParameters(parameterId: number, body: any): Observable {\n return this.http.patch(`${this.apiRoot}/simulations_parameter/${parameterId}`, body);\n }\n\n public postSimulationCategories(simulationCategories: SimulationCategoryInput) {\n return this.http.post(`${this.apiRoot}/simulations_categories/create`, simulationCategories);\n }\n\n public getSimulationCategories(simulationId): Observable {\n return this.http.get(`${this.apiRoot}/simulations/${simulationId}/categories`);\n }\n\n // SUBSIMULATIONS\n\n // POST - /api/subsimulations\n // - body: {\n // \t\"name\": \"test subsimulation\",\n // \"social_distancing\": 1.444,\n // \"capacity\": 18,\n // \"simulation_id\": 210,\n // \"isle_seats\": 5,\n // \"fallback\": 3\n // }\n public createSubsimulation(data): Observable {\n return this.http.post(`${this.apiRoot}/subsimulations`, data);\n }\n\n // Para borrar una subsimulacion:\n // DELETE: /api/subsimulations/:id\n public deleteSubsimulation(subsimulationId: number): Observable {\n return this.http.delete(`${this.apiRoot}/subsimulations/${subsimulationId}`);\n }\n\n // Si quereis solo los parametros de una subsimulacion:\n // GET: /api/subsimulations/:id/parameters\n public getSubsimulationParameters(subsimulationId: number): Observable {\n return this.http.get(`${this.apiRoot}/subsimulations/${subsimulationId}/parameters`);\n }\n\n // Crear parametros de una subsimulacion, igual que simulaciones:\n // POST: /api/subsimulations_parameters/create\n // body: {\n // \t\"subsimulation\": 1,\n // \t\"options\": [\n // \t\t{\"param_id\": 2, \"percentage\":\"20\", \"computed_percentage\": \"0.34234\", \"computed_nseats\": 10}\n // \t]\n // }\n public createSubsimulationParameters(body: any): Observable {\n return this.http.post(`${this.apiRoot}/subsimulations_parameters/create`, body);\n }\n\n // SHARE SIMULATIONS\n\n public getSimulationShareKey(simulationId): Observable {\n return this.http.get(`${this.apiRoot}/simulations/${simulationId}/share`);\n }\n\n public stopSharingSimulation(simulationId): Observable {\n return this.http.get(`${this.apiRoot}/simulations/${simulationId}/noshare`);\n }\n\n public getSharedSimulation(shareKey): Observable {\n return this.http.get(`${this.apiRoot}/shared/simulation/?k=${shareKey}`);\n }\n\n public getSharedSimulationSeatManifest(shareKey): Observable {\n return this.http.get(`${this.apiRoot}/shared/simulation/seatmanifest/?k=${shareKey}`)\n .pipe(map((s) => {\n let code = 200;\n if ((s as any).statusCode) {\n code = (s as any).statusCode;\n }\n return {statusCode: code, response: s};\n }));\n }\n\n // plugins\n // alocation: missing groups\n\n public deleteAllocationResult(simulationId: number, pluginRef: string): Observable {\n return this.http.delete(`${this.apiRoot}/allocation/${pluginRef}/${simulationId}/result`);\n }\n\n public sendAllocationResult(simulationId: number, pluginRef: string, blob: Blob): Observable {\n const body = new FormData();\n body.append('allocation_result', blob, 'allocation_result.zip');\n return this.http.post(`${this.apiRoot}/allocation/${pluginRef}/${simulationId}/result`, body);\n }\n\n public getAllocationResult(simulationId: number, pluginRef: string): Observable {\n return this.http.get(`${this.apiRoot}/allocation/${pluginRef}/${simulationId}/result`, { responseType: 'arraybuffer' });\n }\n\n //update password\n public updatepassword(currentpass,newpass){\n let body = {\n current_password : currentpass,\n password : newpass\n }\n return this.http.patch(`${this.apiRoot}/users/password`,body);\n\n }\n\n //pdfsubscriber send email\n public pdfsubscriber(fullname,email){\n let body = {\n fullname : fullname,\n email : email\n }\n return this.http.post(`${this.publicRoot}/mailer/pdfsubscriber`,body);\n }\n\n\n\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { DVM_CONFIG } from '../../../assets/configuration/digitalvenue.configuration';\nimport { Subject } from 'rxjs';\nimport {DVMConfiguration} from '../shared/models/dvm-configuration.model';\nimport { S_IFREG } from 'constants';\nimport { CategoriesService } from './categories.service';\n\ndeclare let DVM;\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class DVMService {\n\n viewer;\n viewer3d;\n viewerSubject: Subject = new Subject();\n viewer3dSubject: Subject = new Subject();\n mapSubject: Subject = new Subject();\n isViewerSubjectInitialized = false;\n isViewer3dSubjectInitialized = false;\n subscribedCallbacks = {};\n subscribed3dCallbacks = {};\n activeVisualizationLayer;\n isConfiguration = false;\n isSimulation = false;\n venuetotaltiersav;\n constructor(\n @Inject(DVM_CONFIG) private DVMConfig: DVMConfiguration) {\n\n this.viewerSubject.subscribe(\n viewer => this.viewer = viewer\n );\n }\n\n public getDVMConfig(): DVMConfiguration {\n return JSON.parse(JSON.stringify(this.DVMConfig));\n }\n\n public setTotalTiersAV(total){\n this.venuetotaltiersav = total;\n }\n public getTotalTiersAV(){\n return this.venuetotaltiersav;\n }\n public restartDVM(venueId?: any, mapId?: any) {\n //console.log('Restart DVM', venueId, mapId);\n // tslint:disable-next-line: forin\n for (const event in this.subscribedCallbacks) {\n this.subscribedCallbacks[event].forEach(callback => {\n this.viewer.unsubscribe(event, callback);\n });\n }\n // tslint:disable-next-line: forin\n for (const event in this.subscribed3dCallbacks) {\n this.subscribed3dCallbacks[event].forEach(callback => {\n this.viewer3d.unsubscribe(event, callback);\n });\n }\n this.isViewerSubjectInitialized = false;\n this.isViewer3dSubjectInitialized = false;\n const viewerConfig = this.DVMConfig;\n if (venueId) {\n viewerConfig.venue_id = venueId;\n if (this.viewer && !mapId) {\n viewerConfig.map_id = this.viewer.getMapId();\n }\n }\n if (mapId) {\n viewerConfig.map_id = mapId;\n }\n //console.log(viewerConfig);\n this.initializeDVM('map_viewer', viewerConfig);\n }\n\n private initializeDVM(moduleName, config) {\n //console.log('initialize');\n DVM.loadModule(moduleName, config)\n .then((viewer) => {\n this.viewer = viewer;\n (window as any).viewer = viewer;\n // this.loadMap(this.DVMConfig);\n this.loadMap(config).then(\n r => {\n this.mapSubject.next(this.viewer);\n }\n );\n if (!this.isViewerSubjectInitialized) {\n this.viewerSubject.next(this.viewer);\n this.isViewerSubjectInitialized = true;\n }\n viewer.flags.automatic_selection = false;\n viewer.flags.automatic_hover = false;\n viewer.flags.fixed_aspect_ratio = false;\n })\n .catch((err) => {\n console.error(err);\n });\n\n const viewer3dConfig = JSON.parse(JSON.stringify(config));\n viewer3dConfig.container = 'viewer3d-container';\n viewer3dConfig.plugins = ['navigation'];\n DVM.loadModule('3d_viewer', viewer3dConfig)\n .then((viewer3d) => {\n this.viewer3d = viewer3d;\n if ((window as any).viewer3d == null) {\n (window as any).viewer3d = [];\n }\n (window as any).viewer3d.push(viewer3d);\n if (!this.isViewer3dSubjectInitialized) {\n this.viewer3dSubject.next(this.viewer3d);\n this.isViewer3dSubjectInitialized = true;\n }\n })\n .catch((err) => {\n console.error(err);\n });\n }\n\n changeMapConfiguration(venueId, mapId?) {\n if (this.viewer) {\n const viewerConfig = JSON.parse(JSON.stringify(this.DVMConfig));\n viewerConfig.venue_id = venueId;\n viewerConfig.map_id = this.viewer.getMapId();\n if (mapId) {\n viewerConfig.map_id = mapId;\n } else {\n viewerConfig.map_id = this.viewer.getMapId();\n }\n this.loadMap(viewerConfig).then(\n r => {\n this.mapSubject.next();\n }\n );\n }\n }\n\n subscribeHandler(event: 'click' | 'end_load' | 'enter' | 'leave', callback) {\n const viewerSubjectSubscribe = this.viewerSubject.subscribe(\n viewer => {\n this.viewer.subscribe(event, callback);\n if (!this.subscribedCallbacks[event]) {\n this.subscribedCallbacks[event] = [];\n }\n this.subscribedCallbacks[event].push(callback);\n viewerSubjectSubscribe.unsubscribe();\n }\n );\n }\n\n subscribe3dHandler(event: 'click_navigation_node', callback) {\n const viewer3dSubjectSubscribe = this.viewer3dSubject.subscribe(\n viewer3d => {\n this.viewer3d.subscribe(event, callback);\n if (!this.subscribed3dCallbacks[event]) {\n this.subscribed3dCallbacks[event] = [];\n }\n this.subscribed3dCallbacks[event].push(callback);\n viewer3dSubjectSubscribe.unsubscribe();\n }\n );\n }\n\n public loadMap(loadOptions) {\n return this.viewer.loadMap(loadOptions).then(() => {\n this.applyStyles2(this.viewer);\n });\n }\n\n public load3DView(nodeId) {\n const loadOptions = JSON.parse(JSON.stringify(this.DVMConfig));\n loadOptions.view_id = nodeId;\n loadOptions.venue_id = this.viewer.getVenueId();\n this.viewer3d.loadView3d(loadOptions);\n }\n\n public getLockedseats(){\n return this.viewer.getNodesByGroups('seat', 'locked');\n\n }\n\n \n\n private applyStyles2(viewer){\n const regularFill = '#36B369';\n const regularFillOutline = '#198044';\n const regularFillHover = '#CCFFE1';\n const regularFillHoverOutline = '#36B369';\n\n const vipFill = '#CCA829';\n const vipFillOutline = '#80661A';\n const vipFillHover = '#FFF2CC';\n const vipFillHoverOutline = '#CCA829'\n\n const disabledFill = '#3688B3';\n const disabledFillOutline = '#1A5D80';\n const disabledFillHover = '#CCEEFF';\n const disabledFillHoverOutline = '#3688B3';\n\n const lockedFill = '#000000';\n const lockedFillOutline = '#808080';\n const lockedFillHover = '#CCCCCC';\n const lockedFillHoverOutline = '#808080';\n\n const restrictedFill = '#C34DFF';\n const restrictedFillOutline = '#7639AD';\n const restrictedFillHover = '#e4bef7';\n const restrictedFillHoverOutline = '#7639AD';\n\n const selectedFill = '#FF4D4D';\n const selectedFillOutline = '#801A1A';\n const selectedFillHover = '#FFCCCC';\n const selectedFillHoverOutline = '#FF4D4D';\n\n const tomoveFill = 'rgb(100, 0, 5)';\n const warningFill = 'orange';\n \n const allocationFill = '#1F8EFA';\n const allocationFillOutline = '#1a6ebc';\n const allocationFillHover = '#1F8EFA';\n const allocationFillHoverOutline = '#1a6ebc';\n\n\n const styles = viewer.getStyles();\n for(let i =0;i 0) ? obj.nodes[0].id : null;\n }\n\n public getLogicRowSeats(node){\n let seats = [];\n let [section, row, seat] = node.id.split(\"_\")[1].split(\"-\");\n let node_seats = this.viewer.getNodesByParent(\"S_\"+section);\n for(let i =0;i{\n let promises = [];\n let venue_av = {\n capacity : 0,\n tiers: [],\n locked : 0\n }\n if(!config_tier_list.length){\n return new Promise((s,r)=>{\n venue_av.capacity = this.viewer.getNodesByType(\"seat\").length;\n s(venue_av);\n });\n }\n\n config_tier_list.forEach(tier => {\n const viewerConfig = JSON.parse(JSON.stringify(this.DVMConfig));\n console.log(this.viewer);\n viewerConfig.venue_id = this.viewer.getVenueId();\n viewerConfig.map_id = tier.map_id;\n viewerConfig.container = 'dummy-viewer-container';\n let p = new Promise((success, reject) => {\n DVM.loadModule('map_viewer', viewerConfig).then(\n dummy_viewer => {\n dummy_viewer.loadMap(viewerConfig).then(\n response => {\n let c = dummy_viewer.getNodesByType(\"seat\").length;\n tier.capacity = c;\n venue_av.tiers.push(tier);\n venue_av.capacity+=c;\n venue_av.locked +=dummy_viewer.getNodesByGroups('seat', 'locked').length;\n dummy_viewer.reset();\n dummy_viewer.close();\n success(null);\n }).catch((err) => {\n console.error(err);\n reject(err);\n });\n }).catch((err) => {\n console.error(err);\n reject(err);\n });\n });\n promises.push(p);\n });\n\n\n return Promise.all(promises).then(result=>{\n return venue_av;\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FormatNumberService {\n\n private currentLocale: string;\n private currency: string;\n private units: string;\n\n constructor() { }\n\n public setCurrentLocale(locale: string): void {\n this.currentLocale = locale;\n }\n\n public getCurrentLocale(): string {\n return this.currentLocale;\n }\n\n public setCurrency(currency: string): void {\n this.currency = currency;\n }\n\n public getCurrency(): string {\n return this.currency;\n }\n\n public setUnits(units: string): void {\n this.units = units;\n }\n\n public getUnits(): string {\n return this.units;\n }\n\n public formatNumber(num: number): string {\n const numb = new Intl.NumberFormat('en').format(num);\n if (this.currency === 'EUR') {\n return this.formatNumberEs(num);\n } else {\n return numb;\n }\n }\n\n public formatCurrencyNumber(num: number): string {\n const numb = new Intl.NumberFormat('en').format(num);\n let formatted;\n if (this.currency === 'eur') {\n formatted = this.formatNumberEs(num) + ' ' + this.currency;\n } else {\n formatted = this.currency + ' ' + numb;\n\n }\n\n return formatted;\n }\n\n private formatNumberEs(num: number): string {\n return new Intl.NumberFormat('de-DE').format(num);\n }\n\n public formatSocialDistancing(num: number): string {\n switch (this.units) {\n case 'ft':\n return (num / 0.3048).toFixed(2);\n break;\n case 'm':\n return num.toFixed(2);\n break;\n }\n\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { DVMService } from './dvm.service';\nimport { DataService } from './data.service';\nimport { ActivatedRoute } from '@angular/router';\nimport {Observable, Subject} from 'rxjs';\n\ninterface GroupBehaviors {\n [key: string]: string[];\n}\n\nconst defaultBehaviors: GroupBehaviors = {\n validated: ['onhold'],\n invalidated: ['locked']\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GroupsService {\n\n groupsHash = {\n groups: {},\n nodes: {},\n lastGroup: 0\n };\n\n public get resetGroupBehaviors$(): Observable {\n return this.resetGroupBehaviorsSubject$.asObservable();\n }\n\n private resetGroupBehaviorsSubject$ = new Subject();\n\n private groupBehaviors: GroupBehaviors = {\n validated: ['onhold'],\n invalidated: ['locked']\n };\n\n constructor(private dataService: DataService,\n private dvmService: DVMService,\n private activatedRoute: ActivatedRoute ) {\n this.dataService.getCurrentConfiguration$().subscribe(() => {\n this.resetGroupBehaviors();\n });\n\n this.dataService.getCurrentSimulation$().subscribe(() => {\n this.resetGroupBehaviors();\n });\n }\n\n resetGroupBehaviors(): void {\n this.groupBehaviors = {};\n for (const i in defaultBehaviors) {\n if (defaultBehaviors.hasOwnProperty(i)) {\n this.groupBehaviors[i] = defaultBehaviors[i].slice();\n }\n }\n\n this.resetGroupBehaviorsSubject$.next();\n }\n\n addGroupsToBehaviors(behavior: string, ...groups: string[]): void {\n this.groupBehaviors[behavior]?.push(...groups);\n }\n\n getGroupBehaviors(behaviors: string | string[]): string[] {\n if (Array.isArray(behaviors)) {\n const result: string[] = [];\n behaviors.forEach((behavior: string) => {\n if (this.groupBehaviors[behavior]) {\n result.push(...this.groupBehaviors[behavior]);\n }\n });\n return result;\n } else {\n return this.groupBehaviors[behaviors]?.slice() ?? [];\n }\n }\n\n setGroupsHash(data) {\n this.groupsHash = data;\n if (!data.lastGroup) {\n this.groupsHash.lastGroup = 0;\n }\n for (const node in this.groupsHash.nodes) {\n if (this.groupsHash.nodes[node]) {\n this.groupsHash.nodes[node].forEach(group => {\n this.dvmService.viewer.addNodesToGroup(node, group.toString());\n });\n this.dvmService.viewer.addNodesToGroup(node, 'grouped');\n }\n }\n }\n\n createGroup(nodes: any[], isSimulation?) {\n this.groupsHash.lastGroup++;\n this.groupsHash.groups[this.groupsHash.lastGroup] = [];\n nodes.forEach(node => {\n if (typeof this.groupsHash.nodes[node.id] === 'undefined') {\n this.groupsHash.nodes[node.id] = [];\n }\n this.groupsHash.groups[this.groupsHash.lastGroup].push(node.id);\n this.groupsHash.nodes[node.id].push(this.groupsHash.lastGroup);\n });\n this.dvmService.viewer.addNodesToGroup(nodes, this.groupsHash.lastGroup.toString());\n this.dvmService.viewer.addNodesToGroup(nodes, 'grouped');\n if (isSimulation) {\n this.postSimulationGroups();\n } else {\n this.postGroups();\n }\n }\n\n deleteGroup(nodes: any[], isSimulation?) {\n nodes.forEach(node => {\n this.groupsHash.nodes[node.id].forEach(group => {\n if (group) {\n this.dvmService.viewer.removeNodesFromGroup(this.groupsHash.groups[group], group.toString());\n } else {\n this.dvmService.viewer.removeNodesFromGroup(this.groupsHash.groups[group], group);\n }\n this.dvmService.viewer.removeNodesFromGroup(this.groupsHash.groups[group], 'grouped');\n delete this.groupsHash.groups[group];\n });\n delete this.groupsHash.nodes[node.id];\n });\n if (isSimulation) {\n this.postSimulationGroups();\n } else {\n this.postGroups();\n }\n }\n\n postGroups() {\n const s = this.dataService.setGroups(this.dataService.currentConfigurationId, this.groupsHash).subscribe(\n response => {\n s.unsubscribe();\n console.log(response);\n }\n );\n }\n\n postSimulationGroups() {\n const s = this.dataService.setSimulationGroups(this.dataService.currentSimulationId, this.groupsHash).subscribe(\n response => {\n s.unsubscribe();\n console.log(response);\n }\n );\n }\n\n}\n","import { Injectable, Inject } from \"@angular/core\";\nimport { GeneralHandler } from \"./general.handler\";\nimport { DVMService } from \"../dvm.service\";\nimport { DVM_CONFIG } from \"src/assets/configuration/digitalvenue.configuration\";\nimport { DVMConfiguration } from \"src/app/social-distance-editor/shared/models/dvm-configuration.model\";\nimport { InventoryService } from \"../inventory.service\";\nimport { GroupsService } from \"../groups.service\";\nimport { PricingService } from \"../pricing.service\";\nimport { CategoriesService } from \"../categories.service\";\nimport { SelectionService } from \"../selection.service\";\nimport { SocialdistancingService } from \"../socialdistancing.service\";\nimport { ToastrService } from \"ngx-toastr\";\nimport { DataService } from \"src/app/social-distance-editor/services/data.service\";\nimport { ParametersService } from \"../parameters.service\";\nimport { BsModalService, BsModalRef, ModalOptions } from \"ngx-bootstrap/modal\";\nimport { ConfirmEditMultiSeatComponent } from \"src/app/social-distance-editor/shared/modals/confirm-edit-multi-seat/confirm-edit-multi-seat.component\";\n\n@Injectable()\nexport class ClickHandler extends GeneralHandler {\n private removeWarningNodes = false;\n private nodes_tomove;\n constructor(\n protected dvmService: DVMService,\n @Inject(DVM_CONFIG) private dvmConfig: DVMConfiguration,\n private inventoryService: InventoryService,\n private groups: GroupsService,\n private categories: CategoriesService,\n private selection: SelectionService,\n private pricing: PricingService,\n private toastr: ToastrService,\n private parameters: ParametersService,\n private socialDistancing: SocialdistancingService,\n private dataService: DataService,\n private bsModalRef: BsModalRef,\n private modalService: BsModalService\n ) {\n super(\"click\", dvmService);\n }\n\n sectionClickHandler(node, viewer) {\n if (viewer.layers.getLayerLevel() === 0) {\n if (node.state !== \"unavailable\" || this.dvmService.isConfiguration) {\n let isGrouped = false;\n node.groups.forEach((element) => {\n if (parseInt(element, 10)) {\n isGrouped = true;\n if (node.groups.includes(\"selected\")) {\n viewer.removeNodesFromGroup(this.groups.groupsHash.groups[element], \"selected\");\n } else {\n viewer.addNodesToGroup(this.groups.groupsHash.groups[element], \"selected\");\n }\n }\n });\n if (!isGrouped) {\n if (node.groups.includes(\"selected\")) {\n viewer.removeNodesFromGroup(node, \"selected\");\n } else {\n viewer.addNodesToGroup(node, \"selected\");\n }\n }\n\n const selection = viewer.getNodesByGroups(\"section\", \"selected\");\n this.pricing.getCurrentPricing(\"section\", selection, true);\n this.selection.selectionSubject.next(selection);\n }\n if (this.selection.isMultiSelection) {\n viewer.removeNodesFromGroup(node, \"selected\");\n let nodes = viewer.getNodesByParent(node.id);\n let nodes_available = [];\n let nodes_unavailable = [];\n let all_nodes = [];\n let nodes_affected = [];\n let exists_iniventory = this.inventoryService.getInventoryBySection(node.id.split(\"_\")[1]);\n for (let i = 0; i < nodes.length; i++) {\n let exists = exists_iniventory.indexOf(nodes[i].id);\n if (exists > -1) {\n if (nodes[i].groups.indexOf(\"locked\") === -1 && nodes[i].state === \"unavailable\") {\n nodes_unavailable.push(nodes[i]);\n } else {\n nodes_available.push(nodes[i]);\n }\n }\n all_nodes.push(nodes[i]);\n }\n\n let status_tochange = \"available\";\n let error = false;\n if (!nodes_unavailable.length && !nodes_available.length) {\n error = true;\n } else {\n if (!nodes_unavailable.length && nodes_available.length) {\n status_tochange = \"unavailable\";\n nodes_affected = nodes_available;\n } else {\n status_tochange = \"available\";\n nodes_affected = nodes_unavailable;\n }\n }\n const confirmMultiSeatSelectionOpt: ModalOptions = {\n animated: true,\n class: \"modal-dialog-centered\",\n backdrop: true,\n ignoreBackdropClick: true,\n initialState: {\n affected_seats: nodes_affected,\n status_tochange: status_tochange,\n error: error,\n },\n };\n this.bsModalRef = this.modalService.show(ConfirmEditMultiSeatComponent, confirmMultiSeatSelectionOpt);\n }\n }\n }\n\n /**Seat click:\n * 1. if: Gestión del selected, quitar asientos single/multi seat\n * 2. if: Gestión del mover asientos\n * 3. if: Añadir asientos del edit single/multi seat\n * **/\n seatClickHandler(node, viewer) {\n console.log(node);\n let toastrOpt = {\n msg: \"Availability and Seatmanifest data successfully updated\",\n timeOut: 4000,\n };\n if (node.state !== \"unavailable\" || this.dvmService.isConfiguration) {\n //deprecated\n //let isGrouped = this.toggleSelection(node,viewer);\n\n if (/*!isGrouped && */ !this.selection.isSingleSelection && !this.selection.isMultiSelection) {\n const section = node.id.split(\"_\")[1].split(\"-\")[0];\n const row = node.id.split(\"-\")[1];\n const seat = node.id.split(\"-\")[2];\n if (node.groups.includes(\"selected\")) {\n if (this.selection.isGroupsSelection) {\n this.selection.selectionSubscriptionsArray.push(\n this.socialDistancing.getNeighbors(viewer, node.id).subscribe((response) => {\n this.selection.selectionSubscriptionsArray.forEach((e) => {\n e.unsubscribe();\n });\n viewer.removeNodesFromGroup(response, \"selected\");\n this.selection.selectionSubject.next(viewer.getNodesByGroups(\"seat\", \"selected\"));\n })\n );\n } else {\n let nodes_toselect = [];\n if (this.dvmService.activeVisualizationLayer === \"row\") {\n nodes_toselect = this.inventoryService.getInventoryByRow(section, row);\n let all_nodes = viewer.getNodesByParent(\"S_\" + section);\n let nodes_toselect_from_map = [];\n\n for (let i = 0; i < all_nodes.length; i++) {\n let row_toadd = all_nodes[i].id.split(\"_\")[1].split(\"-\")[1];\n if (row_toadd === row) {\n nodes_toselect_from_map.push(all_nodes[i].id);\n }\n }\n if (nodes_toselect_from_map.length != nodes_toselect.length) {\n nodes_toselect = nodes_toselect_from_map;\n }\n } else {\n nodes_toselect = this.inventoryService.getInventoryBySeat(section, row, seat);\n if (!nodes_toselect.length) {\n nodes_toselect.push(node);\n }\n }\n viewer.removeNodesFromGroup(nodes_toselect, \"selected\");\n }\n } else {\n if (this.selection.isGroupsSelection) {\n this.nodes_tomove = [];\n this.selection.selectionSubscriptionsArray.push(\n this.socialDistancing.getNeighbors(viewer, node.id).subscribe((response: any) => {\n this.selection.selectionSubscriptionsArray.forEach((e) => {\n e.unsubscribe();\n });\n viewer.addNodesToGroup(response, \"selected\");\n this.selection.selectionSubject.next(viewer.getNodesByGroups(\"seat\", \"selected\"));\n for (let i = 0; i < response.length; i++) {\n const [section, row, seat] = response[i].split(\"_\")[1].split(\"-\");\n const seat_inv_data =\n this.inventoryService.getInventoryData()[section].elements[row].elements[seat].data;\n this.nodes_tomove.push(seat_inv_data);\n }\n })\n );\n } else {\n let nodes_toselect = [];\n if (this.dvmService.activeVisualizationLayer === \"row\") {\n nodes_toselect = this.inventoryService.getInventoryByRow(section, row);\n let all_nodes = viewer.getNodesByParent(\"S_\" + section);\n let nodes_toselect_from_map = [];\n\n for (let i = 0; i < all_nodes.length; i++) {\n let row_toadd = all_nodes[i].id.split(\"_\")[1].split(\"-\")[1];\n if (row_toadd === row) {\n nodes_toselect_from_map.push(all_nodes[i].id);\n }\n }\n if (nodes_toselect_from_map.length != nodes_toselect.length) {\n nodes_toselect = nodes_toselect_from_map;\n }\n } else {\n nodes_toselect = this.inventoryService.getInventoryBySeat(section, row, seat);\n if (!nodes_toselect.length) {\n nodes_toselect.push(node);\n }\n }\n viewer.addNodesToGroup(nodes_toselect, \"selected\");\n }\n }\n this.selection.selectionSubject.next(viewer.getNodesByGroups(\"seat\", \"selected\"));\n } else {\n let nodes_tosetunavailable = [];\n let [sect, r, ss] = node.id.split(\"_\")[1].split(\"-\");\n if (this.selection.isMultiSelection) {\n let row_seats = this.inventoryService.getInventoryByRow(sect, r);\n for (let i = 0; i < row_seats.length; i++) {\n let aux_node = viewer.getNodeById(row_seats[i]);\n if (aux_node.groups.indexOf(\"locked\") === -1 && aux_node.state === \"available\") {\n nodes_tosetunavailable.push(aux_node);\n }\n }\n const confirmMultiSeatSelectionOpt: ModalOptions = {\n animated: true,\n class: \"modal-dialog-centered\",\n backdrop: true,\n ignoreBackdropClick: true,\n initialState: {\n affected_seats: nodes_tosetunavailable,\n status_tochange: \"unavailable\",\n },\n };\n this.bsModalRef = this.modalService.show(ConfirmEditMultiSeatComponent, confirmMultiSeatSelectionOpt);\n } else {\n // remove seat\n nodes_tosetunavailable.push(node);\n viewer.setUnavailable(\"seat\", nodes_tosetunavailable);\n\n this.inventoryService.controlDirty(nodes_tosetunavailable, \"remove\");\n\n this.inventoryService.updateInventory(nodes_tosetunavailable, \"unavailable\", toastrOpt);\n }\n }\n } else if (\n this.selection.isGroupsSelection &&\n viewer.getNodesByGroups(\"seat\", \"selected\").length &&\n viewer.getNodesByGroups(\"seat\", \"tomove\").length\n ) {\n const inventoryData = this.inventoryService.getInventoryData();\n const newSeats = { ids: [] };\n //on move group\n\n let tomove_lockeddetected = false;\n viewer.getNodesByGroups(\"seat\", \"tomove\").forEach((seatNode) => {\n if (seatNode.groups.indexOf(\"locked\") > -1) {\n tomove_lockeddetected = true;\n }\n });\n if (tomove_lockeddetected) {\n this.toastr.error(\"Locked seats detected, is not possible to set locked seats as available.\");\n return;\n }\n\n viewer.getNodesByGroups(\"seat\", \"selected\").forEach((seatNode) => {\n const split = seatNode.id.split(\"_\")[1].split(\"-\");\n const section = split[0];\n const row = split[1];\n const seat = split[2];\n delete inventoryData[section].elements[row].elements[seat].data.status;\n });\n let i = 0;\n let allocation_tomove = false;\n viewer.getNodesByGroups(\"seat\", \"tomove\").forEach((seatNode) => {\n const split = seatNode.id.split(\"_\")[1].split(\"-\");\n const section = split[0];\n const row = split[1];\n const seat = split[2];\n inventoryData[section].elements[row].elements[seat].data.status = \"available\";\n newSeats.ids.push(seatNode.id);\n if (this.nodes_tomove[i].allocation) {\n allocation_tomove = true;\n inventoryData[section].elements[row].elements[seat].data.allocation = this.nodes_tomove[i].allocation;\n let [old_sect, old_row, old_seat] = this.nodes_tomove[i].code.split(\"_\")[1].split(\"-\");\n delete inventoryData[old_sect].elements[old_row].elements[old_seat].data.allocation;\n }\n i++;\n });\n if (allocation_tomove) {\n this.inventoryService.setInventoryData(inventoryData);\n }\n this.socialDistancing.filterNearest(viewer, newSeats.ids).subscribe((result) => {\n // TODO: En este punto se debería mostrar el popup y esperar el input del usuario antes de ejecutar el resto del código.\n const seatsToLock = result as string[];\n // TODO: Sustituir con el resultado del popup. true: los filterNearest se eliminan. false: los filterNearest se mantienen\n if (this.removeWarningNodes) {\n seatsToLock.forEach((seatNode) => {\n const split = (seatNode as string).split(\"_\")[1].split(\"-\");\n const section = split[0];\n const row = split[1];\n const seat = split[2];\n delete inventoryData[section].elements[row].elements[seat].data.status;\n });\n }\n\n // TODO: Esto antes estaba dentro del forEach. Creo que con hacer esto 1 vez en vez de n veces es suficiente, pero repasar por si hay alguna llamada que haya que hacer n veces\n const inventory = this.inventoryService.getAvailableInventory(true);\n this.inventoryService.updateTotalsHash();\n viewer.setAvailability(\"section\", inventory.sections);\n viewer.setAvailability(\"seat\", inventory.seats);\n this.inventoryService.availabilityLoadedSubject.next();\n this.categories.printInventoryCategories();\n this.dvmService.viewer.removeNodesFromGroup(viewer.getNodesByGroups(\"seat\", \"selected\"), \"selected\");\n this.selection.selectionSubject.next(this.dvmService.viewer.getNodesByGroups(\"seat\", \"selected\"));\n this.inventoryService.sendInventoryData(true).subscribe(\n (response) => {\n console.log(response);\n },\n (error) => {\n console.error(error);\n }\n );\n });\n } else if (this.selection.isSingleSelection || this.selection.isMultiSelection) {\n //new seat\n\n if (node.groups.indexOf(\"locked\") > -1) {\n this.toastr.error(\"This seat is configured as locked. Is not possible to set as available.\");\n } else {\n let nodes_tosetavailable = [];\n let [sect, r, ss] = node.id.split(\"_\")[1].split(\"-\");\n if (this.selection.isMultiSelection) {\n let row_seats = this.inventoryService.getInventoryByRow(sect, r);\n let error = false;\n if (!row_seats.length) {\n error = true;\n //seats no existen en el inventory\n /* row_seats = this.dvmService.viewer.getNodeById(node.id).row;\n if(!row_seats){\n //error no hay row attributr\n row_seats = this.dvmService.getLogicRowSeats(node);\n if(!row_seats.length){\n error = true;\n }\n } */\n }\n let all_available_nodes = [];\n if (!error) {\n for (let i = 0; i < row_seats.length; i++) {\n let aux_node = viewer.getNodeById(row_seats[i]);\n if (aux_node.groups.indexOf(\"locked\") === -1 && aux_node.state === \"unavailable\") {\n nodes_tosetavailable.push(aux_node);\n }\n all_available_nodes.push(aux_node);\n }\n }\n let status = \"available\";\n if (!nodes_tosetavailable.length && !error) {\n nodes_tosetavailable = all_available_nodes;\n status = \"unavailable\";\n }\n const confirmMultiSeatSelectionOpt: ModalOptions = {\n animated: true,\n class: \"modal-dialog-centered\",\n backdrop: true,\n ignoreBackdropClick: true,\n initialState: {\n affected_seats: nodes_tosetavailable,\n status_tochange: status,\n error: error,\n },\n };\n this.bsModalRef = this.modalService.show(ConfirmEditMultiSeatComponent, confirmMultiSeatSelectionOpt);\n } else {\n nodes_tosetavailable.push(node);\n\n if (!this.inventoryService.getInventoryBySeat(sect, r, ss).length) {\n const confirmMultiSeatSelectionOpt: ModalOptions = {\n animated: true,\n class: \"modal-dialog-centered\",\n backdrop: true,\n ignoreBackdropClick: true,\n initialState: {\n affected_seats: nodes_tosetavailable,\n status_tochange: \"available\",\n error: true,\n },\n };\n this.bsModalRef = this.modalService.show(ConfirmEditMultiSeatComponent, confirmMultiSeatSelectionOpt);\n } else {\n viewer.setAvailable(\"seat\", nodes_tosetavailable);\n\n let section_affected = nodes_tosetavailable[0].id.split(\"-\")[0];\n let n_av = viewer.getNodesByState(\"seat\", \"available\", section_affected).length;\n if (n_av) {\n viewer.setAvailable(\"section\", section_affected);\n }\n //setting dirty true and update sim db\n this.inventoryService.controlDirty(nodes_tosetavailable, \"add\");\n\n //update inventory y manifest\n this.inventoryService.updateInventory(nodes_tosetavailable, \"available\", toastrOpt);\n }\n }\n }\n }\n }\n\n //deprecated\n private ____toggleSelection(node, viewer) {\n let isGrouped = false;\n node.groups.forEach((element) => {\n console.log(parseInt(element, 10));\n if (parseInt(element, 10)) {\n isGrouped = true;\n if (node.groups.includes(\"selected\")) {\n viewer.removeNodesFromGroup(this.groups.groupsHash.groups[element], \"selected\");\n } else {\n viewer.addNodesToGroup(this.groups.groupsHash.groups[element], \"selected\");\n }\n }\n });\n return isGrouped;\n }\n protected handle(obj) {\n // Close popovers\n const tooltip: HTMLElement = document.querySelector(\"#tooltip\");\n tooltip.removeAttribute(\"data-show\");\n\n // Handle\n const viewer = obj.instance;\n const nodes = obj.nodes;\n if (nodes.length) {\n if (nodes[0].type === \"section\") {\n this.sectionClickHandler(nodes[0], viewer);\n } else if (nodes[0].type === \"seat\") {\n this.seatClickHandler(nodes[0], viewer);\n }\n }\n }\n\n private ____updateParams(node, viewer, group?) {\n //node = viewer.getNodeById(node.id);\n const options = { count: Infinity, isolated_groups: this.socialDistancing.buildIsolatedGroups(viewer) };\n let that = this;\n viewer.social_distancing\n .getNeighbors(options, node.id)\n .then(function (result) {\n let nseats = result.length;\n let increase = true;\n if (!nseats) {\n increase = false;\n nseats = group.length;\n }\n if (!that.dataService.listParamsHashed[nseats]) {\n that.dataService.getParameterOrCreate(result.length).subscribe((response) => {\n that.dataService.listParamsHashed[nseats] = response;\n\n //let params = that.getParamsByNseats(nseats,increase);\n });\n } else {\n //let params = that.getParamsByNseats(nseats,increase);\n }\n })\n .catch(function (err) {\n console.error(err);\n });\n }\n /* private ____getParamsByNseats(current_nseats,increase){\n let original_params = this.dataService.simulationData.parameters;\n let hashedNseats = {};\n for(let i =0;i0 && !hashedNseats[current_nseats-1]){\n console.log(\"nseats menor que el current mayor que 0\")\n hashedNseats[current_nseats-1] = current_nseats-1;\n }\n }else{\n console.log(\"resta cuando no existe en la hash\");\n \n hashedNseats[current_nseats] = 0;\n if(hashedNseats[current_nseats-1]){\n console.log(\"resta al menor cuando existe en la hash\");\n hashedNseats[current_nseats-1] += current_nseats-1;\n }\n \n }\n }else{\n console.log(\"existe en la hash\")\n if(increase){\n console.log(\"existe y se incrementa\")\n hashedNseats[current_nseats]+=current_nseats;\n if(current_nseats-1 && (current_nseats-1) > 0){\n if(!hashedNseats[current_nseats-1]){\n console.log(\"existe en la hash, pero no el menor, se reduce el menor\")\n \n hashedNseats[current_nseats-1] = 0;\n \n }else{\n console.log(\"existe en la hash, el menor se reduce\")\n hashedNseats[current_nseats-1]-=current_nseats;\n }\n }else{\n console.log(\"existe el menor en la hash\")\n hashedNseats[current_nseats-1] = 0;\n }\n }else{\n console.log(\"existe y se resta\")\n hashedNseats[current_nseats]-=current_nseats;\n if(hashedNseats[current_nseats-1]){\n console.log(\"el menor existe y se resta\")\n hashedNseats[current_nseats-1]+=current_nseats-1;\n }else{\n console.log(\"el menor no existe y se iguala\")\n hashedNseats[current_nseats-1]=current_nseats-1\n }\n\n \n }\n }\n console.log(hashedNseats);\n }*/\n}\n","import { Injectable, Inject, ViewRef } from \"@angular/core\";\nimport { GeneralHandler } from \"./general.handler\";\nimport { DVMService } from \"../dvm.service\";\nimport { DVM_CONFIG } from \"src/assets/configuration/digitalvenue.configuration\";\nimport { DVMConfiguration } from \"src/app/social-distance-editor/shared/models/dvm-configuration.model\";\nimport { InventoryService } from \"../inventory.service\";\nimport { GroupsService } from \"../groups.service\";\nimport { SelectionService } from \"../selection.service\";\nimport { SocialdistancingService } from \"../socialdistancing.service\";\nimport { CustomCategoriesService } from \"src/app/social-distance-editor/plugins/custom-categories/services/custom-categories.service\";\nimport { MapViewer, MapViewerInputNodes } from \"@3ddv/dvm-internal\";\n\n@Injectable()\nexport class EnterHandler extends GeneralHandler {\n constructor(\n protected dvmService: DVMService,\n @Inject(DVM_CONFIG) private dvmConfig: DVMConfiguration,\n private inventoryService: InventoryService,\n private groups: GroupsService,\n private selection: SelectionService,\n private socialDistancing: SocialdistancingService,\n private customCategoriesService: CustomCategoriesService\n ) {\n super(\"enter\", dvmService);\n }\n\n sectionEnterHandler(node, viewer) {\n if (node.state !== \"unavailable\" || this.selection.isMultiSelection) {\n let isGrouped = false;\n node.groups.forEach((element) => {\n if (parseInt(element, 10)) {\n isGrouped = true;\n viewer.hover(this.groups.groupsHash.groups[element]);\n }\n });\n if (!isGrouped) {\n viewer.hover(node.id);\n }\n }\n }\n\n seatEnterHandler(node, viewer) {\n const raw_id = node.id.split(\"_\")[1].split(\"-\");\n const section = raw_id[0];\n const row = raw_id[1];\n const seat = raw_id[2];\n if (node.state !== \"unavailable\" && !this.selection.isSingleSelection && !this.selection.isMultiSelection) {\n let isGrouped = false;\n node.groups.forEach((element) => {\n if (parseInt(element, 10)) {\n isGrouped = true;\n viewer.hover(this.groups.groupsHash.groups[element]);\n }\n });\n\n if (!isGrouped) {\n if (this.selection.isGroupsSelection) {\n this.selection.selectionSubscriptionsArray.push(\n this.socialDistancing.getNeighbors(viewer, node.id).subscribe((response) => {\n this.selection.selectionSubscriptionsArray.forEach((e) => {\n e.unsubscribe();\n });\n viewer.hover(response);\n })\n );\n } else {\n if (this.dvmService.activeVisualizationLayer === \"row\") {\n viewer.hover(this.inventoryService.getInventoryByRow(section, row));\n } else if (this.dvmService.activeVisualizationLayer === \"seat\") {\n viewer.hover(this.inventoryService.getInventoryBySeat(section, row, seat));\n }\n }\n }\n } else if (this.selection.isGroupsSelection && viewer.getNodesByGroups(\"seat\", \"selected\").length) {\n const selected = viewer.getNodesByGroups(\"seat\", \"selected\");\n const nselected = selected.length;\n const availableSet = new Set(viewer.getNodesByState(\"seat\", \"available\").map((n) => n.id));\n selected.forEach((n) => availableSet.delete(n.id));\n\n // Se meten en 'invalidated' porque no queremos que maten sillas\n const invalidated = viewer\n .getNodesByGroups(\"seat\", this.groups.getGroupBehaviors(\"validated\"))\n .map((x) => x.id)\n .concat(Array.from(availableSet));\n const neighbors = this.socialDistancing.getNeighbors(viewer, node.id, nselected, invalidated);\n this.selection.selectionSubscriptionsArray.push(\n neighbors.subscribe((response: any) => {\n this.selection.selectionSubscriptionsArray.forEach((e) => e.unsubscribe());\n if (response.length !== nselected) {\n return;\n }\n viewer.addNodesToGroup(response, \"tomove\");\n viewer.hover(response);\n // const selected = viewer.getNodesByGroups('seat', 'selected');\n this._warningNearest(viewer, response as any);\n })\n );\n } else if (this.selection.isSingleSelection || this.selection.isMultiSelection) {\n let hovercss;\n //Set available per row\n if (this.selection.isMultiSelection) {\n const [section, row, seat] = node.id.split(\"_\")[1].split(\"-\");\n let row_seats = this.inventoryService.getInventoryByRow(section, row);\n //let row_seats = this.dvmService.getLogicRowSeats(node);\n if (row_seats.length) {\n let aux_nodes = [];\n let n_available = 0;\n for (let i = 0; i < row_seats.length; i++) {\n let aux_node = viewer.getNodeById(row_seats[i]);\n if (aux_node.state === \"available\") {\n n_available++;\n }\n //if(aux_node.state==='unavailable'){\n if (aux_node.groups.indexOf(\"regular\") > -1) {\n hovercss = \"regularselection\";\n } else if (aux_node.groups.indexOf(\"vip\") > -1) {\n hovercss = \"vipselection\";\n } else if (aux_node.groups.indexOf(\"disabled\") > -1) {\n hovercss = \"disabledselection\";\n } else if (aux_node.groups.indexOf(\"restricted\") > -1) {\n hovercss = \"restrictedselection\";\n } else {\n //exception error: map updated, no tiene grupo por defecto\n hovercss = \"regularselection\";\n }\n if (hovercss) {\n viewer.addNodesToGroup(aux_node, hovercss);\n aux_nodes.push(aux_node);\n }\n //}\n //all_nodes.push(aux_node);\n }\n viewer.hover(aux_nodes);\n if (n_available < aux_nodes.length) {\n this._warningNearest(viewer, aux_nodes);\n }\n }\n } else {\n if (node.groups.indexOf(\"regular\") > -1) {\n hovercss = \"regularselection\";\n } else if (node.groups.indexOf(\"vip\") > -1) {\n hovercss = \"vipselection\";\n } else if (node.groups.indexOf(\"disabled\") > -1) {\n hovercss = \"disabledselection\";\n } else if (node.groups.indexOf(\"restricted\") > -1) {\n hovercss = \"restrictedselection\";\n }\n if (hovercss) {\n viewer.addNodesToGroup(node, hovercss);\n }\n viewer.hover(node);\n if (node.state === \"unavailable\" && this.inventoryService.getInventoryBySeat(section, row, seat).length) {\n this._warningNearest(viewer, node);\n }\n }\n\n // TODO: popups para unavailable?\n }\n }\n\n private _warningNearest(viewer: MapViewer, nodes: MapViewerInputNodes) {\n const unavailable = viewer.getNodesByState(\"seat\", \"unavailable\");\n const invalidatedByGroup = viewer.getNodesByGroups(\"seat\", this.groups.getGroupBehaviors(\"invalidated\"));\n const validated = viewer.getNodesByGroups(\"seat\", this.groups.getGroupBehaviors(\"validated\"));\n const invalidated = unavailable.concat(invalidatedByGroup);\n const filter = this.socialDistancing.filterNearest(\n viewer,\n nodes,\n invalidated.map((n) => n.id),\n validated.map((n) => n.id)\n );\n // TODO: Revisar si se está usando correctamente\n this.selection.selectionSubscriptionsArray.push(\n filter.subscribe((response) => {\n this.selection.selectionSubscriptionsArray.forEach((e) => e.unsubscribe());\n viewer.removeNodesFromGroup(viewer.getNodesByGroups(\"seat\", \"warning\"), \"warning\");\n viewer.addNodesToGroup(response as any, \"warning\");\n })\n );\n }\n\n protected handle(obj) {\n // Close popovers\n const tooltip: HTMLElement = document.querySelector(\"#tooltip\");\n tooltip.removeAttribute(\"data-show\");\n // Handle\n const viewer = obj.instance;\n const nodes = obj.nodes;\n if (nodes.length) {\n if (nodes[0].type === \"section\") {\n this.sectionEnterHandler(nodes[0], viewer);\n } else if (nodes[0].type === \"seat\") {\n this.seatEnterHandler(nodes[0], viewer);\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DVMService } from '../dvm.service';\n\n\nexport class GeneralHandler {\n constructor(private event, protected dvmService: DVMService) {\n this.dvmService.subscribeHandler(event, this.handle.bind(this));\n }\n\n protected handle(...args) {}\n\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { GeneralHandler } from './general.handler';\nimport { DVMService } from '../dvm.service';\nimport { DVM_CONFIG } from 'src/assets/configuration/digitalvenue.configuration';\nimport { DVMConfiguration } from 'src/app/social-distance-editor/shared/models/dvm-configuration.model';\nimport { InventoryService } from '../inventory.service';\nimport { SelectionService } from '../selection.service';\n\n@Injectable()\nexport class LeaveHandler extends GeneralHandler {\n constructor(protected dvmService: DVMService,\n @Inject(DVM_CONFIG) private dvmConfig: DVMConfiguration,\n private inventoryService: InventoryService,\n private selection: SelectionService) {\n super('leave', dvmService);\n }\n\n protected handle(obj) {\n // Close popovers\n const tooltip: HTMLElement = document.querySelector('#tooltip');\n tooltip.removeAttribute('data-show');\n // Handle \n const viewer = obj.instance;\n const nodes = obj.nodes;\n if (nodes.length) {\n viewer.hover(null);\n this.selection.selectionSubscriptionsArray.forEach(\n e => { e.unsubscribe(); }\n );\n }\n \n viewer.removeNodesFromGroup(viewer.getNodesByGroups('seat', 'tomove'), 'tomove');\n viewer.removeNodesFromGroup(viewer.getNodesByGroups('seat', 'warning'), 'warning');\n viewer.removeNodesFromGroup(viewer.getNodesByGroups('seat', 'singleselection'), 'singleselection');\n viewer.removeNodesFromGroup(viewer.getNodesByGroups('seat','regularselection'),\"regularselection\");\n viewer.removeNodesFromGroup(viewer.getNodesByGroups('seat','vipselection'),\"vipselection\");\n viewer.removeNodesFromGroup(viewer.getNodesByGroups('seat','disabledselection'),\"disabledselection\");\n viewer.removeNodesFromGroup(viewer.getNodesByGroups('seat','restrictedselection'),\"restrictedselection\");\n }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { DVM_CONFIG } from 'src/assets/configuration/digitalvenue.configuration';\nimport { DVMConfiguration } from 'src/app/social-distance-editor/shared/models/dvm-configuration.model';\nimport { DVMService } from '../dvm.service';\nimport { GeneralHandler } from './general.handler';\nimport { InventoryService } from '../inventory.service';\nimport { DataService } from '../data.service';\nimport { CategoriesService } from '../categories.service';\nimport { GroupsService } from '../groups.service';\nimport { SocialdistancingService } from '../socialdistancing.service';\nimport { TiersService } from '../tiers.service';\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class LoadShareSimulationHandler extends GeneralHandler {\n constructor(@Inject(DVM_CONFIG) private dvmConfig: DVMConfiguration,\n protected dvmService: DVMService,\n private router: Router,\n private inventoryService: InventoryService,\n private dataService: DataService,\n private groups: GroupsService,\n private categories: CategoriesService,\n private socialDistancing: SocialdistancingService,\n private tiersService : TiersService) {\n super('end_load', dvmService);\n }\n\n loadBlockmapHandler(viewer) {\n viewer.bindInterfaceAction(document.getElementById('map-icon-top'), 'move-up');\n viewer.bindInterfaceAction(document.getElementById('map-icon-left'), 'move-left');\n viewer.bindInterfaceAction(document.getElementById('map-icon-right'), 'move-right');\n viewer.bindInterfaceAction(document.getElementById('map-icon-bottom'), 'move-down');\n viewer.bindInterfaceAction(document.getElementById('map-icon-zoom-plus'), 'zoom-in');\n viewer.bindInterfaceAction(document.getElementById('map-icon-zoom-minus'), 'zoom-out');\n\n let s = this.dataService.getSharedSimulationSeatManifest(this.dataService.currentShareKey).subscribe(\n simulationSeatManifest => {\n s.unsubscribe();\n console.log(simulationSeatManifest);\n if (simulationSeatManifest.statusCode === 404) {\n // No tiene sentido compartir una simulación sin seat manifest o SD computado.\n this.router.navigate(['/home']);\n } else {\n\n this.dvmService.viewer.layers.flags.automatic_control_level = false;\n this.inventoryService.setInventoryData(simulationSeatManifest.response);\n const inventory = this.inventoryService.getAvailableInventory(true);\n this.inventoryService.updateTotalsHash();\n viewer.setAvailability('section', inventory.sections);\n viewer.setAvailability('seat', inventory.seats);\n this.inventoryService.availabilityLoadedSubject.next();\n this.categories.printInventoryCategories();\n\n this.tiersService.setTotalTiersAV(this.dataService.simulationData.configuration.tier_list)\n .then(res=>{\n if(document.getElementById('loadingmap')){\n document.getElementById('loadingmap').classList.add('hidden');\n }\n this.socialDistancing.calculationFinishedsubject.next();\n })\n }\n },\n error => {\n console.error(error);\n }\n );\n }\n\n getConfigurationGroups(removeLoader?: boolean) {\n const s = this.dataService.getGroups(this.dataService.currentConfigurationId).subscribe(\n groupsData => {\n s.unsubscribe();\n if (groupsData && groupsData.statusCode === 200) {\n this.groups.setGroupsHash(groupsData.response);\n this.groups.postSimulationGroups();\n if (removeLoader) {\n document.getElementById('loadingmap').classList.add('hidden');\n }\n }\n },\n error => {\n console.log(error);\n }\n );\n }\n\n loadSeatmapHandler(viewer) {\n viewer.setAvailability([]);\n }\n\n protected handle(error, viewer) {\n if (error) { console.error(error); }\n viewer = viewer.instance;\n if (viewer.getMapId() === this.dvmConfig.map_id) {\n this.loadBlockmapHandler(viewer);\n } else {\n this.loadSeatmapHandler(viewer);\n }\n }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { createPopper, Placement } from '@popperjs/core';\nimport { GeneralHandler } from './general.handler';\nimport { DVM_CONFIG } from 'src/assets/configuration/digitalvenue.configuration';\nimport { DVMService } from '../dvm.service';\nimport { DVMConfiguration } from 'src/app/social-distance-editor/shared/models/dvm-configuration.model';\nimport { PricingService } from '../pricing.service';\nimport { InventoryService } from '../inventory.service';\nimport { SelectionService } from '../selection.service';\nimport { AllocatorService } from 'src/app/social-distance-editor/plugins/allocator/services/allocator.service';\nimport { DataService } from '../data.service';\nimport {CustomCategoriesService} from '../../plugins/custom-categories/services/custom-categories.service';\nimport {\n CUSTOM_CATEGORIES_BY_VENUE,\n customCategoriesbyVenue\n} from '../../plugins/custom-categories/configuration/categories.configuration';\nimport {CustomCategoriesByVenue} from '../../plugins/custom-categories/models/custom-categories.model';\n\n@Injectable()\nexport class PopoverHandler extends GeneralHandler {\n\n tooltip: HTMLElement;\n view3DId;\n language = 'en';\n constructor(protected dvmService: DVMService,\n private pricing: PricingService,\n private inventory: InventoryService,\n private selection: SelectionService,\n @Inject(DVM_CONFIG) private dvmConfig: DVMConfiguration,\n @Inject(CUSTOM_CATEGORIES_BY_VENUE) private customCategoriesByVenue: CustomCategoriesByVenue,\n private allocatorService: AllocatorService,\n private customCategoriesService: CustomCategoriesService,\n private dataService: DataService) {\n super('enter', dvmService);\n\n }\n\n protected handle(obj) {\n // this.popover3dview.deleteTimer();\n let seating,section,row,seat;\n if(obj.nodes.length){\n seating = obj.nodes[0].id.split('-');\n section = seating[0].split('_')[1].split('(')[0];\n row = seating[1];\n seat = seating[2];\n }\n if (localStorage.getItem('language') !== null) {\n this.language = localStorage.getItem('language');\n }\n if (obj.nodes.length && (obj.nodes[0].state === 'available' || obj.nodes[0].state === 'selected') \n || (this.customCategoriesService.allowCustomCategories && this.inventory.getInventoryData()[section]?.elements[row]?.elements[seat]?.data.customcategory)) {\n\n if (this.dvmService.viewer.layers.getLayerLevel() === 0 && obj.nodes[0].type === 'section'\n || this.dvmService.viewer.layers.getLayerLevel() === 1 && obj.nodes[0].type === 'seat') {\n\n const node = obj.nodes[0];\n // this.popover3dview.currentView = node.id;\n\n // Receive tooltip HTML Element\n this.tooltip = document.querySelector('#tooltip');\n\n // Generate tooltip content based on node type\n let tooltipContent;\n if (node.type === 'section') {\n tooltipContent = this.sectionPopoverContent(node);\n } else if (node.type === 'seat') {\n tooltipContent = this.seatPopoverContent(node);\n }\n\n // Create content HTML Element, clean previous popover and append\n const tooltipContentHTML = document.createElement('div');\n tooltipContentHTML.innerHTML = tooltipContent.trim();\n const popoverBodyNode = document.querySelector('#tooltip .popover-body');\n while (popoverBodyNode.firstChild) {\n popoverBodyNode.removeChild(popoverBodyNode.firstChild);\n }\n popoverBodyNode.appendChild(tooltipContentHTML);\n\n // Calculate popover placement\n let placement: Placement;\n if (node.anchor.dom[1] > (document.getElementById('main-interface').offsetHeight / 2)) {\n placement = 'top';\n } else {\n placement = 'bottom';\n }\n\n // Initiate popover\n createPopper(node, this.tooltip, {\n placement,\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 8],\n },\n },\n {\n name: 'flip',\n options: {\n fallbackPlacements: [],\n }\n }\n ],\n });\n\n // Display popover\n this.tooltip.setAttribute('data-show', '');\n\n let p = document.getElementById('tooltip');\n p.onclick = (res => {\n // onclick stuff\n // Close popovers\n const tooltip: HTMLElement = document.querySelector('#tooltip');\n tooltip.removeAttribute('data-show');\n // Handle \n const viewer = obj.instance;\n const nodes = obj.nodes;\n if (nodes.length) {\n viewer.hover(null);\n this.selection.selectionSubscriptionsArray.forEach(\n e => { e.unsubscribe(); }\n );\n }\n viewer.removeNodesFromGroup(viewer.getNodesByGroups('seat', 'tomove'), 'tomove');\n viewer.removeNodesFromGroup(viewer.getNodesByGroups('seat', 'warning'), 'warning');\n viewer.removeNodesFromGroup(viewer.getNodesByGroups('seat', 'singleselection'), 'singleselection');\n });\n }\n }\n }\n\n\n sectionPopoverContent(node) {\n // const sectionCategories = [];\n // console.log(node.groups);\n // for ( const c of node.groups ) {\n // console.log(c);\n // if (c) {\n // console.log('entro if');\n // sectionCategories.push(c);\n // }\n // }\n const areaName = node.id.split('_')[1].split('(')[0];\n const sectionCategories = this.inventory.getInventoryProperty('category', areaName);\n let tooltipContent;\n const seatsAvailable = this.inventory.getInventoryBySection(areaName, true).length;\n const totalSeats = this.inventory.getInventoryBySection(areaName).length;\n const totalRevenue = this.pricing.getRevenueBySection(areaName).revenue;\n const totalNewRevenue = this.pricing.getRevenueBySection(areaName).newrevenue;\n //const totalRevenue = 0;\n tooltipContent = `
    \n
  • \n Section ${areaName}\n \n `;\n for ( const c of sectionCategories ) {\n tooltipContent += ``;\n }\n tooltipContent += `\n \n
  • \n
  • \n Total Section Rows\n `+\n //`${this.inventory.getRowsCountBySectionId(node.id)}`+\n `${Object.keys(this.dvmService.viewer.getNodeById(node.id).rows).length}`+\n `
  • `;\n // tslint:disable-next-line: align\n tooltipContent += `\n
  • \n Total Section Capacity\n ` + this.pricing.formatNumber(totalSeats) + `\n
  • `;\n let p = this.pricing.getCurrentPricing('section', [node], false, true);\n let pricedom = ``;\n let pricelab = `Seat price`;\n if (typeof p === 'string') {\n pricedom += `` + p + ``;\n } else {\n pricelab = `Seat prices`;\n for (let i = 0; i < p.length; i++) {\n pricedom += `` + this.pricing.formatNumber(p[i]) + ``;\n }\n }\n tooltipContent += `\n
  • \n `+ pricelab + `\n `+ pricedom + `\n
  • \n
  • \n Total Section Revenue\n `+ this.pricing.formatNumber(totalRevenue) + `\n
  • `;\n // if (totalSeats !== 0 && seatsAvailable === 0) {\n // tooltipContent += `\n //
  • \n // Total Section Capacity\n // ` + this.pricing.formatNumber(totalSeats) + `\n //
  • `;\n // }\n // // tslint:disable-next-line: align\n // if (totalSeats === seatsAvailable) {\n // tooltipContent += `\n //
  • \n // Total Section Capacity\n // ` + this.pricing.formatNumber(totalSeats) + `\n //
  • `;\n // }\n // tslint:disable-next-line: align\n if (totalSeats !== 0 && seatsAvailable !== 0 && totalSeats !== seatsAvailable) {\n // tooltipContent += `\n //
  • \n // Total Section Capacity\n // ` + this.pricing.formatNumber(totalSeats) + `\n //
  • `;\n tooltipContent += `
  • \n New Section Capacity\n ` + this.pricing.formatNumber(seatsAvailable) + `\n
  • `;\n }\n\n if (totalNewRevenue) {\n tooltipContent += `\n
  • \n New Section Revenue\n `+ this.pricing.formatNumber(totalNewRevenue) + `\n
  • `;\n }\n tooltipContent += `
`;\n\n return tooltipContent;\n }\n\n seatPopoverContent(node) {\n const seating = node.id.split('-');\n const section = seating[0].split('_')[1].split('(')[0];\n const row = seating[1];\n const seat = seating[2];\n const seatsAvailable = this.inventory.getInventoryByRow(section, row, true).length;\n const totalSeats = this.inventory.getInventoryByRow(section, row).length;\n const totalRevenue = this.pricing.getRevenueBySection(section, row).revenue;\n const totalNewRevenue = this.pricing.getRevenueBySection(section, row).newrevenue;\n const sectionCategories = this.inventory.getInventoryProperty('category', section);\n let tooltipContent;\n tooltipContent = `
    \n
  • \n Section ` + section + `\n \n `;\n if (this.customCategoriesService.allowCustomCategories) {\n const venueId = this.dvmService.viewer.getVenueId();\n const customCategoriesData = this.customCategoriesByVenue[venueId];\n const sectionStuff = this.inventory.getInventoryData()?.[section]?.elements;\n if (sectionStuff) {\n const sectinCustomCategories = new Set();\n this.inventory.iterateInventoryElements((el) => {\n if (el.customcategory) {\n sectinCustomCategories.add(el.customcategory);\n }\n }, sectionStuff);\n for (const c of sectinCustomCategories ) {\n tooltipContent += ``;\n }\n }\n }\n // else {\n for (const c of sectionCategories) {\n tooltipContent += ``;\n // }\n }\n tooltipContent += `\n \n
  • \n
  • \n Row ID\n ` + row + `\n
  • \n `;\n if(this.dvmService.activeVisualizationLayer==='seat'){\n tooltipContent +=`\n
  • \n Seat ID\n ` + seat + `\n
  • \n `;\n }\n // tslint:disable-next-line: align\n if(this.dvmService.activeVisualizationLayer==='row'){\n\n \n tooltipContent += `\n
  • \n Total Row Capacity\n ` + this.pricing.formatNumber(totalSeats) + `\n
  • `;\n }\n\n let p = this.inventory.getInventoryData()[section].elements[row].elements[seat].data.price;\n tooltipContent += `
  • \n Seat Price\n ` + p + `\n
  • `;\n\n if(this.dvmService.activeVisualizationLayer==='row'){ \n tooltipContent += `
  • \n Total Row Revenue\n `+ this.pricing.formatNumber(totalRevenue) + `\n
  • `;\n // tslint:disable-next-line: align\n if (totalSeats !== 0 && seatsAvailable !== 0 && totalSeats !== seatsAvailable) {\n tooltipContent += `\n
  • \n New Row Capacity\n ` + this.pricing.formatNumber(seatsAvailable) + `\n
  • `;\n }\n if (totalNewRevenue) {\n tooltipContent += `\n
  • \n New Row Revenue\n `+ this.pricing.formatNumber(totalNewRevenue) + `\n
  • `;\n }\n }\n const user_plugins_refs = this.getUserPluginsRefs();\n if (this.allocatorService.allowAllocation && this.allocatorService.showAllocatedSeats){\n if (this.dataService.simulationData && this.dataService.simulationData.allocation){\n const allocData = this.inventory.getInventoryData()[section].elements[row].elements[seat].data.allocation?.popup;\n if (allocData){\n for (const key in allocData) {\n if (allocData.hasOwnProperty(key)) {\n tooltipContent +=\n `
  • \n ${key}\n ${allocData[key]}\n
  • `;\n }\n }\n }\n }\n }\n\n if(this.customCategoriesService.allowCustomCategories){\n if (this.inventory.getInventoryData()[section].elements[row].elements[seat].data.customcategory){\n let customcat = this.inventory.getInventoryData()[section].elements[row].elements[seat].data.customcategory;\n tooltipContent +=\n `
  • \n Seat Category\n ${customcat}\n
  • `;\n }\n }\n tooltipContent += `
`;\n\n return tooltipContent;\n }\n\n private getUserPluginsRefs(){\n let refs=[];\n if(this.dataService.user){\n let plugs = this.dataService.user.user.plugins;\n if(plugs.length>0){\n for (let i =0;i();\n currentLocation;\n params = [];\n private comparativeInventory: Inventory;\n totalsAvailableHash = {};\n\n private inventory: Inventory;\n private seatStatus = {};\n private totalsHash = {};\n private seatsCount = {};\n\n /** Se emite cuando se hace un setInventory */\n private inventorySubject$ = new Subject();\n private preInventorySubject$ = new Subject();\n\n /** Se emite cuando se hace un setInventory */\n public get inventoryObservable$(): Observable {\n return this.inventorySubject$.asObservable();\n }\n public get preInventoryObservable$(): Observable {\n return this.preInventorySubject$.asObservable();\n }\n\n /** Se emite cuando se hace un setComparativeInventory */\n private comparativeInventorySubject$ = new Subject();\n private preComparativeInventorySubject$ = new Subject();\n\n /** Se emite cuando se hace un setComparativeInventory */\n public get comparativeInventoryObservable$(): Observable {\n return this.comparativeInventorySubject$.asObservable();\n }\n public get preComparativeInventoryObservable$(): Observable {\n return this.preComparativeInventorySubject$.asObservable();\n }\n\n constructor(private data: DataService,\n private dvmService: DVMService,\n private activatedRoute: ActivatedRoute,\n private router: Router,\n private toastr: ToastrService,\n private bsModalRef: BsModalRef,\n private modalService: BsModalService\n //private modals: ModalService) {\n ){\n this.router.events.subscribe( (e) => {\n // tslint:disable-next-line: no-unused-expression\n if (e instanceof NavigationEnd) {\n const split = e.url.split('/');\n this.currentLocation = '/' + split[1];\n this.params.push(split[2]);\n }\n });\n }\n\n getRowsCountBySectionId(sectionId) {\n return this.seatsCount[sectionId]?.rows;\n }\n\n getSeatsCountBySectionId(sectionId) {\n return this.seatsCount[sectionId].seats;\n }\n\n sendInventoryData(isSimulation?) {\n if (isSimulation) {\n return this.data.sendSimulationSeatManifestData(this.data.currentSimulationId, this.inventory);\n } else {\n return this.data.sendSeatManifestData(this.data.currentConfigurationId, this.inventory);\n }\n }\n\n setComparativeInventoryData(inventory: Inventory): void {\n this.preComparativeInventorySubject$.next(inventory);\n this.comparativeInventory = inventory;\n this.comparativeInventorySubject$.next(inventory);\n }\n\n getComparativeInventoryData(): Inventory {\n return this.comparativeInventory;\n }\n\n setInventoryData(inventory: Inventory): void {\n this.preInventorySubject$.next(inventory);\n this.inventory = inventory;\n this.inventorySubject$.next(inventory);\n }\n\n getInventoryData(): Inventory {\n return this.inventory;\n }\n\n getTotalsHash() {\n return this.totalsHash;\n }\n\n iterateInventoryElements(callback: (element: InventoryElementData, ...keys: string[]) => void, inventory?: Inventory, ...keys: string[]) {\n inventory = inventory ?? this.inventory;\n for (const key in inventory) {\n if (inventory.hasOwnProperty(key)) {\n const level = inventory[key];\n const { data, elements } = level;\n if (data && Object.keys(data).length > 0) {\n callback(data, ...keys, key);\n }\n if (elements) {\n this.iterateInventoryElements(callback, elements, ...keys, key);\n }\n }\n }\n }\n\n setInventoryProperty(property: string, value, section: string, row?: string, callback?,seat?: string) {\n let inventoryRef;\n if (section) {\n inventoryRef = this.inventory[section]?.elements;\n }\n if (row) {\n if(seat){\n inventoryRef[row].elements[seat].data[property] = value;\n }else{\n inventoryRef = inventoryRef[row].elements;\n for (const element in inventoryRef) {\n if (typeof inventoryRef[element].data[property] !== 'undefined') {\n inventoryRef[element].data[property] = value;\n }\n }\n }\n } else {\n for (const elementLevel1 in inventoryRef) {\n if (elementLevel1) {\n for (const elementLevel2 in inventoryRef[elementLevel1].elements) {\n if (typeof inventoryRef[elementLevel1].elements[elementLevel2].data[property] !== 'undefined') {\n inventoryRef[elementLevel1].elements[elementLevel2].data[property] = value;\n }\n }\n }\n }\n }\n if (callback) {\n callback();\n }\n }\n\n getInventoryProperty(property: string, section: string, row?: string, callback?, seat?:string) {\n // console.log(this.inventory);\n const valuesHash = {};\n let inventoryRef;\n if (section) {\n if (this.inventory[section]) {\n inventoryRef = this.inventory[section].elements;\n } else {\n inventoryRef = [];\n }\n }\n if (row) {\n if(seat){\n valuesHash[inventoryRef[row].elements[seat].data[property]] = true;\n }else{\n if (inventoryRef[row]) {\n inventoryRef = inventoryRef[row].elements;\n for (const element in inventoryRef) {\n if (typeof inventoryRef[element].data[property] !== 'undefined') {\n valuesHash[inventoryRef[element].data[property]] = true;\n }\n }\n } else {\n console.error('Error in section ' + section + ' row ' + row + '. No data found.');\n }\n\n }\n\n } else {\n for (const elementLevel1 in inventoryRef) {\n if (elementLevel1) {\n for (const elementLevel2 in inventoryRef[elementLevel1].elements) {\n if (typeof inventoryRef[elementLevel1].elements[elementLevel2].data[property] !== 'undefined') {\n valuesHash[inventoryRef[elementLevel1].elements[elementLevel2].data[property]] = true;\n }\n }\n }\n }\n }\n if (callback) {\n callback();\n }\n return Object.keys(valuesHash);\n }\n\n // RECURSIVE APPROACH:\n getAvailableInventory(considerStatus?): AvailableInventory {\n const seatsInventory = [];\n const sectionsInventory = {};\n const rowsHash = {};\n this.seatsCount = {};\n const caller = (array) => {\n if(array.statusCode === 404){\n return array;\n }\n Object.values(array).forEach((element) => {\n iteration(element);\n });\n };\n const iteration = (element) => {\n if (element.data.code) {\n if (!considerStatus || (considerStatus && (element.data.status === 'available' || element.data.status === \"onhold\"))) {\n const section = element.data.code.split('-')[0];\n const row = element.data.code.split('-')[1];\n seatsInventory.push(element.data.code);\n sectionsInventory[section] = true;\n this.seatStatus[element.data.code] = element.data.status;\n if (!this.seatsCount[section]) {\n this.seatsCount[section] = {\n seats: 0,\n rows: 0\n };\n }\n this.seatsCount[section].seats++;\n if (!rowsHash[section + row]) {\n this.seatsCount[section].rows++;\n rowsHash[section + row] = true;\n }\n }\n } else {\n caller(element.elements);\n }\n };\n caller(this.inventory);\n // console.log(this.seatsCount);\n return { seats: seatsInventory, sections: Object.keys(sectionsInventory) };\n }\n\n updateTotalsHash(update?: 'simulations' | 'configurations' | 'all') {\n this.totalsHash = {};\n this.totalsAvailableHash = {};\n const sectionsHash = {};\n const caller = (array) => {\n Object.values(array).forEach((element) => {\n iteration(element);\n });\n };\n const iteration = (element) => {\n if (element.data.code) {\n const data = element.data;\n if (!this.totalsHash[data.category]) {\n this.totalsHash[data.category] = {};\n }\n if (!this.totalsHash[data.category][data.price]) {\n this.totalsHash[data.category][data.price] = {\n seats: 0,\n sections: 0\n };\n }\n this.totalsHash[data.category][data.price].seats++;\n if (data.status && data.status === 'available') {\n if (!this.totalsAvailableHash[data.category]) {\n this.totalsAvailableHash[data.category] = {};\n }\n if (!this.totalsAvailableHash[data.category][data.price]) {\n this.totalsAvailableHash[data.category][data.price] = {\n seats: 0\n };\n }\n this.totalsAvailableHash[data.category][data.price].seats++;\n }\n const section = element.data.code.split('-')[0].split('_')[1];\n if (!sectionsHash[section]) {\n this.totalsHash[data.category][data.price].sections++;\n sectionsHash[section] = true;\n }\n } else {\n caller(element.elements);\n }\n };\n caller(this.inventory);\n\n if (update) {\n this.data.getCategories().subscribe(\n categories => {\n if (update === 'configurations' || update === 'all') {\n const config = this.generateCategoryInput(categories.categories, this.totalsHash, 'configurations');\n console.log(config);\n this.data.postConfigurationCategories(config as ConfigurationCategoryInput).subscribe(\n response => {\n //console.log(response);\n }\n );\n }\n if (update === 'simulations' || update === 'all') {\n const config = this.generateCategoryInput(categories.categories, this.totalsAvailableHash, 'simulations');\n //console.log(config);\n this.data.postSimulationCategories(config as SimulationCategoryInput).subscribe(\n response => {\n //console.log(response);\n }\n );\n }\n }\n );\n }\n }\n\n generateCategoryInput(categories, hash, type: 'simulations' | 'configurations') {\n const categoryIdHash = {};\n const categoriesInput = {};\n if (type === 'simulations') {\n let simulation = this.data.currentSimulationId;\n if (typeof this.data.currentSimulationId === 'string') {\n simulation = parseInt(this.data.currentSimulationId, 10);\n }\n categoriesInput['simulation'] = simulation;\n } else if (type === 'configurations') {\n let config = this.data.currentConfigurationId;\n if (typeof this.data.currentConfigurationId === 'string') {\n config = parseInt(this.data.currentConfigurationId, 10);\n }\n categoriesInput['configuration'] = config;\n }\n categoriesInput['categories'] = [];\n // tslint:disable-next-line: forin\n for (const category in categories) {\n categoryIdHash[categories[category]['name']] = categories[category]['id'];\n }\n // tslint:disable-next-line: forin\n for (const category in hash) {\n const summatories = {};\n // tslint:disable-next-line: forin\n for (const price in hash[category]) {\n if (!summatories[category]) {\n summatories[category] = {\n seats: 0,\n sections: 0\n };\n }\n if (hash[category][price].seats) {\n summatories[category].seats += hash[category][price].seats;\n }\n if (hash[category][price].sections) {\n summatories[category].sections += hash[category][price].sections;\n }\n }\n const categoryInput: SimulationCategoryInput = {\n category: categoryIdHash[category],\n seats: summatories[category].seats,\n sections: summatories[category].sections,\n unit_price: 1,\n revenue: 1\n };\n categoriesInput['categories'].push(categoryInput);\n }\n return categoriesInput;\n }\n\n getInventoryBySection(section: string, considerStatus?: boolean) {\n const seatsInventory = [];\n for (const row in this.inventory[section]?.elements) {\n if (row && row !== 'data') {\n for (const seat in this.inventory[section].elements[row].elements) {\n if (seat && seat !== 'data') {\n if (!considerStatus || (considerStatus && this.inventory[section].elements[row].elements[seat].data.status === 'available')) {\n seatsInventory.push(this.inventory[section].elements[row].elements[seat].data.code);\n }\n this.seatStatus[this.inventory[section].elements[row].elements[seat].data.code] =\n this.inventory[section].elements[row].elements[seat].data.status;\n }\n }\n }\n }\n return seatsInventory;\n }\n\n getInventoryByRow(section: string, row: string, considerStatus?: boolean) {\n const seatsInventory = [];\n for (const seat in this.inventory[section]?.elements[row]?.elements) {\n if (seat && seat !== 'data') {\n if (!considerStatus || (considerStatus && this.inventory[section].elements[row].elements[seat].data.status === 'available')) {\n seatsInventory.push(this.inventory[section].elements[row].elements[seat].data.code);\n }\n this.seatStatus[this.inventory[section].elements[row].elements[seat].data.code] =\n this.inventory[section].elements[row].elements[seat].data.status;\n }\n }\n return seatsInventory;\n }\n getInventoryBySeat(section: string, row: string, seat: string, considerStatus?: boolean) {\n const seatsInventory = [];\n\n let s_element = this.inventory[section]?.elements[row]?.elements[seat]\n if (s_element && s_element!=='data') {\n if (!considerStatus || (considerStatus && this.inventory[section].elements[row].elements[seat].data.status === 'available')) {\n seatsInventory.push(this.inventory[section].elements[row].elements[seat].data.code);\n }\n this.seatStatus[this.inventory[section].elements[row].elements[seat].data.code] =\n this.inventory[section].elements[row].elements[seat].data.status;\n }\n return seatsInventory;\n }\n generateSimulationsManifest(simulationId, availability) {\n // DEBUG\n this.inventory = JSON.parse(JSON.stringify(this.comparativeInventory));\n const issues = {\n sections: {},\n rows: {},\n seats: {}\n };\n let hasIssues = false;\n availability.forEach(seat => {\n const split = seat.split('-');\n const section = split[0].split('_')[1];\n const row = split[1];\n const st = split[2];\n if (this.inventory[section]) {\n if (this.inventory[section].elements[row]) {\n if (this.inventory[section].elements[row].elements[st]) {\n this.inventory[section].elements[row].elements[st].data.status = 'available';\n } else {\n console.log('Seat ' + section + '-' + row + '-' + st + ' does not contain data.');\n issues.seats[section + '-' + row + '-' + st] = true;\n hasIssues = true;\n }\n } else {\n console.log('Row ' + section + '-' + row + ' does not contain elements.');\n issues.rows[section + '-' + row] = true;\n hasIssues = true;\n }\n } else {\n console.log('Section ' + section + ' does not contain elements.');\n issues.sections[section] = true;\n hasIssues = true;\n }\n });\n if (hasIssues){\n console.log(issues);\n let errorMessage = '';\n const sectionIssues = Object.keys(issues.sections);\n if (sectionIssues.length) {\n errorMessage += 'No elements found for sections: ';\n sectionIssues.forEach(element => {\n errorMessage += element + '; ';\n });\n }\n const rowIssues = Object.keys(issues.rows);\n if (rowIssues.length) {\n errorMessage += 'No elements found for rows: ';\n rowIssues.forEach(element => {\n errorMessage += element + '; ';\n });\n }\n const seatIssues = Object.keys(issues.seats);\n if (seatIssues.length) {\n errorMessage += 'No data found for seats: ';\n seatIssues.forEach(element => {\n errorMessage += element + '; ';\n });\n }\n // TODO: Arreglar Dependencia circular\n //this.modals.throwErrorModal(errorMessage);\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered simulation-modal',\n backdrop: true,\n ignoreBackdropClick: true,\n initialState: {\n errorMessage\n }\n };\n this.bsModalRef = this.modalService.show(ErrorModalComponent, modalConfig);\n }\n return this.data.sendSimulationSeatManifestData(simulationId, this.inventory);\n }\n\n getInventoryRevenue(section: string, row?: string){\n let parent = this.inventory[section].elements;\n let resp = {\n revenue:0,\n newrevenue:0\n };\n if(!row){\n //section revenue\n for (const rows in parent) {\n if (rows && rows !== 'data') {\n for (const seat in parent[rows].elements) {\n if (seat && seat !== 'data') {\n if (parent[rows].elements[seat].data.status && parent[rows].elements[seat].data.status=='available'){\n resp.newrevenue += parseFloat(parent[rows].elements[seat].data.price);\n }\n resp.revenue += parseFloat(parent[rows].elements[seat].data.price);\n }\n }\n }\n }\n }else{\n //row revenue\n parent = this.inventory[section].elements[row].elements;\n for (const seat in parent) {\n if (seat && seat !== 'data') {\n if (parent[seat].data.status && parent[seat].data.status=='available'){\n resp.newrevenue += parseFloat(parent[seat].data.price);\n }\n resp.revenue += parseFloat(parent[seat].data.price);\n }\n }\n\n }\n return resp;\n }\n \n public updateInventory(nodes_affected,status?: string,toastrOpt?: any){\n \n let raw_sections = [];\n for(let i =0;i {\n s.unsubscribe();\n this.toastr.clear();\n let default_toastrOpt = {\n msg : 'Seatmanifest updated.',\n timeOut: 10000\n }\n if(toastrOpt){\n if(toastrOpt.msg){\n default_toastrOpt.msg = toastrOpt.msg;\n }\n if(toastrOpt.timeOut){\n default_toastrOpt.timeOut = toastrOpt.timeOut;\n }\n }\n this.toastr.success('', default_toastrOpt.msg, {timeOut:default_toastrOpt.timeOut});\n //Update params on update seats - in dev..\n //this.updateParams(node,viewer);\n this.setInventoryData(this.getInventoryData());\n this.updateTotalsHash('simulations');\n\n let section_affected = nodes_affected[0].id.split(\"-\")[0];\n let available_nodes = this.dvmService.viewer.getNodesByState(\"seat\", \"available\",section_affected);\n let all_nodes_in_section = this.dvmService.viewer.getNodesByParent(section_affected);\n if(status==='available'){\n if(this.dvmService.activeVisualizationLayer=='section' || available_nodes===all_nodes_in_section.length){\n this.dvmService.viewer.setAvailable('section',section_affected );\n }\n this.dvmService.viewer.setAvailable('seat', nodes_affected);\n }else{\n if(this.dvmService.activeVisualizationLayer=='section' || !available_nodes.length){\n this.dvmService.viewer.setUnavailable('section', section_affected);\n }\n this.dvmService.viewer.setUnavailable('seat', nodes_affected);\n }\n\n\n }\n );\n}\n\npublic createInventoryItem(node_id){\n let inv = this.getInventoryData();\n let [sect,row,seat] = node_id.split('_')[1].split('-');\n if(!inv[sect]){\n inv[sect]={elements:{}, data: {}};\n inv[sect].elements[row] = {elements:{},data: {}};\n inv[sect].elements[row].elements[seat] = { elements:{}, data: { category:\"regular\", code:node_id, price: \"1\"} };\n }else if(!inv[sect].elements[row]){\n inv[sect].elements[row] = {elements:{},data: {}};\n inv[sect].elements[row].elements[seat] = { elements:{}, data: { category:\"regular\", code:node_id, price: \"1\"} };\n }else if(!inv[sect].elements[row].elements[seat]){\n inv[sect].elements[row].elements[seat] = { elements:{}, data: { category:\"regular\", code:node_id, price: \"1\"} };\n }\n this.setInventoryData(inv);\n}\npublic controlDirty(nodes_tochangeavailable: any[],action: string){\n/* if(this.dataService.simulationData.custom_groups === null){\n this.dataService.simulationData.custom_groups = { dirty : false }\n } */\n\n this.data.simulationData.custom_groups = {dirty : true};\n \n if(this.data.simulationData.capacity){\n if(action.toLocaleLowerCase()==='add'){ \n this.data.simulationData.capacity += nodes_tochangeavailable.length;\n }else if (action.toLocaleLowerCase()==='remove'){\n this.data.simulationData.capacity -= nodes_tochangeavailable.length;\n \n }\n }\n const patch_sim = { capacity : this.data.simulationData.capacity,\n custom_groups: this.data.simulationData.custom_groups };\n let s = this.data.editSimulation(this.data.simulationData.id,patch_sim).subscribe(result=>{\n s.unsubscribe();\n this.data.setCurrentSimulation$(result.result);\n this.availabilityLoadedSubject.next();\n });\n return null;\n}\n}\n","import { Injectable } from '@angular/core';\nimport { DataService } from './data.service';\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal/';\nimport { ComputeResultsModalComponent } from '../shared/modals/compute-results-modal/compute-results-modal.component';\nimport { ErrorModalComponent } from '../shared/modals/error-modal/error-modal.component';\nimport { Configuration } from '../shared/models/configuration-data.model';\nimport {EditSimulationModalComponent} from \"../shared/modals/edit-simulation-modal/edit-simulation-modal.component\";\nimport {InventoryService} from \"./inventory.service\";\nimport {DVMService} from \"./dvm.service\";\nimport {CategoriesService} from \"./categories.service\";\nimport {SocialdistancingService} from \"./socialdistancing.service\";\nimport {ComputeSectionResultsModalComponent} from \"../shared/modals/compute-sectionresults-modal/compute-sectionresults-modal.component\";\nimport {EditSectionSimulationModalComponent} from \"../shared/modals/edit-sectionsimulation-modal/edit-sectionsimulation-modal.component\";\nimport {Observable} from \"rxjs\";\nimport {ExportOnholdModalComponent} from \"../shared/modals/export-onhold-modal/export-onhold-modal.component\";\nimport {GroupsService} from './groups.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalService {\n\n constructor(private dataService: DataService,\n private bsModalRef: BsModalRef,\n private modalService: BsModalService,\n private inventoryService: InventoryService,\n private dvmService: DVMService,\n private categoriesService: CategoriesService,\n private socialDistancingService: SocialdistancingService,\n private groupsService: GroupsService) {\n }\n\n // -- PUBLIC METHODS --\n\n public openExportOnHold(configuration, id):void {\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered',\n backdrop: true,\n ignoreBackdropClick: true,\n initialState:{\n configuration,\n id\n }\n };\n this.bsModalRef = this.modalService.show(ExportOnholdModalComponent, modalConfig);\n const subscription = this.modalService.onHidden.subscribe(\n reason => {\n console.log(\"Export onhold Modal Closed\");\n }\n )\n }\n public openEditSimulation(configuration: [any, any]): void {\n const simulationParameters = configuration[0];\n const inputHash = configuration[1];\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered simulation-modal',\n backdrop: true,\n ignoreBackdropClick: true,\n initialState: {\n simulationParameters,\n inputHash\n }\n };\n this.bsModalRef = this.modalService.show(EditSimulationModalComponent, modalConfig);\n\n const subscription = this.modalService.onHidden.subscribe(\n reason =>{\n switch (this.bsModalRef.content.hiddenReason) {\n default:\n case 'close':\n subscription.unsubscribe();\n break;\n case 'closetoresult':\n if( this.bsModalRef.content.socialDistancingConfig){\n\n this.applySocialDistancingOpenResults(\n this.bsModalRef.content.socialDistancingConfig,\n this.bsModalRef.content.simulation,\n this.bsModalRef.content.loadingmap);\n subscription.unsubscribe();\n }\n break;\n }\n }\n )\n }\n\n public openEditSectionSimulation(simulationParameters, inputHash){\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered simulation-modal',\n backdrop: true,\n ignoreBackdropClick: true,\n initialState: {\n simulationParameters,\n inputHash\n }\n };\n this.bsModalRef = this.modalService.show(EditSectionSimulationModalComponent, modalConfig);\n const subscription = this.modalService.onHidden.subscribe(\n reason => {\n switch (this.bsModalRef.content.hiddenReason) {\n default:\n case 'close':\n subscription.unsubscribe();\n break;\n case 'closetoresult':\n this.applySocialDistancingOpenResults(\n this.bsModalRef.content.socialDistancingConfig,\n this.bsModalRef.content.simulation,\n this.bsModalRef.content.loadingmap,\n this.bsModalRef.content.sdNodes,\n this.bsModalRef.content.sdParentNodes\n );\n subscription.unsubscribe();\n break;\n }\n\n }\n );\n }\n\n public openComputedResultsModal(page?: string,configuration?:Configuration): void {\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered simulation-modal',\n backdrop: true,\n ignoreBackdropClick: true,\n initialState: {\n page,\n configuration\n }\n };\n // Abre el modal\n this.bsModalRef = this.modalService.show(ComputeResultsModalComponent, modalConfig);\n\n // subscribe al modal cuando se cierra\n const subscription = this.modalService.onHidden.subscribe(\n reason => {\n // console.log(\"HIDDEN REASON: \", reason);\n // console.log(\"CONTENT: \", this.bsModalRef.content.hiddenReason);\n switch (this.bsModalRef.content.hiddenReason) {\n default:\n case 'close':\n subscription.unsubscribe();\n break;\n\n case 'closetoedit':\n subscription.unsubscribe();\n this.onEditSimulationOpenEdit();\n break;\n }\n }\n )\n }\n\n public openComputedSectionResultsModal(simulationParameters: any, inputHash:{}, sdParentNodes: any){\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered simulation-modal',\n backdrop: true,\n ignoreBackdropClick: true,\n initialState: {\n simulationParameters,\n inputHash,\n sdParentNodes\n }\n };\n this.bsModalRef = this.modalService.show(ComputeSectionResultsModalComponent, modalConfig);\n\n const subscription = this.modalService.onHidden.subscribe(\n reason =>{\n switch (this.bsModalRef.content.hiddenReason) {\n default:\n case 'close':\n subscription.unsubscribe();\n break;\n case 'closetoedit':\n this.onEditSubSimulationOpenEditSection();\n subscription.unsubscribe();\n break;\n }\n }\n )\n }\n\n public throwErrorModal(errorMessage?: string): void {\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered simulation-modal',\n backdrop: true,\n ignoreBackdropClick: true,\n initialState: {\n errorMessage\n }\n };\n this.bsModalRef = this.modalService.show(ErrorModalComponent, modalConfig);\n }\n // -- END PUBLIC METHODS --\n\n // -- PRIVATE METHODS --\n\n private onEditSimulationOpenEdit(): void {\n let simulationParameters;\n const inputHash = {};\n let s = this.dataService.getAllParameters().subscribe(\n parameters => {\n let editable = [];\n for(let i = 0;i {\n if(p.id){\n inputHash[p.id] = {percentage: 0, computed_per: 0, nseats_per: 0};\n }\n }\n );\n // inputHash[3] = {percentage: 100, computed_per: 0};\n this.dataService.inputHash = inputHash;\n this.dataService.setInputHash$(inputHash);\n })\n .add(\n success => {\n this.openEditSimulation([simulationParameters, inputHash]);\n }\n )\n }\n\n private applySocialDistancingOpenResults(socialDistancingConfig: {}, simulation: any, loadingmap?: any,\n sdNodes?: [], sdParentNodes?:any){\n this.socialDistancingService.availabilityBuffer = this.inventoryService.getInventoryData();\n this.inventoryService.setInventoryData(this.inventoryService.getComparativeInventoryData());\n const inventory = this.inventoryService.getAvailableInventory();\n this.dvmService.viewer.setAvailability('section', inventory.sections);\n this.dvmService.viewer.setAvailability('seat', inventory.seats);\n this.categoriesService.printInventoryCategories();\n const unavailable = this.dvmService.viewer.getNodesByState('seat', 'unavailable');\n const invalidated = this.dvmService.viewer.getNodesByGroups('seat', this.groupsService.getGroupBehaviors('invalidated'));\n const validated = this.dvmService.viewer.getNodesByGroups('seat', this.groupsService.getGroupBehaviors('validated'));\n const blacklist = unavailable.concat(invalidated).map(x => x.id);\n const whitelist = validated.map(x => x.id);\n // console.log('UNAVAILABLES: ', unavailable, 'VALIDATED ', whitelist);\n // console.log(socialDistancingConfig);\n this.socialDistancingService.setSocialDistancingConfig(socialDistancingConfig);\n\n const maps = [];\n if (simulation.configuration.tier_list) {\n simulation.configuration.tier_list.forEach(level => {\n maps.push(level.map_id);\n });\n }\n\n if(sdNodes && sdParentNodes) {\n this.socialDistancingService.sectionsAffected = sdParentNodes;\n this.socialDistancingService.computeProbabilistic(this.dvmService.viewer, blacklist, whitelist, (result) => {\n simulation.capacity = result.length;\n if (loadingmap) { loadingmap.classList.add('hidden');}\n this.inventoryService.generateSimulationsManifest(this.dataService.currentSimulationId, result)\n .subscribe((response) => {\n let patch_sim = {capacity : result.length}\n this.dataService.editSimulation(simulation.id,patch_sim).subscribe(\n result=>{\n this.inventoryService.updateTotalsHash('simulations');\n this.dataService.simulationData = simulation;\n this.dataService.setCurrentSimulation$(simulation);\n this.inventoryService.availabilityLoadedSubject.next();\n this.socialDistancingService.calculationFinishedsubject.next();\n let simulationParameters;\n const inputHash = {};\n this.dataService.getAllParameters().subscribe(\n parameters => {\n //console.log(parameters);\n simulationParameters = parameters['params'];\n simulationParameters.splice(0, 1);\n simulationParameters.forEach(\n p => {\n inputHash[p.id] = {percentage: 0, computed_per: 0};\n }\n );\n // inputHash[3] = {percentage: 100, computed_per: 0};\n this.dataService.inputHash = inputHash;\n this.dataService.setInputHash$(inputHash);\n this.openComputedSectionResultsModal(simulationParameters, inputHash,sdParentNodes);\n })\n }\n );\n })\n ;\n }, maps, sdNodes);\n } else {\n this.socialDistancingService.computeProbabilistic(this.dvmService.viewer, blacklist, whitelist, (result) =>{\n simulation.capacity = result.length;\n if (loadingmap) { loadingmap.classList.add('hidden');}\n this.inventoryService.generateSimulationsManifest(this.dataService.currentSimulationId, result)\n .subscribe(\n response => {\n this.inventoryService.updateTotalsHash('simulations');\n this.dataService.setCurrentSimulation$(simulation);\n this.inventoryService.availabilityLoadedSubject.next();\n this.socialDistancingService.calculationFinishedsubject.next();\n this.openComputedResultsModal(null,\n simulation.configuration);\n }\n )\n }, maps);\n }\n }\n\n private onEditSubSimulationOpenEditSection():void {\n let simulationParameters;\n this.socialDistancingService.isSectionSocialDistancing = true;\n const inputHash = {};\n const subscriptions = [];\n subscriptions.push(this.dataService.getAllParameters().subscribe(\n parameters => {\n //console.log(parameters);\n simulationParameters = parameters['params'];\n simulationParameters.splice(0, 1);\n simulationParameters.forEach(\n p => {\n inputHash[p.id] = {percentage: 0, computed_per: 0};\n }\n );\n // inputHash[3] = {percentage: 100, computed_per: 0};\n this.dataService.inputHash = inputHash;\n this.dataService.setInputHash$(inputHash);\n }\n ).add(\n success => {\n this.openEditSectionSimulation(simulationParameters, inputHash);\n }\n ));\n }\n\n\n // -- END PRIVATE METHODS --\n}\n","import { Injectable } from '@angular/core';\nimport { DataService } from './data.service';\nimport { Parameter } from '../shared/models/parameter-data.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ParametersService {\n constructor(private dataService: DataService) {}\n\n private parameter:Parameter;\n public parametersHashed = {};\n public paramsList = [];\n\n public getSampleParam(nseats){\n this.parameter = {\n percentage : 0,\n computed_nseats : nseats,\n nseats_percentage : '0',\n computed_percentage : '0',\n parameter:{\n name : 'Sample',\n id:0,\n nseats : nseats,\n editable : false\n }\n }\n\n return this.parameter;\n }\n\n\n public setParametersList(){\n this.dataService.getParameters().subscribe(\n result => { this.paramsList = result; }\n );\n }\n}","import { Injectable } from '@angular/core';\nimport { InventoryService } from './inventory.service';\nimport { DataService } from './data.service';\nimport { FormatNumberService } from './format-number.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PricingService {\n\n currentSelectionPricing = [];\n //currencySymbol;\n getRevenueBySection(areaId:string,rowId?:string){\n return this.inventory.getInventoryRevenue(areaId,rowId);\n \n }\n getCurrentPricing(nodeType: string, nodes: any[], update?: boolean, returnNumber?: boolean) {\n const pricingHash = {};\n if (nodeType === 'seat') {\n nodes.forEach((node) => {\n const split = node.id.split('-');\n const areaId = split[0].split('_')[1];\n const rowId = split[1];\n const invProps = this.inventory.getInventoryProperty('price', areaId, rowId);\n console.log(invProps)\n invProps.forEach(price => {\n pricingHash[price] = true;\n });\n });\n \n } else if (nodeType === 'section') {\n nodes.forEach((node) => {\n const split = node.id.split('-');\n const areaId = split[0].split('_')[1];\n const invProps = this.inventory.getInventoryProperty('price', areaId);\n invProps.forEach(price => {\n pricingHash[price] = true;\n });\n });\n }\n if (update) {\n this.currentSelectionPricing = Object.keys(pricingHash);\n }\n\n const keys = Object.keys(pricingHash);\n if (keys.length > 1) {\n return Object.keys(pricingHash);\n } else if (keys.length === 1) {\n if (returnNumber) {\n return this.formatNumber(Object.keys(pricingHash)[0]);\n } else {\n return this.formatPrice(Object.keys(pricingHash)[0]);\n }\n } else {\n return null;\n }\n }\n\n constructor(private inventory: InventoryService,\n private dataService: DataService,\n private formatService: FormatNumberService) {\n // this.formatPrice(0).split('0').forEach(\n // c => {\n // if (c && c !== '.') {\n // this.currencySymbol = c;\n // }\n // }\n // );\n }\n\n setPricing(nodeType: 'section' | 'seat', nodes: any[], value: number) {\n const setPricingPromise = new Promise((s, r) => {\n if (nodeType === 'seat') {\n nodes.forEach((node) => {\n const split = node.id.split('-');\n this.inventory.setInventoryProperty('price', value, split[0].split('_')[1], split[1], s);\n });\n\n } else if (nodeType === 'section') {\n nodes.forEach((node) => {\n const split = node.id.split('-');\n this.inventory.setInventoryProperty('price', value, split[0].split('_')[1], null, s);\n });\n }\n }).then(() => {\n console.log('Set pricing completed.');\n });\n }\n\n formatPrice(price) {\n // const formatter = new Intl.NumberFormat(this.dataService.getUser().user.client.language, {\n // style: 'currency',\n // currency: this.dataService.getUser().user.client.currency,\n // });\n return this.formatService.formatCurrencyNumber(price);\n }\n\n formatNumber(price) {\n return this.formatService.formatNumber(price);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SelectionService {\n\n nodeType = new Subject<'section' | 'seat'>();\n selectionSubject = new Subject();\n lastSelection;\n\n isGroupsSelection = false;\n selectionSubscriptionsArray = [];\n isSingleSelection = false;\n\n isMultiSelection = false;\n constructor() {\n this.selectionSubject.subscribe(\n selection => {\n this.lastSelection = selection;\n }\n );\n }\n\n}\n","import { Injectable, Inject } from \"@angular/core\";\nimport { DVMService } from \"./dvm.service\";\nimport { Subject, from } from \"rxjs\";\nimport { DataService } from \"./data.service\";\nimport { InventoryService } from \"./inventory.service\";\nimport { DVM_CONFIG } from \"src/assets/configuration/digitalvenue.configuration\";\nimport { map } from \"rxjs/operators\";\nimport { SelectionService } from \"./selection.service\";\nimport { CategoriesService } from \"./categories.service\";\nimport { ISOLATED_GROUPS } from \"../../../assets/data/isolated-groups.configuration\";\nimport { IsolatedGroups } from \"../shared/models/isolated-groups.model\";\nimport { GroupsService } from \"./groups.service\";\nimport {\n MapViewer,\n MapViewerInputNodes,\n MapViewerNodeLike,\n SocialDistancingComputeInput,\n SocialDistancingFilterEdgesInput,\n SocialDistancingFilterNearestInput,\n SocialDistancingGetNeighborsInput,\n SocialDistancingIsolatedGroups,\n} from \"@3ddv/dvm-internal\";\n\ndeclare let DVM;\n\n// export interface SocialdistancingConfig {\n// securityDistance: number;\n// parameters: {\n// [key: number]: number;\n// };\n// }\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class SocialdistancingService {\n currentMode;\n iterations = 1;\n lastResult;\n\n useExternalData: true;\n\n neighborDistance = 0.65;\n securityDistance: number;\n parameters = {};\n probabilityGroup2 = 0.3;\n probabilityGroup3 = 0.3;\n probabilityGroup4 = 0.3;\n fallback = 0;\n isleSeats = 0;\n configSubject = new Subject();\n calculationFinishedsubject = new Subject();\n isConfigSet = false;\n limit2groups = false;\n numberOfCalculations = 1;\n calculationsHash = {};\n groups_seats = {};\n availabilityBuffer;\n\n isSectionSocialDistancing = false;\n sectionsAffected = [];\n\n edges: Set = new Set();\n killedEdges: Set = new Set();\n allgroups = {};\n\n aisle_seats_sides = {\n start: true,\n end: true,\n };\n\n constructor(\n private dvmService: DVMService,\n private categories: CategoriesService,\n private inventory: InventoryService,\n private dataService: DataService,\n private selectionService: SelectionService,\n private groupsService: GroupsService,\n @Inject(DVM_CONFIG) private DVMConfig,\n @Inject(ISOLATED_GROUPS) private isolatedGroups: IsolatedGroups\n ) {}\n\n getGroupsData() {\n return this.groups_seats;\n }\n\n updateMapEdges(viewer: MapViewer, count: number) {\n const options: SocialDistancingFilterEdgesInput = {\n neighbor_distance: this.neighborDistance,\n count,\n };\n const p = viewer.social_distancing.filterEdges(options).then((result) => {\n this.edges.clear();\n result.invalidated.forEach((n) => this.edges.add(n));\n this.updateKilledEdges(viewer);\n });\n return from(p);\n }\n\n updateKilledEdges(viewer: MapViewer) {\n this.killedEdges.clear();\n const unavailable = viewer.getNodesByState(\"seat\", \"unavailable\");\n unavailable.forEach((n) => {\n if (this.edges.has(n.id)) this.killedEdges.add(n.id);\n });\n }\n\n getNeighbors(\n viewer: MapViewer,\n seat: MapViewerNodeLike,\n count?: number,\n invalidated?: string[],\n validated?: string[]\n ) {\n if (!count) {\n count = Infinity;\n }\n const options: SocialDistancingGetNeighborsInput = {\n count,\n invalidated,\n validated,\n isolated_groups: this.buildIsolatedGroups(viewer),\n };\n return from(viewer.social_distancing.getNeighbors(options, seat));\n }\n\n filterNearest(viewer: MapViewer, seats: MapViewerInputNodes, invalidated?: string[], validated?: string[]) {\n const options: SocialDistancingFilterNearestInput = {\n security_distance: this.securityDistance,\n invalidated,\n validated,\n };\n return from(viewer.social_distancing.filterNearest(options, seats));\n }\n\n getSocialDistancingConfig() {\n return {\n securityDistance: this.securityDistance,\n isleSeats: this.isleSeats,\n limit2groups: this.limit2groups,\n fallback: this.fallback,\n parameters: this.parameters,\n aisle_seats_start: this.aisle_seats_sides.start,\n aisle_seats_end: this.aisle_seats_sides.end,\n };\n }\n setSocialDistancingConfig(sdConfig) {\n this.parameters = {};\n this.securityDistance = sdConfig.securityDistance;\n this.isleSeats = sdConfig.isleSeats;\n this.limit2groups = sdConfig.limit2groups;\n this.fallback = sdConfig.fallback;\n this.aisle_seats_sides = {\n start: sdConfig.aisle_seats_sides.start,\n end: sdConfig.aisle_seats_sides.end,\n };\n // tslint:disable-next-line: forin\n for (const parameter in sdConfig.parameters) {\n if (typeof sdConfig.parameters[parameter] === \"string\") {\n this.parameters[parameter] = parseFloat(sdConfig.parameters[parameter]);\n }\n // if (this.parameters[parameter] == 1) {\n // this.parameters[parameter] = Infinity;\n // } else if (this.parameters[parameter] == 0) {\n // delete this.parameters[parameter];\n // }\n }\n this.isConfigSet = true;\n this.configSubject.next();\n }\n\n computeSimple(viewer, blacklist: string[], whitelist: string[], callback?, maps?, nodes?) {\n const neighbor = this.neighborDistance;\n const security = this.securityDistance;\n\n const group = 2;\n const fallback = this.fallback;\n\n const options: SocialDistancingComputeInput = {\n fixed_groups: { [group]: Infinity },\n fallback,\n security_distance: security,\n neighbor_distance: neighbor,\n // blacklist,\n // whitelist,\n invalidated: blacklist,\n validated: whitelist,\n kill_edges: this.isleSeats,\n use_external_data: this.useExternalData,\n from_edges: true,\n };\n if (!maps || !maps.length) {\n maps = [this.dvmService.viewer.getMapId()];\n }\n this.computeSocialDistancing(viewer, maps, options, callback);\n // console.log('------INPUT------');\n // console.log(input);\n // viewer.social_distancing.compute(input, undefined, this.catchProgress)\n // .then((result) => {\n // this.onResolveCompute(viewer, result, callback);\n // })\n // .catch((err) => {\n // console.error(err);\n // });\n }\n\n computeProbabilistic(viewer, blacklist: string[], whitelist: string[], callback?, maps?, nodes?): void {\n const neighbor = this.neighborDistance;\n const security = this.securityDistance;\n const iterations = this.iterations;\n const fallback = this.fallback;\n const groups = this.parameters;\n const options: SocialDistancingComputeInput = {\n probabilistic_groups: groups,\n iterations,\n security_distance: security,\n neighbor_distance: neighbor,\n fallback,\n // blacklist,\n validated: whitelist,\n invalidated: blacklist,\n kill_edges: this.isleSeats,\n use_external_data: this.useExternalData,\n from_edges: true,\n kill_start: true,\n kill_end: true,\n only_from_edges: this.limit2groups,\n };\n if (!maps || !maps.length) {\n maps = [this.dvmService.viewer.getMapId()];\n }\n if (nodes && nodes.length) {\n // options.kill_start = this.aisle_seats_sides.start;\n // options.kill_end = this.aisle_seats_sides.end;\n\n this.computeSectionSocialDistancing(viewer, options, nodes, callback);\n } else {\n this.computeSocialDistancing(viewer, maps, options, callback);\n }\n }\n public getGroupsBySection(viewer: MapViewer, sections: string[]) {\n let nodes = [];\n for (let i = 0; i < sections.length; i++) {\n nodes = nodes.concat(viewer.getNodesByParent(sections[i]));\n }\n\n const unavailable = viewer.getNodesByState(\"seat\", \"unavailable\");\n const invalidatedByGroup = viewer.getNodesByGroups(\"seat\", this.groupsService.getGroupBehaviors(\"invalidated\"));\n const validated = viewer.getNodesByGroups(\"seat\", this.groupsService.getGroupBehaviors(\"validated\"));\n const invalidated = unavailable.concat(invalidatedByGroup);\n\n return viewer.social_distancing\n .getGroups(\n {\n neighbor_distance: this.neighborDistance,\n invalidated: invalidated.map((n) => n.id),\n validated: validated.map((n) => n.id),\n isolated_groups: this.buildIsolatedGroups(viewer),\n },\n true,\n nodes\n )\n .then((result) => {\n let groups_seats = {};\n let ngroups = Object.keys(result);\n for (let i = 0; i < ngroups.length; i++) {\n groups_seats[ngroups[i]] = result[ngroups[i]] * parseInt(ngroups[i]);\n }\n return groups_seats;\n });\n }\n\n // TODO: Juntar esta funcion con la de abajo\n public getGroupsFullExport(viewer: MapViewer, maps?: any) {\n // return viewer.social_distancing['getGroups'](\n // {\n // neighbor_distance: this.neighborDistance,\n // invalidated: viewer.getNodesByState('seat', 'unavailable').map(n => n.id)\n // }, false)\n // .then(\n // result => {\n // console.log(result);\n // if (this.dataService.currentSimulationId) {\n // return this.dataService.setSocialGroups(this.dataService.currentSimulationId, result);\n // }\n // });\n // console.log('ON FULL EXPORT GROUP: INVALIDATED: ', viewer.getNodesByState('seat', 'unavailable').map(n => n.id));\n // console.log('ON FULL EXPORT GROUP: VALIDATED: ', viewer.getNodesByGroups('seat', 'onhold').map(n=>n.id));\n return viewer.social_distancing\n .getGroups(\n {\n neighbor_distance: this.neighborDistance,\n invalidated: viewer.getNodesByState(\"seat\", \"unavailable\").map((n) => n.id),\n isolated_groups: this.buildIsolatedGroups(viewer),\n },\n false\n )\n .then((result) => {\n this.groups_seats = {};\n let ngroups = Object.keys(result);\n for (let i = 0; i < ngroups.length; i++) {\n this.groups_seats[ngroups[i]] = result[ngroups[i]];\n }\n\n if (!maps || !maps.length) {\n if (this.dataService.currentSimulationId) {\n return this.dataService.setSocialGroups(this.dataService.currentSimulationId, this.groups_seats);\n }\n } else {\n const index = maps.indexOf(viewer.getMapId());\n if (index > -1) {\n maps.splice(index, 1);\n }\n let promiseArray = [];\n maps.forEach((map) => {\n const viewerConfig = JSON.parse(JSON.stringify(this.DVMConfig));\n viewerConfig.venue_id = this.dvmService.viewer.getVenueId();\n viewerConfig.map_id = map;\n viewerConfig.container = \"dummy-viewer-container\";\n\n const promise = DVM.loadModule(\"map_viewer\", viewerConfig).then((viewer: MapViewer) => {\n return viewer.loadMap(viewerConfig).then((response) => {\n const availableInventory = this.inventory.getAvailableInventory(true).seats;\n viewer.setAvailability(\"seat\", availableInventory);\n return viewer.social_distancing\n .getGroups(\n {\n neighbor_distance: this.neighborDistance,\n invalidated: viewer.getNodesByState(\"seat\", \"unavailable\").map((n) => n.id),\n isolated_groups: this.buildIsolatedGroups(viewer),\n },\n false\n )\n .then((result) => {\n let ngroups = Object.keys(result);\n\n for (let i = 0; i < ngroups.length; i++) {\n if (this.groups_seats[ngroups[i]]) {\n this.groups_seats[ngroups[i]] = this.groups_seats[ngroups[i]].concat(result[ngroups[i]]);\n } else {\n this.groups_seats[ngroups[i]] = result[ngroups[i]];\n }\n }\n viewer.reset();\n viewer.close();\n });\n });\n });\n promiseArray.push(promise);\n }); //END FOREACH\n return Promise.all(promiseArray)\n .then((results) => {\n if (this.dataService.currentSimulationId) {\n return this.dataService.setSocialGroups(this.dataService.currentSimulationId, this.groups_seats);\n }\n })\n .catch((err) => {\n console.log(err);\n });\n }\n });\n }\n\n public getGroups(viewer: MapViewer, maps?: any) {\n return viewer.social_distancing\n .getGroups(\n {\n neighbor_distance: this.neighborDistance,\n invalidated: viewer.getNodesByState(\"seat\", \"unavailable\").map((n) => n.id),\n isolated_groups: this.buildIsolatedGroups(viewer),\n },\n true\n )\n .then((result) => {\n this.groups_seats = {};\n let ngroups = Object.keys(result);\n for (let i = 0; i < ngroups.length; i++) {\n this.groups_seats[ngroups[i]] = result[ngroups[i]] * parseInt(ngroups[i]);\n }\n\n if (!maps || !maps.length) {\n return this.groups_seats;\n } else {\n const index = maps.indexOf(viewer.getMapId());\n if (index > -1) {\n maps.splice(index, 1);\n }\n let promiseArray = [];\n maps.forEach((map) => {\n const viewerConfig = JSON.parse(JSON.stringify(this.DVMConfig));\n viewerConfig.venue_id = this.dvmService.viewer.getVenueId();\n viewerConfig.map_id = map;\n viewerConfig.container = \"dummy-viewer-container\";\n\n const promise = DVM.loadModule(\"map_viewer\", viewerConfig).then((viewer: MapViewer) => {\n return viewer.loadMap(viewerConfig).then((response) => {\n const availableInventory = this.inventory.getAvailableInventory(true).seats;\n viewer.setAvailability(\"seat\", availableInventory);\n return viewer.social_distancing\n .getGroups(\n {\n neighbor_distance: this.neighborDistance,\n invalidated: viewer.getNodesByState(\"seat\", \"unavailable\").map((n) => n.id),\n isolated_groups: this.buildIsolatedGroups(viewer),\n },\n true\n )\n .then((result) => {\n let ngroups = Object.keys(result);\n for (let i = 0; i < ngroups.length; i++) {\n if (this.groups_seats[ngroups[i]]) {\n this.groups_seats[ngroups[i]] += result[ngroups[i]] * parseInt(ngroups[i]);\n } else {\n this.groups_seats[ngroups[i]] = result[ngroups[i]] * parseInt(ngroups[i]);\n }\n }\n\n viewer.reset();\n viewer.close();\n });\n });\n });\n\n promiseArray.push(promise);\n }); //END FOREACH\n return Promise.all(promiseArray)\n .then((results) => {\n return this.groups_seats;\n })\n .catch((err) => {\n console.log(err);\n });\n }\n });\n }\n\n public buildIsolatedGroups(viewer: MapViewer): SocialDistancingIsolatedGroups | null {\n const data = this.isolatedGroups[viewer.getVenueId()];\n if (data) {\n const output = {};\n for (const groupId in data) {\n if (data.hasOwnProperty(groupId)) {\n const sectionIds = data[groupId];\n\n sectionIds.forEach((sectionId) => {\n if (output[groupId] == null) {\n output[groupId] = [];\n }\n viewer.getNodesByParent(sectionId).forEach((node) => {\n output[groupId].push(node.id);\n });\n });\n }\n }\n return output;\n }\n return null;\n }\n\n private computeSocialDistancing(viewer, maps, options, callback) {\n console.log(\"Compute SD, maps: \", maps);\n if (maps && maps.length) {\n this.calculationsHash = {};\n this.numberOfCalculations = maps.length;\n const promiseArray = [];\n maps.forEach((map) => {\n const viewerConfig = JSON.parse(JSON.stringify(this.DVMConfig));\n viewerConfig.venue_id = this.dvmService.viewer.getVenueId();\n viewerConfig.map_id = map;\n viewerConfig.container = \"dummy-viewer-container\";\n const promise = new Promise((success, reject) => {\n DVM.loadModule(\"map_viewer\", viewerConfig).then((viewer) => {\n viewer.loadMap(viewerConfig).then((response) => {\n const context = {\n map_id: map,\n calculationsHash: this.calculationsHash,\n numberOfCalculations: this.numberOfCalculations,\n };\n\n // -----------\n // Ya que la blacklist se genera a partir del mapa, se tiene que generar para cada tier\n const inventory = this.inventory.getAvailableInventory();\n viewer.setAvailability(\"section\", inventory.sections);\n viewer.setAvailability(\"seat\", inventory.seats);\n this.categories.printInventoryCategories(viewer);\n\n const unavailable = viewer.getNodesByState(\"seat\", \"unavailable\");\n const invalidatedByGroup = viewer.getNodesByGroups(\n \"seat\",\n this.groupsService.getGroupBehaviors(\"invalidated\")\n );\n const validated = viewer.getNodesByGroups(\"seat\", this.groupsService.getGroupBehaviors(\"validated\"));\n const invalidated = unavailable.concat(invalidatedByGroup);\n\n options.invalidated = invalidated.map((x) => x.id);\n options.validated = validated.map((x) => x.id);\n options.isolated_groups = this.buildIsolatedGroups(viewer);\n // -----------\n\n viewer.social_distancing\n .compute(options, null, this.catchProgress.bind(context))\n .then((result) => {\n viewer.reset();\n viewer.close();\n success(result);\n })\n .catch((err) => {\n console.error(err);\n reject(err);\n });\n });\n });\n });\n promiseArray.push(promise);\n });\n\n Promise.all(promiseArray).then((results) => {\n console.log(\"PROMISE RESOLVED\");\n const totalResults = {\n availability: [],\n grouped: {},\n total_nodes: 0,\n };\n results.forEach((result) => {\n totalResults.availability = totalResults.availability.concat(result.availability);\n totalResults.total_nodes += result.total_nodes;\n for (const key in result.grouped) {\n if (result.grouped.hasOwnProperty(key)) {\n if (!totalResults.grouped[key]) {\n totalResults.grouped[key] = [];\n }\n totalResults.grouped[key] = totalResults.grouped[key].concat(result.grouped[key]);\n }\n }\n });\n this.onResolveCompute(viewer, totalResults, callback);\n });\n }\n }\n\n private computeSectionSocialDistancing(viewer: MapViewer, options, nodes, callback) {\n const promise = new Promise((success, reject) => {\n const context = {\n map_id: map,\n calculationsHash: this.calculationsHash,\n numberOfCalculations: this.numberOfCalculations,\n };\n let socialDistancingNodes = null;\n if (this.isSectionSocialDistancing && nodes && nodes.length) {\n socialDistancingNodes = nodes;\n }\n console.log(\"HERE: \", this.isSectionSocialDistancing, socialDistancingNodes);\n options.isolated_groups = this.buildIsolatedGroups(viewer);\n viewer.social_distancing\n .compute(options, socialDistancingNodes, this.catchProgress.bind(context))\n .then((result) => {\n console.log(result);\n success(result);\n })\n .catch((err) => {\n console.error(err);\n reject(err);\n });\n });\n promise.then((result) => {\n const totalResults = {\n availability: [],\n grouped: {},\n total_nodes: 0,\n };\n totalResults.availability = totalResults.availability.concat(result[\"availability\"]);\n totalResults.total_nodes += result[\"total_nodes\"];\n for (const key in result[\"grouped\"]) {\n if (result[\"grouped\"].hasOwnProperty(key)) {\n if (!totalResults.grouped[key]) {\n totalResults.grouped[key] = [];\n }\n totalResults.grouped[key] = totalResults.grouped[key].concat(result[\"grouped\"][key]);\n }\n }\n this.onResolveCompute(viewer, totalResults, callback, nodes);\n });\n }\n\n private catchProgress(progress) {\n let totalProgress = 0;\n //if (this['map_id'] && !this.calculationsHash[this['map_id']]) {\n if (this[\"map_id\"]) {\n this.calculationsHash[this[\"map_id\"]] = progress;\n }\n Object.values(this.calculationsHash).forEach((value) => {\n totalProgress += value as number;\n });\n if (document.getElementById(\"loading-process\")) {\n if (totalProgress === this.numberOfCalculations) {\n document.getElementById(\"loading-process\").classList.add(\"hidden\");\n } else {\n if (totalProgress === 0) {\n document.getElementById(\"loading-process\").classList.remove(\"hidden\");\n }\n document.getElementById(\"loading-process\").innerText =\n ((totalProgress * 100) / this.numberOfCalculations).toFixed(0) + \"%\";\n }\n }\n }\n\n //Borra las onholds en los unavailables\n // TODO: buscar una mejor forma de borrar los onholds de los unavailable\n // Una solucion podria ser meter las sillas de onhold en el estado available.\n // Otra solucion es separar las sillas en la funcion de getAvailableInventory y alli sacar grupos de sillas de\n // Available, Onhold y Unavailable\n private getValidatedInvalidated(viewer: MapViewer): { validated: string[]; invalidated: string[] } {\n const onholds = viewer.getNodesByGroups(\"seat\", \"onhold\").map((n) => n.id);\n let unavailbles = viewer.getNodesByState(\"seat\", \"unavailable\").map((n) => n.id);\n\n function arrayRemove(arr, value) {\n return arr.filter(function (ele) {\n return ele != value;\n });\n }\n\n for (let i = 0; i < onholds.length; ++i) {\n unavailbles = arrayRemove(unavailbles, onholds[i]);\n }\n return { validated: onholds, invalidated: unavailbles };\n }\n\n private isEmpty(obj) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) return false;\n }\n return true;\n }\n\n private onResolveCompute(viewer, result: any, callback?, nodes?): void {\n console.log(\"ON RESOLVE COMPUTE\");\n // LENGTH GROUPS\n let totalGroupLength = 0;\n // tslint:disable-next-line: forin\n this.dataService.setSocialGroups(this.dataService.currentSimulationId, result.grouped).subscribe((response) => {\n console.log(response);\n });\n for (const g of Object.values(result.grouped)) {\n totalGroupLength += Object.keys(g).length;\n }\n // PARAMETERS\n let params;\n const newSimulationParameters = {\n simulation: this.dataService.currentSimulationId,\n options: [],\n };\n const newSectionSimulationParameters = {\n simulation: this.dataService.currentSimulationId,\n options: [],\n };\n const inputHash = JSON.parse(JSON.stringify(this.dataService.inputHash));\n\n const nSeatshash = {};\n\n const createParams = () => {\n for (const p of params) {\n if (p.parameter) {\n nSeatshash[p.parameter.nseats] = p.parameter.id;\n } else if (p.id) {\n nSeatshash[p.nseats] = p.id;\n }\n }\n\n for (const [key, value] of Object.entries(result.grouped)) {\n let percentage = 0;\n\n if (typeof nSeatshash[key] !== \"undefined\" && nSeatshash[key] !== null) {\n if (inputHash[nSeatshash[key]]) {\n percentage = inputHash[nSeatshash[key]][\"percentage\"] / 100;\n }\n if (this.isEmpty(inputHash) && nSeatshash[key] == 3) {\n percentage = 1;\n }\n // else if (nSeatshash[key] === 3) {\n // percentage = 1;\n // }\n\n //if(nodes && nodes.length){\n\n //}else{\n const computedPercentage = Object.keys(value).length / totalGroupLength;\n // const nseatsPercentage = (Object.keys(value).length * parseInt(key, 10)) / result.total_nodes;\n const nseatsPercentage = (Object.keys(value).length * parseInt(key, 10)) / result.availability.length;\n newSimulationParameters[\"options\"].push({\n param_id: nSeatshash[key],\n computed_percentage: computedPercentage,\n nseats_percentage: nseatsPercentage,\n computed_nseats: Object.keys(value).length * parseInt(key),\n percentage,\n });\n //}\n }\n }\n\n const afterCreateParams = (subsims?) => {\n console.log(\"AFTER CREATE PARAMS\");\n this.lastResult = result;\n if (nodes && nodes.length) {\n this.inventory.setInventoryData(this.availabilityBuffer);\n const availableInventory = this.inventory.getAvailableInventory(true).seats;\n const nodesMap = nodes.map((x) => x.id);\n let newAvailability = availableInventory.filter((x) => !nodesMap.includes(x));\n newAvailability = newAvailability.concat(result.availability);\n result.availability = newAvailability;\n }\n // this.inventory.setInventoryData(this.inventory.comparativeInventory);\n // No tiene sentido hacer un setAvailability justo aquí, porque en el inventory hay más datos que no vienen de la lib. Hay que esperar a que el inventory esté listo (una vez se ha hecho 'editSimulation')\n // viewer.setAvailability('seat', result.availability);\n //this.categories.printInventoryCategories(viewer);\n this.inventory.availabilityLoadedSubject.next();\n // this.inventory.getAvailableInventory(true);\n if (callback) {\n callback(result.availability);\n this.isSectionSocialDistancing = false;\n let selected_nodes = [];\n // TODO: Aqui se cogen sillas y no se que\n selected_nodes = selected_nodes.concat(this.dvmService.viewer.getNodesByGroups(\"section\", \"selected\"));\n selected_nodes = selected_nodes.concat(this.dvmService.viewer.getNodesByGroups(\"seat\", \"selected\"));\n if (selected_nodes.length) {\n this.dvmService.viewer.addNodesToGroup(selected_nodes, \"selected\");\n }\n let haslocked_nodes = this.dvmService.viewer.getNodesByGroups(\"section\", \"locked\");\n if (haslocked_nodes.length) {\n this.dvmService.viewer.setUnavailable(\"section\", haslocked_nodes);\n }\n\n haslocked_nodes = this.dvmService.viewer.getNodesByGroups(\"seat\", \"locked\");\n if (haslocked_nodes.length) {\n this.dvmService.viewer.setUnavailable(\"seat\", haslocked_nodes);\n this.dvmService.viewer.addNodesToGroup(haslocked_nodes, \"locked\");\n }\n\n /* \n this.dvmService.viewer.removeNodesFromGroup(this.dvmService.viewer.getNodesByGroups(\"seat\", \"selected\"), 'selected');\n this.dvmService.viewer.removeNodesFromGroup(this.dvmService.viewer.getNodesByGroups(\"section\", \"selected\"), 'selected');\n this.selectionService.selectionSubject.next([]); */\n }\n this.calculationFinishedsubject.next(result);\n // this.modalService.openEditSimulation();\n const body = {\n capacity: result.availability.length,\n };\n this.dataService.editSimulation(this.dataService.currentSimulationId, body).subscribe(\n (success) => {\n this.dataService.setCurrentSimulation$(success.result);\n this.inventory.availabilityLoadedSubject.next();\n const availableInventory = this.inventory.getAvailableInventory(true).seats;\n this.dvmService.viewer.setAvailability(\"seat\", availableInventory);\n },\n (error) => {\n console.log(error);\n }\n );\n if (subsims && subsims.length > 0) {\n for (let i = 0; i < subsims.length; i++) {\n let subsim_id = subsims[i].id;\n let body = {\n capacity: this.dvmService.viewer.getNodesByState(\"seat\", \"available\", subsims[i].section).length,\n };\n this.dataService.editSubSimulation(subsim_id, body).subscribe((success) => {\n console.log(\"subsim update\");\n });\n }\n }\n };\n\n if (nodes && nodes.length) {\n let config = this.getSocialDistancingConfig();\n const body = {\n name: \"Sim: \" + this.dataService.currentSimulationId,\n social_distancing: config.securityDistance,\n capacity: \"0\",\n simulation_id: this.dataService.currentSimulationId,\n isle_seats: config.isleSeats,\n fallback: config.fallback,\n section: this.sectionsAffected.map((n) => n.id),\n limit2groups: config.limit2groups,\n aisle_seats_start: config.aisle_seats_start,\n aisle_seats_end: config.aisle_seats_end,\n };\n this.dataService.createSubsimulation(body).subscribe((response) => {\n newSimulationParameters[\"subsimulation\"] = response.result.map((n) => n.id);\n this.dataService.createSubsimulationParameters(newSimulationParameters).subscribe(\n (success) => {\n console.log(success);\n afterCreateParams(response.result);\n },\n (error) => {\n console.error(error);\n }\n );\n });\n } else {\n this.dataService.createSimulationParameters(newSimulationParameters).subscribe(\n (success) => {\n afterCreateParams();\n },\n (error) => {\n console.error(error);\n }\n );\n }\n };\n\n if (nodes && nodes.length) {\n if (\n this.dataService.affectedSubsimulation[0] &&\n this.dataService.affectedSubsimulation[0].parameters.length !== 0\n ) {\n params = this.dataService.affectedSubsimulation[0].parameters;\n createParams();\n } else {\n this.dataService.getAllParameters().subscribe((emptyParams) => {\n params = emptyParams[\"params\"];\n createParams();\n });\n }\n } else {\n this.dataService.getSimulationParameters(this.dataService.currentSimulationId).subscribe((parameters) => {\n console.log(parameters);\n\n if (parameters.parameters.length !== 0) {\n params = parameters.parameters;\n createParams();\n } else {\n this.dataService.getAllParameters().subscribe((emptyParams) => {\n params = emptyParams[\"params\"];\n createParams();\n });\n }\n });\n }\n }\n\n arr_diff(a1, a2) {\n var a = [],\n diff = [];\n\n for (var i = 0; i < a1.length; i++) {\n a[a1[i]] = true;\n }\n for (var i = 0; i < a2.length; i++) {\n if (a[a2[i]]) {\n delete a[a2[i]];\n } else {\n a[a2[i]] = true;\n }\n }\n for (var k in a) {\n diff.push(k);\n }\n return diff;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DVMService } from './dvm.service';\nimport { Subject, Observable, BehaviorSubject } from 'rxjs';\nimport { Simulation } from '../shared/models/simulation-data.model';\nimport { Tier } from '../shared/models/configuration-data.model';\nimport { CategoriesService } from './categories.service';\n\ndeclare let DVM;\nexport interface Itotaltiers {\n capacity: number,\n tiers: any[],\n locked: number\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TiersService {\n public simulation : Simulation;\n public tiers : Tier[];\n public totaltiersAV$ = new BehaviorSubject(undefined);\n\n constructor(private dvmService: DVMService,\n private categories: CategoriesService) {}\n\n public setData(simulation:Simulation){\n this.simulation = simulation;\n this.tiers = this.setTiers();\n }\n\n public getSimulation(): Simulation{\n return this.simulation;\n }\n public getTiers(): Tier[]{\n return this.tiers;\n }\n private setTiers(): Tier[]{\n return this.simulation.configuration.tier_list;\n }\n\n public getDefaultCapacity(): number{\n return this.simulation.capacity;\n }\n \n //\n public setTotalTiersAV(config_tier_list: any[]) : Promise{\n let promises = [];\n let venue_av:Itotaltiers = {\n capacity : 0,\n tiers: [],\n locked : 0\n }\n if(!config_tier_list.length){\n return new Promise((s,r)=>{\n venue_av.capacity = this.dvmService.viewer.getNodesByType(\"seat\").length;\n venue_av.locked = this.dvmService.viewer.getNodesByGroups('seat', 'locked').length;\n this.setTotalTiersAVSubject(venue_av);\n s(venue_av);\n });\n }\n\n config_tier_list.forEach(tier => {\n const viewerConfig = this.dvmService.getDVMConfig();\n viewerConfig.venue_id = this.dvmService.viewer.getVenueId();\n viewerConfig.map_id = tier.map_id;\n viewerConfig.container = 'dummy-viewer-container';\n let p = new Promise((success, reject) => {\n DVM.loadModule('map_viewer', viewerConfig).then(\n dummy_viewer => {\n dummy_viewer.loadMap(viewerConfig)\n .then(\n response => {\n let c = dummy_viewer.getNodesByType(\"seat\").length;\n tier.capacity = c;\n venue_av.tiers.push(tier);\n venue_av.capacity+=c;\n this.categories.printInventoryCategories(dummy_viewer);\n venue_av.locked +=dummy_viewer.getNodesByGroups('seat', 'locked').length;\n dummy_viewer.reset();\n dummy_viewer.close();\n success(null);\n })\n .catch((err) => {\n console.error(err);\n reject(err);\n });\n }).catch((err) => {\n console.error(err);\n reject(err);\n });\n });\n promises.push(p);\n });\n\n\n return Promise.all(promises).then(result=>{\n this.setTotalTiersAVSubject(venue_av);\n return venue_av;\n });\n }\n\n public setTotalTiersAVSubject(res:Itotaltiers): void{\n this.totaltiersAV$.next(res);\n }\n\n public getTotalTiersAV() : Observable{\n return this.totaltiersAV$.asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class VersionService {\n version = '2.0';\n\n getVersion(){\n return this.version;\n }\n}","import { Component, OnInit } from '@angular/core';\nimport { DVMService } from '../services/dvm.service';\nimport { ClickHandler } from '../services/handlers/click.handler';\nimport { EnterHandler } from '../services/handlers/enter.handler';\nimport { LeaveHandler } from '../services/handlers/leave.handler';\nimport { PopoverHandler } from '../services/handlers/popover.handler';\nimport { AuthenticationService } from '../../auth';\nimport { DataService } from '../services/data.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { SocialdistancingService } from '../services/socialdistancing.service';\nimport { Subject } from 'rxjs';\nimport { LoadShareSimulationHandler } from '../services/handlers/load-share-simulation.handler';\nimport { FormatNumberService } from '../services/format-number.service';\nimport { Platform, PlatformService } from 'src/app/services/platform.service';\n\n@Component({\n selector: 'app-simulation',\n templateUrl: './share-simulation.component.html',\n styleUrls: ['./share-simulation.component.scss'],\n providers: [\n LoadShareSimulationHandler,\n ClickHandler,\n EnterHandler,\n LeaveHandler,\n PopoverHandler\n ]\n})\nexport class ShareSimulationComponent implements OnInit {\n\n configurationSubject = new Subject();\n\n shareSimulationKey;\n simulation;\n\n constructor(private dvmService: DVMService,\n private router: Router,\n private loadShareSimulationHandler: LoadShareSimulationHandler,\n private clickHandler: ClickHandler,\n private enterHandler: EnterHandler,\n private leaveHandler: LeaveHandler,\n private popoverHandler: PopoverHandler,\n private authService: AuthenticationService,\n private dataService: DataService,\n private activatedRoute: ActivatedRoute,\n private socialDistancing: SocialdistancingService,\n private platformService: PlatformService,\n private formatNumber: FormatNumberService) { }\n\n ngOnInit(): void {\n this.shareSimulationKey = this.activatedRoute.snapshot.params.key;\n this.dataService.currentShareKey = this.shareSimulationKey;\n this.platformService.refreshPlatform();\n this.dataService.getSharedSimulation(this.shareSimulationKey).subscribe(\n response => {\n if (response.error) {\n console.log(response.error);\n this.router.navigate(['/home']);\n } else {\n this.formatNumber.setCurrency(response.data.currency);\n this.formatNumber.setUnits(response.data.metric_system);\n // this.formatNumber.setCurrentLocale(response.data.currency);\n this.dataService.shareDataAllParams = response.all_params;\n this.dataService.shareData = response;\n\n this.simulation = response.simulation;\n this.dataService.venueData = response.venue;\n this.dataService.shareDataSubject.next();\n console.log(this.shareSimulationKey);\n this.dataService.currentSimulationId = this.simulation.id;\n this.dataService.simulationData = this.simulation;\n this.dataService.setCurrentSimulation$(this.simulation);\n // this.configurationSubject.next(this.simulation['configuration']);\n this.configurationSubject.next(response);\n this.dataService.currentConfigurationId = this.simulation['configuration'].id;\n this.dataService.setCurrentVenue$(this.simulation['configuration']['venueId']);\n this.dvmService.restartDVM(this.simulation['configuration']['venue_code'], this.simulation['configuration']['map_id']);\n this.dvmService.isConfiguration = false;\n this.dvmService.isSimulation = true;\n this.dataService.inputHash = {};\n const socialDistancingConfig = {\n securityDistance: this.simulation.social_distancing,\n isleSeats: this.simulation.isle_seats,\n parameters: this.simulation.parameters\n };\n this.socialDistancing.setSocialDistancingConfig(socialDistancingConfig);\n this.dataService.configCategories = response.categories;\n }\n }\n );\n }\n\n}\n","
\n \n \n\n \n
\n \n \n
\n
\n \"loading\"\n
100%
\n
\n
","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ShareSimulationComponent } from './share-simulation.component';\nimport { TopbarComponent } from '../interface/topbar/topbar.component';\nimport { SidebarComponent } from '../interface/sidebar/sidebar.component';\nimport { MapInterfaceComponent } from '../interface/map-interface/map-interface.component';\nimport { FooterComponent } from '../interface/footer/footer.component';\nimport { FormsModule } from '@angular/forms';\nimport { AlertModule } from 'ngx-bootstrap/alert';\nimport { DVM_CONFIG, DVMConfig } from 'src/assets/configuration/digitalvenue.configuration';\nimport { InterfaceModule } from '../interface/interface.module';\n\n\n\n@NgModule({\n declarations: [\n ShareSimulationComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n InterfaceModule,\n AlertModule.forRoot()\n ],\n exports: [\n ],\n providers: [\n {provide: DVM_CONFIG, useValue: DVMConfig},\n ]\n})\nexport class ShareSimulationModule { }\n","import {AfterViewInit, Component, ElementRef, Input, OnInit, ViewChild} from '@angular/core';\nimport {Observable, Subscriber} from 'rxjs';\n\n@Component({\n selector: 'app-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss']\n})\nexport class ButtonComponent implements OnInit, AfterViewInit {\n\n @Input() name = 'btn-name';\n @Input() disabled = true;\n\n @ViewChild('button') button!: ElementRef;\n\n public readonly observableClick: Observable;\n protected subscriberClick: Subscriber | null = null;\n\n constructor() {\n this.observableClick = new Observable((subscriber) => {\n this.subscriberClick = subscriber;\n });\n }\n\n ngOnInit(): void { }\n\n ngAfterViewInit(): void {\n const button = this.button.nativeElement as HTMLButtonElement;\n button.addEventListener('click', (event) => {\n if (this.subscriberClick) {\n this.subscriberClick.next(event);\n }\n });\n\n }\n\n reset(): void {\n this.disabled = true;\n }\n}\n","\n","import {AfterViewInit, Component, OnInit} from '@angular/core';\nimport {ButtonComponent} from '../button/button.component';\n\n@Component({\n selector: 'app-downloadbutton',\n templateUrl: './downloadbutton.component.html',\n styleUrls: ['../button/button.component.scss', './downloadbutton.component.scss']\n})\nexport class DownloadbuttonComponent extends ButtonComponent implements OnInit, AfterViewInit {\n\n private file: Blob | null = null;\n private filename: string | null = null;\n constructor() {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n this.observableClick.subscribe((event) => {\n this.triggerDownload();\n });\n }\n\n reset(): void {\n super.reset();\n this.clearFile();\n }\n\n hasFile(): boolean {\n return this.file != null && this.filename != null;\n }\n\n setFile(file: Blob, filename: string): void {\n this.file = file;\n this.filename = filename;\n }\n\n clearFile(): void {\n this.file = null;\n this.filename = null;\n this.disabled = true;\n }\n\n triggerDownload(): void {\n if (this.file && this.filename) {\n const a = document.createElement('a');\n a.href = URL.createObjectURL(this.file);\n a.download = this.filename;\n a.click();\n }\n }\n}\n","\n","import {AfterViewInit, Component, ElementRef, OnInit, ViewChild} from '@angular/core';\nimport {Observable, Subscriber} from 'rxjs';\nimport {ButtonComponent} from '../button/button.component';\n\n@Component({\n selector: 'app-uploadbutton',\n templateUrl: './uploadbutton.component.html',\n styleUrls: ['../button/button.component.scss', './uploadbutton.component.scss']\n})\nexport class UploadbuttonComponent extends ButtonComponent implements OnInit, AfterViewInit {\n\n public readonly observableChange: Observable;\n protected subscriberChange: Subscriber | null = null;\n\n protected inputFile: HTMLInputElement;\n public filename = '';\n public fileExtension = '';\n\n @ViewChild('uploadFileDiv') uploadFileDiv!: ElementRef;\n @ViewChild('removeFileDiv') removeFileDiv!: ElementRef;\n\n constructor() {\n super();\n this.inputFile = document.createElement('input');\n this.inputFile.type = 'file';\n this.inputFile.style.display = 'none';\n\n this.observableChange = new Observable((subscriber) => {\n this.subscriberChange = subscriber;\n });\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n this.inputFile.addEventListener('change', (event ) => {\n if (this.subscriberChange) {\n this.subscriberChange.next(event);\n }\n });\n\n this.observableClick.subscribe((event) => {\n this.inputFile.value = '';\n this.inputFile.click();\n });\n\n this.inputFile.addEventListener('input', (event) => {\n const file = this.getFile();\n if (file) {\n const split = file.name.split('.');\n if (split.length > 1) {\n const extension = split.splice(split.length - 1, 1)[0];\n this.filename = split.join('.');\n this.fileExtension = extension;\n } else {\n this.filename = file.name;\n this.fileExtension = '';\n }\n this.showRemoveFile();\n }\n });\n\n // this.inputFile.addEventListener(\"change\", (event) => {\n // console.log(\"CHANGE FILE\");\n // });\n }\n\n reset(): void {\n super.reset();\n this.removeFile();\n }\n\n removeFile(): void {\n this.showUploadFile();\n this.filename = '';\n this.fileExtension = '';\n this.inputFile.value = '';\n }\n\n hasFile(): boolean {\n return this.inputFile.files != null && this.inputFile.files.length > 0;\n }\n\n getFile(index = 0): File | null {\n return this.inputFile.files?.item(index) ?? null;\n }\n getFileRaw(): FileList | null {\n return this.inputFile.files ?? null;\n }\n private showUploadFile() {\n this.uploadFileDiv.nativeElement.classList.remove('d-none');\n this.removeFileDiv.nativeElement.classList.add('d-none');\n }\n\n private showRemoveFile() {\n this.uploadFileDiv.nativeElement.classList.add('d-none');\n this.removeFileDiv.nativeElement.classList.remove('d-none');\n }\n\n}\n","
\n
\n \n
\n
\n {{filename}}.{{fileExtension}}\n \n
\n
\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpRequest, HttpHandler } from '@angular/common/http';\nimport { environment } from 'src/environments/environment';\n\n@Injectable()\nexport class AddApiUrlInterceptor implements HttpInterceptor {\n\n constructor() {}\n\n intercept(req: HttpRequest, next: HttpHandler) {\n const finalReq = req.url.startsWith('http') || req.url.includes('/assets/') ? req :\n req.clone({ url: `${environment.apiUrl}${req.url}`});\n return next.handle(finalReq);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpErrorResponse, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { catchError } from 'rxjs/operators';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n\n constructor(private router: Router) {}\n\n private handleAuthError(error: HttpErrorResponse): Observable {\n console.log(\"enteoooo\")\n if (error.status === 403) {\n if (this.router.url !== '/login' ) {\n this.router.navigate(['']);\n }\n }\n\n return throwError(error);\n }\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(request).pipe(catchError(x => this.handleAuthError(x)));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';\nimport { AuthenticationService } from 'src/app/auth';\nimport { Observable } from 'rxjs';\n\n\n@Injectable()\nexport class HttpCsrfInterceptor implements HttpInterceptor {\n\n constructor(private auth: AuthenticationService) {}\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n const headerName = '';\n let token;\n if (localStorage.getItem('token') !== null) {\n token = JSON.parse(localStorage.getItem('token'));\n if (token.token !== null && !req.headers.has(headerName)) {\n // console.log(req)\n if(req.url!=\"https://s3.eu-central-1.amazonaws.com/test-dev.sdm.staticresources.pre-3ddvapi.com/nam-us-10177-royals/scv/view_4/seating.json\"){\n req = req.clone({\n setHeaders: {\n Authorization: `Bearer ${token.token}`\n }\n });\n }\n }\n }\n return next.handle(req);\n }\n}\n","import { Component, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { CategoriesService } from 'src/app/social-distance-editor/services/categories.service';\nimport { InventoryService } from 'src/app/social-distance-editor/services/inventory.service';\nimport { FormatNumberService } from 'src/app/social-distance-editor/services/format-number.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-category-price-modal',\n templateUrl: './category-price-modal.component.html',\n styleUrls: ['./category-price-modal.component.scss']\n})\nexport class CategoryPriceModalComponent implements OnInit, OnDestroy {\n\n private subscriptions: Subscription[] = [];\n\n // tslint:disable-next-line: variable-name\n clientData;\n categoriesList: any;\n categoriesHash = {};\n totalsHash = {};\n totalsAvailableHash = {};\n categories: Array = [];\n configId: number;\n configuration;\n totalSections: number;\n totalSectionsString: string;\n totalSeats: number;\n totalSeatsAvailable: number;\n totalSeatsString: string;\n totalSeatsAvailableString: string;\n totalRevenue: number;\n totalRevenueAvailable: number;\n totalRevenueString: string;\n totalRevenueAvailableString: string;\n currentVenue: number;\n currency;\n currencySymbol;\n simulation;\n isSimulation;\n\n get units() {\n if (this.dataService.getUser()) {\n return this.dataService.getUnits(this.dataService.getUser().user.client.metric_system);\n }\n }\n\n constructor(private inventory: InventoryService,\n private dataService: DataService,\n private categoryService: CategoriesService,\n private bsModalRef: BsModalRef,\n private modalService: BsModalService,\n private numberFormatService: FormatNumberService) { }\n\n ngOnInit(): void {\n // this.formatPrice(0).split('0').forEach(\n // c => {\n // if (c && c !== '.') {\n // this.currencySymbol = c;\n // }\n // }\n // );\n console.log(this.simulation);\n if (!this.isSimulation) {\n this.configuration = this.dataService.getConfig(this.configId).subscribe(\n (response: any) => {\n this.currentVenue = response.venueId;\n }\n );\n } else {\n this.currentVenue = this.simulation.configuration.venueId;\n }\n\n // this.clientData = this.dataService.getUser().user;\n if (this.dataService.currentShareKey) {\n if (this.dataService.shareData) {\n this.currencySymbol = this.dataService.shareData.data.currency;\n this.clientData = {\n client: this.dataService.shareData.data\n };\n } else {\n this.dataService.shareDataSubject.subscribe(\n response => {\n this.currencySymbol = this.dataService.shareData.data.currency;\n this.clientData = {\n client: this.dataService.shareData.data\n };\n }\n );\n }\n } else {\n this.currencySymbol = this.dataService.getUser().user.client.currency;\n this.clientData = this.dataService.getUser().user;\n }\n this.categoriesList = this.categoryService.getCategoriesList();\n this.categoriesList.forEach(category => {\n this.categoriesHash[category.group] = category;\n });\n this.subscriptions.push(this.categoryService.getCategorySubject().subscribe(\n response => {\n this.inventory.updateTotalsHash();\n this.totalsHash = this.inventory.getTotalsHash();\n this.totalsAvailableHash = this.inventory.totalsAvailableHash;\n this.checkCategories();\n }\n ));\n }\n\n get venueData() {\n if (this.dataService.venueData) {\n if (this.dataService.venueData[this.currentVenue] !== undefined) {\n return this.dataService.venueData[this.currentVenue];\n } else {\n // console.error('Venue undefined!');\n return null;\n }\n }\n }\n\n private checkCategories(): void {\n this.categories = [];\n const categoriesCountHash = {};\n if (Object.keys(this.totalsHash).length === 0) {\n for (const c of this.categoriesList) {\n const category = { name: c.name, nseats: 0, revenue_total: 0, unit_price: 0};\n this.categories.push(category);\n }\n } else {\n for (const c in this.totalsHash) {\n if (this.totalsHash[c]) {\n for (const p in this.totalsHash[c]) {\n if (this.totalsHash[c][p]) {\n let name;\n if (c === 'none') {\n name = 'Uncategorized';\n } else {\n name = this.categoriesHash[c].name;\n }\n if (categoriesCountHash[name]) {\n categoriesCountHash[name]++;\n name = name + ' ' + categoriesCountHash[name];\n } else {\n categoriesCountHash[name] = 1;\n }\n let category;\n let totalsAvailable = 0;\n if (this.totalsAvailableHash[c] && this.totalsAvailableHash[c][p]) {\n totalsAvailable = this.totalsAvailableHash[c][p].seats;\n }\n if (!p || !parseFloat(p)) {\n category = {name,\n nsections: this.totalsHash[c][p].sections,\n nseats: this.totalsHash[c][p].seats,\n nseats_available: totalsAvailable,\n nsections_string: this.formatPrice(this.totalsHash[c][p].sections),\n nseats_string: this.formatPrice(this.totalsHash[c][p].seats),\n nseats_available_string: this.formatPrice(totalsAvailable),\n revenue_total: '-', unit_price: '-',\n revenue_total_string: '-',\n group: this.categoriesHash[c].group\n };\n } else {\n category = {name,\n nsections: this.totalsHash[c][p].sections,\n nseats: this.totalsHash[c][p].seats,\n nseats_available: totalsAvailable,\n nsections_string: this.formatPrice(this.totalsHash[c][p].sections),\n nseats_string: this.formatPrice(this.totalsHash[c][p].seats),\n nseats_available_string: this.formatPrice(totalsAvailable),\n revenue_total: this.totalsHash[c][p].seats * parseFloat(p), unit_price: this.formatPrice(p),\n revenue_total_available: totalsAvailable * parseFloat(p),\n revenue_total_string: this.formatPrice(this.totalsHash[c][p].seats * parseFloat(p)),\n revenue_total_available_string: this.formatPrice(totalsAvailable * parseFloat(p)),\n group: this.categoriesHash[c].group\n };\n }\n this.categories.push(category);\n }\n }\n }\n }\n }\n this.sumCategoriesTotal();\n\n }\n\n private sumCategoriesTotal(): void {\n this.totalSections = 0;\n this.totalSeats = 0;\n this.totalSeatsAvailable = 0;\n this.totalRevenue = 0;\n this.totalRevenueAvailable = 0;\n for (const c of Object.values(this.categories)) {\n if (c && parseInt(c['nsections'], 10)) {\n this.totalSections += parseInt(c['nsections'], 10);\n }\n if (c && parseInt(c['nseats'], 10)) {\n this.totalSeats += parseInt(c['nseats'], 10);\n }\n if (c && parseInt(c['nseats_available'], 10)) {\n this.totalSeatsAvailable += parseInt(c['nseats_available'], 10);\n }\n if (c && parseInt(c['revenue_total'], 10)) {\n this.totalRevenue += parseFloat(c['revenue_total']);\n }\n if (c && parseInt(c['revenue_total_available'], 10)) {\n this.totalRevenueAvailable += parseFloat(c['revenue_total_available']);\n }\n }\n this.totalSectionsString = this.formatPrice(this.totalSections);\n this.totalSeatsString = this.formatPrice(this.totalSeats);\n this.totalSeatsAvailableString = this.formatPrice(this.totalSeatsAvailable);\n this.totalRevenueString = this.formatPrice(this.totalRevenue);\n this.totalRevenueAvailableString = this.formatPrice(this.totalRevenueAvailable);\n }\n\n public onDismiss(): void {\n this.bsModalRef.hide();\n }\n\n formatPrice(price) {\n return this.numberFormatService.formatNumber(price);\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n}\n","
\n \n \n \n
","import { ReturnStatement } from '@angular/compiler';\nimport { Component, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { ToastrService } from 'ngx-toastr';\nimport { userInfo } from 'os';\nimport { AuthenticationService } from 'src/app/auth';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\n\n@Component({\n selector: 'app-change-password-modal',\n templateUrl: './change-password-modal.component.html',\n styleUrls: ['./change-password-modal.component.scss']\n})\n\n\nexport class ChangePasswordModalComponent implements OnInit {\n\n _passdata = {\n current: '',\n password: '',\n repeatpass: '',\n errorrepeat : \"\",\n errorcurrent : \"\"\n\n };\n \n\n constructor(private bsModalRef: BsModalRef,\n private dataService: DataService,\n private authService: AuthenticationService,\n private toastr: ToastrService) { }\n\n ngOnInit(): void {\n this._passdata.errorcurrent = \"\";\n this._passdata.errorrepeat = \"\";\n }\n\n\n public onDismiss() {\n this.bsModalRef.hide();\n }\n\n public onSubmit(): void {\n this.cleanallerrors();\n if(this._passdata.password!=this._passdata.repeatpass){\n this._passdata.errorrepeat = 'Passwords not matching';\n this._passdata.errorcurrent = \"\";\n return;\n }\n\n this.dataService.updatepassword(this._passdata.current,this._passdata.password).subscribe(\n response => {\n this.toastr.success(\"\",\"Password updated\");\n this.onDismiss();\n },\n error => {\n this._passdata.errorrepeat = \"\";\n this._passdata.errorcurrent = error.error.error;\n }\n );\n }\n\n\n public cleanallerrors(){\n this._passdata.errorrepeat = \"\";\n this._passdata.errorcurrent = \"\";\n }\n}\n","
\n \n \n \n
","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\nimport { FormatNumberService } from 'src/app/social-distance-editor/services/format-number.service';\nimport { DVMService } from 'src/app/social-distance-editor/services/dvm.service';\nimport { Router } from '@angular/router';\nimport {SocialdistancingService} from \"../../../services/socialdistancing.service\";\nimport {from} from \"rxjs\";\nimport { InventoryService } from 'src/app/social-distance-editor/services/inventory.service';\nimport { TiersService,Itotaltiers } from 'src/app/social-distance-editor/services/tiers.service';\nimport { take } from 'rxjs/operators';\nimport {PlatformLocation} from \"@angular/common\";\n\n@Component({\n selector: 'app-compute-results-modal',\n templateUrl: './compute-results-modal.component.html',\n styleUrls: ['./compute-results-modal.component.scss']\n})\nexport class ComputeResultsModalComponent implements OnInit {\n\n page;\n simulation;\n simAvailabilityPercentage;\n simAvailabilotyPercentageFromConfig;\n paginatedSimulationParameters = [];\n paginatedCustomParameters = [];\n nlocked: number;\n paramsHash = {};\n paramsList = [];\n totalAisleSeats = 10;\n customGroupsHashed;\n customGroups = false;\n customNGroupsKeys;\n totalCustomSeats;\n customAvailabilityPercentage;\n customConfigAvailabilityPercentage;\n customGroupsData = [];\n configuration;\n hiddenReason: string;\n\n get units() {\n if (this.dataService.getUser()) {\n return this.dataService.getUnits(this.dataService.getUser().user.client.metric_system);\n }\n }\n\n get availability() {\n return this.simAvailabilityPercentage;\n }\n\n get configAvailabilityPercent(){\n return this.simAvailabilotyPercentageFromConfig;\n }\n get venueName() {\n if (this.simulation) {\n return this.dataService.venueData[this.simulation.configuration.venueId].name;\n }\n }\n\n constructor(private bsModalRef: BsModalRef,\n private modalService: BsModalService,\n private dataService: DataService,\n private numberFormatService: FormatNumberService,\n private dvmService: DVMService,\n private router: Router,\n private socialdistancingService: SocialdistancingService,\n private inventoryService: InventoryService,\n private tiersService: TiersService,\n private location: PlatformLocation) {\n this.location.onPopState(()=> {\n this.onDismiss();\n });\n }\n\n ngOnInit(): void {\n if (this.page === 'shared') {\n this.setAllParams(this.dataService.shareDataAllParams)\n this.getSimulationShared();\n \n } else {\n //console.log(\"Data Service on compute results modal component\", this.dataService);\n this.setAllParams(this.dataService.listParams.params);\n this.getSimulation();\n }\n }\n \n\n paginateSimulationParameters() {\n \n const sp = JSON.parse(JSON.stringify(this.simulation.parameters));\n\n let automated_totalseats = 0;\n\n this.customGroups = false;\n for(let i=0;i (a.parameter.nseats > b.parameter.nseats) ? 1 : -1);\n if (sp.length > 4) {\n const half = Math.ceil(sp.length / 2);\n this.paginatedSimulationParameters[0] = sp.splice(0, half);\n this.paginatedSimulationParameters[1] = sp;\n } else {\n this.paginatedSimulationParameters[0] = sp;\n this.paginatedSimulationParameters[1] = [];\n }\n // calcula el procentaje de grupos en base a la capacidad de la configuracion\n // this.addAvailabilityPercentageFromTotalConfig();\n\n // console.log( (this.paginatedSimulationParameters[0][2].percentage*100).toFixed(0));\n }\n private addAvailabilityPercentageFromTotalConfig(){\n const config_capacity = this.simulation.configuration.capacity;\n for(let i = 0;i< this.paginatedSimulationParameters.length;i++){\n for (let j = 0;j{\n this.nlocked = res.locked;\n this.customConfigAvailabilityPercentage = (100 * av / (this.simulation.configuration.capacity-this.nlocked)).toFixed(2);\n this.simAvailabilotyPercentageFromConfig = (100 * this.simulation.capacity / (this.simulation.configuration.capacity - this.nlocked)).toFixed(2);\n })\n this.simAvailabilityPercentage = (100 * this.simulation.capacity / this.simulation.configuration.capacity).toFixed(2);\n console.log(this.simulation);\n }\n\n\n private customParameters(){\n \n this.totalCustomSeats = Object.keys(this.customGroupsHashed).reduce((sum,key)=>sum+ (parseFloat(this.customGroupsHashed[key])),0);\n\n for(let grouptype in this.customGroupsHashed){\n let name = '';\n if(grouptype === '1'){\n name = 'Single Seats';\n }else if(grouptype === '2'){\n name = 'Pairs';\n }else{\n name = 'Groups Of '+grouptype+' Seats';\n }\n this.customGroupsData.push({\n group_size:grouptype,\n available_seats: this.customGroupsHashed[grouptype],\n name:name,\n ngroups: this.customGroupsHashed[grouptype]/parseInt(grouptype),\n percentage: ( 100 * this.customGroupsHashed[grouptype] / parseInt(this.totalCustomSeats) ).toFixed(2)\n });\n }\n\n this.customGroupsData.sort((a, b) => (parseInt(a.group_size) > parseInt(b.group_size)) ? 1 : -1);\n const half = Math.ceil(this.customGroupsData.length / 2);\n\n this.paginatedCustomParameters[0] = this.customGroupsData.splice(0,half);\n this.paginatedCustomParameters[1] = this.customGroupsData;\n \n }\n\n private setAllParams(params){\n this.paramsList = [];\n for(let i =0;i {\n return this.socialdistancingService.updateMapEdges(this.dvmService.viewer, simulation.isle_seats).subscribe(\n () => {\n this.simulation = simulation;\n //console.log(simulation);\n this.totalAisleSeats = this.socialdistancingService.killedEdges.size;\n let sum = 0;\n //this.simulation.capacity = 0;\n let simparams = [];\n this.simulation.parameters.forEach(parameter => {\n if (parameter.percentage) {\n sum += parseFloat(parameter.percentage);\n/* if (parameter.computed_nseats){\n this.simulation.capacity += parameter.computed_nseats;\n } */\n simparams.push(parameter.parameter.id);\n }\n });\n this.dataService.simulationData = this.simulation;\n this.dataService.setCurrentSimulation$(this.simulation);\n this.socialdistancingService.calculationFinishedsubject.next();\n this.inventoryService.availabilityLoadedSubject.next();\n //console.log(simparams, sum);\n this.addAllParams(simparams,sum);\n\n\n const maps = [];\n if (this.configuration.tier_list.length) {\n this.configuration.tier_list.forEach(level => {\n maps.push(level.map_id);\n });\n }\n //console.log(this.dataService.simulationData);\n if(this.dataService.simulationData.subsimulations.length>0 || this.dataService.simulationData.custom_groups && \"dirty\" in this.dataService.simulationData.custom_groups){\n if(this.dataService.simulationData.custom_groups?.dirty===true || this.dataService.simulationData.subsimulations.length>0){\n \n //jonpovi magick skill\n const observable = from(this.socialdistancingService.getGroups(this.dvmService.viewer,maps));\n let o = observable.subscribe(result=>{\n o.unsubscribe()\n let u = this.updateCustomGroups(result).subscribe(result=>{\n u.unsubscribe();\n this.dataService.simulationData = this.dataService.simulationData;\n this.dataService.setCurrentSimulation$(this.dataService.simulationData);\n });\n this.customGroupsHashed = result;\n this.customNGroupsKeys = Object.keys(this.customGroupsHashed);\n this.customParameters();\n this.paginateSimulationParameters();\n this.getAvailabilityPercentage();\n this.endloading();\n });\n }else{\n\n this.customGroupsHashed = this.dataService.simulationData.custom_groups.groups;\n this.customNGroupsKeys = Object.keys(this.customGroupsHashed);\n this.customParameters();\n this.paginateSimulationParameters();\n this.getAvailabilityPercentage();\n this.endloading();\n \n \n }\n }else{\n\n this.paginateSimulationParameters();\n this.getAvailabilityPercentage();\n this.endloading();\n }\n }\n );\n }\n );\n\n }\n\n private sumObjectKeys(obj){\n return Object.keys(obj).reduce((sum,key)=>sum+ (parseFloat(obj[key])),0);\n\n }\n\n private updateCustomGroups(json){\n //this.totalCustomSeats = Object.keys(this.customGroupsHashed).reduce((sum,key)=>sum+ (parseFloat(this.customGroupsHashed[key])),0);\n let patch_sim = {\n custom_groups : {\n dirty : false,\n groups: json,\n //capacity: this.sumObjectKeys(json)\n }\n }\n //if(patch_sim.custom_groups.capacity!=this.simulation.capacity){\n patch_sim['capacity'] = this.sumObjectKeys(json);\n //}\n this.simulation.custom_groups = patch_sim.custom_groups;\n return this.dataService.editSimulation(this.simulation.id,patch_sim);\n }\n\n private endloading(){\n document.getElementById(\"loading-modal\").classList.add(\"d-none\");\n document.getElementById(\"step-content\").classList.remove(\"d-none\");\n return null;\n }\n\n /**\n * Get simulation when it's a shared view\n */\n private getSimulationShared(): void {\n const data = this.dataService.shareData;\n let sum = 0;\n this.simulation = data.simulation;\n this.simulation.parameters = data.parameters;\n this.simulation.capacity = 0;\n let simparams = [];\n data.parameters.forEach(parameter => {\n if (parameter.percentage) {\n sum += parseFloat(parameter.percentage);\n if (parameter.computed_nseats){\n this.simulation.capacity += parameter.computed_nseats;\n }\n simparams.push(parameter.parameter.id);\n }\n });\n\n this.addAllParams(simparams,sum);\n\n const maps = [];\n if (this.configuration.tier_list) {\n this.configuration.tier_list.forEach(level => {\n maps.push(level.map_id);\n });\n }\n //jonpovi magick skill\n const observable = from(this.socialdistancingService.getGroups(this.dvmService.viewer,maps));\n let o = observable.subscribe(result=>{\n o.unsubscribe();\n this.customGroupsHashed = result;\n this.customNGroupsKeys = Object.keys(this.customGroupsHashed);\n this.customParameters();\n this.paginateSimulationParameters();\n this.getAvailabilityPercentage();\n this.endloading()\n });\n\n //\n \n }\n\n \n private addAllParams(simparams,sum){\n // tslint:disable-next-line: prefer-for-of\n for (let i = 0; i < this.paramsList.length; i++){\n if(simparams.indexOf(this.paramsList[i].id) === -1 && this.paramsList[i].nseats > 0 && this.paramsList[i].editable===true){\n // tslint:disable-next-line: variable-name\n let default_param = {\n percentage: 0,\n computed_nseats: 0,\n computed_percentage: 0,\n nseats_percentage: 0,\n parameter : {},\n };\n default_param.parameter = this.paramsList[i];\n let already_added = false;\n for(let j =0;j {\n if (parameter.parameter.id === 3) {\n parameter.percentage = '1';\n }\n });\n }\n return true;\n }\n public onDismiss() {\n this.hiddenReason = 'close';\n this.bsModalRef.hide();\n }\n public closeToEdit(){\n this.hiddenReason = 'closetoedit';\n this.bsModalRef.hide();\n }\n\n public formatSocialDistancing(num: number): number {\n\n if (num) {\n return Number(this.numberFormatService.formatSocialDistancing(num));\n } else {\n return 0;\n }\n }\n\n public formatNumber(price: number): string {\n return this.numberFormatService.formatNumber(price);\n }\n\n}\n","","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\nimport { FormatNumberService } from 'src/app/social-distance-editor/services/format-number.service';\nimport { DVMService } from 'src/app/social-distance-editor/services/dvm.service';\nimport { Router } from '@angular/router';\nimport {SocialdistancingService} from \"../../../services/socialdistancing.service\";\nimport {ComputedseatsService} from \"../../../services/computedseats.service\";\nimport {from} from \"rxjs\";\nimport { TiersService } from 'src/app/social-distance-editor/services/tiers.service';\nimport { take } from 'rxjs/operators';\nimport {PlatformLocation} from \"@angular/common\";\n\n@Component({\n selector: 'app-compute-sectionresults-modal',\n templateUrl: './compute-sectionresults-modal.component.html',\n styleUrls: ['./compute-sectionresults-modal.component.scss']\n})\nexport class ComputeSectionResultsModalComponent implements OnInit {\n\n page;\n simulation;\n simAvailabilityPercentage;\n paginatedSimulationParameters = [];\n paginatedCustomParameters = [];\n nlocked;\n paramsHash = {};\n paramsList = [];\n totalAisleSeats = 10;\n customGroupsHashed;\n customGroups = false;\n customNGroupsKeys;\n totalCustomSeats;\n customAvailabilityPercentage;\n customGroupsData = [];\n configuration;\n subsimulation;\n default_subsim_flag = false;\n sections_selected_value = \"\";\n subsimcapacity = 0;\n selection_capacity = 0;\n simulationcapacity;\n sdParentNodes;\n\n affectedSectionParams = [];\n modalData = {\n social_distancing : 0,\n aisle_seats : \"\",\n limit2groups: \"\",\n fallback: \"\",\n parameters : []\n };\n\n affectedSubsims = [];\n subscriptions = [];\n\n hiddenReason;\n get units() {\n if (this.dataService.getUser()) {\n return this.dataService.getUnits(this.dataService.getUser().user.client.metric_system);\n }\n }\n\n get availability() {\n return this.simAvailabilityPercentage;\n }\n\n get venueName() {\n if (this.simulation) {\n return this.dataService.venueData[this.simulation.configuration.venueId].name;\n }\n }\n\n constructor(private bsModalRef: BsModalRef,\n private modalService: BsModalService,\n private dataService: DataService,\n private numberFormatService: FormatNumberService,\n private dvmService: DVMService,\n private router: Router,\n private computedseatsService: ComputedseatsService,\n private socialdistancingService: SocialdistancingService,\n private tiersService: TiersService,\n private location: PlatformLocation) {\n this.location.onPopState(()=> {\n this.onDismiss();\n });\n }\n\n ngOnInit(): void {\n if (this.page === 'shared') {\n this.getSimulationShared();\n \n } else {\n this.getSimulation();\n }\n }\n \n paginateSimulationParameters(){\n const sp = JSON.parse(JSON.stringify(this.modalData.parameters));\n sp.sort((a, b) => (a.nseats > b.nseats) ? 1 : -1);\n\n if (sp.length > 4) {\n const half = Math.ceil(sp.length / 2);\n this.paginatedSimulationParameters[0] = sp.splice(0, half);\n this.paginatedSimulationParameters[1] = sp;\n } else {\n this.paginatedSimulationParameters[0] = sp;\n this.paginatedSimulationParameters[1] = [];\n }\n }\n\n private resetModalData(){\n this.modalData = {\n social_distancing : 0,\n aisle_seats : \"\",\n limit2groups: \"\",\n fallback: \"\",\n parameters : []\n };\n }\n private refreshsimulationcapacity(){\n if(this.simulation.custom_groups && this.simulation.custom_groups.capacity){\n this.simulationcapacity = this.simulation.custom_groups.capacity;\n }else{\n this.simulationcapacity = this.simulation.capacity;\n }\n }\n private getAvailabilityPercentage(){\n //let av = this.dvmService.viewer.getNodesByState('seat', 'available').length;\n this.nlocked = this.dvmService.getLockedseats().length;\n this.tiersService.getTotalTiersAV().pipe(\n take(1)\n ).subscribe(res=>{\n this.nlocked = res.locked;\n })\n //this.simAvailabilityPercentage = (100 * this.simulation.capacity / this.simulation.configuration.capacity).toFixed(2);\n \n const totalSeats = this.simulation.configuration.capacity;\n this.refreshsimulationcapacity();\n this.simAvailabilityPercentage = (100 * this.simulationcapacity / totalSeats).toFixed(2);\n\n //this.customAvailabilityPercentage = (100 * av / this.simulation.configuration.capacity).toFixed(2);\n\n }\n\n private getSimulation(): any {\n return this.dataService.getSimulationParameters(this.dataService.currentSimulationId).subscribe(\n simulation => {\n return this.socialdistancingService.updateMapEdges(this.dvmService.viewer, simulation.isle_seats).subscribe(\n () => {\n this.simulation = simulation;\n this.refreshsimulationcapacity();\n\n //this.simulation.capacity = this.dvmService.viewer.getNodesByState(\"seat\",\"available\");\n this.totalAisleSeats = this.socialdistancingService.killedEdges.size;\n\n if (this.sdParentNodes.length>0){\n this.sdParentNodes = this.sdParentNodes.map(x => x.id);\n this.affectedSubsims = this.getAffetedSubsims(this.simulation.subsimulations,this.sdParentNodes);\n for(let i = 0; i0){\n this.setModalData();\n }\n\n if(this.dataService.simulationData.custom_groups?.dirty===true || this.dataService.simulationData.subsimulations.length>0){\n const maps = [];\n console.log(this.simulation.configuration);\n if (this.simulation.configuration.tier_list.length) {\n this.simulation.configuration.tier_list.forEach(level => {\n maps.push(level.map_id);\n });\n }\n //jonpovi magick skill\n const observable = from(this.socialdistancingService.getGroups(this.dvmService.viewer,maps));\n let o = observable.subscribe(result=>{\n o.unsubscribe()\n let u = this.updateCustomGroups(result).subscribe(result=>{\n u.unsubscribe();\n return this.computedseatsService.getParams(this.simulation,this.sdParentNodes).then(result=>{\n this.dvmService.viewer.addNodesToGroup(this.sdParentNodes,\"selected\");\n //this.socialdistancingService.isSectionSocialDistancing = true;\n this.paginatedSimulationParameters = result;\n this.getAvailabilityPercentage();\n this.endloading();\n })\n });\n });\n }else{\n return this.computedseatsService.getParams(this.simulation,this.sdParentNodes).then(result=>{\n this.dvmService.viewer.addNodesToGroup(this.sdParentNodes,\"selected\");\n //this.socialdistancingService.isSectionSocialDistancing = true;\n this.paginatedSimulationParameters = result;\n this.getAvailabilityPercentage();\n this.endloading();\n })\n }\n }\n });\n }\n );\n\n }\n private sumObjectKeys(obj){\n return Object.keys(obj).reduce((sum,key)=>sum+ (parseFloat(obj[key])),0);\n\n }\n private updateCustomGroups(json){\n //this.totalCustomSeats = Object.keys(this.customGroupsHashed).reduce((sum,key)=>sum+ (parseFloat(this.customGroupsHashed[key])),0);\n let patch_sim = {\n custom_groups : {\n dirty : false,\n groups: json,\n //capacity: this.sumObjectKeys(json)\n }\n }\n //if(patch_sim.custom_groups.capacity!=this.simulation.capacity){\n patch_sim['capacity'] = this.sumObjectKeys(json);\n //}\n this.simulation.custom_groups = patch_sim.custom_groups;\n return this.dataService.editSimulation(this.simulation.id,patch_sim);\n }\n private setModalData(){\n this.resetModalData();\n let subsims_sd = [];\n let subsims_aisle = [];\n let subsims_limit2groups = [];\n let subsims_fallback = [];\n\n for(let i =0;i-1){\n affected_sims.push(subsims[i]);\n }\n }\n return affected_sims;\n }\n\n private endloading(){\n document.getElementById(\"loading-modal\").classList.add(\"d-none\");\n document.getElementById(\"step-content\").classList.remove(\"d-none\");\n return null;\n }\n\n /**\n * Get simulation when it's a shared view\n */\n private getSimulationShared(): any {\n const data = this.dataService.shareData;\n this.simulation = data.simulation;\n this.simulation.parameters = data.parameters;\n\n return this.computedseatsService.getParams(this.simulation,this.sdParentNodes).then(result=>{\n let nseats_key = Object.keys(result);\n this.affectedSectionParams = [];\n for(let i = 0;i subscription.unsubscribe());\n }\n\n\n public formatSocialDistancing(num: number): number {\n\n if (num) {\n return Number(this.numberFormatService.formatSocialDistancing(num));\n } else {\n return 0;\n }\n }\n\n public formatNumber(price: number): string {\n return this.numberFormatService.formatNumber(price);\n }\n\n}\n","","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\n\n@Component({\n selector: 'app-confirm-delete-config',\n templateUrl: './confirm-delete-config.component.html',\n styleUrls: ['./confirm-delete-config.component.scss']\n})\n\nexport class ConfirmDeleteConfigComponent implements OnInit {\n\n configuration;\n configSims;\n\n closeReason;\n constructor(private bsModalRef: BsModalRef,\n private dataService: DataService) { }\n\n ngOnInit(): void {\n console.log(this.configSims);\n console.log(this.configuration);\n }\n\n public onDismiss(reason: 'success' | 'cancel'): void {\n this.closeReason = reason;\n this.bsModalRef.hide();\n }\n\n public onConfirm(): void {\n \n const s = this.dataService.deleteConfiguration(this.configuration.id).subscribe(\n success => {\n s.unsubscribe();\n this.onDismiss('success');\n }\n );\n }\n\n}\n","
\n \n \n \n \n
","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\nimport { Simulation } from '../../models/simulation-data.model';\n\n@Component({\n selector: 'app-confirm-delete-simulation',\n templateUrl: './confirm-delete-simulation.component.html',\n styleUrls: ['./confirm-delete-simulation.component.scss']\n})\nexport class ConfirmDeleteSimulationComponent implements OnInit {\n simulation : Simulation;\n simulationId;\n closeReason;\n constructor(private bsModalRef: BsModalRef,\n private dataService: DataService) { }\n\n ngOnInit(): void {\n }\n\n public onClose(reason: 'success' | 'cancel'): void {\n this.closeReason = reason;\n this.bsModalRef.hide();\n }\n\n public onConfirm(): void {\n const s = this.dataService.deleteSimulation(this.simulationId).subscribe(\n success => {\n s.unsubscribe();\n this.onClose('success');\n }\n );\n }\n\n}\n","
\n \n \n \n \n
","import { Component, Inject, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { ToastrService } from 'ngx-toastr';\nimport { DVMService } from 'src/app/social-distance-editor/services/dvm.service';\nimport { ClickHandler } from 'src/app/social-distance-editor/services/handlers/click.handler';\nimport { InventoryService } from 'src/app/social-distance-editor/services/inventory.service';\n\n@Component({\n selector: 'app-confirm-edit-multi-seat',\n templateUrl: './confirm-edit-multi-seat.component.html',\n styleUrls: ['./confirm-edit-multi-seat.component.scss'],\n})\nexport class ConfirmEditMultiSeatComponent implements OnInit {\n closeReason: 'success' | 'cancel';\n affected_seats;\n max_seats;\n status_tochange;\n error;\n constructor(\n private bsModalRef: BsModalRef,\n private dvmservice: DVMService,\n private inventoryService: InventoryService,\n private toastr: ToastrService\n ) { }\n\n ngOnInit(): void {\n if(this.affected_seats.length){\n this.dvmservice.viewer.addNodesToGroup(this.affected_seats[0].id.split(\"-\")[0],\"selected\");\n this.dvmservice.viewer.addNodesToGroup(this.affected_seats,\"selected\");\n }\n }\n\n public onConfirm(): void {\n let control_dirty_action = 'remove';\n let update_inventory_status = null;\n let section_affected = this.affected_seats[0].id.split(\"-\")[0];\n\n let n_av = this.dvmservice.viewer.getNodesByState(\"seat\",\"available\",section_affected).length;\n if(this.status_tochange==='available'){\n control_dirty_action = 'add';\n update_inventory_status = 'available';\n if(n_av >0){\n this.dvmservice.viewer.setAvailable('section', section_affected);\n }\n this.dvmservice.viewer.setAvailable('seat', this.affected_seats);\n\n\n }else{\n if(!n_av){\n this.dvmservice.viewer.setUnavailable('section', section_affected);\n }else{\n this.dvmservice.viewer.setAvailable('section', section_affected);\n\n }\n this.dvmservice.viewer.setUnavailable('seat', this.affected_seats);\n }\n \n this.inventoryService.controlDirty(this.affected_seats,control_dirty_action);\n let toastrOpt = {\n msg : \"Availability and Seatmanifest data successfully updated\",\n timeOut: 4000\n }\n this.inventoryService.updateInventory(this.affected_seats,update_inventory_status,toastrOpt);\n\n this.onDismiss('success');\n }\n\n public onDismiss(reason: 'success' | 'cancel'): void {\n\n this.dvmservice.viewer.removeNodesFromGroup(this.dvmservice.viewer.getNodesByGroups('seat', 'selected'),\"selected\")\n this.dvmservice.viewer.removeNodesFromGroup(this.dvmservice.viewer.getNodesByGroups('section', 'selected'),\"selected\")\n this.closeReason = reason;\n this.bsModalRef.hide();\n }\n}\n","
\n \n \n \n \n
","import { Component, OnInit } from '@angular/core';\nimport { AuthenticationService } from 'src/app/auth';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Router } from '@angular/router';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\n\n\n@Component({\n selector: 'app-confirm-logout-modal',\n templateUrl: './confirm-logout-modal.component.html',\n styleUrls: ['./confirm-logout-modal.component.scss']\n})\n\nexport class ConfirmLogoutModalComponent implements OnInit {\n\n clientData;\n closeReason: 'success' | 'cancel';\n\n constructor(private authService: AuthenticationService,\n private bsModalRef: BsModalRef,\n private router: Router,\n private dataService: DataService) { }\n\n ngOnInit(): void {\n }\n\n public onConfirm(): void {\n const s = this.authService.logout().subscribe(\n response => {\n s.unsubscribe();\n if (localStorage.getItem('token') !== null) {\n localStorage.removeItem('token');\n }\n this.onDismiss('success');\n },\n error => {\n this.onDismiss('cancel');\n console.log(error);\n }\n );\n }\n\n public onDismiss(reason: 'success' | 'cancel'): void {\n this.closeReason = reason;\n this.bsModalRef.hide();\n }\n\n}\n","
\n \n \n \n \n
","import { Component, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\nimport { Form } from '@angular/forms';\nimport { Router } from '@angular/router';\n\nimport { SocialdistancingService } from 'src/app/social-distance-editor/services/socialdistancing.service';\nimport { InventoryService } from 'src/app/social-distance-editor/services/inventory.service';\nimport { CategoriesService } from 'src/app/social-distance-editor/services/categories.service';\nimport { FormatNumberService } from 'src/app/social-distance-editor/services/format-number.service';\nimport { ModalService } from 'src/app/social-distance-editor/services/modal.service';\nimport { Subscription } from 'rxjs';\nimport { Simulation } from '../../models/simulation-data.model';\nimport { ToastrService } from 'ngx-toastr';\n\n\n@Component({\n selector: 'app-copy-simulation-modal',\n templateUrl: './copy-simulation-modal.component.html',\n styleUrls: ['./copy-simulation-modal.component.scss']\n})\nexport class CopySimulationModalComponent implements OnInit {\n\n private subscriptions: Subscription[] = [];\n\n //on init data\n originalSimulation_id;\n originalSimulation;\n currentVenueId;\n currentVenue;\n originalCategories;\n configAvailability;\n simPercentAv;\n currentSDMValue;\n multiSDMValues;\n //groups percentages\n paramsHashed = {};\n paginatedSimulationParameters = [];\n simulation;\n paramsList = [];\n\n //form\n copySimulationName;\n\n //customgroups\n customGroups = false;\n customCapacity = 0;\n customCapacityPercent;\n //modal\n closeReason;\n constructor(private bsModalRef: BsModalRef,\n private dataService: DataService,\n private inventoryService: InventoryService,\n private categories: CategoriesService,\n private socialDistancingService: SocialdistancingService,\n private numberFormatService: FormatNumberService,\n private modalService: ModalService,\n private router: Router,\n private toastr: ToastrService,\n private cdr: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n this.currentVenue = this.dataService.venueData[this.currentVenueId];\n let p =this.dataService.getParameters().subscribe(\n result => {\n this.paramsList = result.params;\n this.getSimulation();\n });\n\n }\n\n paginateSimulationParameters() {\n let sp = [];\n if(!this.customGroups){\n sp = JSON.parse(JSON.stringify(this.originalSimulation.parameters));\n sp.sort((a, b) => (a.parameter.nseats > b.parameter.nseats) ? 1 : -1);\n }else{\n\n for (const group_size in this.originalSimulation.custom_groups.groups){\n let name = '';\n if(group_size === '1'){\n name = 'Single Seats';\n }else if(group_size === '2'){\n name = 'Pairs';\n }else{\n name = 'Groups Of '+group_size+' Seats';\n }\n let group = {\n name : name,\n group_size : group_size,\n ngroups : this.originalSimulation.custom_groups.groups[group_size]/parseInt(group_size),\n available_seats : this.originalSimulation.custom_groups.groups[group_size],\n percentage: ( 100 * this.originalSimulation.custom_groups.groups[group_size] / this.customCapacity ).toFixed(2)\n }\n sp.push(group);\n }\n sp.sort((a, b) => (parseInt(a.group_size) > parseInt(b.group_size)) ? 1 : -1);\n }\n\n if (sp.length > 4) {\n const half = Math.ceil(sp.length / 2);\n this.paginatedSimulationParameters[0] = sp.splice(0, half);\n this.paginatedSimulationParameters[1] = sp;\n } else {\n this.paginatedSimulationParameters[0] = sp;\n this.paginatedSimulationParameters[1] = [];\n }\n console.log(this.paginatedSimulationParameters);\n console.log(this.originalSimulation);\n }\n\n\n private getSimulation(): any {\n this.dataService.getSimulationParameters(this.originalSimulation_id).subscribe(\n simulation => {\n this.originalSimulation = simulation;\n this.configAvailability = this.originalSimulation.configuration.capacity-this.originalCategories.locked.total; \n this.simPercentAv = ((this.originalSimulation.capacity * 100) / this.configAvailability).toFixed(2);\n this.paramsHashed = {};\n let simparams = [];\n \n for (let i=0;i0){\n let default_param = {\n percentage: 0,\n computed_nseats: 0,\n computed_percentage: 0,\n parameter : {},\n }\n default_param.parameter = this.paramsList[i];\n this.originalSimulation.parameters.push(default_param);\n }\n }\n return true;\n }\n public onClose(reason : 'success' | 'cancel'): void {\n this.closeReason = reason;\n this.bsModalRef.hide();\n }\n\n public onSubmit(ngForm: Form): void {\n if (!this.isDisabled()) {\n const simulation: Simulation = {\n name: this.copySimulationName,\n capacity: this.originalSimulation.capacity,\n config_id: this.originalSimulation.configuration.id,\n social_distancing: this.originalSimulation.social_distancing,\n isle_seats: this.originalSimulation.social_distancing,\n custom_groups: JSON.stringify(this.originalSimulation.custom_groups),\n };\n const s = this.dataService.createSimulation(simulation).subscribe(\n response => {\n s.unsubscribe();\n const data = {\n original : this.originalSimulation.id,\n cloned : response.result.id\n };\n this.dataService.copySimulation(data).subscribe(\n subresponse => {\n s.unsubscribe();\n if(subresponse.message){\n this.onClose('success');\n //this.router.navigate(['/simulation/' + response.result.id]);\n this.toastr.success('', 'New simulation successfully saved');\n }\n }\n );\n }\n );\n }\n\n }\n\n get units() {\n if (this.dataService.getUser()) {\n return this.dataService.getUnits(this.dataService.getUser().user.client.metric_system);\n }\n }\n\n\n\n public isDisabled(): boolean {\n if(!this.copySimulationName){\n return true;\n }\n return false;\n }\n\n public formatNumber(price: number): string {\n return this.numberFormatService.formatNumber(price);\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n}\n","\n","import { Component, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';\nimport { BsModalRef, ModalOptions,BsModalService } from 'ngx-bootstrap/modal';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\nimport { Form } from '@angular/forms';\nimport { SocialdistancingService } from 'src/app/social-distance-editor/services/socialdistancing.service';\nimport { DVMService } from 'src/app/social-distance-editor/services/dvm.service';\nimport { InventoryService } from 'src/app/social-distance-editor/services/inventory.service';\nimport { CategoriesService } from 'src/app/social-distance-editor/services/categories.service';\nimport { FormatNumberService } from 'src/app/social-distance-editor/services/format-number.service';\nimport { SelectionService } from 'src/app/social-distance-editor/services/selection.service';\n\n//import { ModalService } from 'src/app/services/modal.service';\nimport { ComputeResultsModalComponent } from '../compute-results-modal/compute-results-modal.component';\nimport { ComputeSectionResultsModalComponent } from '../compute-sectionresults-modal/compute-sectionresults-modal.component';\nimport { Subscription } from 'rxjs';\nimport {ComputedseatsService} from \"../../../services/computedseats.service\";\nimport { AllocatorService } from 'src/app/social-distance-editor/plugins/allocator/services/allocator.service';\nimport { TiersService } from 'src/app/social-distance-editor/services/tiers.service';\nimport { take } from 'rxjs/operators';\nimport {PlatformLocation} from \"@angular/common\";\n\n\n@Component({\n selector: 'app-edit-sectionsimulation-modal',\n templateUrl: './edit-sectionsimulation-modal.component.html',\n styleUrls: ['./edit-sectionsimulation-modal.component.scss']\n})\nexport class EditSectionSimulationModalComponent implements OnInit, OnDestroy {\n\n private subscriptions: Subscription[] = [];\n\n simulationParameters: Array;\n paginatedSimulationParameters = [];\n simulation;\n\n subsimulation;\n default_subsim_flag = false;\n sections_selected_value = \"\";\n subsimcapacity = 0;\n selection_capacity = 0;\n\n inputHash: any;\n computedTotalsStringsHash = {};\n socialDistancing;\n totalPercentage: number;\n currentAvailability;\n aisleSeats = 0;\n nlocked;\n isViewInitialized = false;\n simulationName;\n nameInEdit;\n limit2groups;\n fallback = false;\n kill_start = true;\n kill_end = true;\n isSectionSocialDistancing = false;\n current_side_tokill = 'Kill seats from both sides of the section';\n disabledKillSide: boolean = false;\n simulationcapacity;\n\n hiddenReason;\n loadingmap;\n socialDistancingConfig;\n sdParentNodes;\n sdNodes;\n get availability() {\n return this.currentAvailability;\n }\n\n get venueName() {\n if (this.simulation) {\n return this.dataService.venueData[this.simulation.configuration.venueId].name;\n }\n }\n\n constructor(private bsModalRef: BsModalRef,\n private dataService: DataService,\n private dvmService: DVMService,\n private inventoryService: InventoryService,\n private categories: CategoriesService,\n private socialDistancingService: SocialdistancingService,\n private numberFormatService: FormatNumberService,\n //private modalService: ModalService,\n private BsModalService: BsModalService,\n private selection: SelectionService,\n private computedseatsService: ComputedseatsService,\n private cdr: ChangeDetectorRef,\n private allocatorService: AllocatorService,\n private tiersService: TiersService,\n private location: PlatformLocation) {\n this.location.onPopState(()=> {\n this.onClose();\n });\n }\n\n\n ngOnInit(): void {\n this.subscriptions.push(this.getSimulation());\n\n this.paginateSimulationParameters();\n //this.nlocked = this.dvmService.getLockedseats().length;\n this.tiersService.getTotalTiersAV().pipe(\n take(1)\n ).subscribe(res=>{\n this.nlocked = res.locked;\n })\n this.isSectionSocialDistancing = this.socialDistancingService.isSectionSocialDistancing;\n }\n\n paginateSimulationParameters() {\n\n const sp = JSON.parse(JSON.stringify(this.simulationParameters));\n sp.sort((a, b) => (a.nseats > b.nseats) ? 1 : -1);\n const half = Math.ceil(sp.length / 2);\n\n this.paginatedSimulationParameters[0] = sp.splice(0, half);\n this.paginatedSimulationParameters[1] = sp;\n\n }\n\n private refreshsimulationcapacity(){\n if(this.simulation.custom_groups && this.simulation.custom_groups.capacity){\n this.simulationcapacity = this.simulation.custom_groups.capacity;\n }else{\n this.simulationcapacity = this.simulation.capacity;\n }\n }\n private getSimulation() {\n return this.dataService.getSimulationParameters(this.dataService.currentSimulationId).subscribe(\n simulation => {\n this.dataService.simulationData = simulation;\n this.simulation = simulation;\n this.refreshsimulationcapacity()\n\n const totalSeats = this.simulation.configuration.capacity;\n this.currentAvailability = (100 * this.simulationcapacity / totalSeats).toFixed(2);\n\n this.default_subsim_flag = false;\n this.dataService.subsimulationData = simulation.subsimulations;\n \n let selected_sections = this.dvmService.viewer.getNodesByGroups(\"section\",\"selected\");\n //let selected_sections = this.sections_selected_ids;\n //console.log(selected_sections);\n if (selected_sections.length>0){\n selected_sections = selected_sections.map(x => x.id);\n for(let i = 0; i 0){\n \n for(let i = 0;i-1){\n this.dataService.affectedSubsimulation.push(this.dataService.subsimulationData[i]);\n if (!this.default_subsim_flag){\n this.default_subsim_flag = true;\n this.subsimulation = this.dataService.subsimulationData[i];\n if(!this.subsimulation.parameters){\n this.subsimulation.parameters = this.simulation.parameters;\n }\n this.formularyData(this.subsimulation);\n }\n }\n }\n\n if(!this.default_subsim_flag){\n this.formularyData(this.simulation);\n }\n\n }else{\n this.formularyData(this.simulation);\n }\n }\n }\n );\n }\n \n\n private formularyData(simulation){\n this.limit2groups = simulation.limit2groups;\n this.simulationName = simulation.name;\n this.socialDistancing = parseFloat(simulation.social_distancing);\n this.kill_start = false;\n this.kill_end = false;\n this.aisleSeats = simulation.isle_seats;\n\n this.disabledKillSide = true;\n if (simulation.isle_seats) {\n this.kill_start = simulation.aisle_seats_start;\n this.kill_end = simulation.aisle_seats_end;\n this.disabledKillSide = false;\n this.setAisleSideSelectedText(simulation);\n }\n\n if(simulation.fallback){\n this.fallback = true;\n }\n \n for (const key in this.inputHash) {\n if (this.inputHash.hasOwnProperty(key)) {\n this.computedTotalsStringsHash[key] = this.inputHash[key]['nseats_per'];\n }\n }\n this.totalPercentage = 0;\n let sum = 0;\n\n simulation.parameters.forEach(param => {\n let p = parseFloat(param.percentage);\n sum += p;\n });\n for (const p of simulation.parameters) {\n //if (this.inputHash[p.id]) {\n this.inputHash[p.parameter.id] = {percentage: 0, computed_per: 0, nseats_per: 0};\n //}\n\n // this.inputHash[p.parameter.id]['percentage'] = parseInt((p.percentage * 100).toFixed(0));\n \n // if (typeof p.computed_nseats === 'number') {\n // this.inputHash[p.parameter.id]['computed_nseats'] = p.computed_nseats;\n // }\n // this.inputHash[p.parameter.id]['computed_per'] = p.computed_percentage * 100;\n // this.inputHash[p.parameter.id]['nseats_per'] = p.nseats_percentage * 100;\n // // if (this.inputHash[p.parameter.id]['computed_per']) {\n // // this.computedTotalsStringsHash[p.parameter.id] = this.inputHash[p.parameter.id]['computed_per'].toFixed(2);\n // // }\n // if (this.inputHash[p.parameter.id]['nseats_per']) {\n // this.computedTotalsStringsHash[p.parameter.id] = this.inputHash[p.parameter.id]['nseats_per'].toFixed(2);\n // }\n this.totalPercentage += this.inputHash[p.parameter.id].percentage;\n }\n \n }\n\n\n public onClose(): void {\n this.hiddenReason = 'close';\n this.socialDistancingService.isSectionSocialDistancing = false;\n this.bsModalRef.hide();\n }\n\n private applySocialDistancing(){\n this.loadingmap = document.getElementById('loadingmap');\n this.loadingmap.classList.remove('hidden');\n const parameters = {};\n this.subsimulation.parameters.forEach(element => {\n parameters[element.parameter.nseats] = element.percentage;\n });\n\n this.socialDistancingConfig = {\n securityDistance: this.socialDistancing,\n isleSeats: this.aisleSeats,\n parameters,\n limit2groups : this.limit2groups,\n fallback : this.subsimulation.fallback,\n aisle_seats_sides :{\n start : this.kill_start,\n end : this.kill_end\n },\n };\n this.sdParentNodes = this.dvmService.viewer.getNodesByGroups(\"section\",\"selected\");\n this.sdNodes = [];\n for (let i = 0;i x.id);\n let body = {\n name: this.simulationName,\n social_distancing: this.socialDistancing,\n isle_seats: this.aisleSeats,\n limit2groups : this.limit2groups,\n aisle_seats_start : this.kill_start,\n aisle_seats_end : this.kill_end,\n fallback : 0,\n capacity: \"0\",\n section : sections_selected,\n simulation_id : this.simulation.id\n };\n\n let params_options = [];\n let max_param_id = 0;\n Object.entries(this.inputHash).forEach(([key, value]) => {\n let percentage = 0;\n let param_id = parseInt(key, 10);\n if (value['percentage']) {\n percentage = value['percentage'] as number / 100;\n }\n if(percentage && param_id>max_param_id){\n max_param_id = param_id;\n }\n params_options.push(\n { param_id: param_id, percentage, computed_percentage: 0 }\n );\n });\n if(this.fallback){\n for(let i=0; i {\n \n const newSimulationParameters = {\n options: params_options,\n subsimulation : subsimulation_response.result.map(n=>n.id)\n };\n this.subscriptions.push(this.dataService.createSubsimulationParameters(newSimulationParameters).subscribe(\n success => {\n\n \n\n this.getSimulation().add(\n response => {\n this.applySocialDistancing();\n }\n );\n }\n ));\n },\n error => { console.log(error); }\n ));\n }\n }\n\n\n\n get units() {\n if (this.dataService.getUser()) {\n return this.dataService.getUnits(this.dataService.getUser().user.client.metric_system);\n }\n }\n\n public onSetDistancing(action: 'minus' | 'sum'): void {\n if (this.numberFormatService.getUnits() === 'ft') {\n if (action === 'minus' && this.socialDistancing > 0.5) {\n this.socialDistancing -= 0.0305;\n }\n if (action === 'sum') {\n this.socialDistancing += 0.0305;\n }\n } else {\n if (action === 'minus' && this.socialDistancing > 0.5) {\n this.socialDistancing -= 0.10;\n }\n if (action === 'sum') {\n this.socialDistancing += 0.10;\n }\n }\n }\n\n public onChangeAisleSeat(action: 'minus' | 'sum') {\n if (action === 'minus' && this.aisleSeats > 0) {\n this.aisleSeats -= 1;\n }\n if (action === 'sum' && this.aisleSeats < 4) {\n this.aisleSeats += 1;\n }\n if(this.aisleSeats==0){\n this.kill_start = false;\n this.kill_end = false;\n this.disabledKillSide = true;\n }else if(this.aisleSeats>0 && !this.kill_start && !this.kill_end){\n this.kill_start = true;\n this.kill_end = true;\n this.disabledKillSide = false;\n }\n }\n\n\n public onChangeNumber(event: Event, max, id, isAisle?) {\n this.clampInput(event.target as HTMLInputElement, 0, max, id, isAisle);\n this.checkTotalPercentage();\n }\n\n private clampInput(input: HTMLInputElement, min = 0, max = 100, id?, isAisle?) {\n if (parseInt(input.value, 10)) {\n const inputValue = parseInt(input.value, 10);\n const clampped = this.clamp(inputValue, min, max).toString();\n input.value = clampped;\n if (id) {\n this.inputHash[id].percentage = parseInt(clampped, 10);\n console.log(this.inputHash[id].percentage)\n }\n if (isAisle) {\n this.aisleSeats = parseInt(clampped, 10);\n }\n }else{\n input.value = '0';\n }\n }\n\n private clamp(input: number, min: number, max: number): number {\n return Math.min(Math.max(min, input), max);\n }\n\n public checkTotalPercentage(): void {\n this.totalPercentage = 0;\n this.simulationParameters.forEach(\n p => {\n let value = parseInt((document.getElementById(p.name) as HTMLInputElement).value, 10);\n if (typeof value == 'undefined' || !value) {\n value = 0;\n }\n this.totalPercentage += value;\n }\n );\n }\n\n public formatSocialDistancing(num: number): number {\n if (num) {\n return Number(this.numberFormatService.formatSocialDistancing(num));\n } else {\n return 0;\n }\n }\n\n public isDisabled(type_error?): boolean {\n if(type_error){\n if(type_error == 'percent'){\n if (this.totalPercentage !== 100){\n return true;\n }else{\n return false;\n }\n }\n }\n\n\n if (this.totalPercentage !== 100) {\n return true;\n } else {\n return false;\n }\n }\n public nameIsDisabled(): boolean {\n if(this.simulationName){\n return false;\n }\n return true;\n }\n public updateSimulationName(){\n if (!this.nameIsDisabled()){\n const body = { name: this.simulationName };\n this.subscriptions.push(this.dataService.editSimulation(this.simulation.id, body).subscribe(\n success => {\n this.simulation = success.result;\n this.dataService.setCurrentSimulation$(success.result);\n this.disableEditName();\n },\n error => { console.log(error); }\n ));\n }\n }\n public formatNumber(price: number): string {\n return this.numberFormatService.formatNumber(price);\n }\n\n public enableEditName(){\n this.nameInEdit = true;\n return this.nameInEdit;\n }\n public disableEditName(){\n this.nameInEdit = false;\n this.simulationName = this.simulation.name;\n return this.nameInEdit;\n }\n\n public checkLimit2groups(){\n this.limit2groups = !this.limit2groups;\n }\n public checkFallback(){\n this.fallback = !this.fallback;\n }\n\n public setAisleSideSelected(side?: number) {\n switch(side){\n case 1:\n this.kill_start = true;\n this.kill_end = false;\n this.current_side_tokill ='Kill seats from the beginning of the row';\n break;\n case 2:\n this.kill_start = false;\n this.kill_end = true;\n this.current_side_tokill ='Kill seats from the ending of the row';\n break;\n default:\n this.kill_start = true;\n this.kill_end = true;\n this.current_side_tokill ='Kill seats from both sides of the section';\n\n break;\n }\n }\n\n public setAisleSideSelectedText(subsimulation){\n if(subsimulation.aisle_seats_start && !subsimulation.aisle_seats_end){\n this.setAisleSideSelected(1);\n }else if(!subsimulation.aisle_seats_start && subsimulation.aisle_seats_end){\n this.setAisleSideSelected(2);\n }else{\n this.setAisleSideSelected(null);\n }\n return;\n }\n\n getSectionNodes() {\n const selection = this.dvmService.viewer.getNodesByGroups('section', 'selected');\n let result = [];\n selection.forEach(section => {\n result = result.concat(this.dvmService.viewer.getNodesByParent(section.id));\n });\n // if (sectionId && typeof sectionId === 'string') {\n // return this.dvmService.viewer.getNodesByParent(sectionId);\n // }\n return result;\n }\n getSectionsAffected(){\n return this.dvmService.viewer.getNodesByGroups('section', 'selected');\n }\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n}\n","\n","import { Component, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { BsModalRef,BsModalService } from 'ngx-bootstrap/modal';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\nimport { Form } from '@angular/forms';\nimport { SocialdistancingService } from 'src/app/social-distance-editor/services/socialdistancing.service';\nimport { DVMService } from 'src/app/social-distance-editor/services/dvm.service';\nimport { FormatNumberService } from 'src/app/social-distance-editor/services/format-number.service';\nimport { SelectionService } from 'src/app/social-distance-editor/services/selection.service';\nimport { Subscription } from 'rxjs';\nimport { AllocatorService } from 'src/app/social-distance-editor/plugins/allocator/services/allocator.service';\nimport { TiersService } from 'src/app/social-distance-editor/services/tiers.service';\nimport { take } from 'rxjs/operators';\nimport {PlatformLocation} from \"@angular/common\";\n\n\n@Component({\n selector: 'app-edit-simulation-modal',\n templateUrl: './edit-simulation-modal.component.html',\n styleUrls: ['./edit-simulation-modal.component.scss']\n})\nexport class EditSimulationModalComponent implements OnInit {\n\n private subscriptions: Subscription[] = [];\n\n simulationParameters: Array;\n paginatedSimulationParameters = [];\n simulation;\n\n subsimulation;\n default_subsim_flag = false;\n sections_selected_value = \"\";\n subsimcapacity = 0;\n simulationcapacity;\n simAvailabilityPercentage;\n simConfigAvailabilityPercentage;\n\n inputHash: any;\n computedTotalsStringsHash = {};\n socialDistancing;\n totalPercentage: number;\n currentAvailability;\n aisleSeats = 0;\n nlocked;\n isViewInitialized = false;\n simulationName;\n nameInEdit;\n limit2groups;\n fallback = false;\n\n isSectionSocialDistancing = false;\n\n hiddenReason: string;\n loadingmap;\n socialDistancingConfig;\n get availability() {\n return this.currentAvailability;\n }\n\n get venueName() {\n if (this.simulation) {\n return this.dataService.venueData[this.simulation.configuration.venueId].name;\n }\n }\n\n constructor(private bsModalRef: BsModalRef,\n private modalService: BsModalService,\n private dataService: DataService,\n private dvmService: DVMService,\n private socialDistancingService: SocialdistancingService,\n private numberFormatService: FormatNumberService,\n private selection: SelectionService,\n private cdr: ChangeDetectorRef,\n private allocatorService: AllocatorService,\n private tiersService: TiersService,\n private location: PlatformLocation) {\n this.location.onPopState(()=> {\n this.onClose();\n });\n }\n\n ngOnInit(): void {\n\n const s = this.getSimulation().add(res=>{\n s.unsubscribe();\n });\n \n\n this.isSectionSocialDistancing = this.socialDistancingService.isSectionSocialDistancing;\n }\n private getAvailabilityPercentage(){\n //let av = this.dvmService.viewer.getNodesByState('seat', 'available').length;\n this.nlocked = this.dvmService.getLockedseats().length;\n const totalSeats = this.simulation.configuration.capacity;\n\n this.tiersService.getTotalTiersAV().pipe(\n take(1)\n ).subscribe(res=>{\n this.nlocked = res.locked;\n this.simConfigAvailabilityPercentage = (100 * this.simulationcapacity / (totalSeats - this.nlocked)).toFixed(2);\n })\n //this.simAvailabilityPercentage = (100 * this.simulation.capacity / this.simulation.configuration.capacity).toFixed(2);\n \n this.refreshsimulationcapacity();\n this.simAvailabilityPercentage = (100 * this.simulationcapacity / totalSeats).toFixed(2);\n this.paginateSimulationParameters()\n //this.customAvailabilityPercentage = (100 * av / this.simulation.configuration.capacity).toFixed(2);\n\n }\n private paginateSimulationParameters() {\n \n const sp = JSON.parse(JSON.stringify(this.simulationParameters));\n sp.sort((a, b) => (a.nseats > b.nseats) ? 1 : -1);\n const half = Math.ceil(sp.length / 2);\n\n this.paginatedSimulationParameters[0] = sp.splice(0, half);\n this.paginatedSimulationParameters[1] = sp;\n\n }\n private refreshsimulationcapacity(){\n if(this.simulation.custom_groups && this.simulation.custom_groups.capacity){\n this.simulationcapacity = this.simulation.custom_groups.capacity;\n }else{\n this.simulationcapacity = this.simulation.capacity;\n }\n }\n\n private getSimulation() {\n return this.dataService.getSimulationParameters(this.dataService.currentSimulationId).subscribe(\n simulation => {\n this.dataService.simulationData = simulation;\n this.simulation = simulation;\n this.refreshsimulationcapacity();\n this.formularyData(simulation);\n this.getAvailabilityPercentage();\n }\n );\n }\n\n private formularyData(simulation){\n this.limit2groups = simulation.limit2groups;\n this.simulationName = simulation.name;\n this.socialDistancing = parseFloat(simulation.social_distancing);\n\n\n if (simulation.isle_seats) {\n this.aisleSeats = simulation.isle_seats;\n }\n if(simulation.fallback){\n this.fallback = true;\n }\n\n \n for (const key in this.inputHash) {\n if (this.inputHash.hasOwnProperty(key)) {\n this.computedTotalsStringsHash[key] = this.inputHash[key]['nseats_per'];\n }\n }\n this.totalPercentage = 0;\n let sum = 0;\n if (!simulation.parameters) {\n this.inputHash[3] = {percentage : 100, computed_per: 0, nseats_per: 0};\n } else {\n simulation.parameters.forEach(param => {\n let p = parseFloat(param.percentage);\n sum += p;\n });\n }\n for (const p of simulation.parameters) {\n if (!this.inputHash[p.id]) {\n this.inputHash[p.parameter.id] = {percentage: 0, computed_per: 0, nseats_per: 0};\n }\n if (p.parameter.id === 3 && !sum) {\n this.inputHash[3].percentage = 100;\n } else {\n this.inputHash[p.parameter.id]['percentage'] = parseInt((p.percentage * 100).toFixed(0));\n }\n if (typeof p.computed_nseats === 'number') {\n this.inputHash[p.parameter.id]['computed_nseats'] = p.computed_nseats;\n }\n this.inputHash[p.parameter.id]['computed_per'] = p.computed_percentage * 100;\n this.inputHash[p.parameter.id]['nseats_per'] = p.nseats_percentage * 100;\n // if (this.inputHash[p.parameter.id]['computed_per']) {\n // this.computedTotalsStringsHash[p.parameter.id] = this.inputHash[p.parameter.id]['computed_per'].toFixed(2);\n // }\n if (this.inputHash[p.parameter.id]['nseats_per']) {\n this.computedTotalsStringsHash[p.parameter.id] = this.inputHash[p.parameter.id]['nseats_per'].toFixed(2);\n }\n this.totalPercentage += this.inputHash[p.parameter.id].percentage;\n\n }\n\n //console.log(this.inputHash);\n\n }\n\n\n public onClose(): void {\n this.socialDistancingService.isSectionSocialDistancing = false;\n this.hiddenReason = 'close';\n this.bsModalRef.hide();\n }\n\n private applySocialDistancing(){\n this.loadingmap = document.getElementById('loadingmap');\n this.loadingmap.classList.remove('hidden');\n const parameters = {};\n this.simulation.parameters.forEach(element => {\n parameters[element.parameter.nseats] = element.percentage;\n });\n this.socialDistancingConfig = {\n securityDistance: this.socialDistancing,\n isleSeats: this.aisleSeats,\n parameters,\n limit2groups : this.limit2groups,\n fallback : this.simulation.fallback,\n aisle_seats_sides:{\n start : true,\n end : true,\n }\n };\n }\n\n\n public onSubmit(ngForm: Form): void {\n if (!this.isDisabled()) {\n this.loadingmap = document.getElementById('loadingmap');\n this.loadingmap.classList.remove('hidden');\n this.hiddenReason = 'closetoresult';\n this.bsModalRef.hide();\n \n let body = {\n name: this.simulationName,\n social_distancing: this.socialDistancing,\n isle_seats: this.aisleSeats,\n limit2groups : this.limit2groups,\n fallback : 0,\n custom_groups : {},\n allocation : 0\n };\n\n let params_options = [];\n let max_param_id = 0;\n Object.entries(this.inputHash).forEach(([key, value]) => {\n let percentage = 0;\n let param_id = parseInt(key, 10);\n if (value['percentage']) {\n percentage = value['percentage'] as number / 100;\n }\n if(percentage && param_id>max_param_id){\n max_param_id = param_id;\n }\n params_options.push(\n { param_id: param_id, percentage, computed_percentage: 0 }\n );\n });\n if(this.fallback){\n for(let i=0; i {\n console.log('Edit simulation success: ', body);\n if(this.simulation.allocation){\n this.allocatorService.clearAllocationFromSimulation();\n }\n if(success.result.subsimulations.length>0){\n for(let i =0;i { console.log(error); }\n ).add(\n success => {\n const newSimulationParameters = {\n simulation: this.simulation.id,\n options: params_options\n };\n this.subscriptions.push(this.dataService.createSimulationParameters(newSimulationParameters).subscribe(\n success => {\n this.getSimulation().add(\n response => {\n this.applySocialDistancing();\n }\n );\n }\n ));\n }\n ));\n }\n\n }\n\n\n get units() {\n if (this.dataService.getUser()) {\n return this.dataService.getUnits(this.dataService.getUser().user.client.metric_system);\n }\n }\n\n public onSetDistancing(action: 'minus' | 'sum'): void {\n if (this.numberFormatService.getUnits() === 'ft') {\n if (action === 'minus' && this.socialDistancing > 0.5) {\n this.socialDistancing -= 0.0305;\n }\n if (action === 'sum') {\n this.socialDistancing += 0.0305;\n }\n } else {\n if (action === 'minus' && this.socialDistancing > 0.5) {\n this.socialDistancing -= 0.10;\n }\n if (action === 'sum') {\n this.socialDistancing += 0.10;\n }\n }\n }\n\n public onChangeAisleSeat(action: 'minus' | 'sum') {\n if (action === 'minus' && this.aisleSeats > 0) {\n this.aisleSeats -= 1;\n }\n if (action === 'sum' && this.aisleSeats < 4) {\n this.aisleSeats += 1;\n }\n }\n\n public onChangeNumber(event: Event, max, id, isAisle?) {\n this.clampInput(event.target as HTMLInputElement, 0, max, id, isAisle);\n this.checkTotalPercentage();\n }\n\n private clampInput(input: HTMLInputElement, min = 0, max = 100, id?, isAisle?) {\n \n if (parseInt(input.value, 10)) {\n const inputValue = parseInt(input.value, 10);\n const clampped = this.clamp(inputValue, min, max).toString();\n input.value = clampped;\n if (id) {\n this.inputHash[id].percentage = parseInt(this.inputHash[id].percentage);\n this.inputHash[id].percentage = parseInt(clampped, 10);\n \n }\n if (isAisle) {\n this.aisleSeats = parseInt(clampped, 10);\n }\n }else{\n input.value = '0';\n }\n }\n\n private clamp(input: number, min: number, max: number): number {\n return Math.min(Math.max(min, input), max);\n }\n\n public checkTotalPercentage(): void {\n this.totalPercentage = 0;\n this.simulationParameters.forEach(\n p => {\n let value = parseInt((document.getElementById(p.name) as HTMLInputElement).value, 10);\n if (typeof value == 'undefined' || !value) {\n value = 0;\n }\n this.totalPercentage += value;\n }\n );\n }\n\n public formatSocialDistancing(num: number): number {\n if (num) {\n return Number(this.numberFormatService.formatSocialDistancing(num));\n } else {\n return 0;\n }\n }\n\n public isDisabled(): boolean {\n if (this.totalPercentage !== 100) {\n return true;\n } else {\n return false;\n }\n }\n public nameIsDisabled(): boolean {\n if(this.simulationName){\n return false;\n }\n return true;\n }\n public updateSimulationName(){\n if (!this.nameIsDisabled()){\n const body = { name: this.simulationName };\n this.subscriptions.push(this.dataService.editSimulation(this.simulation.id, body).subscribe(\n success => {\n this.simulation = success.result;\n this.dataService.setCurrentSimulation$(success.result);\n this.disableEditName();\n },\n error => { console.log(error); }\n ));\n }\n }\n public formatNumber(price: number): string {\n return this.numberFormatService.formatNumber(price);\n }\n\n public enableEditName(){\n this.nameInEdit = true;\n return this.nameInEdit;\n }\n public disableEditName(){\n this.nameInEdit = false;\n this.simulationName = this.simulation.name;\n return this.nameInEdit;\n }\n\n public checkLimit2groups(){\n this.limit2groups = !this.limit2groups;\n }\n public checkFallback(){\n this.fallback = !this.fallback;\n }\n\n getSectionNodes() {\n const selection = this.dvmService.viewer.getNodesByGroups('section', 'selected');\n let result = [];\n selection.forEach(section => {\n result = result.concat(this.dvmService.viewer.getNodesByParent(section.id));\n });\n // if (sectionId && typeof sectionId === 'string') {\n // return this.dvmService.viewer.getNodesByParent(sectionId);\n // }\n return result;\n }\n getSectionsAffected(){\n return this.dvmService.viewer.getNodesByGroups('section', 'selected');\n }\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n}\n","\n","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n selector: 'app-error-modal',\n templateUrl: './error-modal.component.html',\n styleUrls: ['./error-modal.component.scss']\n})\nexport class ErrorModalComponent implements OnInit {\n\n errorMessage;\n\n constructor(private bsModalRef: BsModalRef) { }\n\n ngOnInit(): void {\n }\n\n public onDismiss() {\n this.bsModalRef.hide();\n }\n\n}\n","
\n \n \n \n
","import { Component, OnInit } from '@angular/core';\nimport {BsModalRef} from \"ngx-bootstrap/modal\";\nimport {ActivatedRoute} from \"@angular/router\";\nimport {DataService} from \"../../../services/data.service\";\nimport {Subscription} from \"rxjs\";\nimport {saveAs} from 'file-saver'\nimport {SocialdistancingService} from \"../../../services/socialdistancing.service\";\nimport {DVMService} from \"../../../services/dvm.service\";\n\n@Component({\n selector: 'app-export-onhold-modal',\n templateUrl: './export-onhold-modal.component.html',\n styleUrls: ['./export-onhold-modal.component.scss']\n})\nexport class ExportOnholdModalComponent implements OnInit {\n\n private subscriptions: Subscription[] = [];\n\n configuration; // Valor que viene del sidebar\n id;\n exportonhold: boolean = false;\n\n constructor(private bsModalRef: BsModalRef,\n private activatedRoute: ActivatedRoute,\n private dataService: DataService,\n private socialDistancing: SocialdistancingService,\n private dvmService: DVMService) { }\n\n ngOnInit(): void {\n }\n\n public onConfirm():void {\n // Bajarse el manifest con el status onhold\n this.exportonhold = true;\n this.getGroupsFullExport();\n }\n\n public onDenied():void {\n // Bajarse el manifest con el status tal cual\n this.exportonhold = false;\n this.getGroupsFullExport();\n }\n\n private getGroupsFullExport(){\n const maps = [];\n if (this.configuration.tier_list){\n this.configuration.tier_list.forEach(level => {\n maps.push(level.map_id);\n });\n }\n this.socialDistancing.getGroupsFullExport(this.dvmService.viewer, maps).then(\n response => {\n response['subscribe'](\n data=>{\n this.getSSM();\n }\n );\n }\n );\n\n }\n\n private getSSM(){\n if(this.exportonhold) {\n this.subscriptions.push(this.dataService.getSimulationSeatManifestHold(this.id,'csv').subscribe(\n data => {\n const csv = data.response;\n const date = new Date().toDateString();\n const blob = new Blob([csv],{type:'text/csv'});\n saveAs(blob,`seatmanifest_${date}.csv`);\n }\n ));\n } else {\n this.subscriptions.push(this.dataService.getSimulationSeatManifest(this.id,'csv').subscribe(\n data => {\n const csv = data.response;\n const date = new Date().toDateString();\n const blob = new Blob([csv], {type: 'text/csv'});\n saveAs(blob, `seatmanifest_${date}.csv`);\n }\n ));\n }\n this.onDismiss();\n }\n\n\n\n public onDismiss(){\n this.bsModalRef.hide();\n }\n\n}\n","
\n \n\n \n \n
\n","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n selector: 'app-forgot-password-modal',\n templateUrl: './forgot-password-modal.component.html',\n styleUrls: ['./forgot-password-modal.component.scss']\n})\nexport class ForgotPasswordModalComponent implements OnInit {\n\n constructor(private bsModalRef: BsModalRef) { }\n\n ngOnInit(): void {\n }\n\n public onDismiss() {\n this.bsModalRef.hide();\n }\n\n}\n","
\n \n \n \n
","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\n\n@Component({\n selector: 'app-laliga-contact-cau-modal',\n templateUrl: './laliga-contact-cau-modal.component.html',\n styleUrls: ['./laliga-contact-cau-modal.component.scss']\n})\nexport class LaligaContactCauModalComponent implements OnInit {\n\n constructor(\n private bsModalRef: BsModalRef,\n ) { }\n\n ngOnInit(): void {\n }\n public onDismiss() {\n this.bsModalRef.hide();\n }\n}\n","
\n \n \n \n
","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\nimport { AuthenticationService } from 'src/app/auth';\nimport { FormatNumberService } from 'src/app/social-distance-editor/services/format-number.service';\nimport { AuthorizationData } from '../../models/authorization-data.model';\nimport { ForgotPasswordModalComponent } from '../forgot-password-modal/forgot-password-modal.component';\n\n@Component({\n selector: 'app-login',\n templateUrl: './login-modal.component.html',\n styleUrls: ['./login-modal.component.scss']\n})\nexport class LoginModalComponent implements OnInit {\n loginData: AuthorizationData = {\n username: '',\n password: '',\n 'grant-type': 'password'\n };\n errors: boolean;\n constructor(private authService: AuthenticationService,\n private router: Router,\n private modalService: BsModalService,\n private localeService: FormatNumberService,\n private translate: TranslateService,\n private bsModalRef: BsModalRef) { }\n\n ngOnInit(): void {}\n\n public onSubmit(): void {\n this.authService.login(this.loginData).subscribe(\n response => {\n \n this.onDismiss();\n this.setLanguage(response.user.client.language);\n response.user.plugins\n const hasWorkspace = response.user.plugins.filter(p=>{ if( p && p.type === 'scv') { return true } });\n if(hasWorkspace.length){\n this.router.navigate(['/workspace']);\n }else{\n this.router.navigate(['/home']);\n }\n },\n error => {\n this.showError(error);\n console.log(error);\n }\n );\n }\n\n\n public onForgotPassword(): void {\n this.onDismiss();\n const modalConfig: ModalOptions = {\n animated: true,\n class: 'modal-dialog-centered',\n backdrop: false,\n ignoreBackdropClick: false,\n initialState: {}\n };\n this.bsModalRef = this.modalService.show(ForgotPasswordModalComponent, modalConfig);\n }\n\n public showError(error): void {\n this.errors = true;\n }\n\n public setLanguage(language: string): void {\n if (language === 'es-ES') {\n localStorage.setItem('language', 'es');\n this.localeService.setCurrentLocale('es');\n this.translate.use('es');\n } else {\n localStorage.setItem('language', 'en');\n this.localeService.setCurrentLocale('en');\n this.translate.use('en');\n }\n }\n public onDismiss() {\n this.bsModalRef.hide();\n }\n \n}\n","
\n \n \n
\n \n \n
\n
\n","import { Component, OnInit, ChangeDetectorRef, ViewChild, OnDestroy } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport {CloneConfigurationBody, DataService} from 'src/app/social-distance-editor/services/data.service';\nimport { Form } from '@angular/forms';\nimport { Router } from '@angular/router';\n\nimport { SocialdistancingService } from 'src/app/social-distance-editor/services/socialdistancing.service';\nimport { InventoryService } from 'src/app/social-distance-editor/services/inventory.service';\nimport { CategoriesService } from 'src/app/social-distance-editor/services/categories.service';\nimport { FormatNumberService } from 'src/app/social-distance-editor/services/format-number.service';\nimport { ModalService } from 'src/app/social-distance-editor/services/modal.service';\nimport { Subscription } from 'rxjs';\nimport { Configuration } from '../../models/configuration-data.model';\nimport { ToastrService } from 'ngx-toastr';\nimport { UploadbuttonComponent } from '../../buttons/uploadbutton/uploadbutton.component';\nimport { CustomCategoriesService } from '../../../plugins/custom-categories/services/custom-categories.service';\nimport { AuthenticationService } from 'src/app/auth';\nimport { CustomCategoriesPlugin } from 'src/app/social-distance-editor/plugins/custom-categories/custom-categories.module';\n\n\n@Component({\n selector: 'app-new-config-modal',\n templateUrl: './new-config-modal.component.html',\n styleUrls: ['./new-config-modal.component.scss']\n})\nexport class NewConfigModalComponent implements OnInit, OnDestroy {\n @ViewChild('uploadVenueData') venueDataCSV!: UploadbuttonComponent;\n\n currentVenue;\n venuecapacity;\n configSelectedKey;\n configSelectedName;\n configurations;\n clientId;\n configurationSelected;\n // form\n newconfigname;\n //on submit\n cloningconfig;\n private subscriptions: Subscription[] = [];\n\n // modal\n closeReason;\n constructor(private bsModalRef: BsModalRef,\n private dataService: DataService,\n private inventoryService: InventoryService,\n private categories: CategoriesService,\n private socialDistancingService: SocialdistancingService,\n private numberFormatService: FormatNumberService,\n private customCategoriesService: CustomCategoriesService,\n private modalService: ModalService,\n private router: Router,\n private toastr: ToastrService,\n private authService: AuthenticationService,\n private cdr: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n this.venuecapacity = this.numberFormatService.formatNumber(this.currentVenue.capacity);\n this.configurations = this.currentVenue.configurations;\n\n if (this.configurations.length === 1){\n this.configSelectedKey = 0;\n this.configSelectedName = this.configurations[0].name;\n this.configurationSelected = this.configurations[0];\n }\n }\n\n\n public onClose(reason: 'success' | 'cancel'): void {\n this.closeReason = reason;\n this.bsModalRef.hide();\n }\n\n public onSubmit(ngForm: Form): void {\n if (!this.disableConfirmbtn()) {\n let csv;\n let inputFile;\n let filename;\n this.cloningconfig = true;\n if(this.customCategoriesService.allowCustomCategories){\n csv = this.venueDataCSV.getFile();\n inputFile = this.venueDataCSV.getFileRaw();\n if(inputFile.length){\n filename = inputFile[0].name;\n }\n }\n const body: CloneConfigurationBody = {\n original : this.configurationSelected.id,\n name : this.newconfigname\n };\n // si csv es valido, significa que estan subiendo un fichero con custom categories, estan usando el plugin\n if (csv) {\n const promiseList = [\n this.dataService.getSeatManifest(this.configurationSelected.id).toPromise(),\n this.readText(csv, 'iso-8859-1')\n ];\n Promise.all(promiseList).then((results) => {\n // Merge del fichero introducido por el file y el manifest\n const [seatmanifestjson, customcsv] = results;\n const result = this.customCategoriesService.buildManiestWithCustomCategories(customcsv, seatmanifestjson.response);\n // Una vez el merge esta completo clonamos la configuracion\n const { inventory, categories } = result;\n body.custom_categories = {\n custom_categories: categories,\n };\n return this.dataService.cloneConfiguration(body).toPromise()\n .then((response: { message: string, new_configuration: Configuration }) => {\n return { configuration: response.new_configuration, seatmanifest: inventory};\n \n })\n .then((data)=>{\n return this.customCategoriesService.postVenueDataFile('configuration', data.configuration.id,'raw',customcsv,filename).toPromise()\n .then( (response)=>{\n console.log(\"uploaded Original venue data files\");\n return data;\n });\n }).then((data)=>{\n return this.customCategoriesService.postVenueDataFile('configuration', data.configuration.id,'parsed',JSON.stringify(data.seatmanifest),filename).toPromise()\n .then( (response)=>{\n return data;\n });\n }).then((data) => {\n // Una vez la configuracion se a creado correctamente, subimos le manifest con las custom categories\n return this.dataService.sendSeatManifestData(data.configuration.id, data.seatmanifest).toPromise();\n }).then((response) => {\n // Una vez completado de forma correcta vamos a la ruta de la configuracion y mostramos el toast de info\n this.cloningconfig = false;\n this.onClose('success');\n this.toastr.success('', 'New configuration successfully saved');\n }).catch((e) => {\n // En caso de errores cerramos y mostramos el toast informativo.\n console.error(e);\n this.cloningconfig = false;\n this.onClose('cancel');\n this.toastr.error('', 'An unexpected error occurred');\n });\n });\n } else {\n const s = this.dataService.cloneConfiguration(body).subscribe(\n response => {\n s.unsubscribe();\n if (response.message){\n this.onClose('success');\n // this.router.navigate(['/simulation/' + response.result.id]);\n this.toastr.success('', 'New configuration successfully saved');\n }\n \n });\n }\n }\n }\n\n get units() {\n if (this.dataService.getUser()) {\n return this.dataService.getUnits(this.dataService.getUser().user.client.metric_system);\n }\n }\n\n\n\n public formatNumber(price: number): string {\n return this.numberFormatService.formatNumber(price);\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n public setConfigSelected(configIdKey: number) {\n this.configSelectedKey = configIdKey;\n this.configSelectedName = this.configurations[configIdKey].name;\n this.configurationSelected = this.configurations[configIdKey];\n }\n\n public disableConfirmbtn(){\n if (!this.newconfigname || typeof this.configSelectedKey === 'undefined'){\n return true;\n }\n return false;\n }\n\n public hasPlugin(plugin: string): boolean {\n if (!this.dataService.getUser()){ return false; }\n const pluginList = this.dataService.getUser().user.plugins;\n const i = pluginList.findIndex((addon) => addon.ref === plugin);\n return i > -1;\n }\n\n private readText(file: Blob, encoding?: string): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n if (typeof reader.result === 'string') {\n resolve(reader.result);\n } else {\n reject(new Error('Cannot read file'));\n }\n };\n reader.onerror = () => reject(new Error('Cannot read file'));\n\n reader.readAsText(file, encoding);\n });\n }\n}\n","\n\n","import {Component, Inject, OnDestroy, OnInit, Pipe} from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\nimport { Router } from '@angular/router';\nimport { User } from '../../models/user-data.model';\nimport { FormatNumberService } from 'src/app/social-distance-editor/services/format-number.service';\nimport { Form } from '@angular/forms';\nimport { Simulation } from '../../models/simulation-data.model';\nimport { BsDropdownConfig } from 'ngx-bootstrap/dropdown';\nimport {Subscription} from 'rxjs';\nimport {CustomCategoriesService} from '../../../plugins/custom-categories/services/custom-categories.service';\nimport {Configuration} from '../../models/configuration-data.model';\nimport { CustomCategoriesByVenue, CustomCategoryByKey } from 'src/app/social-distance-editor/plugins/custom-categories/models/custom-categories.model';\nimport { CUSTOM_CATEGORIES_BY_VENUE } from 'src/app/social-distance-editor/plugins/custom-categories/configuration/categories.configuration';\nimport { IDropdownSettings } from 'ng-multiselect-dropdown';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-new-simulation-modal',\n templateUrl: './new-simulation-modal.component.html',\n styleUrls: ['./new-simulation-modal.component.scss'],\n providers: [{ provide: BsDropdownConfig, useValue: { isAnimated: true, autoClose: true } }]\n})\nexport class NewSimulationModalComponent implements OnInit, OnDestroy {\n\n currentVenue;\n user: User;\n configurations: Configuration[];\n advancedOptions = false;\n singleOptions = true;\n venueData;\n configSelected;\n currentConfigCapacity;\n simulationName;\n socialDistancing = 1.5;\n simulationParameters: Array;\n totalPercentage = 0;\n configsHash = {};\n inputHash = {};\n inputAvailability = 30;\n simulationCreated;\n aisleSeats = 0;\n //custom categories\n customCategoriesInfo : CustomCategoryByKey; // raw categories info\n customCategoriesDropdownList = [];\n customCategoriesSelectedItems = [];\n customCategoriesDropdownSettings: IDropdownSettings = {};\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n @Inject(CUSTOM_CATEGORIES_BY_VENUE) private customCategoriesByVenue: CustomCategoriesByVenue,\n private bsModalRef: BsModalRef,\n private dataService: DataService,\n private router: Router,\n private numberFormatService: FormatNumberService,\n private customCategoriesService: CustomCategoriesService,\n private sanitizer: DomSanitizer) { }\n\n get allowCustomCategories(): boolean {\n return this.customCategoriesService.allowCustomCategories;\n }\n\n ngOnInit(): void {\n if (this.numberFormatService.getUnits() === 'ft') {\n this.socialDistancing = 6;\n } else {\n this.socialDistancing = 1.5;\n }\n const sub = this.dataService.getAllParameters().subscribe(\n parameters => {\n this.simulationParameters = parameters['params'];\n this.simulationParameters.splice(0, 1);\n // this.simulationParameters.forEach(\n // p => {\n // this.inputHash[p.id] = 25;\n // }\n // );\n this.totalPercentage = 100;\n }\n );\n this.subscriptions.push(sub);\n this.configurations = this.dataService.venueData[this.currentVenue].configurations;\n console.log(this.configurations);\n this.currentConfigCapacity = this.formatNumber(this.configurations[0].capacity);\n\n // if there is only one configuration, then select it by default\n if (this.configurations.length === 1) {\n this.configSelected = Object.keys(this.configurations);\n }\n this.venueData = this.dataService.venueData[this.currentVenue];\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((s) => s.unsubscribe());\n }\n\n public onClose() {\n this.bsModalRef.hide();\n }\n\n public onConfirm() {\n\n }\n\n get units(){\n if (this.dataService.getUser()) {\n return this.dataService.getUnits(this.dataService.getUser().user.client.metric_system);\n }\n }\n\n\n public onSubmit(ngForm: Form): void {\n const inputs = ngForm['form']['value'];\n let socialDistancingCopy = this.socialDistancing;\n if (this.numberFormatService.getUnits() === 'ft') {\n socialDistancingCopy = Number((this.socialDistancing * 0.3048).toFixed(4));\n }\n\n const simulation: Simulation = {\n name: this.simulationName,\n capacity: this.dataService.venueData[this.currentVenue].configurations[this.configSelected].capacity,\n config_id: this.dataService.venueData[this.currentVenue].configurations[this.configSelected].id,\n social_distancing: socialDistancingCopy.toString(),\n isle_seats: this.aisleSeats,\n fallback: 1\n };\n\n if (this.customCategoriesService.allowCustomCategories) {\n const selectedCategories = this.customCategoriesSelectedItems.map(i => i.item_id);\n simulation.custom_categories = { selected_custom_categories: selectedCategories };\n }\n\n const s = this.dataService.createSimulation(simulation).subscribe(\n response => {\n s.unsubscribe();\n this.simulationCreated = response.result;\n this.bsModalRef.hide();\n this.router.navigate(['/simulation/' + this.simulationCreated.id]);\n }\n );\n }\n\n public displayAdvancedOptions(): void {\n this.advancedOptions = !this.advancedOptions;\n this.singleOptions = !this.advancedOptions;\n }\n\n public formatNumber(price) {\n return this.numberFormatService.formatNumber(price);\n }\n\n\n\n get configName() {\n if (this.configSelected) {\n return this.dataService.venueData[this.currentVenue].configurations[this.configSelected]?.name;\n }\n }\n\n\n public onSetDistancing(action: 'minus' | 'sum'): void {\n if (action === 'minus' && this.socialDistancing > 0.5) {\n this.socialDistancing -= 0.10;\n }\n if (action === 'sum') {\n this.socialDistancing += 0.10;\n }\n }\n\n public disableConfirmbtn(): boolean {\n document.getElementById(\"newsimulation-btn\").setAttribute(\"disabled\",'disabled');\n if ( this.configSelected && (typeof this.simulationName!= 'undefined' && this.simulationName.length>0)){\n document.getElementById(\"newsimulation-btn\").removeAttribute(\"disabled\");\n return false;\n }\n return true;\n }\n public onChangeAisleSeat(action: 'minus' | 'sum') {\n if (action === 'minus' && this.aisleSeats > 0) {\n this.aisleSeats -= 1;\n }\n if (action === 'sum' && this.aisleSeats < 4) {\n this.aisleSeats += 1;\n }\n }\n\n\n private clampInput(input: HTMLInputElement, min = 0, max = 100, id?, isAisle?) {\n if (parseInt(input.value, 10)) {\n const inputValue = parseInt(input.value, 10);\n const clampped = this.clamp(inputValue, min, max).toString();\n input.value = clampped;\n if (id) {\n this.inputHash[id].percentage = parseInt(clampped, 10);\n }\n if (isAisle) {\n this.aisleSeats = parseInt(clampped, 10);\n }\n }\n }\n\n private clamp(input: number, min: number, max: number): number {\n return Math.min(Math.max(min, input), max);\n }\n\n public formatSocialDistancing(num: number): number {\n return Number(num.toFixed(2));\n }\n\n public setConfigSelected(configIdKey: string) {\n this.configSelected = configIdKey;\n this.currentConfigCapacity = this.formatNumber(this.configurations[configIdKey].capacity);\n\n // Plugin Custom categories Only\n if (this.customCategoriesService.allowCustomCategories && this.configurations[configIdKey].custom_categories) {\n this.customCategoriesInfo = this.customCategoriesService.getCutomCategoriesByVenue(this.configurations[configIdKey].venue_code);\n for (const category of this.configurations[configIdKey].custom_categories.custom_categories){\n const dropdownitem = {\n item_id : category,\n item_text : category\n }\n this.customCategoriesDropdownList.push(dropdownitem);\n }\n this.customCategoriesDropdownSettings = {\n singleSelection: false,\n idField: 'item_id',\n textField: 'item_text',\n selectAllText: 'Select All',\n unSelectAllText: 'UnSelect All',\n itemsShowLimit: 3,\n allowSearchFilter: false\n };\n\n\n }\n }\n \n}\n","\n","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\nimport { ToastrService } from 'ngx-toastr';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\n\ninterface pdfsubscriber {\n fullname?: string,\n email : string,\n lopd : boolean\n}\n\n@Component({\n selector: 'app-pdfsubscriber',\n templateUrl: './pdfsubscriber.component.html',\n styleUrls: ['./pdfsubscriber.component.scss']\n})\n\n\nexport class PdfsubscriberComponent implements OnInit {\n\n constructor(\n private bsModalRef: BsModalRef,\n private dataService: DataService,\n private toastr: ToastrService\n ) { }\n\n ngOnInit(): void {\n this.errors = \"\";\n this.loading = \"\";\n }\n\n pdfsubscriber : pdfsubscriber = {\n fullname : \"\",\n email : \"\",\n lopd: false\n }\n\n errors;\n loading;\n\n public newEmail(){\n this.errors = \"\";\n this.loading = 'Sending Email...'\n }\n public onSubmit(): void {\n this.newEmail();\n\n if(!this.pdfsubscriber.lopd){\n \n this.showError(\"Please check the LOPD checkbox to receive the PDF.\");\n return;\n }\n this.dataService.pdfsubscriber(this.pdfsubscriber.fullname,this.pdfsubscriber.email).subscribe(\n response => {\n this.toastr.success(\"\",\"We have sent an email with further information.\")\n this.onDismiss();\n },\n error => {\n this.showError(error);\n }\n );\n }\n public onDismiss() {\n this.bsModalRef.hide();\n }\n public showError(error){\n this.loading = \"\";\n this.errors = error;\n }\n}\n","
\n \n \n \n
","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { youtubeVideo } from '../../models/video.model';\nimport { DomSanitizer} from '@angular/platform-browser';\n\n@Component({\n selector: 'app-public-videos',\n templateUrl: './public-videos.component.html',\n styleUrls: ['./public-videos.component.scss']\n})\nexport class PublicVideosComponent implements OnInit {\n\n constructor(\n private bsModalRef: BsModalRef,\n private sanitizer: DomSanitizer) {\n\n }\n\n video : youtubeVideo;\n\n ngOnInit(): void {\n this.video.url = this.sanitizer.bypassSecurityTrustResourceUrl(this.video.raw);\n }\n public onDismiss() {\n this.bsModalRef.hide();\n }\n}\n","
\n \n \n \n
\n","import { Component, OnInit } from '@angular/core';\nimport { AuthenticationService } from 'src/app/auth';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { DataService } from 'src/app/social-distance-editor/services/data.service';\nimport { ToastrService } from 'ngx-toastr';\n\n@Component({\n selector: 'app-share-simulation-modal',\n templateUrl: './share-simulation-modal.component.html',\n styleUrls: ['./share-simulation-modal.component.scss']\n})\nexport class ShareSimulationModalComponent implements OnInit {\n\n simulationId;\n publicKey;\n closeReason: 'success' | 'cancel';\n isSharingEnabled = false;\n shareUrl;\n shareLocation = '/share-simulation/';\n\n constructor(private authService: AuthenticationService,\n private bsModalRef: BsModalRef,\n private router: Router,\n private dataService: DataService,\n private toastr: ToastrService) { }\n\n ngOnInit(): void {\n console.log(this.publicKey);\n if (this.publicKey) {\n this.isSharingEnabled = true;\n this.shareUrl = window.location.origin + this.shareLocation + this.publicKey;\n }\n }\n\n public onConfirm(): void {\n this.onDismiss('success');\n }\n public newTab(url):void{\n window.open(url, '_blank');\n }\n public onDismiss(reason: 'success' | 'cancel'): void {\n this.closeReason = reason;\n this.bsModalRef.hide();\n }\n public copy(){\n /* Select the text field */\n var copyText = document.getElementById(\"shareKeyInput\") as HTMLInputElement;\n\n copyText.select();\n copyText.setSelectionRange(0, 99999); /*For mobile devices*/\n\n /* Copy the text inside the text field */\n document.execCommand(\"copy\");\n this.toastr.success('', 'Copied to clipboard'),{ timeOut: 999999999 };\n }\n enableSharing(ret) {\n if (ret) {\n return;\n }\n if (this.simulationId) {\n this.dataService.getSimulationShareKey(this.simulationId).subscribe(\n response => {\n if (response.public_key) {\n this.isSharingEnabled = true;\n this.publicKey = response.public_key;\n this.shareUrl = window.location.origin + this.shareLocation + this.publicKey;\n }\n }\n );\n }\n }\n\n disableSharing(ret) {\n if (ret) {\n return;\n }\n if (this.simulationId) {\n this.dataService.stopSharingSimulation(this.simulationId).subscribe(\n response => {\n this.isSharingEnabled = false;\n this.publicKey = null;\n this.shareUrl = null;\n }\n );\n }\n }\n\n // toggleSharing(ret) {\n // if (ret) {\n // return;\n // }\n // this.isSharingEnabled = !this.isSharingEnabled;\n // }\n\n}\n","
\n \n \n \n\n
","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'dateFormat'\n })\nexport class FormatDatePipe implements PipeTransform {\n transform(date: string): string {\n let suffix = 'th';\n const day: string = date.substring(0, 2);\n const monthYear: string = date.substring(2, 15);\n\n if (day === '1' || day === '21' || day === '31') {\n suffix = 'st';\n } else if (day === '2' || day === '22') {\n suffix = 'nd';\n } else if (day === '3' || day === '23') {\n suffix = 'rd';\n }\n const fullDate: string = monthYear + ' ' + day + suffix + ' ' + monthYear;\n console.log(date);\n console.log(fullDate);\n return fullDate;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'LockFilter'\n})\n\nexport class SearchPipe implements PipeTransform {\n transform(items: any[], searchText: string): any[] {\n if (!items) return [];\n if (!searchText) return items;\n searchText = searchText.toLowerCase();\n const values = Object.values(items);\n // return items.filter(it => {\n // console.log(it);\n // console.log(property);\n // return it[property].toLowerCase().includes(searchText);\n // });\n\n // return items.filter(o => {\n // console.log(o);\n // Object.keys(o).some(k => {\n // console.log(k);\n // console.log(o[k]);\n // o[k].includes(searchText.toLowerCase());\n // });\n // });\n\n return items.filter(o => {\n return Object.keys(o).some(k => {\n if (typeof o[k] === 'string') {\n return o[k].toLowerCase().includes(searchText.toLowerCase());\n } else {\n return String(o[k]).toLowerCase().includes(searchText.toLowerCase());\n }\n });\n });\n\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NewSimulationModalComponent } from './modals/new-simulation-modal/new-simulation-modal.component';\nimport { CopySimulationModalComponent } from './modals/copy-simulation-modal/copy-simulation-modal.component';\nimport { NewConfigModalComponent } from './modals/new-config-modal/new-config-modal.component';\nimport { ConfirmDeleteConfigComponent } from './modals/confirm-delete-config/confirm-delete-config.component';\nimport { ForgotPasswordModalComponent } from './modals/forgot-password-modal/forgot-password-modal.component';\nimport { ChangePasswordModalComponent } from './modals/change-password-modal/change-password-modal.component';\nimport { FormatDatePipe } from './pipes/date-format.pipe';\nimport { SearchPipe } from './pipes/search-table.pipe';\nimport { CategoryPriceModalComponent } from './modals/category-price-modal/category-price-modal.component';\nimport { FormsModule } from '@angular/forms';\nimport { EditSimulationModalComponent } from './modals/edit-simulation-modal/edit-simulation-modal.component';\nimport { EditSectionSimulationModalComponent } from './modals/edit-sectionsimulation-modal/edit-sectionsimulation-modal.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ConfirmDeleteSimulationComponent } from './modals/confirm-delete-simulation/confirm-delete-simulation.component';\nimport { ComputeResultsModalComponent } from './modals/compute-results-modal/compute-results-modal.component';\nimport { ComputeSectionResultsModalComponent } from './modals/compute-sectionresults-modal/compute-sectionresults-modal.component';\nimport { ConfirmLogoutModalComponent } from './modals/confirm-logout-modal/confirm-logout-modal.component';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { ShareSimulationModalComponent } from './modals/share-simulation-modal/share-simulation-modal.component';\nimport { ErrorModalComponent } from './modals/error-modal/error-modal.component';\nimport {ButtonComponent} from './buttons/button/button.component';\nimport {DownloadbuttonComponent} from './buttons/downloadbutton/downloadbutton.component';\nimport {UploadbuttonComponent} from './buttons/uploadbutton/uploadbutton.component';\nimport { LoginModalComponent } from './modals/login-modal/login-modal.component';\nimport { PublicVideosComponent } from './modals/public-videos/public-videos.component';\nimport { PdfsubscriberComponent } from './modals/pdfsubscriber/pdfsubscriber.component';\nimport { LaligaContactCauModalComponent } from './modals/laliga-contact-cau-modal/laliga-contact-cau-modal.component';\nimport { ConfirmEditMultiSeatComponent } from './modals/confirm-edit-multi-seat/confirm-edit-multi-seat.component';\nimport { ExportOnholdModalComponent } from './modals/export-onhold-modal/export-onhold-modal.component';\nimport { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';\n\n\n\n@NgModule({\n declarations: [\n NewSimulationModalComponent,\n CopySimulationModalComponent,\n NewConfigModalComponent,\n ForgotPasswordModalComponent,\n ChangePasswordModalComponent,\n FormatDatePipe,\n SearchPipe,\n CategoryPriceModalComponent,\n EditSimulationModalComponent,\n EditSectionSimulationModalComponent,\n ConfirmDeleteSimulationComponent,\n ConfirmDeleteConfigComponent,\n ComputeResultsModalComponent,\n ComputeSectionResultsModalComponent,\n ConfirmLogoutModalComponent,\n ShareSimulationModalComponent,\n ErrorModalComponent,\n ButtonComponent,\n DownloadbuttonComponent,\n UploadbuttonComponent,\n LoginModalComponent,\n PublicVideosComponent,\n PdfsubscriberComponent,\n LaligaContactCauModalComponent,\n ConfirmEditMultiSeatComponent,\n ExportOnholdModalComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n TranslateModule,\n BsDropdownModule.forRoot(),\n NgMultiSelectDropDownModule,\n\n ],\n exports: [\n FormatDatePipe,\n SearchPipe,\n ButtonComponent,\n DownloadbuttonComponent,\n UploadbuttonComponent,\n ],\n providers: [\n ]\n})\nexport class SharedModule { }\n","// import { SeatgeekConnectionConfiguration } from 'ngx-seatgeek-connection';\nimport { environment } from '../../environments/environment';\nimport { InjectionToken } from '@angular/core';\nimport { DVMConfiguration } from 'src/app/social-distance-editor/shared/models/dvm-configuration.model';\n\n\nexport const DVM_CONFIG = new InjectionToken('DVM Configuration');\nexport const DVMConfig: DVMConfiguration = {\n venue_id: 'eu-es-00008-default', // nam-us-00045-rangers-sec - nam-us-00104-sec - nam-us-10190-dodgers-sec\n map_id: 'main',\n container: 'viewer-container',\n version: 'development',\n new_styles: true,\n plugins: ['social_distancing'],\n advanced: true\n};\n","import {InjectionToken} from '@angular/core';\n\nimport { IsolatedGroups } from 'src/app/social-distance-editor/shared/models/isolated-groups.model';\n\n\nexport const ISOLATED_GROUPS = new InjectionToken('Isolated Groups');\nexport const isolatedGroups = {\n 'eu-es-00001-fcbarcelona': {\n '1CNL0': [\n 'S_6037',\n 'S_38',\n 'S_39',\n 'S_41',\n 'S_42',\n 'S_43',\n 'S_6137',\n 'S_138',\n 'S_139',\n 'S_140',\n 'S_141',\n 'S_142',\n 'S_6143',\n ],\n '1CNT0': ['S_6153', 'S_6150', 'S_151', 'S_152', 'S_153'],\n '1CSL0': [\n 'S_6023',\n 'S_24',\n 'S_25',\n 'S_27',\n 'S_28',\n 'S_6029',\n 'S_6123',\n 'S_124',\n 'S_125',\n 'S_126',\n 'S_127',\n 'S_128',\n 'S_6129',\n ],\n '1CST0': ['S_6113', 'S_6016', 'S_113', 'S_114', 'S_115', 'S_6116'],\n '1GN00': [\n 'S_1043',\n 'S_44',\n 'S_45',\n 'S_46',\n 'S_47',\n 'S_48',\n 'S_49',\n 'S_50',\n 'S_6050',\n 'S_143',\n 'S_144',\n 'S_145',\n 'S_146',\n 'S_147',\n 'S_148',\n 'S_149',\n 'S_150',\n ],\n '1GS00': [\n 'S_16',\n 'S_17',\n 'S_18',\n 'S_19',\n 'S_20',\n 'S_21',\n 'S_22',\n 'S_23',\n 'S_116',\n 'S_117',\n 'S_118',\n 'S_119',\n 'S_120',\n 'S_121',\n 'S_122',\n 'S_123',\n ],\n '1L000': [\n 'S_29',\n 'S_30',\n 'S_31',\n 'S_32',\n 'S_33',\n 'S_34',\n 'S_35',\n 'S_36',\n 'S_37',\n 'S_129',\n 'S_130',\n 'S_131',\n 'S_132',\n 'S_133',\n 'S_134',\n 'S_135',\n 'S_136',\n 'S_137',\n ],\n '1TC00': [\n 'S_2',\n 'S_3',\n 'S_4',\n 'S_5',\n 'S_6',\n 'S_7',\n 'S_8',\n 'S_9',\n 'S_10',\n 'S_102',\n 'S_103',\n 'S_104',\n 'S_105',\n 'S_106',\n 'S_107',\n 'S_108',\n 'S_109',\n 'S_110',\n ],\n '1TN00': ['S_1', 'S_6002', 'S_100', 'S_101', 'S_6102'],\n '1TS00': ['S_6010', 'S_11', 'S_6110', 'S_111', 'S_112'],\n '2CNLI': ['S_6235', 'S_236', 'S_237', 'S_238', 'S_239', 'S_240', 'S_6241'],\n '2CNLS': ['S_6339', 'S_340', 'S_341', 'S_342', 'S_343', 'S_344', 'S_345', 'S_346', 'S_6347'],\n '2CNTI': ['S_6248', 'S_249', 'S_250', 'S_6358'],\n '2CNTS': ['S_6354', 'S_355', 'S_356', 'S_357', 'S_358'],\n '2CSLI': ['S_6221', 'S_222', 'S_223', 'S_224', 'S_225', 'S_226', 'S_6227'],\n '2CSLS': ['S_6323', 'S_324', 'S_325', 'S_326', 'S_327', 'S_328', 'S_329', 'S_330', 'S_6331'],\n '2CSTI': ['S_6312', 'S_212', 'S_213', 'S_6214'],\n '2CSTS': ['S_312', 'S_313', 'S_314', 'S_315', 'S_6316'],\n '2GN0I': ['S_241', 'S_242', 'S_243', 'S_244', 'S_245', 'S_246', 'S_247', 'S_248'],\n '2GN0S': ['S_347', 'S_348', 'S_349', 'S_350', 'S_351', 'S_352', 'S_353', 'S_354'],\n '2GS0I': ['S_214', 'S_215', 'S_216', 'S_217', 'S_218', 'S_219', 'S_220', 'S_221'],\n '2GS0S': ['S_316', 'S_317', 'S_318', 'S_319', 'S_320', 'S_321', 'S_322', 'S_323'],\n '2L00I': ['S_227', 'S_228', 'S_229', 'S_230', 'S_231', 'S_232', 'S_233', 'S_234', 'S_235'],\n '2L00S': ['S_331', 'S_332', 'S_333', 'S_334', 'S_335', 'S_336', 'S_337', 'S_338', 'S_339'],\n '2TC0I': ['S_201', 'S_202', 'S_203', 'S_204', 'S_205', 'S_206', 'S_207', 'S_208', 'S_209', 'S_210'],\n '2TC0S': ['S_301', 'S_302', 'S_303', 'S_304', 'S_305', 'S_306', 'S_307', 'S_308', 'S_309', 'S_310'],\n '2TN0I': ['S_200', 'S_6201'],\n '2TN0S': ['S_300', 'S_6301'],\n '2TS0I': ['S_6210', 'S_211'],\n '2TS0S': ['S_6310', 'S_311'],\n '3CNLI': ['S_6439', 'S_440', 'S_441', 'S_442', 'S_443', 'S_444', 'S_445', 'S_446', 'S_6447'],\n '3CNLS': ['S_6539', 'S_540', 'S_541', 'S_542', 'S_543', 'S_544', 'S_545', 'S_546', 'S_6547'],\n '3CNTI': ['S_6454', 'S_455', 'S_456', 'S_457'],\n '3CSLI': ['S_6423', 'S_424', 'S_425', 'S_426', 'S_427', 'S_428', 'S_429', 'S_430', 'S_6431'],\n '3CSLS': ['S_6523', 'S_524', 'S_525', 'S_526', 'S_527', 'S_528', 'S_529', 'S_530', 'S_6531'],\n '3CSTI': ['S_413', 'S_414', 'S_415', 'S_6416'],\n '3GN0I': ['S_447', 'S_448', 'S_449', 'S_450', 'S_451', 'S_452', 'S_453', 'S_454'],\n '3GN0S': ['S_547', 'S_548', 'S_549'],\n '3GS0I': ['S_416', 'S_417', 'S_418', 'S_419', 'S_420', 'S_421', 'S_422', 'S_423'],\n '3GS0S': ['S_521', 'S_522', 'S_523'],\n '3L00I': ['S_431', 'S_432', 'S_433', 'S_434', 'S_435', 'S_436', 'S_437', 'S_438', 'S_439'],\n '3L00S': ['S_531', 'S_532', 'S_533', 'S_534', 'S_535', 'S_536', 'S_537', 'S_538', 'S_539'],\n '3TC00': ['S_402', 'S_403', 'S_404', 'S_405', 'S_406', 'S_407', 'S_408', 'S_409', 'S_410', 'S_411'],\n BBCN: ['S_3008', 'S_3007', 'S_3006', 'S_3005', 'S_3004', 'S_3003', 'S_3002', 'S_3001'],\n BBCS: ['S_3032', 'S_3031', 'S_3030', 'S_3029', 'S_3028', 'S_3027', 'S_3026', 'S_3025'],\n BBL0: [\n 'S_3024',\n 'S_3023',\n 'S_3022',\n 'S_3021',\n 'S_3020',\n 'S_3019',\n 'S_3018',\n 'S_3017',\n 'S_3016',\n 'S_3015',\n 'S_3014',\n 'S_3013',\n 'S_3012',\n 'S_3011',\n 'S_3010',\n 'S_3009',\n ],\n Z: ['S_1003', 'S_1004', 'S_1005', 'S_1006', 'S_1007', 'S_1008', 'S_1009'],\n BCNL: ['S_2351', 'S_2360', 'S_2370', 'S_2380', 'S_2390', 'S_2400', 'S_2411'],\n SBCN: ['S_1339', 'S_1340', 'S_1341', 'S_1342', 'S_1343', 'S_1344', 'S_1345', 'S_1346'],\n BCNT: ['S_2481', 'S_2490', 'S_2500', 'S_3580'],\n BCSL: ['S_2211', 'S_2220', 'S_2230', 'S_2240', 'S_2250', 'S_2260', 'S_2271'],\n SBCS: ['S_1323', 'S_1324', 'S_1325', 'S_1326', 'S_1327', 'S_1328', 'S_1329', 'S_1330'],\n BCST: ['S_3120', 'S_2120', 'S_2130', 'S_2141'],\n BGN0: ['S_2410', 'S_2420', 'S_2430', 'S_2440', 'S_2450', 'S_2460', 'S_2470', 'S_2480'],\n SBGN: ['S_1347', 'S_1348', 'S_1349', 'S_1350', 'S_1351', 'S_1352'],\n BGS0: ['S_2140', 'S_2150', 'S_2160', 'S_2170', 'S_2180', 'S_2190', 'S_2200', 'S_2210'],\n SBGS: ['S_1318', 'S_1319', 'S_1320', 'S_1321', 'S_1322'],\n BL00: ['S_2270', 'S_2280', 'S_2290', 'S_2300', 'S_2310', 'S_2320', 'S_2330', 'S_2340', 'S_2350'],\n SBL: ['S_1331', 'S_1332', 'S_1333', 'S_1334', 'S_1335', 'S_1336', 'S_1337', 'S_1338'],\n BTC0: ['S_2010', 'S_2020', 'S_2040', 'S_2050', 'S_2060', 'S_2070', 'S_2090', 'S_2100'],\n BBTC: [\n 'S_4005',\n 'S_4006',\n 'S_4007',\n 'S_4008',\n 'S_4009',\n 'S_4010',\n 'S_4011',\n 'S_4012',\n 'S_4013',\n 'S_4014',\n 'S_4015',\n 'S_4016',\n 'S_4017',\n 'S_4018',\n 'S_4019',\n 'S_4020',\n ],\n BTN0: ['S_2000', 'S_2011'],\n BBTN: ['S_4001', 'S_4002', 'S_4003', 'S_4004'],\n BTS0: ['S_2101', 'S_2110'],\n BBTS: ['S_4021', 'S_4022', 'S_4023', 'S_4024'],\n BBTCN: ['S_1302'],\n BBTCS: ['S_1309'],\n PN: ['S_1401'],\n PNR: ['S_401'],\n PS: ['S_1411', 'S_1412', 'S_412'],\n }\n};\n","export const environment = {\n production: false,\n apiUrl: 'https://sdm.service.pre-3ddvapi.com'\n };\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","/* (ignored) */"],"sourceRoot":"webpack:///"}