{"version":3,"sources":["webpack:///$_lazy_route_resource lazy namespace object","webpack:///node_modules/@angular/compiler/src sync","webpack:///src/app/app-routing.module.ts","webpack:///src/app/app.component.ts","webpack:///src/app/app.component.html","webpack:///src/app/app.module.ts","webpack:///src/app/auth/auth.guard.ts","webpack:///src/app/auth/auth.workspace.ts","webpack:///src/app/auth/authentication.service.ts","webpack:///src/app/auth/index.ts","webpack:///src/app/changelog/changelog.component.ts","webpack:///src/app/changelog/changelog.component.html","webpack:///src/app/documentation/documentation.component.ts","webpack:///src/app/documentation/documentation.component.html","webpack:///src/app/faqs/faqs.component.ts","webpack:///src/app/faqs/faqs.component.html","webpack:///src/app/footer/footer.component.ts","webpack:///src/app/footer/footer.component.html","webpack:///src/app/footer/selection-footer/selection-footer.component.ts","webpack:///src/app/footer/selection-footer/selection-footer.component.html","webpack:///src/app/header/header-public/header-public.component.ts","webpack:///src/app/header/header-public/header-public.component.html","webpack:///src/app/help/help.component.ts","webpack:///src/app/help/help.component.html","webpack:///src/app/home/home.component.ts","webpack:///src/app/home/home.component.html","webpack:///src/app/legal/legal.component.ts","webpack:///src/app/legal/legal.component.html","webpack:///src/app/seatingchartviewer/services/api.service.ts","webpack:///src/app/seatingchartviewer/services/data.service.ts","webpack:///src/app/services/platform.service.ts","webpack:///src/app/social-distance-editor/interface/footer/footer.component.ts","webpack:///src/app/social-distance-editor/interface/footer/footer.component.html","webpack:///src/app/social-distance-editor/interface/interface.module.ts","webpack:///src/app/social-distance-editor/interface/map-interface/map-interface.component.ts","webpack:///src/app/social-distance-editor/interface/map-interface/map-interface.component.html","webpack:///src/app/social-distance-editor/interface/sidebar/selectiondata/selectiondata.component.ts","webpack:///src/app/social-distance-editor/interface/sidebar/selectiondata/selectiondata.component.html","webpack:///src/app/social-distance-editor/interface/sidebar/sidebar.component.ts","webpack:///src/app/social-distance-editor/interface/sidebar/sidebar.component.html","webpack:///src/app/social-distance-editor/interface/topbar/topbar.component.ts","webpack:///src/app/social-distance-editor/interface/topbar/topbar.component.html","webpack:///src/app/social-distance-editor/plugins/allocator/components/modals/confirm-delete-allocation/confirm-delete-allocation.component.ts","webpack:///src/app/social-distance-editor/plugins/allocator/components/modals/confirm-delete-allocation/confirm-delete-allocation.component.html","webpack:///src/app/social-distance-editor/plugins/allocator/components/modals/laliga-modal/laliga-modal.component.ts","webpack:///src/app/social-distance-editor/plugins/allocator/components/modals/laliga-modal/laliga-modal.component.html","webpack:///src/app/social-distance-editor/plugins/allocator/components/modals/mlb-modal/mlb-modal.component.ts","webpack:///src/app/social-distance-editor/plugins/allocator/components/modals/mlb-modal/mlb-modal.component.html","webpack:///src/app/social-distance-editor/plugins/allocator/components/modals/sports-alliance-modal/sports-alliance-modal.component.ts","webpack:///src/app/social-distance-editor/plugins/allocator/components/modals/sports-alliance-modal/sports-alliance-modal.component.html","webpack:///src/app/social-distance-editor/plugins/allocator/services/allocator-modal.service.ts","webpack:///src/app/social-distance-editor/plugins/allocator/services/allocator.service.ts","webpack:///src/app/social-distance-editor/plugins/allocator/services/parsers/laliga-parser.service.ts","webpack:///src/app/social-distance-editor/plugins/allocator/services/parsers/mlb-parser.service.ts","webpack:///src/app/social-distance-editor/plugins/allocator/services/parsers/sports-alliance-parser.service.ts","webpack:///src/app/social-distance-editor/plugins/allocator/utils/parse.ts","webpack:///src/app/social-distance-editor/plugins/custom-categories/components/custom-categories/custom-categories.component.ts","webpack:///src/app/social-distance-editor/plugins/custom-categories/components/custom-categories/custom-categories.component.html","webpack:///src/app/social-distance-editor/plugins/custom-categories/configuration/categories.configuration.ts","webpack:///src/app/social-distance-editor/plugins/custom-categories/custom-categories.module.ts","webpack:///src/app/social-distance-editor/plugins/custom-categories/services/custom-categories.service.ts","webpack:///src/app/social-distance-editor/services/categories.service.ts","webpack:///src/app/social-distance-editor/services/computedseats.service.ts","webpack:///src/app/social-distance-editor/services/data.service.ts","webpack:///src/app/social-distance-editor/services/dvm.service.ts","webpack:///src/app/social-distance-editor/services/format-number.service.ts","webpack:///src/app/social-distance-editor/services/groups.service.ts","webpack:///src/app/social-distance-editor/services/handlers/click.handler.ts","webpack:///src/app/social-distance-editor/services/handlers/enter.handler.ts","webpack:///src/app/social-distance-editor/services/handlers/general.handler.ts","webpack:///src/app/social-distance-editor/services/handlers/leave.handler.ts","webpack:///src/app/social-distance-editor/services/handlers/load-share-simulation.handler.ts","webpack:///src/app/social-distance-editor/services/handlers/popover.handler.ts","webpack:///src/app/social-distance-editor/services/inventory.service.ts","webpack:///src/app/social-distance-editor/services/modal.service.ts","webpack:///src/app/social-distance-editor/services/parameters.service.ts","webpack:///src/app/social-distance-editor/services/pricing.service.ts","webpack:///src/app/social-distance-editor/services/selection.service.ts","webpack:///src/app/social-distance-editor/services/socialdistancing.service.ts","webpack:///src/app/social-distance-editor/services/tiers.service.ts","webpack:///src/app/social-distance-editor/services/version.service.ts","webpack:///src/app/social-distance-editor/share-simulation/share-simulation.component.ts","webpack:///src/app/social-distance-editor/share-simulation/share-simulation.component.html","webpack:///src/app/social-distance-editor/share-simulation/share-simulation.module.ts","webpack:///src/app/social-distance-editor/shared/buttons/button/button.component.ts","webpack:///src/app/social-distance-editor/shared/buttons/button/button.component.html","webpack:///src/app/social-distance-editor/shared/buttons/downloadbutton/downloadbutton.component.ts","webpack:///src/app/social-distance-editor/shared/buttons/downloadbutton/downloadbutton.component.html","webpack:///src/app/social-distance-editor/shared/buttons/uploadbutton/uploadbutton.component.ts","webpack:///src/app/social-distance-editor/shared/buttons/uploadbutton/uploadbutton.component.html","webpack:///src/app/social-distance-editor/shared/interceptors/add-api-url.interceptor.ts","webpack:///src/app/social-distance-editor/shared/interceptors/auth.interceptor.ts","webpack:///src/app/social-distance-editor/shared/interceptors/csrf-token.interceptor.ts","webpack:///src/app/social-distance-editor/shared/modals/category-price-modal/category-price-modal.component.ts","webpack:///src/app/social-distance-editor/shared/modals/category-price-modal/category-price-modal.component.html","webpack:///src/app/social-distance-editor/shared/modals/change-password-modal/change-password-modal.component.ts","webpack:///src/app/social-distance-editor/shared/modals/change-password-modal/change-password-modal.component.html","webpack:///src/app/social-distance-editor/shared/modals/compute-results-modal/compute-results-modal.component.ts","webpack:///src/app/social-distance-editor/shared/modals/compute-results-modal/compute-results-modal.component.html","webpack:///src/app/social-distance-editor/shared/modals/compute-sectionresults-modal/compute-sectionresults-modal.component.ts","webpack:///src/app/social-distance-editor/shared/modals/compute-sectionresults-modal/compute-sectionresults-modal.component.html","webpack:///src/app/social-distance-editor/shared/modals/confirm-delete-config/confirm-delete-config.component.ts","webpack:///src/app/social-distance-editor/shared/modals/confirm-delete-config/confirm-delete-config.component.html","webpack:///src/app/social-distance-editor/shared/modals/confirm-delete-simulation/confirm-delete-simulation.component.ts","webpack:///src/app/social-distance-editor/shared/modals/confirm-delete-simulation/confirm-delete-simulation.component.html","webpack:///src/app/social-distance-editor/shared/modals/confirm-edit-multi-seat/confirm-edit-multi-seat.component.ts","webpack:///src/app/social-distance-editor/shared/modals/confirm-edit-multi-seat/confirm-edit-multi-seat.component.html","webpack:///src/app/social-distance-editor/shared/modals/confirm-logout-modal/confirm-logout-modal.component.ts","webpack:///src/app/social-distance-editor/shared/modals/confirm-logout-modal/confirm-logout-modal.component.html","webpack:///src/app/social-distance-editor/shared/modals/copy-simulation-modal/copy-simulation-modal.component.ts","webpack:///src/app/social-distance-editor/shared/modals/copy-simulation-modal/copy-simulation-modal.component.html","webpack:///src/app/social-distance-editor/shared/modals/edit-sectionsimulation-modal/edit-sectionsimulation-modal.component.ts","webpack:///src/app/social-distance-editor/shared/modals/edit-sectionsimulation-modal/edit-sectionsimulation-modal.component.html","webpack:///src/app/social-distance-editor/shared/modals/edit-simulation-modal/edit-simulation-modal.component.ts","webpack:///src/app/social-distance-editor/shared/modals/edit-simulation-modal/edit-simulation-modal.component.html","webpack:///src/app/social-distance-editor/shared/modals/error-modal/error-modal.component.ts","webpack:///src/app/social-distance-editor/shared/modals/error-modal/error-modal.component.html","webpack:///src/app/social-distance-editor/shared/modals/export-onhold-modal/export-onhold-modal.component.ts","webpack:///src/app/social-distance-editor/shared/modals/export-onhold-modal/export-onhold-modal.component.html","webpack:///src/app/social-distance-editor/shared/modals/forgot-password-modal/forgot-password-modal.component.ts","webpack:///src/app/social-distance-editor/shared/modals/forgot-password-modal/forgot-password-modal.component.html","webpack:///src/app/social-distance-editor/shared/modals/laliga-contact-cau-modal/laliga-contact-cau-modal.component.ts","webpack:///src/app/social-distance-editor/shared/modals/laliga-contact-cau-modal/laliga-contact-cau-modal.component.html","webpack:///src/app/social-distance-editor/shared/modals/login-modal/login-modal.component.ts","webpack:///src/app/social-distance-editor/shared/modals/login-modal/login-modal.component.html","webpack:///src/app/social-distance-editor/shared/modals/new-config-modal/new-config-modal.component.ts","webpack:///src/app/social-distance-editor/shared/modals/new-config-modal/new-config-modal.component.html","webpack:///src/app/social-distance-editor/shared/modals/new-simulation-modal/new-simulation-modal.component.ts","webpack:///src/app/social-distance-editor/shared/modals/new-simulation-modal/new-simulation-modal.component.html","webpack:///src/app/social-distance-editor/shared/modals/pdfsubscriber/pdfsubscriber.component.ts","webpack:///src/app/social-distance-editor/shared/modals/pdfsubscriber/pdfsubscriber.component.html","webpack:///src/app/social-distance-editor/shared/modals/public-videos/public-videos.component.ts","webpack:///src/app/social-distance-editor/shared/modals/public-videos/public-videos.component.html","webpack:///src/app/social-distance-editor/shared/modals/share-simulation-modal/share-simulation-modal.component.ts","webpack:///src/app/social-distance-editor/shared/modals/share-simulation-modal/share-simulation-modal.component.html","webpack:///src/app/social-distance-editor/shared/pipes/date-format.pipe.ts","webpack:///src/app/social-distance-editor/shared/pipes/search-table.pipe.ts","webpack:///src/app/social-distance-editor/shared/shared.module.ts","webpack:///src/assets/configuration/digitalvenue.configuration.ts","webpack:///src/assets/data/isolated-groups.configuration.ts","webpack:///src/environments/environment.ts","webpack:///src/main.ts","webpack:///stream (ignored)"],"names":["webpackEmptyAsyncContext","req","Promise","resolve","then","e","Error","code","keys","module","exports","id","webpackEmptyContext","routes","path","redirectTo","pathMatch","component","children","loadChildren","m","WorkspaceModule","canActivate","SocialdistanceeditorModule","AppRoutingModule","forRoot","imports","AppComponent","translate","localeService","router","title","events","subscribe","event","gtag","page_path","urlAfterRedirects","setDefaultLang","currentLocation","includes","localStorage","getItem","language","setCurrentLocale","use","url","split","selector","templateUrl","styleUrls","HttpLoaderFactory","http","AppModule","provide","useClass","multi","useValue","loader","useFactory","deps","defaultLanguage","timeOut","positionClass","preventDuplicates","declarations","providers","bootstrap","AuthGuard","authService","platformService","next","state","allowed","isTokenExpired","navigate","getUserLogged","res","setAuth","setConfigurationPrivate","providedIn","AllowWorkspace","resp","p","user","plugins","filter","plugin","type","length","setConfigurationWorkspace","AuthenticationService","authRoot","crsfToken","tapSetUser","result","retValue","setUser","currentUser","userLogged$","undefined","token","expiresIn","Math","round","Date","now","expires_in","setItem","JSON","stringify","get","pipe","promise","reject","_getUserLogged","toPromise","data","console","log","asObservable","loginData","username","password","post","parse","date","removeItem","ChangelogComponent","modalService","versions","version","i","element_id","replace","document","getElementById","offsetTop","videoData","raw","modalConfig","animated","backdrop","ignoreBackdropClick","initialState","video","bsModalRef","show","isAnimated","autoClose","openVideo","DocumentationComponent","route","ua","navigator","userAgent","faqs","elementid","instant","offset","test","documentElement","scrollTop","classList","remove","add","offset1","offset2","offset3","offset4","client","snapshot","params","toLowerCase","Document","FaqsComponent","FooterComponent","currentyear","getFullYear","url_splitted","page","client_param","SelectionFooterComponent","groups","categories","selection","subscriptions","nodeType","currentCategories","currentSelection","currentSelectionRows","groupsHash","forEach","element","nodes","Object","push","selectionSubject","categoriesWeights","regular","vip","disabled","locked","rowsHash","seat","row","getCurrentCategories","sort","a","b","index","indexOf","splice","subscription","unsubscribe","HeaderPublicComponent","onOpenPdfSubscriberModal","onOpenLoginModal","HelpComponent","HomeComponent","versionService","activatedRoute","sanitizer","slides","slideConfig","slidesToShow","slidesToScroll","dots","infinite","centerMode","autoplay","speed","autoplaySpeed","arrows","responsive","breakpoint","settings","documentation_url","main_video_url","bypassSecurityTrustResourceUrl","getVersion","routeConfig","initSlides","nlogos","exclude","img","desc","target","play","pause","slickInit","afterChange","beforeChange","LegalComponent","ApiService","apiRoot","viewId","blob","Blob","body","FormData","append","file","ticketplan","patch","key","endpoint","SCVDataService","formatMumber","apiService","invokeData","invokeSCVView","scvmapId","loadFromUpload","seating","pricescales","plans","seatstatus","buyertypesgroups","buyertypes","holdcodes","nextData","seat_id","packageCode","seats","pricescale","SCVView","scvView","nextSCVView","generatePublicKey","deletePublicKey","updateView","loginSharedView","getView","getSharedView","PlatformService","GeneralDataService","invokeClientVenue","invokeConfiguration","asyncConfiguration$","platform","auth","venues","all","selectList","configuration","workspace","onlySDM","val","complete","nextPlatform","status","clientVenues","nextClientVenue","defaultVenue","filteredList","venue","currentCategoriesWithColors","section","group","color","getCategoryColor","cat","InterfaceModule","MapInterfaceComponent","SelectiondataComponent","inventory","numberFormat","dataService","currentSelectionData","displayInfo","object","getUser","currencySymbol","currency","getUserLogged$","response","shareData","shareDataSubject","processSelection","lastSelection","totalRevenue","totalSections","totalRows","totalSeats","getInventoryData","elements","hasOwnProperty","recursiveDeepSearch","parseFloat","price","count","subcount","formatNumber","totalRevenueString","selectionMap","map","x","entries","newElement","elementData","unitprice","avcount","category","floatPrice","up","priceString","countString","subcountString","avcountString","domid","toggle","closeChildrens","displayInfoTab","window","Buffer","SidebarComponent","dvmService","pricing","ownModalService","socialDistancing","toastr","activateRoute","allocatorService","allocatorModalService","customCategoriesService","tiersService","ondownloadCustomcategories","currentLayer","isRowsActive","isUploadActive","alerts","isGroupSelected","isStrictlyGrouped","displaySidebar","currentAvailability","levels","currentLevelAvailability","hasMapChanged","allowAllocation","currentSimulation","allocation","allowCustomCategories","configurationHasCustomCategories","isMultiSelection","simulation","currentVenue","showModal","resultFile","fileName","resultFileName","getAllocationResult","ref","zip","loadAsync","files","name","async","fileBlob","currentSelectionPricing","getCurrency","venueData","sharedData","isGroupsSelection","isSingleSelection","hasAllocation","error","unselectNodes","viewer","addNodesToGroup","getLockedseats","success","removeNodesFromGroup","info","isSimulation","simulationData","resetSimulationFlags","configurationSubject","venueHash","tier_list","setInitialMap","currentMapId","getMapId","level","currentLevelName","s","mapSubject","r","getCurrentSimulation$","displayAllocationBtn","showAllocatedSeats","capacity","availabilityLoadedSubject","getNodesByState","configId","_clientData","getClientConfigs","calculationFinishedsubject","getCurrentVenue$","node","switchLayers","mapChanged","layers","flags","automatic_control_level","setLayerLevel","value","currentSelectionCategories","newPricing","getNodesByGroups","setPricing","sendInventoryData","updateTotalsHash","layer","quit","layers_levels","getLayerLevel","restartPricing","activeVisualizationLayer","clear","unselect","getCategoriesList","setCategory","getNodesByParent","capacity_updated","setTotalTiersAV","s1","editConfiguration","setCurrentConfiguration$","s2","getSSM","getSimulationSeatManifest","csv","toDateString","maps","map_id","getGroupsFullExport","getSeatManifest","uploadSeatManifest","uploadSeatmanifest","upload","inputFile","nativeElement","click","createGroup","deleteGroup","sdParentNodes","simulationParameters","isSectionSocialDistancing","inputHash","getAllParameters","parameters","percentage","computed_per","setInputHash$","openComputedSectionResultsModal","onHidden","reason","setCategorySubject","clientId","configs","config","mapId","levelName","changeMapConfiguration","availability","getAvailableInventory","setAvailability","sections","printInventoryCategories","frompage","openComputedResultsModal","firstElementChild","model","getVenueDataFile","rawcsv","from","toString","filename","ids","club","toUpperCase","createDownloadFile","parsed_csv","rowcsv","section_id","customcategory","stringRow","replaceAll","warn","str","find","RegExp","createElement","appendChild","URL","createObjectURL","href","download","revokeObjectURL","onDisplaySidebar","onCategoriesPrices","btnUnselectNodes","TopbarComponent","inventoryService","numberFormatService","currentAvailabilityPercentage","getNodesByType","toFixed","getUnits","metric_system","level_name","textContent","ConfirmDeleteAllocationComponent","location","onPopState","onDismiss","closeReason","hide","clearAllocationFromSimulation","err","onDeleteAllocation","subscriberFileNameExp","venueDataFileNameExp","LaligaModalComponent","csvParserService","socialdistancingService","aisleSeats","maxClientsEnabled","upgradeOrDowngrade","maxClientsAllowed","toCurrent","errorMsg","errorFile","errorFileName","onClose","venueId","securityDistance","isleSeats","action","num","Number","form","isDisabled","hideError","csvSubscribersFile","clientsCsv","getFile","csvVenueDataFile","categoriesCsv","checkUpdagreDowngrade","upgradeOrDowngradeCheckbox","readText","encoding","reader","FileReader","onload","onerror","readAsText","subscriberResult","match","venueDataResult","showError","obj1","obj2","clubId","eventId","clubInitials","clubId2","eventId2","clubInitials2","outputPrefix","showStep2","delay","results","csvClients","csvCategories","assignToCurrent","assign","showStep3","message","repeatedFile","innerText","errorMessage","upgrade","downgrade","fullAssign","assignedClients","g","members","reduce","acc","curr","unassignedClients","unassigned","computedPercentage","membersLeft","membersAssigned","maxAssignedClients","fullAssignToCurrent","assigned","size","time","setTimeout","hasFile","currentSimulationId","modalStep1","modalStep2","modalStep3","modalStepError","modalStepErrorRepeated","onSubmit","$event","preventDefault","MlbModalComponent","ngForm","csvClientsFile","csvCategoriesFile","text","full","Array","modalStep4","onViewAllocation","SportsAllianceModalComponent","AllocatorModalService","userSubscription","getUserLoggedSubject","pl","AllocatorService","categoriesService","groupsService","_allowAllocation","showAllocatedSeatsFlag","printCategoriesObservable$","setAllocatedGroup","inventoryObservable$","old","input","social_distancing","groupsReport","getVenueId","mainPromise","assignGroups2","promiseArray","viewerConfig","getDVMConfig","venue_id","container","DVM","loadModule","localViewer","loadMap","availableInventory","reset","close","resultArray","merge","mergeAssignResults","inventoryMapMissmatches","total","checkMissmatch","sectionId","rowId","seatId","assignGroupsToCurrent2","join","mergeAssignToCurrentResults","obj","filterOwnParents","neighbor_distance","neighborDistance","security_distance","from_edges","only_from_edges","limit2groups","kill_edges","invalidated","getGroupBehaviors","n","validated","isolated_groups","buildIsolatedGroups","assignGroups","assignGroupsToCurrent","total_nodes","computed_nodes","total_searches","build_time","compute_time","concat","unavailable","killed_edges","security","Infinity","Set","surplus","available","assignedMap","Map","unassignedMap","has","group_id","set","groupId","assignedArr","values","unassignedArr","priority","clearInventoryAllocation","setInventoryData","p1","p2","deleteAllocationResult","success2","editSimulation","setCurrentSimulation$","sectionKey","sectionObj","rowKey","rowObj","seatKey","seatObj","allocated","groupsObj","len","groupsCopy","preferred","getNodeById","nodeId","LaligaRepeatedError","repeatedRows","LaligaParserService","csvAbonados","csvAforo","parseVenueData","aforoByAsientoId","aforoBySeatId","zonasByLocalidad","parseSubscribersData","subscribersByUniqueId","generateRepeatedError","assignResult","output","generateOutputCsvFromCurrent","outputUnassigned","generateOutputUnassignedCsv","endAssign","buffer","encode","stringifyRepeatedRows","resultAssigned","resultUnassigned","fakeResult","outputAssigned","fillInventoryAllocation","buffer1","stringifyOutputCsv","buffer2","stringifyUnassignedOutputCsv","blob1","blob2","generateAsync","mimeType","zipFile","sendAllocationResult","inv","str1","str2","IDEVENT","IDASIENTO","ESTADO_ASIENTO","IDPERSONA","DNI","APELLIDO_1","APELLIDO_2","NOMBRE","EMPRESA","EMAIL","GROUP_PERSON","GROUP_ADMIN","SLOT","PRICE","repeated","IDZONA","IDZONA2","IDGRUPOZONA","PRIORIDAD","uniqueId","subscriberRow","outputRow","resultSurplus","rowsByAsientoId","missingVenueRows","missingSubscriberRows","venueRow","internalState","_sectionId","_rowId","cleanId","FILA","_seatId","ASIENTO","resultRow","aforoRow","addPopupProperty","allocObj","property","popup","setSimulationAsAllocation","addZone","zonas","zona","UNIQUEID","subscriberRows","mapSubscriberData","isSubscriberValidKey","areSubscriberValidKeys","abonadosByZone","abonadosByPersonId","abonadosByAsientoId","groupsMap","ok","_getPreferredZones","aforoRows","mapVenueData","isAforoValidKey","areVenueValidKeys","aforoByZone","aforoBySlot","aforoBySection","missingInventory","fullSectionId","fullSeatId","char","slice","trim","parseInt","isNaN","valueIsNull","validateEstadoAvet","subscriberValidKeys","errmsg","venueValidKeys","ReservasIds","EstadoAvetIds","EstadoAsientoIds","validateReservas","ValidateEstadoAsiento","v","csvGenerator","maxGroups","groupsProbability","subscribers","csvSubscribersGenerator","csvVenueGenerator","rows","idasiento","ZONA","ZONA_ABREVIADO","PUERTA","POS_FILA","POS_ASIENTO","ESTADO_AVET","PATH_DESC","GRUPOZONA","zones","nextGroup","nextClient","nextPriority","numGroup","getRandomGroup","j","rand","probabilities","probs","random","min","max","floor","HEADER","MlbParserService","getGroups","parsedClients","getGroupsInput","filledClients","fillClientRows","bySeatId","getRowsBySeat","parseJSONToCSV","csvResultAssigned","csvResultUnassigned","UniqueID","parseCSVs","clientsStruct","seatsStruct","clientsMap","assignedRows","fullId","partialSectionId","partialRowId","partialSeatId","Priority","r1","r2","first","prop","areaId","arr","inputAreas","parseCSVAreas","parsedAreas","hash","sortedAreas","sorted","rowsByUniqueId","FINANCIAL_ACCOUNT_ID","preferredArea","sdmGroupInput","parsePreferredAreas","hashAreas","parsed","SectionName","Category","areas","countGroups","countHash","percentHash","SportsAllianceParserService","ClusterID","CustomerID","outut","secondaryArea","SecondaryCategory","Section","category1","category2","generateGroups","parseCSVToJSON","separator","mapFunc","keyValidator","keysValidator","every","CustomCategoriesComponent","interactive","hoverString","categoryClickSubject$","customCategories","CUSTOM_CATEGORIES_BY_VENUE","customCategoriesbyVenue","E","F","G","H","J","K","L","O","P","S","CustomCategoriesModule","CustomCategoriesService","customCategoriesByVenue","_allowCustomCategories","_configurationHasCustomCategories","getCurrentConfiguration$","setConfigurationHasCustomCategories","parseCustomCategoriesFromInventory","setCustomCategoriesNodeGroups","setCustomCategoriesStyles","preInventoryObservable$","cleanCustomCategoriesFromInventory","preComparativeInventoryObservable$","resetGroupBehaviors$","parseSimulationCustomCategories","editSimulation$","sim","custom_categories","selected_custom_categories","statistics","iterateInventoryElements","categoryId","csvUser","oldManifestObject","missingSeats","csvUserRows","seatData","setDefaultLockedCategoryToInventory","conf","selectedCustomCategories","c","addGroupsToBehaviors","cats","getCustomCategories","addCustomCategory","styles","getStyles","normal","fillStyle","setStyles","mime","extension","api","getHttp","CategoriesService","categorySuject$","printCategoriesSubject$","categoriesList","priorities","cat_val","cat_name","aux_cat_val","update","categoriesHash","invProps","getInventoryProperty","all_seats","all_seats_groups","getCatPriority","mpcae_value","mpcae_name","aux","callback","setCategoryPromise","sections_cats","sections_parsed","add_row_hash","aux_section","aux_row","aux_seat","getSectionCategoryPriority","getInventoryBySeat","createInventoryItem","setAvailable","setInventoryProperty","current_priority","removeSelectionCategoryOnViewer","new_nodes","aux_sect","inventoryData","sectionCategories","getMostImportantCat","seatStatus","ComputedseatsService","resetBdParams","newkey","available_seats","availability_percent","affected_sections","matchParamsByAffectedSections","paramsListBD","listParams","hashedParamsListBD","hashArray","getGroupsBySection","total_affected_seats","result_nseats","params_toshow_inmodal","group_size","half","ceil","ret","DataService","publicRoot","configHash","configCategoriesHash","configCategories","unitsHash","es","en","ft","currentVenue$","currentSimulation$","currentConfiguration$","inputHash$","editSimulationSubject$","shareDataAllParams","setCurrency","setUnits","clientVenuesList","unit","content","param","httpOptions","headers","statusCode","configurationId","csvData","configurationCategories","nseats","simulationId","subsimulationId","parameterId","simulationCategories","shareKey","pluginRef","responseType","currentpass","newpass","current_password","fullname","email","DVMService","DVMConfig","viewerSubject","viewer3dSubject","isViewerSubjectInitialized","isViewer3dSubjectInitialized","subscribedCallbacks","subscribed3dCallbacks","isConfiguration","venuetotaltiersav","viewer3d","initializeDVM","moduleName","automatic_selection","automatic_hover","fixed_aspect_ratio","viewer3dConfig","viewerSubjectSubscribe","viewer3dSubjectSubscribe","loadOptions","applyStyles2","view_id","loadView3d","regularFill","regularFillOutline","regularFillHover","regularFillHoverOutline","vipFill","vipFillOutline","vipFillHover","vipFillHoverOutline","disabledFill","disabledFillOutline","disabledFillHover","disabledFillHoverOutline","lockedFill","lockedFillOutline","lockedFillHover","lockedFillHoverOutline","restrictedFill","restrictedFillOutline","restrictedFillHover","restrictedFillHoverOutline","selectedFill","selectedFillOutline","selectedFillHover","selectedFillHoverOutline","tomoveFill","warningFill","allocationFill","allocationFillOutline","allocationFillHover","allocationFillHoverOutline","fillOpacity","strokeStyle","restricted","grouped","selected","warning","onhold","strokeOpacity","hover","tomove","lockedborderfilled","cursor","singleselection","regularselection","restrictedselection","vipselection","disabledselection","none","lineWidth","default_opacity","opacity","unavailable_color","unavailable_border","textFillStyle","disable","node_seats","compare_row","config_tier_list","printcategories","promises","venue_av","tiers","tier","dummy_viewer","FormatNumberService","locale","currentLocale","units","numb","Intl","NumberFormat","format","formatNumberEs","formatted","defaultBehaviors","GroupsService","lastGroup","resetGroupBehaviorsSubject$","groupBehaviors","resetGroupBehaviors","behavior","behaviors","isArray","postSimulationGroups","postGroups","setGroups","currentConfigurationId","setSimulationGroups","ClickHandler","dvmConfig","removeWarningNodes","isGrouped","getCurrentPricing","nodes_available","nodes_unavailable","all_nodes","nodes_affected","exists_iniventory","getInventoryBySection","exists","status_tochange","confirmMultiSeatSelectionOpt","affected_seats","toastrOpt","msg","selectionSubscriptionsArray","getNeighbors","nodes_toselect","getInventoryByRow","nodes_toselect_from_map","row_toadd","nodes_tomove","seat_inv_data","nodes_tosetunavailable","sect","ss","row_seats","aux_node","setUnavailable","controlDirty","updateInventory","newSeats","tomove_lockeddetected","seatNode","allocation_tomove","old_sect","old_row","old_seat","filterNearest","seatsToLock","nodes_tosetavailable","all_available_nodes","section_affected","n_av","tooltip","querySelector","removeAttribute","instance","sectionClickHandler","seatClickHandler","options","that","increase","listParamsHashed","getParameterOrCreate","EnterHandler","raw_id","nselected","availableSet","neighbors","_warningNearest","hovercss","aux_nodes","n_available","invalidatedByGroup","sectionEnterHandler","seatEnterHandler","GeneralHandler","subscribeHandler","handle","bind","LeaveHandler","LoadShareSimulationHandler","bindInterfaceAction","getSharedSimulationSeatManifest","currentShareKey","simulationSeatManifest","removeLoader","groupsData","setGroupsHash","loadBlockmapHandler","loadSeatmapHandler","PopoverHandler","tooltipContent","sectionPopoverContent","seatPopoverContent","tooltipContentHTML","innerHTML","popoverBodyNode","firstChild","removeChild","placement","anchor","dom","offsetHeight","modifiers","fallbackPlacements","setAttribute","onclick","areaName","seatsAvailable","getRevenueBySection","revenue","totalNewRevenue","newrevenue","pricedom","pricelab","customCategoriesData","sectionStuff","sectinCustomCategories","el","user_plugins_refs","getUserPluginsRefs","allocData","customcat","refs","plugs","InventoryService","totalsAvailableHash","totalsHash","seatsCount","inventorySubject$","preInventorySubject$","comparativeInventorySubject$","preComparativeInventorySubject$","sendSimulationSeatManifestData","sendSeatManifestData","comparativeInventory","inventoryRef","elementLevel1","elementLevel2","valuesHash","considerStatus","seatsInventory","sectionsInventory","caller","array","iteration","sectionsHash","getCategories","generateCategoryInput","postConfigurationCategories","postSimulationCategories","categoryIdHash","categoriesInput","summatories","categoryInput","unit_price","s_element","issues","hasIssues","st","sectionIssues","rowIssues","seatIssues","parent","raw_sections","section_inv","default_toastrOpt","available_nodes","all_nodes_in_section","node_id","nodes_tochangeavailable","custom_groups","dirty","toLocaleLowerCase","patch_sim","ModalService","socialDistancingService","hiddenReason","socialDistancingConfig","applySocialDistancingOpenResults","loadingmap","sdNodes","onEditSimulationOpenEdit","onEditSubSimulationOpenEditSection","editable","nseats_per","openEditSimulation","availabilityBuffer","getComparativeInventoryData","blacklist","whitelist","setSocialDistancingConfig","sectionsAffected","computeProbabilistic","generateSimulationsManifest","openEditSectionSimulation","ParametersService","parametersHashed","paramsList","parameter","computed_nseats","nseats_percentage","computed_percentage","getParameters","PricingService","formatService","getInventoryRevenue","returnNumber","pricingHash","formatPrice","setPricingPromise","formatCurrencyNumber","SelectionService","SocialdistancingService","selectionService","isolatedGroups","iterations","probabilityGroup2","probabilityGroup3","probabilityGroup4","fallback","configSubject","isConfigSet","numberOfCalculations","calculationsHash","groups_seats","edges","killedEdges","allgroups","aisle_seats_sides","start","end","filterEdges","updateKilledEdges","aisle_seats_start","aisle_seats_end","sdConfig","neighbor","fixed_groups","use_external_data","useExternalData","computeSocialDistancing","probabilistic_groups","kill_start","kill_end","computeSectionSocialDistancing","ngroups","setSocialGroups","sectionIds","context","compute","catchProgress","totalResults","onResolveCompute","socialDistancingNodes","progress","totalProgress","onholds","unavailbles","arrayRemove","ele","totalGroupLength","newSimulationParameters","newSectionSimulationParameters","nSeatshash","createParams","isEmpty","nseatsPercentage","param_id","afterCreateParams","subsims","lastResult","nodesMap","newAvailability","selected_nodes","haslocked_nodes","subsim_id","editSubSimulation","getSocialDistancingConfig","simulation_id","isle_seats","createSubsimulation","createSubsimulationParameters","createSimulationParameters","affectedSubsimulation","emptyParams","getSimulationParameters","a1","a2","diff","k","TiersService","totaltiersAV$","setTiers","setTotalTiersAVSubject","VersionService","ShareSimulationComponent","loadShareSimulationHandler","clickHandler","enterHandler","leaveHandler","popoverHandler","shareSimulationKey","refreshPlatform","getSharedSimulation","all_params","setCurrentVenue$","restartDVM","ShareSimulationModule","ButtonComponent","subscriberClick","observableClick","subscriber","button","addEventListener","DownloadbuttonComponent","triggerDownload","clearFile","UploadbuttonComponent","subscriberChange","fileExtension","style","display","observableChange","showRemoveFile","removeFile","showUploadFile","item","uploadFileDiv","removeFileDiv","AddApiUrlInterceptor","finalReq","startsWith","clone","apiUrl","AuthInterceptor","request","handleAuthError","HttpCsrfInterceptor","headerName","setHeaders","Authorization","CategoryPriceModalComponent","categoryService","getConfig","clientData","getCategorySubject","getTotalsHash","checkCategories","categoriesCountHash","revenue_total","totalsAvailable","nsections","nseats_available","nsections_string","nseats_string","nseats_available_string","revenue_total_string","revenue_total_available","revenue_total_available_string","sumCategoriesTotal","totalSeatsAvailable","totalRevenueAvailable","totalSectionsString","totalSeatsString","totalSeatsAvailableString","totalRevenueAvailableString","ChangePasswordModalComponent","_passdata","current","repeatpass","errorrepeat","errorcurrent","cleanallerrors","updatepassword","ComputeResultsModalComponent","paginatedSimulationParameters","paginatedCustomParameters","paramsHash","totalAisleSeats","customGroups","customGroupsData","simAvailabilityPercentage","simAvailabilotyPercentageFromConfig","setAllParams","getSimulationShared","getSimulation","sp","automated_totalseats","customGroupsHashed","totalCustomSeats","config_capacity","percentage_config","av","customAvailabilityPercentage","getTotalTiersAV","nlocked","customConfigAvailabilityPercentage","sum","grouptype","updateMapEdges","simparams","addAllParams","subsimulations","observable","o","u","updateCustomGroups","customNGroupsKeys","customParameters","paginateSimulationParameters","getAvailabilityPercentage","endloading","json","sumObjectKeys","default_param","already_added","formatSocialDistancing","ComputeSectionResultsModalComponent","computedseatsService","default_subsim_flag","sections_selected_value","subsimcapacity","selection_capacity","affectedSectionParams","modalData","aisle_seats","affectedSubsims","simulationcapacity","refreshsimulationcapacity","getAffetedSubsims","substring","setModalData","getParams","resetModalData","subsims_sd","subsims_aisle","subsims_limit2groups","subsims_fallback","affected_sims","nseats_key","ConfirmDeleteConfigComponent","configSims","deleteConfiguration","onConfirm","ConfirmDeleteSimulationComponent","deleteSimulation","ConfirmEditMultiSeatComponent","dvmservice","control_dirty_action","update_inventory_status","ConfirmLogoutModalComponent","logout","CopySimulationModalComponent","cdr","paramsHashed","customCapacity","currentVenueId","originalSimulation","originalSimulation_id","configAvailability","originalCategories","simPercentAv","copySimulationName","currentSDMValue","multiSDMValues","checkMultiSDvalues","customCapacityPercent","sd_values","config_id","createSimulation","original","cloned","copySimulation","subresponse","EditSectionSimulationModalComponent","BsModalService","computedTotalsStringsHash","isViewInitialized","current_side_tokill","disabledKillSide","subsimulationData","selected_sections","subsimulation","formularyData","simulationName","setAisleSideSelectedText","totalPercentage","hideLoading","showLoading","sections_selected","params_options","max_param_id","subsimulation_response","applySocialDistancing","isAisle","clampInput","checkTotalPercentage","inputValue","clampped","clamp","type_error","nameIsDisabled","disableEditName","nameInEdit","side","setAisleSideSelected","updateSimulationName","onSetDistancing","onChangeAisleSeat","checkLimit2groups","checkFallback","EditSimulationModalComponent","simConfigAvailabilityPercentage","deleteSubsimulation","enableEditName","ErrorModalComponent","ExportOnholdModalComponent","exportonhold","getSimulationSeatManifestHold","onDenied","ForgotPasswordModalComponent","LaligaContactCauModalComponent","LoginModalComponent","login","setLanguage","hasWorkspace","errors","onForgotPassword","NewConfigModalComponent","venuecapacity","configurations","configSelectedKey","configSelectedName","configurationSelected","disableConfirmbtn","cloningconfig","venueDataCSV","getFileRaw","newconfigname","promiseList","seatmanifestjson","customcsv","buildManiestWithCustomCategories","cloneConfiguration","new_configuration","seatmanifest","postVenueDataFile","configIdKey","pluginList","findIndex","addon","NewSimulationModalComponent","advancedOptions","singleOptions","configsHash","inputAvailability","customCategoriesDropdownList","customCategoriesSelectedItems","customCategoriesDropdownSettings","sub","currentConfigCapacity","configSelected","inputs","socialDistancingCopy","selectedCategories","item_id","simulationCreated","customCategoriesInfo","getCutomCategoriesByVenue","venue_code","dropdownitem","item_text","singleSelection","idField","textField","selectAllText","unSelectAllText","itemsShowLimit","allowSearchFilter","PdfsubscriberComponent","pdfsubscriber","lopd","loading","newEmail","PublicVideosComponent","ShareSimulationModalComponent","isSharingEnabled","shareLocation","publicKey","shareUrl","origin","open","copyText","select","setSelectionRange","execCommand","getSimulationShareKey","public_key","stopSharingSimulation","disableSharing","enableSharing","FormatDatePipe","suffix","day","monthYear","fullDate","SearchPipe","items","searchText","some","String","SharedModule","DVM_CONFIG","new_styles","advanced","ISOLATED_GROUPS","BBCN","BBCS","BBL0","Z","BCNL","SBCN","BCNT","BCSL","SBCS","BCST","BGN0","SBGN","BGS0","SBGS","BL00","SBL","BTC0","BBTC","BTN0","BBTN","BTS0","BBTS","BBTCN","BBTCS","PN","PNR","PS","environment","production","bootstrapModule"],"mappings":"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","file":"main-es5.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) */"]}